From bfd5b9c7f5c0026568d9361b2f7e617192242d2c Mon Sep 17 00:00:00 2001 From: Trevor Miller Date: Mon, 13 Apr 2026 08:04:04 -0400 Subject: [PATCH 01/24] ci: pin release Linux builds to ubuntu-22.04 for glibc compatibility ubuntu-latest is now 24.04 (glibc 2.39), which produced v29 binaries that fail to run on Ubuntu 22.04 / Debian 12 hosts. Pinning to 22.04 (glibc 2.35) restores compatibility with the validator fleet. Co-Authored-By: Claude Opus 4.6 (1M context) --- .github/workflows/release.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 88e6ca3a..2033b11a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -31,7 +31,9 @@ jobs: build-linux-windows: name: Build Linux & Windows needs: test - runs-on: ubuntu-latest + # Pinned to 22.04 (glibc 2.35) so release binaries run on Ubuntu 22.04+, + # Debian 12+, RHEL 9+. ubuntu-latest (24.04, glibc 2.39) breaks older hosts. + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 - uses: actions/setup-go@v5 From 79d146f243eabf24936026de84b66f3340913662 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 15 Apr 2026 06:31:46 -0400 Subject: [PATCH 02/24] chore(deps): bump github.com/hashicorp/go-getter from 1.7.9 to 1.8.6 (#61) Bumps [github.com/hashicorp/go-getter](https://github.com/hashicorp/go-getter) from 1.7.9 to 1.8.6. - [Release notes](https://github.com/hashicorp/go-getter/releases) - [Commits](https://github.com/hashicorp/go-getter/compare/v1.7.9...v1.8.6) --- updated-dependencies: - dependency-name: github.com/hashicorp/go-getter dependency-version: 1.8.6 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 81 ++-- go.sum | 1437 ++++---------------------------------------------------- 2 files changed, 151 insertions(+), 1367 deletions(-) diff --git a/go.mod b/go.mod index 9261e804..5b2b848a 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/bitbadges/bitbadgeschain -go 1.24.5 +go 1.25.8 replace ( github.com/ethereum/go-ethereum => github.com/cosmos/go-ethereum v1.16.2-cosmos-1 @@ -52,10 +52,10 @@ require ( github.com/holiman/uint256 v1.3.2 github.com/spf13/cast v1.10.0 github.com/storyicon/sigverify v1.1.0 - golang.org/x/crypto v0.48.0 + golang.org/x/crypto v0.49.0 golang.org/x/exp v0.0.0-20260112195511-716be5621a96 - golang.org/x/tools v0.41.0 - google.golang.org/genproto/googleapis/api v0.0.0-20260122232226-8e98ce8d340d + golang.org/x/tools v0.42.0 + google.golang.org/genproto/googleapis/api v0.0.0-20260203192932-546029d2fa20 google.golang.org/grpc v1.79.3 google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.0 gopkg.in/yaml.v2 v2.4.0 @@ -80,12 +80,12 @@ require ( buf.build/go/standard v0.1.0 // indirect cel.dev/expr v0.25.1 // indirect cloud.google.com/go v0.123.0 // indirect - cloud.google.com/go/auth v0.17.0 // indirect + cloud.google.com/go/auth v0.18.2 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect cloud.google.com/go/compute/metadata v0.9.0 // indirect cloud.google.com/go/iam v1.5.3 // indirect cloud.google.com/go/monitoring v1.24.3 // indirect - cloud.google.com/go/storage v1.57.2 // indirect + cloud.google.com/go/storage v1.61.3 // indirect connectrpc.com/connect v1.19.1 // indirect connectrpc.com/otelconnect v0.9.0 // indirect cosmossdk.io/schema v1.1.0 // indirect @@ -105,8 +105,8 @@ require ( github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.1 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.54.0 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.54.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0 // indirect github.com/Masterminds/semver/v3 v3.3.1 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/OpenPeeDeeP/depguard/v2 v2.2.1 // indirect @@ -119,7 +119,25 @@ require ( github.com/antlr4-go/antlr/v4 v4.13.1 // indirect github.com/ashanbrown/forbidigo v1.6.0 // indirect github.com/ashanbrown/makezero v1.2.0 // indirect - github.com/aws/aws-sdk-go v1.55.8 // indirect + github.com/aws/aws-sdk-go-v2 v1.41.4 // indirect + github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.7 // indirect + github.com/aws/aws-sdk-go-v2/config v1.32.12 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.19.12 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 // indirect + github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.21 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.12 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.20 // indirect + github.com/aws/aws-sdk-go-v2/service/s3 v1.97.1 // indirect + github.com/aws/aws-sdk-go-v2/service/signin v1.0.8 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.30.13 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.41.9 // indirect + github.com/aws/smithy-go v1.24.2 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/bgentry/speakeasy v0.2.0 // indirect @@ -252,8 +270,8 @@ require ( github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a // indirect github.com/google/s2a-go v0.1.9 // indirect github.com/google/uuid v1.6.0 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.7 // indirect - github.com/googleapis/gax-go/v2 v2.15.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.14 // indirect + github.com/googleapis/gax-go/v2 v2.17.0 // indirect github.com/gordonklaus/ineffassign v0.1.0 // indirect github.com/gorilla/handlers v1.5.2 // indirect github.com/gorilla/websocket v1.5.3 // indirect @@ -263,14 +281,14 @@ require ( github.com/gostaticanalysis/nilerr v0.1.1 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c // indirect + github.com/hashicorp/aws-sdk-go-base/v2 v2.0.0-beta.72 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-getter v1.7.9 // indirect + github.com/hashicorp/go-getter v1.8.6 // indirect github.com/hashicorp/go-hclog v1.6.3 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/go-immutable-radix/v2 v2.1.0 // indirect github.com/hashicorp/go-metrics v0.5.4 // indirect github.com/hashicorp/go-plugin v1.6.3 // indirect - github.com/hashicorp/go-safetemp v1.0.0 // indirect github.com/hashicorp/go-version v1.8.0 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect @@ -289,13 +307,12 @@ require ( github.com/jgautheron/goconst v1.7.1 // indirect github.com/jingyugao/rowserrcheck v1.1.1 // indirect github.com/jjti/go-spancheck v0.6.4 // indirect - github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/jmhodges/levigo v1.0.0 // indirect github.com/julz/importas v0.2.0 // indirect github.com/karamaru-alpha/copyloopvar v1.2.1 // indirect github.com/kisielk/errcheck v1.9.0 // indirect github.com/kkHAIKE/contextcheck v1.1.6 // indirect - github.com/klauspost/compress v1.18.3 // indirect + github.com/klauspost/compress v1.18.5 // indirect github.com/klauspost/cpuid/v2 v2.2.10 // indirect github.com/klauspost/pgzip v1.2.6 // indirect github.com/kr/pretty v0.3.1 // indirect @@ -440,11 +457,11 @@ require ( go.opentelemetry.io/contrib/detectors/gcp v1.39.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0 // indirect - go.opentelemetry.io/otel v1.40.0 // indirect - go.opentelemetry.io/otel/metric v1.40.0 // indirect - go.opentelemetry.io/otel/sdk v1.40.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.40.0 // indirect - go.opentelemetry.io/otel/trace v1.40.0 // indirect + go.opentelemetry.io/otel v1.42.0 // indirect + go.opentelemetry.io/otel/metric v1.42.0 // indirect + go.opentelemetry.io/otel/sdk v1.42.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.42.0 // indirect + go.opentelemetry.io/otel/trace v1.42.0 // indirect go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/mock v0.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect @@ -453,18 +470,18 @@ require ( go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/arch v0.17.0 // indirect golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac // indirect - golang.org/x/mod v0.32.0 // indirect - golang.org/x/net v0.50.0 // indirect - golang.org/x/oauth2 v0.34.0 // indirect - golang.org/x/sync v0.19.0 // indirect - golang.org/x/sys v0.41.0 // indirect - golang.org/x/telemetry v0.0.0-20260109210033-bd525da824e2 // indirect - golang.org/x/term v0.40.0 // indirect - golang.org/x/text v0.34.0 // indirect - golang.org/x/time v0.14.0 // indirect - google.golang.org/api v0.256.0 // indirect - google.golang.org/genproto v0.0.0-20251124214823-79d6a2a48846 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260122232226-8e98ce8d340d // indirect + golang.org/x/mod v0.33.0 // indirect + golang.org/x/net v0.52.0 // indirect + golang.org/x/oauth2 v0.36.0 // indirect + golang.org/x/sync v0.20.0 // indirect + golang.org/x/sys v0.42.0 // indirect + golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4 // indirect + golang.org/x/term v0.41.0 // indirect + golang.org/x/text v0.35.0 // indirect + golang.org/x/time v0.15.0 // indirect + google.golang.org/api v0.271.0 // indirect + google.golang.org/genproto v0.0.0-20260128011058-8636f8732409 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.5.2 // indirect honnef.co/go/tools v0.6.1 // indirect diff --git a/go.sum b/go.sum index 58bbb009..ae796093 100644 --- a/go.sum +++ b/go.sum @@ -34,618 +34,26 @@ cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4= cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= -cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= -cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= -cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= -cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= -cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= -cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= -cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= -cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= -cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= -cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= -cloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U= -cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= -cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= -cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= -cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= -cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= -cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX2I= -cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= cloud.google.com/go v0.123.0 h1:2NAUJwPR47q+E35uaJeYoNhuNEM9kM8SjgRgdeOJUSE= cloud.google.com/go v0.123.0/go.mod h1:xBoMV08QcqUGuPW65Qfm1o9Y4zKZBpGS+7bImXLTAZU= -cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4= -cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw= -cloud.google.com/go/accessapproval v1.6.0/go.mod h1:R0EiYnwV5fsRFiKZkPHr6mwyk2wxUJ30nL4j2pcFY2E= -cloud.google.com/go/accesscontextmanager v1.3.0/go.mod h1:TgCBehyr5gNMz7ZaH9xubp+CE8dkrszb4oK9CWyvD4o= -cloud.google.com/go/accesscontextmanager v1.4.0/go.mod h1:/Kjh7BBu/Gh83sv+K60vN9QE5NJcd80sU33vIe2IFPE= -cloud.google.com/go/accesscontextmanager v1.6.0/go.mod h1:8XCvZWfYw3K/ji0iVnp+6pu7huxoQTLmxAbVjbloTtM= -cloud.google.com/go/accesscontextmanager v1.7.0/go.mod h1:CEGLewx8dwa33aDAZQujl7Dx+uYhS0eay198wB/VumQ= -cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= -cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= -cloud.google.com/go/aiplatform v1.27.0/go.mod h1:Bvxqtl40l0WImSb04d0hXFU7gDOiq9jQmorivIiWcKg= -cloud.google.com/go/aiplatform v1.35.0/go.mod h1:7MFT/vCaOyZT/4IIFfxH4ErVg/4ku6lKv3w0+tFTgXQ= -cloud.google.com/go/aiplatform v1.36.1/go.mod h1:WTm12vJRPARNvJ+v6P52RDHCNe4AhvjcIZ/9/RRHy/k= -cloud.google.com/go/aiplatform v1.37.0/go.mod h1:IU2Cv29Lv9oCn/9LkFiiuKfwrRTq+QQMbW+hPCxJGZw= -cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= -cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= -cloud.google.com/go/analytics v0.17.0/go.mod h1:WXFa3WSym4IZ+JiKmavYdJwGG/CvpqiqczmL59bTD9M= -cloud.google.com/go/analytics v0.18.0/go.mod h1:ZkeHGQlcIPkw0R/GW+boWHhCOR43xz9RN/jn7WcqfIE= -cloud.google.com/go/analytics v0.19.0/go.mod h1:k8liqf5/HCnOUkbawNtrWWc+UAzyDlW89doe8TtoDsE= -cloud.google.com/go/apigateway v1.3.0/go.mod h1:89Z8Bhpmxu6AmUxuVRg/ECRGReEdiP3vQtk4Z1J9rJk= -cloud.google.com/go/apigateway v1.4.0/go.mod h1:pHVY9MKGaH9PQ3pJ4YLzoj6U5FUDeDFBllIz7WmzJoc= -cloud.google.com/go/apigateway v1.5.0/go.mod h1:GpnZR3Q4rR7LVu5951qfXPJCHquZt02jf7xQx7kpqN8= -cloud.google.com/go/apigeeconnect v1.3.0/go.mod h1:G/AwXFAKo0gIXkPTVfZDd2qA1TxBXJ3MgMRBQkIi9jc= -cloud.google.com/go/apigeeconnect v1.4.0/go.mod h1:kV4NwOKqjvt2JYR0AoIWo2QGfoRtn/pkS3QlHp0Ni04= -cloud.google.com/go/apigeeconnect v1.5.0/go.mod h1:KFaCqvBRU6idyhSNyn3vlHXc8VMDJdRmwDF6JyFRqZ8= -cloud.google.com/go/apigeeregistry v0.4.0/go.mod h1:EUG4PGcsZvxOXAdyEghIdXwAEi/4MEaoqLMLDMIwKXY= -cloud.google.com/go/apigeeregistry v0.5.0/go.mod h1:YR5+s0BVNZfVOUkMa5pAR2xGd0A473vA5M7j247o1wM= -cloud.google.com/go/apigeeregistry v0.6.0/go.mod h1:BFNzW7yQVLZ3yj0TKcwzb8n25CFBri51GVGOEUcgQsc= -cloud.google.com/go/apikeys v0.4.0/go.mod h1:XATS/yqZbaBK0HOssf+ALHp8jAlNHUgyfprvNcBIszU= -cloud.google.com/go/apikeys v0.5.0/go.mod h1:5aQfwY4D+ewMMWScd3hm2en3hCj+BROlyrt3ytS7KLI= -cloud.google.com/go/apikeys v0.6.0/go.mod h1:kbpXu5upyiAlGkKrJgQl8A0rKNNJ7dQ377pdroRSSi8= -cloud.google.com/go/appengine v1.4.0/go.mod h1:CS2NhuBuDXM9f+qscZ6V86m1MIIqPj3WC/UoEuR1Sno= -cloud.google.com/go/appengine v1.5.0/go.mod h1:TfasSozdkFI0zeoxW3PTBLiNqRmzraodCWatWI9Dmak= -cloud.google.com/go/appengine v1.6.0/go.mod h1:hg6i0J/BD2cKmDJbaFSYHFyZkgBEfQrDg/X0V5fJn84= -cloud.google.com/go/appengine v1.7.0/go.mod h1:eZqpbHFCqRGa2aCdope7eC0SWLV1j0neb/QnMJVWx6A= -cloud.google.com/go/appengine v1.7.1/go.mod h1:IHLToyb/3fKutRysUlFO0BPt5j7RiQ45nrzEJmKTo6E= -cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= -cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= -cloud.google.com/go/area120 v0.7.0/go.mod h1:a3+8EUD1SX5RUcCs3MY5YasiO1z6yLiNLRiFrykbynY= -cloud.google.com/go/area120 v0.7.1/go.mod h1:j84i4E1RboTWjKtZVWXPqvK5VHQFJRF2c1Nm69pWm9k= -cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= -cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= -cloud.google.com/go/artifactregistry v1.8.0/go.mod h1:w3GQXkJX8hiKN0v+at4b0qotwijQbYUqF2GWkZzAhC0= -cloud.google.com/go/artifactregistry v1.9.0/go.mod h1:2K2RqvA2CYvAeARHRkLDhMDJ3OXy26h3XW+3/Jh2uYc= -cloud.google.com/go/artifactregistry v1.11.1/go.mod h1:lLYghw+Itq9SONbCa1YWBoWs1nOucMH0pwXN1rOBZFI= -cloud.google.com/go/artifactregistry v1.11.2/go.mod h1:nLZns771ZGAwVLzTX/7Al6R9ehma4WUEhZGWV6CeQNQ= -cloud.google.com/go/artifactregistry v1.12.0/go.mod h1:o6P3MIvtzTOnmvGagO9v/rOjjA0HmhJ+/6KAXrmYDCI= -cloud.google.com/go/artifactregistry v1.13.0/go.mod h1:uy/LNfoOIivepGhooAUpL1i30Hgee3Cu0l4VTWHUC08= -cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= -cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= -cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= -cloud.google.com/go/asset v1.9.0/go.mod h1:83MOE6jEJBMqFKadM9NLRcs80Gdw76qGuHn8m3h8oHQ= -cloud.google.com/go/asset v1.10.0/go.mod h1:pLz7uokL80qKhzKr4xXGvBQXnzHn5evJAEAtZiIb0wY= -cloud.google.com/go/asset v1.11.1/go.mod h1:fSwLhbRvC9p9CXQHJ3BgFeQNM4c9x10lqlrdEUYXlJo= -cloud.google.com/go/asset v1.12.0/go.mod h1:h9/sFOa4eDIyKmH6QMpm4eUK3pDojWnUhTgJlk762Hg= -cloud.google.com/go/asset v1.13.0/go.mod h1:WQAMyYek/b7NBpYq/K4KJWcRqzoalEsxz/t/dTk4THw= -cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= -cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= -cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= -cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEarXQk6WEKkxYfL6kGIo= -cloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM0vVpRC7VVoJC3ZoT0= -cloud.google.com/go/assuredworkloads v1.10.0/go.mod h1:kwdUQuXcedVdsIaKgKTp9t0UJkE5+PAVNhdQm4ZVq2E= -cloud.google.com/go/auth v0.17.0 h1:74yCm7hCj2rUyyAocqnFzsAYXgJhrG26XCFimrc/Kz4= -cloud.google.com/go/auth v0.17.0/go.mod h1:6wv/t5/6rOPAX4fJiRjKkJCvswLwdet7G8+UGXt7nCQ= +cloud.google.com/go/auth v0.18.2 h1:+Nbt5Ev0xEqxlNjd6c+yYUeosQ5TtEUaNcN/3FozlaM= +cloud.google.com/go/auth v0.18.2/go.mod h1:xD+oY7gcahcu7G2SG2DsBerfFxgPAJz17zz2joOFF3M= cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= -cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= -cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= -cloud.google.com/go/automl v1.7.0/go.mod h1:RL9MYCCsJEOmt0Wf3z9uzG0a7adTT1fe+aObgSpkCt8= -cloud.google.com/go/automl v1.8.0/go.mod h1:xWx7G/aPEe/NP+qzYXktoBSDfjO+vnKMGgsApGJJquM= -cloud.google.com/go/automl v1.12.0/go.mod h1:tWDcHDp86aMIuHmyvjuKeeHEGq76lD7ZqfGLN6B0NuU= -cloud.google.com/go/baremetalsolution v0.3.0/go.mod h1:XOrocE+pvK1xFfleEnShBlNAXf+j5blPPxrhjKgnIFc= -cloud.google.com/go/baremetalsolution v0.4.0/go.mod h1:BymplhAadOO/eBa7KewQ0Ppg4A4Wplbn+PsFKRLo0uI= -cloud.google.com/go/baremetalsolution v0.5.0/go.mod h1:dXGxEkmR9BMwxhzBhV0AioD0ULBmuLZI8CdwalUxuss= -cloud.google.com/go/batch v0.3.0/go.mod h1:TR18ZoAekj1GuirsUsR1ZTKN3FC/4UDnScjT8NXImFE= -cloud.google.com/go/batch v0.4.0/go.mod h1:WZkHnP43R/QCGQsZ+0JyG4i79ranE2u8xvjq/9+STPE= -cloud.google.com/go/batch v0.7.0/go.mod h1:vLZN95s6teRUqRQ4s3RLDsH8PvboqBK+rn1oevL159g= -cloud.google.com/go/beyondcorp v0.2.0/go.mod h1:TB7Bd+EEtcw9PCPQhCJtJGjk/7TC6ckmnSFS+xwTfm4= -cloud.google.com/go/beyondcorp v0.3.0/go.mod h1:E5U5lcrcXMsCuoDNyGrpyTm/hn7ne941Jz2vmksAxW8= -cloud.google.com/go/beyondcorp v0.4.0/go.mod h1:3ApA0mbhHx6YImmuubf5pyW8srKnCEPON32/5hj+RmM= -cloud.google.com/go/beyondcorp v0.5.0/go.mod h1:uFqj9X+dSfrheVp7ssLTaRHd2EHqSL4QZmH4e8WXGGU= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= -cloud.google.com/go/bigquery v1.43.0/go.mod h1:ZMQcXHsl+xmU1z36G2jNGZmKp9zNY5BUua5wDgmNCfw= -cloud.google.com/go/bigquery v1.44.0/go.mod h1:0Y33VqXTEsbamHJvJHdFmtqHvMIY28aK1+dFsvaChGc= -cloud.google.com/go/bigquery v1.47.0/go.mod h1:sA9XOgy0A8vQK9+MWhEQTY6Tix87M/ZurWFIxmF9I/E= -cloud.google.com/go/bigquery v1.48.0/go.mod h1:QAwSz+ipNgfL5jxiaK7weyOhzdoAy1zFm0Nf1fysJac= -cloud.google.com/go/bigquery v1.49.0/go.mod h1:Sv8hMmTFFYBlt/ftw2uN6dFdQPzBlREY9yBh7Oy7/4Q= -cloud.google.com/go/bigquery v1.50.0/go.mod h1:YrleYEh2pSEbgTBZYMJ5SuSr0ML3ypjRB1zgf7pvQLU= -cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= -cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= -cloud.google.com/go/billing v1.6.0/go.mod h1:WoXzguj+BeHXPbKfNWkqVtDdzORazmCjraY+vrxcyvI= -cloud.google.com/go/billing v1.7.0/go.mod h1:q457N3Hbj9lYwwRbnlD7vUpyjq6u5U1RAOArInEiD5Y= -cloud.google.com/go/billing v1.12.0/go.mod h1:yKrZio/eu+okO/2McZEbch17O5CB5NpZhhXG6Z766ss= -cloud.google.com/go/billing v1.13.0/go.mod h1:7kB2W9Xf98hP9Sr12KfECgfGclsH3CQR0R08tnRlRbc= -cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= -cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= -cloud.google.com/go/binaryauthorization v1.3.0/go.mod h1:lRZbKgjDIIQvzYQS1p99A7/U1JqvqeZg0wiI5tp6tg0= -cloud.google.com/go/binaryauthorization v1.4.0/go.mod h1:tsSPQrBd77VLplV70GUhBf/Zm3FsKmgSqgm4UmiDItk= -cloud.google.com/go/binaryauthorization v1.5.0/go.mod h1:OSe4OU1nN/VswXKRBmciKpo9LulY41gch5c68htf3/Q= -cloud.google.com/go/certificatemanager v1.3.0/go.mod h1:n6twGDvcUBFu9uBgt4eYvvf3sQ6My8jADcOVwHmzadg= -cloud.google.com/go/certificatemanager v1.4.0/go.mod h1:vowpercVFyqs8ABSmrdV+GiFf2H/ch3KyudYQEMM590= -cloud.google.com/go/certificatemanager v1.6.0/go.mod h1:3Hh64rCKjRAX8dXgRAyOcY5vQ/fE1sh8o+Mdd6KPgY8= -cloud.google.com/go/channel v1.8.0/go.mod h1:W5SwCXDJsq/rg3tn3oG0LOxpAo6IMxNa09ngphpSlnk= -cloud.google.com/go/channel v1.9.0/go.mod h1:jcu05W0my9Vx4mt3/rEHpfxc9eKi9XwsdDL8yBMbKUk= -cloud.google.com/go/channel v1.11.0/go.mod h1:IdtI0uWGqhEeatSB62VOoJ8FSUhJ9/+iGkJVqp74CGE= -cloud.google.com/go/channel v1.12.0/go.mod h1:VkxCGKASi4Cq7TbXxlaBezonAYpp1GCnKMY6tnMQnLU= -cloud.google.com/go/cloudbuild v1.3.0/go.mod h1:WequR4ULxlqvMsjDEEEFnOG5ZSRSgWOywXYDb1vPE6U= -cloud.google.com/go/cloudbuild v1.4.0/go.mod h1:5Qwa40LHiOXmz3386FrjrYM93rM/hdRr7b53sySrTqA= -cloud.google.com/go/cloudbuild v1.6.0/go.mod h1:UIbc/w9QCbH12xX+ezUsgblrWv+Cv4Tw83GiSMHOn9M= -cloud.google.com/go/cloudbuild v1.7.0/go.mod h1:zb5tWh2XI6lR9zQmsm1VRA+7OCuve5d8S+zJUul8KTg= -cloud.google.com/go/cloudbuild v1.9.0/go.mod h1:qK1d7s4QlO0VwfYn5YuClDGg2hfmLZEb4wQGAbIgL1s= -cloud.google.com/go/clouddms v1.3.0/go.mod h1:oK6XsCDdW4Ib3jCCBugx+gVjevp2TMXFtgxvPSee3OM= -cloud.google.com/go/clouddms v1.4.0/go.mod h1:Eh7sUGCC+aKry14O1NRljhjyrr0NFC0G2cjwX0cByRk= -cloud.google.com/go/clouddms v1.5.0/go.mod h1:QSxQnhikCLUw13iAbffF2CZxAER3xDGNHjsTAkQJcQA= -cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= -cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= -cloud.google.com/go/cloudtasks v1.7.0/go.mod h1:ImsfdYWwlWNJbdgPIIGJWC+gemEGTBK/SunNQQNCAb4= -cloud.google.com/go/cloudtasks v1.8.0/go.mod h1:gQXUIwCSOI4yPVK7DgTVFiiP0ZW/eQkydWzwVMdHxrI= -cloud.google.com/go/cloudtasks v1.9.0/go.mod h1:w+EyLsVkLWHcOaqNEyvcKAsWp9p29dL6uL9Nst1cI7Y= -cloud.google.com/go/cloudtasks v1.10.0/go.mod h1:NDSoTLkZ3+vExFEWu2UJV1arUyzVDAiZtdWcsUyNwBs= -cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= -cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= -cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= -cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= -cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= -cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= -cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= -cloud.google.com/go/compute v1.12.0/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= -cloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= -cloud.google.com/go/compute v1.13.0/go.mod h1:5aPTS0cUNMIc1CE546K+Th6weJUNQErARyZtRXDJ8GE= -cloud.google.com/go/compute v1.14.0/go.mod h1:YfLtxrj9sU4Yxv+sXzZkyPjEyPBZfXHUvjxega5vAdo= -cloud.google.com/go/compute v1.15.1/go.mod h1:bjjoF/NtFUrkD/urWfdHaKuOPDR5nWIs63rR+SXhcpA= -cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs= -cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU= -cloud.google.com/go/compute v1.19.1/go.mod h1:6ylj3a05WF8leseCdIf77NK0g1ey+nj5IKd5/kvShxE= -cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= -cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= -cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= -cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs= cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10= -cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= -cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= -cloud.google.com/go/contactcenterinsights v1.6.0/go.mod h1:IIDlT6CLcDoyv79kDv8iWxMSTZhLxSCofVV5W6YFM/w= -cloud.google.com/go/container v1.6.0/go.mod h1:Xazp7GjJSeUYo688S+6J5V+n/t+G5sKBTFkKNudGRxg= -cloud.google.com/go/container v1.7.0/go.mod h1:Dp5AHtmothHGX3DwwIHPgq45Y8KmNsgN3amoYfxVkLo= -cloud.google.com/go/container v1.13.1/go.mod h1:6wgbMPeQRw9rSnKBCAJXnds3Pzj03C4JHamr8asWKy4= -cloud.google.com/go/container v1.14.0/go.mod h1:3AoJMPhHfLDxLvrlVWaK57IXzaPnLaZq63WX59aQBfM= -cloud.google.com/go/container v1.15.0/go.mod h1:ft+9S0WGjAyjDggg5S06DXj+fHJICWg8L7isCQe9pQA= -cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= -cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= -cloud.google.com/go/containeranalysis v0.7.0/go.mod h1:9aUL+/vZ55P2CXfuZjS4UjQ9AgXoSw8Ts6lemfmxBxI= -cloud.google.com/go/containeranalysis v0.9.0/go.mod h1:orbOANbwk5Ejoom+s+DUCTTJ7IBdBQJDcSylAx/on9s= -cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= -cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= -cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= -cloud.google.com/go/datacatalog v1.7.0/go.mod h1:9mEl4AuDYWw81UGc41HonIHH7/sn52H0/tc8f8ZbZIE= -cloud.google.com/go/datacatalog v1.8.0/go.mod h1:KYuoVOv9BM8EYz/4eMFxrr4DUKhGIOXxZoKYF5wdISM= -cloud.google.com/go/datacatalog v1.8.1/go.mod h1:RJ58z4rMp3gvETA465Vg+ag8BGgBdnRPEMMSTr5Uv+M= -cloud.google.com/go/datacatalog v1.12.0/go.mod h1:CWae8rFkfp6LzLumKOnmVh4+Zle4A3NXLzVJ1d1mRm0= -cloud.google.com/go/datacatalog v1.13.0/go.mod h1:E4Rj9a5ZtAxcQJlEBTLgMTphfP11/lNaAshpoBgemX8= -cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= -cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= -cloud.google.com/go/dataflow v0.8.0/go.mod h1:Rcf5YgTKPtQyYz8bLYhFoIV/vP39eL7fWNcSOyFfLJE= -cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= -cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= -cloud.google.com/go/dataform v0.5.0/go.mod h1:GFUYRe8IBa2hcomWplodVmUx/iTL0FrsauObOM3Ipr0= -cloud.google.com/go/dataform v0.6.0/go.mod h1:QPflImQy33e29VuapFdf19oPbE4aYTJxr31OAPV+ulA= -cloud.google.com/go/dataform v0.7.0/go.mod h1:7NulqnVozfHvWUBpMDfKMUESr+85aJsC/2O0o3jWPDE= -cloud.google.com/go/datafusion v1.4.0/go.mod h1:1Zb6VN+W6ALo85cXnM1IKiPw+yQMKMhB9TsTSRDo/38= -cloud.google.com/go/datafusion v1.5.0/go.mod h1:Kz+l1FGHB0J+4XF2fud96WMmRiq/wj8N9u007vyXZ2w= -cloud.google.com/go/datafusion v1.6.0/go.mod h1:WBsMF8F1RhSXvVM8rCV3AeyWVxcC2xY6vith3iw3S+8= -cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= -cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= -cloud.google.com/go/datalabeling v0.7.0/go.mod h1:WPQb1y08RJbmpM3ww0CSUAGweL0SxByuW2E+FU+wXcM= -cloud.google.com/go/dataplex v1.3.0/go.mod h1:hQuRtDg+fCiFgC8j0zV222HvzFQdRd+SVX8gdmFcZzA= -cloud.google.com/go/dataplex v1.4.0/go.mod h1:X51GfLXEMVJ6UN47ESVqvlsRplbLhcsAt0kZCCKsU0A= -cloud.google.com/go/dataplex v1.5.2/go.mod h1:cVMgQHsmfRoI5KFYq4JtIBEUbYwc3c7tXmIDhRmNNVQ= -cloud.google.com/go/dataplex v1.6.0/go.mod h1:bMsomC/aEJOSpHXdFKFGQ1b0TDPIeL28nJObeO1ppRs= -cloud.google.com/go/dataproc v1.7.0/go.mod h1:CKAlMjII9H90RXaMpSxQ8EU6dQx6iAYNPcYPOkSbi8s= -cloud.google.com/go/dataproc v1.8.0/go.mod h1:5OW+zNAH0pMpw14JVrPONsxMQYMBqJuzORhIBfBn9uI= -cloud.google.com/go/dataproc v1.12.0/go.mod h1:zrF3aX0uV3ikkMz6z4uBbIKyhRITnxvr4i3IjKsKrw4= -cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= -cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= -cloud.google.com/go/dataqna v0.7.0/go.mod h1:Lx9OcIIeqCrw1a6KdO3/5KMP1wAmTc0slZWwP12Qq3c= -cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= -cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= -cloud.google.com/go/datastore v1.10.0/go.mod h1:PC5UzAmDEkAmkfaknstTYbNpgE49HAgW2J1gcgUfmdM= -cloud.google.com/go/datastore v1.11.0/go.mod h1:TvGxBIHCS50u8jzG+AW/ppf87v1of8nwzFNgEZU1D3c= -cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= -cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= -cloud.google.com/go/datastream v1.4.0/go.mod h1:h9dpzScPhDTs5noEMQVWP8Wx8AFBRyS0s8KWPx/9r0g= -cloud.google.com/go/datastream v1.5.0/go.mod h1:6TZMMNPwjUqZHBKPQ1wwXpb0d5VDVPl2/XoS5yi88q4= -cloud.google.com/go/datastream v1.6.0/go.mod h1:6LQSuswqLa7S4rPAOZFVjHIG3wJIjZcZrw8JDEDJuIs= -cloud.google.com/go/datastream v1.7.0/go.mod h1:uxVRMm2elUSPuh65IbZpzJNMbuzkcvu5CjMqVIUHrww= -cloud.google.com/go/deploy v1.4.0/go.mod h1:5Xghikd4VrmMLNaF6FiRFDlHb59VM59YoDQnOUdsH/c= -cloud.google.com/go/deploy v1.5.0/go.mod h1:ffgdD0B89tToyW/U/D2eL0jN2+IEV/3EMuXHA0l4r+s= -cloud.google.com/go/deploy v1.6.0/go.mod h1:f9PTHehG/DjCom3QH0cntOVRm93uGBDt2vKzAPwpXQI= -cloud.google.com/go/deploy v1.8.0/go.mod h1:z3myEJnA/2wnB4sgjqdMfgxCA0EqC3RBTNcVPs93mtQ= -cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= -cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= -cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= -cloud.google.com/go/dialogflow v1.18.0/go.mod h1:trO7Zu5YdyEuR+BhSNOqJezyFQ3aUzz0njv7sMx/iek= -cloud.google.com/go/dialogflow v1.19.0/go.mod h1:JVmlG1TwykZDtxtTXujec4tQ+D8SBFMoosgy+6Gn0s0= -cloud.google.com/go/dialogflow v1.29.0/go.mod h1:b+2bzMe+k1s9V+F2jbJwpHPzrnIyHihAdRFMtn2WXuM= -cloud.google.com/go/dialogflow v1.31.0/go.mod h1:cuoUccuL1Z+HADhyIA7dci3N5zUssgpBJmCzI6fNRB4= -cloud.google.com/go/dialogflow v1.32.0/go.mod h1:jG9TRJl8CKrDhMEcvfcfFkkpp8ZhgPz3sBGmAUYJ2qE= -cloud.google.com/go/dlp v1.6.0/go.mod h1:9eyB2xIhpU0sVwUixfBubDoRwP+GjeUoxxeueZmqvmM= -cloud.google.com/go/dlp v1.7.0/go.mod h1:68ak9vCiMBjbasxeVD17hVPxDEck+ExiHavX8kiHG+Q= -cloud.google.com/go/dlp v1.9.0/go.mod h1:qdgmqgTyReTz5/YNSSuueR8pl7hO0o9bQ39ZhtgkWp4= -cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= -cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= -cloud.google.com/go/documentai v1.9.0/go.mod h1:FS5485S8R00U10GhgBC0aNGrJxBP8ZVpEeJ7PQDZd6k= -cloud.google.com/go/documentai v1.10.0/go.mod h1:vod47hKQIPeCfN2QS/jULIvQTugbmdc0ZvxxfQY1bg4= -cloud.google.com/go/documentai v1.16.0/go.mod h1:o0o0DLTEZ+YnJZ+J4wNfTxmDVyrkzFvttBXXtYRMHkM= -cloud.google.com/go/documentai v1.18.0/go.mod h1:F6CK6iUH8J81FehpskRmhLq/3VlwQvb7TvwOceQ2tbs= -cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= -cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= -cloud.google.com/go/domains v0.8.0/go.mod h1:M9i3MMDzGFXsydri9/vW+EWz9sWb4I6WyHqdlAk0idE= -cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= -cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= -cloud.google.com/go/edgecontainer v0.3.0/go.mod h1:FLDpP4nykgwwIfcLt6zInhprzw0lEi2P1fjO6Ie0qbc= -cloud.google.com/go/edgecontainer v1.0.0/go.mod h1:cttArqZpBB2q58W/upSG++ooo6EsblxDIolxa3jSjbY= -cloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU= -cloud.google.com/go/essentialcontacts v1.3.0/go.mod h1:r+OnHa5jfj90qIfZDO/VztSFqbQan7HV75p8sA+mdGI= -cloud.google.com/go/essentialcontacts v1.4.0/go.mod h1:8tRldvHYsmnBCHdFpvU+GL75oWiBKl80BiqlFh9tp+8= -cloud.google.com/go/essentialcontacts v1.5.0/go.mod h1:ay29Z4zODTuwliK7SnX8E86aUF2CTzdNtvv42niCX0M= -cloud.google.com/go/eventarc v1.7.0/go.mod h1:6ctpF3zTnaQCxUjHUdcfgcA1A2T309+omHZth7gDfmc= -cloud.google.com/go/eventarc v1.8.0/go.mod h1:imbzxkyAU4ubfsaKYdQg04WS1NvncblHEup4kvF+4gw= -cloud.google.com/go/eventarc v1.10.0/go.mod h1:u3R35tmZ9HvswGRBnF48IlYgYeBcPUCjkr4BTdem2Kw= -cloud.google.com/go/eventarc v1.11.0/go.mod h1:PyUjsUKPWoRBCHeOxZd/lbOOjahV41icXyUY5kSTvVY= -cloud.google.com/go/filestore v1.3.0/go.mod h1:+qbvHGvXU1HaKX2nD0WEPo92TP/8AQuCVEBXNY9z0+w= -cloud.google.com/go/filestore v1.4.0/go.mod h1:PaG5oDfo9r224f8OYXURtAsY+Fbyq/bLYoINEK8XQAI= -cloud.google.com/go/filestore v1.5.0/go.mod h1:FqBXDWBp4YLHqRnVGveOkHDf8svj9r5+mUDLupOWEDs= -cloud.google.com/go/filestore v1.6.0/go.mod h1:di5unNuss/qfZTw2U9nhFqo8/ZDSc466dre85Kydllg= -cloud.google.com/go/firestore v1.9.0/go.mod h1:HMkjKHNTtRyZNiMzu7YAsLr9K3X2udY2AMwDaMEQiiE= -cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= -cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= -cloud.google.com/go/functions v1.8.0/go.mod h1:RTZ4/HsQjIqIYP9a9YPbU+QFoQsAlYgrwOXJWHn1POY= -cloud.google.com/go/functions v1.9.0/go.mod h1:Y+Dz8yGguzO3PpIjhLTbnqV1CWmgQ5UwtlpzoyquQ08= -cloud.google.com/go/functions v1.10.0/go.mod h1:0D3hEOe3DbEvCXtYOZHQZmD+SzYsi1YbI7dGvHfldXw= -cloud.google.com/go/functions v1.12.0/go.mod h1:AXWGrF3e2C/5ehvwYo/GH6O5s09tOPksiKhz+hH8WkA= -cloud.google.com/go/functions v1.13.0/go.mod h1:EU4O007sQm6Ef/PwRsI8N2umygGqPBS/IZQKBQBcJ3c= -cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= -cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= -cloud.google.com/go/gaming v1.7.0/go.mod h1:LrB8U7MHdGgFG851iHAfqUdLcKBdQ55hzXy9xBJz0+w= -cloud.google.com/go/gaming v1.8.0/go.mod h1:xAqjS8b7jAVW0KFYeRUxngo9My3f33kFmua++Pi+ggM= -cloud.google.com/go/gaming v1.9.0/go.mod h1:Fc7kEmCObylSWLO334NcO+O9QMDyz+TKC4v1D7X+Bc0= -cloud.google.com/go/gkebackup v0.2.0/go.mod h1:XKvv/4LfG829/B8B7xRkk8zRrOEbKtEam6yNfuQNH60= -cloud.google.com/go/gkebackup v0.3.0/go.mod h1:n/E671i1aOQvUxT541aTkCwExO/bTer2HDlj4TsBRAo= -cloud.google.com/go/gkebackup v0.4.0/go.mod h1:byAyBGUwYGEEww7xsbnUTBHIYcOPy/PgUWUtOeRm9Vg= -cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= -cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= -cloud.google.com/go/gkeconnect v0.7.0/go.mod h1:SNfmVqPkaEi3bF/B3CNZOAYPYdg7sU+obZ+QTky2Myw= -cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= -cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= -cloud.google.com/go/gkehub v0.11.0/go.mod h1:JOWHlmN+GHyIbuWQPl47/C2RFhnFKH38jH9Ascu3n0E= -cloud.google.com/go/gkehub v0.12.0/go.mod h1:djiIwwzTTBrF5NaXCGv3mf7klpEMcST17VBTVVDcuaw= -cloud.google.com/go/gkemulticloud v0.3.0/go.mod h1:7orzy7O0S+5kq95e4Hpn7RysVA7dPs8W/GgfUtsPbrA= -cloud.google.com/go/gkemulticloud v0.4.0/go.mod h1:E9gxVBnseLWCk24ch+P9+B2CoDFJZTyIgLKSalC7tuI= -cloud.google.com/go/gkemulticloud v0.5.0/go.mod h1:W0JDkiyi3Tqh0TJr//y19wyb1yf8llHVto2Htf2Ja3Y= -cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= -cloud.google.com/go/gsuiteaddons v1.3.0/go.mod h1:EUNK/J1lZEZO8yPtykKxLXI6JSVN2rg9bN8SXOa0bgM= -cloud.google.com/go/gsuiteaddons v1.4.0/go.mod h1:rZK5I8hht7u7HxFQcFei0+AtfS9uSushomRlg+3ua1o= -cloud.google.com/go/gsuiteaddons v1.5.0/go.mod h1:TFCClYLd64Eaa12sFVmUyG62tk4mdIsI7pAnSXRkcFo= -cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c= -cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= -cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= -cloud.google.com/go/iam v0.6.0/go.mod h1:+1AH33ueBne5MzYccyMHtEKqLE4/kJOibtffMHDMFMc= -cloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg= -cloud.google.com/go/iam v0.8.0/go.mod h1:lga0/y3iH6CX7sYqypWJ33hf7kkfXJag67naqGESjkE= -cloud.google.com/go/iam v0.11.0/go.mod h1:9PiLDanza5D+oWFZiH1uG+RnRCfEGKoyl6yo4cgWZGY= -cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY= -cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0= cloud.google.com/go/iam v1.5.3 h1:+vMINPiDF2ognBJ97ABAYYwRgsaqxPbQDlMnbHMjolc= cloud.google.com/go/iam v1.5.3/go.mod h1:MR3v9oLkZCTlaqljW6Eb2d3HGDGK5/bDv93jhfISFvU= -cloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc= -cloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/Ix9A= -cloud.google.com/go/iap v1.6.0/go.mod h1:NSuvI9C/j7UdjGjIde7t7HBz+QTwBcapPE07+sSRcLk= -cloud.google.com/go/iap v1.7.0/go.mod h1:beqQx56T9O1G1yNPph+spKpNibDlYIiIixiqsQXxLIo= -cloud.google.com/go/iap v1.7.1/go.mod h1:WapEwPc7ZxGt2jFGB/C/bm+hP0Y6NXzOYGjpPnmMS74= -cloud.google.com/go/ids v1.1.0/go.mod h1:WIuwCaYVOzHIj2OhN9HAwvW+DBdmUAdcWlFxRl+KubM= -cloud.google.com/go/ids v1.2.0/go.mod h1:5WXvp4n25S0rA/mQWAg1YEEBBq6/s+7ml1RDCW1IrcY= -cloud.google.com/go/ids v1.3.0/go.mod h1:JBdTYwANikFKaDP6LtW5JAi4gubs57SVNQjemdt6xV4= -cloud.google.com/go/iot v1.3.0/go.mod h1:r7RGh2B61+B8oz0AGE+J72AhA0G7tdXItODWsaA2oLs= -cloud.google.com/go/iot v1.4.0/go.mod h1:dIDxPOn0UvNDUMD8Ger7FIaTuvMkj+aGk94RPP0iV+g= -cloud.google.com/go/iot v1.5.0/go.mod h1:mpz5259PDl3XJthEmh9+ap0affn/MqNSP4My77Qql9o= -cloud.google.com/go/iot v1.6.0/go.mod h1:IqdAsmE2cTYYNO1Fvjfzo9po179rAtJeVGUvkLN3rLE= -cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA= -cloud.google.com/go/kms v1.5.0/go.mod h1:QJS2YY0eJGBg3mnDfuaCyLauWwBJiHRboYxJ++1xJNg= -cloud.google.com/go/kms v1.6.0/go.mod h1:Jjy850yySiasBUDi6KFUwUv2n1+o7QZFyuUJg6OgjA0= -cloud.google.com/go/kms v1.8.0/go.mod h1:4xFEhYFqvW+4VMELtZyxomGSYtSQKzM178ylFW4jMAg= -cloud.google.com/go/kms v1.9.0/go.mod h1:qb1tPTgfF9RQP8e1wq4cLFErVuTJv7UsSC915J8dh3w= -cloud.google.com/go/kms v1.10.0/go.mod h1:ng3KTUtQQU9bPX3+QGLsflZIHlkbn8amFAMY63m8d24= -cloud.google.com/go/kms v1.10.1/go.mod h1:rIWk/TryCkR59GMC3YtHtXeLzd634lBbKenvyySAyYI= -cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= -cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= -cloud.google.com/go/language v1.7.0/go.mod h1:DJ6dYN/W+SQOjF8e1hLQXMF21AkH2w9wiPzPCJa2MIE= -cloud.google.com/go/language v1.8.0/go.mod h1:qYPVHf7SPoNNiCL2Dr0FfEFNil1qi3pQEyygwpgVKB8= -cloud.google.com/go/language v1.9.0/go.mod h1:Ns15WooPM5Ad/5no/0n81yUetis74g3zrbeJBE+ptUY= -cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= -cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= -cloud.google.com/go/lifesciences v0.8.0/go.mod h1:lFxiEOMqII6XggGbOnKiyZ7IBwoIqA84ClvoezaA/bo= -cloud.google.com/go/logging v1.6.1/go.mod h1:5ZO0mHHbvm8gEmeEUHrmDlTDSu5imF6MUP9OfilNXBw= -cloud.google.com/go/logging v1.7.0/go.mod h1:3xjP2CjkM3ZkO73aj4ASA5wRPGGCRrPIAeNqVNkzY8M= cloud.google.com/go/logging v1.13.1 h1:O7LvmO0kGLaHY/gq8cV7T0dyp6zJhYAOtZPX4TF3QtY= cloud.google.com/go/logging v1.13.1/go.mod h1:XAQkfkMBxQRjQek96WLPNze7vsOmay9H5PqfsNYDqvw= -cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE= -cloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc= -cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo= -cloud.google.com/go/longrunning v0.7.0 h1:FV0+SYF1RIj59gyoWDRi45GiYUMM3K1qO51qoboQT1E= -cloud.google.com/go/longrunning v0.7.0/go.mod h1:ySn2yXmjbK9Ba0zsQqunhDkYi0+9rlXIwnoAf+h+TPY= -cloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE= -cloud.google.com/go/managedidentities v1.4.0/go.mod h1:NWSBYbEMgqmbZsLIyKvxrYbtqOsxY1ZrGM+9RgDqInM= -cloud.google.com/go/managedidentities v1.5.0/go.mod h1:+dWcZ0JlUmpuxpIDfyP5pP5y0bLdRwOS4Lp7gMni/LA= -cloud.google.com/go/maps v0.1.0/go.mod h1:BQM97WGyfw9FWEmQMpZ5T6cpovXXSd1cGmFma94eubI= -cloud.google.com/go/maps v0.6.0/go.mod h1:o6DAMMfb+aINHz/p/jbcY+mYeXBoZoxTfdSQ8VAJaCw= -cloud.google.com/go/maps v0.7.0/go.mod h1:3GnvVl3cqeSvgMcpRlQidXsPYuDGQ8naBis7MVzpXsY= -cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= -cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= -cloud.google.com/go/mediatranslation v0.7.0/go.mod h1:LCnB/gZr90ONOIQLgSXagp8XUW1ODs2UmUMvcgMfI2I= -cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= -cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= -cloud.google.com/go/memcache v1.6.0/go.mod h1:XS5xB0eQZdHtTuTF9Hf8eJkKtR3pVRCcvJwtm68T3rA= -cloud.google.com/go/memcache v1.7.0/go.mod h1:ywMKfjWhNtkQTxrWxCkCFkoPjLHPW6A7WOTVI8xy3LY= -cloud.google.com/go/memcache v1.9.0/go.mod h1:8oEyzXCu+zo9RzlEaEjHl4KkgjlNDaXbCQeQWlzNFJM= -cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= -cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= -cloud.google.com/go/metastore v1.7.0/go.mod h1:s45D0B4IlsINu87/AsWiEVYbLaIMeUSoxlKKDqBGFS8= -cloud.google.com/go/metastore v1.8.0/go.mod h1:zHiMc4ZUpBiM7twCIFQmJ9JMEkDSyZS9U12uf7wHqSI= -cloud.google.com/go/metastore v1.10.0/go.mod h1:fPEnH3g4JJAk+gMRnrAnoqyv2lpUCqJPWOodSaf45Eo= -cloud.google.com/go/monitoring v1.7.0/go.mod h1:HpYse6kkGo//7p6sT0wsIC6IBDET0RhIsnmlA53dvEk= -cloud.google.com/go/monitoring v1.8.0/go.mod h1:E7PtoMJ1kQXWxPjB6mv2fhC5/15jInuulFdYYtlcvT4= -cloud.google.com/go/monitoring v1.12.0/go.mod h1:yx8Jj2fZNEkL/GYZyTLS4ZtZEZN8WtDEiEqG4kLK50w= -cloud.google.com/go/monitoring v1.13.0/go.mod h1:k2yMBAB1H9JT/QETjNkgdCGD9bPF712XiLTVr+cBrpw= +cloud.google.com/go/longrunning v0.8.0 h1:LiKK77J3bx5gDLi4SMViHixjD2ohlkwBi+mKA7EhfW8= +cloud.google.com/go/longrunning v0.8.0/go.mod h1:UmErU2Onzi+fKDg2gR7dusz11Pe26aknR4kHmJJqIfk= cloud.google.com/go/monitoring v1.24.3 h1:dde+gMNc0UhPZD1Azu6at2e79bfdztVDS5lvhOdsgaE= cloud.google.com/go/monitoring v1.24.3/go.mod h1:nYP6W0tm3N9H/bOw8am7t62YTzZY+zUeQ+Bi6+2eonI= -cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= -cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= -cloud.google.com/go/networkconnectivity v1.6.0/go.mod h1:OJOoEXW+0LAxHh89nXd64uGG+FbQoeH8DtxCHVOMlaM= -cloud.google.com/go/networkconnectivity v1.7.0/go.mod h1:RMuSbkdbPwNMQjB5HBWD5MpTBnNm39iAVpC3TmsExt8= -cloud.google.com/go/networkconnectivity v1.10.0/go.mod h1:UP4O4sWXJG13AqrTdQCD9TnLGEbtNRqjuaaA7bNjF5E= -cloud.google.com/go/networkconnectivity v1.11.0/go.mod h1:iWmDD4QF16VCDLXUqvyspJjIEtBR/4zq5hwnY2X3scM= -cloud.google.com/go/networkmanagement v1.4.0/go.mod h1:Q9mdLLRn60AsOrPc8rs8iNV6OHXaGcDdsIQe1ohekq8= -cloud.google.com/go/networkmanagement v1.5.0/go.mod h1:ZnOeZ/evzUdUsnvRt792H0uYEnHQEMaz+REhhzJRcf4= -cloud.google.com/go/networkmanagement v1.6.0/go.mod h1:5pKPqyXjB/sgtvB5xqOemumoQNB7y95Q7S+4rjSOPYY= -cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= -cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= -cloud.google.com/go/networksecurity v0.7.0/go.mod h1:mAnzoxx/8TBSyXEeESMy9OOYwo1v+gZ5eMRnsT5bC8k= -cloud.google.com/go/networksecurity v0.8.0/go.mod h1:B78DkqsxFG5zRSVuwYFRZ9Xz8IcQ5iECsNrPn74hKHU= -cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= -cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= -cloud.google.com/go/notebooks v1.4.0/go.mod h1:4QPMngcwmgb6uw7Po99B2xv5ufVoIQ7nOGDyL4P8AgA= -cloud.google.com/go/notebooks v1.5.0/go.mod h1:q8mwhnP9aR8Hpfnrc5iN5IBhrXUy8S2vuYs+kBJ/gu0= -cloud.google.com/go/notebooks v1.7.0/go.mod h1:PVlaDGfJgj1fl1S3dUwhFMXFgfYGhYQt2164xOMONmE= -cloud.google.com/go/notebooks v1.8.0/go.mod h1:Lq6dYKOYOWUCTvw5t2q1gp1lAp0zxAxRycayS0iJcqQ= -cloud.google.com/go/optimization v1.1.0/go.mod h1:5po+wfvX5AQlPznyVEZjGJTMr4+CAkJf2XSTQOOl9l4= -cloud.google.com/go/optimization v1.2.0/go.mod h1:Lr7SOHdRDENsh+WXVmQhQTrzdu9ybg0NecjHidBq6xs= -cloud.google.com/go/optimization v1.3.1/go.mod h1:IvUSefKiwd1a5p0RgHDbWCIbDFgKuEdB+fPPuP0IDLI= -cloud.google.com/go/orchestration v1.3.0/go.mod h1:Sj5tq/JpWiB//X/q3Ngwdl5K7B7Y0KZ7bfv0wL6fqVA= -cloud.google.com/go/orchestration v1.4.0/go.mod h1:6W5NLFWs2TlniBphAViZEVhrXRSMgUGDfW7vrWKvsBk= -cloud.google.com/go/orchestration v1.6.0/go.mod h1:M62Bevp7pkxStDfFfTuCOaXgaaqRAga1yKyoMtEoWPQ= -cloud.google.com/go/orgpolicy v1.4.0/go.mod h1:xrSLIV4RePWmP9P3tBl8S93lTmlAxjm06NSm2UTmKvE= -cloud.google.com/go/orgpolicy v1.5.0/go.mod h1:hZEc5q3wzwXJaKrsx5+Ewg0u1LxJ51nNFlext7Tanwc= -cloud.google.com/go/orgpolicy v1.10.0/go.mod h1:w1fo8b7rRqlXlIJbVhOMPrwVljyuW5mqssvBtU18ONc= -cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= -cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= -cloud.google.com/go/osconfig v1.9.0/go.mod h1:Yx+IeIZJ3bdWmzbQU4fxNl8xsZ4amB+dygAwFPlvnNo= -cloud.google.com/go/osconfig v1.10.0/go.mod h1:uMhCzqC5I8zfD9zDEAfvgVhDS8oIjySWh+l4WK6GnWw= -cloud.google.com/go/osconfig v1.11.0/go.mod h1:aDICxrur2ogRd9zY5ytBLV89KEgT2MKB2L/n6x1ooPw= -cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= -cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= -cloud.google.com/go/oslogin v1.6.0/go.mod h1:zOJ1O3+dTU8WPlGEkFSh7qeHPPSoxrcMbbK1Nm2iX70= -cloud.google.com/go/oslogin v1.7.0/go.mod h1:e04SN0xO1UNJ1M5GP0vzVBFicIe4O53FOfcixIqTyXo= -cloud.google.com/go/oslogin v1.9.0/go.mod h1:HNavntnH8nzrn8JCTT5fj18FuJLFJc4NaZJtBnQtKFs= -cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= -cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= -cloud.google.com/go/phishingprotection v0.7.0/go.mod h1:8qJI4QKHoda/sb/7/YmMQ2omRLSLYSu9bU0EKCNI+Lk= -cloud.google.com/go/policytroubleshooter v1.3.0/go.mod h1:qy0+VwANja+kKrjlQuOzmlvscn4RNsAc0e15GGqfMxg= -cloud.google.com/go/policytroubleshooter v1.4.0/go.mod h1:DZT4BcRw3QoO8ota9xw/LKtPa8lKeCByYeKTIf/vxdE= -cloud.google.com/go/policytroubleshooter v1.5.0/go.mod h1:Rz1WfV+1oIpPdN2VvvuboLVRsB1Hclg3CKQ53j9l8vw= -cloud.google.com/go/policytroubleshooter v1.6.0/go.mod h1:zYqaPTsmfvpjm5ULxAyD/lINQxJ0DDsnWOP/GZ7xzBc= -cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= -cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= -cloud.google.com/go/privatecatalog v0.7.0/go.mod h1:2s5ssIFO69F5csTXcwBP7NPFTZvps26xGzvQ2PQaBYg= -cloud.google.com/go/privatecatalog v0.8.0/go.mod h1:nQ6pfaegeDAq/Q5lrfCQzQLhubPiZhSaNhIgfJlnIXs= -cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= -cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= -cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= -cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= -cloud.google.com/go/pubsub v1.26.0/go.mod h1:QgBH3U/jdJy/ftjPhTkyXNj543Tin1pRYcdcPRnFIRI= -cloud.google.com/go/pubsub v1.27.1/go.mod h1:hQN39ymbV9geqBnfQq6Xf63yNhUAhv9CZhzp5O6qsW0= -cloud.google.com/go/pubsub v1.28.0/go.mod h1:vuXFpwaVoIPQMGXqRyUQigu/AX1S3IWugR9xznmcXX8= -cloud.google.com/go/pubsub v1.30.0/go.mod h1:qWi1OPS0B+b5L+Sg6Gmc9zD1Y+HaM0MdUr7LsupY1P4= -cloud.google.com/go/pubsublite v1.5.0/go.mod h1:xapqNQ1CuLfGi23Yda/9l4bBCKz/wC3KIJ5gKcxveZg= -cloud.google.com/go/pubsublite v1.6.0/go.mod h1:1eFCS0U11xlOuMFV/0iBqw3zP12kddMeCbj/F3FSj9k= -cloud.google.com/go/pubsublite v1.7.0/go.mod h1:8hVMwRXfDfvGm3fahVbtDbiLePT3gpoiJYJY+vxWxVM= -cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= -cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= -cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= -cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= -cloud.google.com/go/recaptchaenterprise/v2 v2.4.0/go.mod h1:Am3LHfOuBstrLrNCBrlI5sbwx9LBg3te2N6hGvHn2mE= -cloud.google.com/go/recaptchaenterprise/v2 v2.5.0/go.mod h1:O8LzcHXN3rz0j+LBC91jrwI3R+1ZSZEWrfL7XHgNo9U= -cloud.google.com/go/recaptchaenterprise/v2 v2.6.0/go.mod h1:RPauz9jeLtB3JVzg6nCbe12qNoaa8pXc4d/YukAmcnA= -cloud.google.com/go/recaptchaenterprise/v2 v2.7.0/go.mod h1:19wVj/fs5RtYtynAPJdDTb69oW0vNHYDBTbB4NvMD9c= -cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= -cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= -cloud.google.com/go/recommendationengine v0.7.0/go.mod h1:1reUcE3GIu6MeBz/h5xZJqNLuuVjNg1lmWMPyjatzac= -cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= -cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= -cloud.google.com/go/recommender v1.7.0/go.mod h1:XLHs/W+T8olwlGOgfQenXBTbIseGclClff6lhFVe9Bs= -cloud.google.com/go/recommender v1.8.0/go.mod h1:PkjXrTT05BFKwxaUxQmtIlrtj0kph108r02ZZQ5FE70= -cloud.google.com/go/recommender v1.9.0/go.mod h1:PnSsnZY7q+VL1uax2JWkt/UegHssxjUVVCrX52CuEmQ= -cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= -cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= -cloud.google.com/go/redis v1.9.0/go.mod h1:HMYQuajvb2D0LvMgZmLDZW8V5aOC/WxstZHiy4g8OiA= -cloud.google.com/go/redis v1.10.0/go.mod h1:ThJf3mMBQtW18JzGgh41/Wld6vnDDc/F/F35UolRZPM= -cloud.google.com/go/redis v1.11.0/go.mod h1:/X6eicana+BWcUda5PpwZC48o37SiFVTFSs0fWAJ7uQ= -cloud.google.com/go/resourcemanager v1.3.0/go.mod h1:bAtrTjZQFJkiWTPDb1WBjzvc6/kifjj4QBYuKCCoqKA= -cloud.google.com/go/resourcemanager v1.4.0/go.mod h1:MwxuzkumyTX7/a3n37gmsT3py7LIXwrShilPh3P1tR0= -cloud.google.com/go/resourcemanager v1.5.0/go.mod h1:eQoXNAiAvCf5PXxWxXjhKQoTMaUSNrEfg+6qdf/wots= -cloud.google.com/go/resourcemanager v1.6.0/go.mod h1:YcpXGRs8fDzcUl1Xw8uOVmI8JEadvhRIkoXXUNVYcVo= -cloud.google.com/go/resourcemanager v1.7.0/go.mod h1:HlD3m6+bwhzj9XCouqmeiGuni95NTrExfhoSrkC/3EI= -cloud.google.com/go/resourcesettings v1.3.0/go.mod h1:lzew8VfESA5DQ8gdlHwMrqZs1S9V87v3oCnKCWoOuQU= -cloud.google.com/go/resourcesettings v1.4.0/go.mod h1:ldiH9IJpcrlC3VSuCGvjR5of/ezRrOxFtpJoJo5SmXg= -cloud.google.com/go/resourcesettings v1.5.0/go.mod h1:+xJF7QSG6undsQDfsCJyqWXyBwUoJLhetkRMDRnIoXA= -cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= -cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= -cloud.google.com/go/retail v1.10.0/go.mod h1:2gDk9HsL4HMS4oZwz6daui2/jmKvqShXKQuB2RZ+cCc= -cloud.google.com/go/retail v1.11.0/go.mod h1:MBLk1NaWPmh6iVFSz9MeKG/Psyd7TAgm6y/9L2B4x9Y= -cloud.google.com/go/retail v1.12.0/go.mod h1:UMkelN/0Z8XvKymXFbD4EhFJlYKRx1FGhQkVPU5kF14= -cloud.google.com/go/run v0.2.0/go.mod h1:CNtKsTA1sDcnqqIFR3Pb5Tq0usWxJJvsWOCPldRU3Do= -cloud.google.com/go/run v0.3.0/go.mod h1:TuyY1+taHxTjrD0ZFk2iAR+xyOXEA0ztb7U3UNA0zBo= -cloud.google.com/go/run v0.8.0/go.mod h1:VniEnuBwqjigv0A7ONfQUaEItaiCRVujlMqerPPiktM= -cloud.google.com/go/run v0.9.0/go.mod h1:Wwu+/vvg8Y+JUApMwEDfVfhetv30hCG4ZwDR/IXl2Qg= -cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= -cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= -cloud.google.com/go/scheduler v1.6.0/go.mod h1:SgeKVM7MIwPn3BqtcBntpLyrIJftQISRrYB5ZtT+KOk= -cloud.google.com/go/scheduler v1.7.0/go.mod h1:jyCiBqWW956uBjjPMMuX09n3x37mtyPJegEWKxRsn44= -cloud.google.com/go/scheduler v1.8.0/go.mod h1:TCET+Y5Gp1YgHT8py4nlg2Sew8nUHMqcpousDgXJVQc= -cloud.google.com/go/scheduler v1.9.0/go.mod h1:yexg5t+KSmqu+njTIh3b7oYPheFtBWGcbVUYF1GGMIc= -cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= -cloud.google.com/go/secretmanager v1.8.0/go.mod h1:hnVgi/bN5MYHd3Gt0SPuTPPp5ENina1/LxM+2W9U9J4= -cloud.google.com/go/secretmanager v1.9.0/go.mod h1:b71qH2l1yHmWQHt9LC80akm86mX8AL6X1MA01dW8ht4= -cloud.google.com/go/secretmanager v1.10.0/go.mod h1:MfnrdvKMPNra9aZtQFvBcvRU54hbPD8/HayQdlUgJpU= -cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= -cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= -cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= -cloud.google.com/go/security v1.9.0/go.mod h1:6Ta1bO8LXI89nZnmnsZGp9lVoVWXqsVbIq/t9dzI+2Q= -cloud.google.com/go/security v1.10.0/go.mod h1:QtOMZByJVlibUT2h9afNDWRZ1G96gVywH8T5GUSb9IA= -cloud.google.com/go/security v1.12.0/go.mod h1:rV6EhrpbNHrrxqlvW0BWAIawFWq3X90SduMJdFwtLB8= -cloud.google.com/go/security v1.13.0/go.mod h1:Q1Nvxl1PAgmeW0y3HTt54JYIvUdtcpYKVfIB8AOMZ+0= -cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= -cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= -cloud.google.com/go/securitycenter v1.15.0/go.mod h1:PeKJ0t8MoFmmXLXWm41JidyzI3PJjd8sXWaVqg43WWk= -cloud.google.com/go/securitycenter v1.16.0/go.mod h1:Q9GMaLQFUD+5ZTabrbujNWLtSLZIZF7SAR0wWECrjdk= -cloud.google.com/go/securitycenter v1.18.1/go.mod h1:0/25gAzCM/9OL9vVx4ChPeM/+DlfGQJDwBy/UC8AKK0= -cloud.google.com/go/securitycenter v1.19.0/go.mod h1:LVLmSg8ZkkyaNy4u7HCIshAngSQ8EcIRREP3xBnyfag= -cloud.google.com/go/servicecontrol v1.4.0/go.mod h1:o0hUSJ1TXJAmi/7fLJAedOovnujSEvjKCAFNXPQ1RaU= -cloud.google.com/go/servicecontrol v1.5.0/go.mod h1:qM0CnXHhyqKVuiZnGKrIurvVImCs8gmqWsDoqe9sU1s= -cloud.google.com/go/servicecontrol v1.10.0/go.mod h1:pQvyvSRh7YzUF2efw7H87V92mxU8FnFDawMClGCNuAA= -cloud.google.com/go/servicecontrol v1.11.0/go.mod h1:kFmTzYzTUIuZs0ycVqRHNaNhgR+UMUpw9n02l/pY+mc= -cloud.google.com/go/servicecontrol v1.11.1/go.mod h1:aSnNNlwEFBY+PWGQ2DoM0JJ/QUXqV5/ZD9DOLB7SnUk= -cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= -cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= -cloud.google.com/go/servicedirectory v1.6.0/go.mod h1:pUlbnWsLH9c13yGkxCmfumWEPjsRs1RlmJ4pqiNjVL4= -cloud.google.com/go/servicedirectory v1.7.0/go.mod h1:5p/U5oyvgYGYejufvxhgwjL8UVXjkuw7q5XcG10wx1U= -cloud.google.com/go/servicedirectory v1.8.0/go.mod h1:srXodfhY1GFIPvltunswqXpVxFPpZjf8nkKQT7XcXaY= -cloud.google.com/go/servicedirectory v1.9.0/go.mod h1:29je5JjiygNYlmsGz8k6o+OZ8vd4f//bQLtvzkPPT/s= -cloud.google.com/go/servicemanagement v1.4.0/go.mod h1:d8t8MDbezI7Z2R1O/wu8oTggo3BI2GKYbdG4y/SJTco= -cloud.google.com/go/servicemanagement v1.5.0/go.mod h1:XGaCRe57kfqu4+lRxaFEAuqmjzF0r+gWHjWqKqBvKFo= -cloud.google.com/go/servicemanagement v1.6.0/go.mod h1:aWns7EeeCOtGEX4OvZUWCCJONRZeFKiptqKf1D0l/Jc= -cloud.google.com/go/servicemanagement v1.8.0/go.mod h1:MSS2TDlIEQD/fzsSGfCdJItQveu9NXnUniTrq/L8LK4= -cloud.google.com/go/serviceusage v1.3.0/go.mod h1:Hya1cozXM4SeSKTAgGXgj97GlqUvF5JaoXacR1JTP/E= -cloud.google.com/go/serviceusage v1.4.0/go.mod h1:SB4yxXSaYVuUBYUml6qklyONXNLt83U0Rb+CXyhjEeU= -cloud.google.com/go/serviceusage v1.5.0/go.mod h1:w8U1JvqUqwJNPEOTQjrMHkw3IaIFLoLsPLvsE3xueec= -cloud.google.com/go/serviceusage v1.6.0/go.mod h1:R5wwQcbOWsyuOfbP9tGdAnCAc6B9DRwPG1xtWMDeuPA= -cloud.google.com/go/shell v1.3.0/go.mod h1:VZ9HmRjZBsjLGXusm7K5Q5lzzByZmJHf1d0IWHEN5X4= -cloud.google.com/go/shell v1.4.0/go.mod h1:HDxPzZf3GkDdhExzD/gs8Grqk+dmYcEjGShZgYa9URw= -cloud.google.com/go/shell v1.6.0/go.mod h1:oHO8QACS90luWgxP3N9iZVuEiSF84zNyLytb+qE2f9A= -cloud.google.com/go/spanner v1.41.0/go.mod h1:MLYDBJR/dY4Wt7ZaMIQ7rXOTLjYrmxLE/5ve9vFfWos= -cloud.google.com/go/spanner v1.44.0/go.mod h1:G8XIgYdOK+Fbcpbs7p2fiprDw4CaZX63whnSMLVBxjk= -cloud.google.com/go/spanner v1.45.0/go.mod h1:FIws5LowYz8YAE1J8fOS7DJup8ff7xJeetWEo5REA2M= -cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= -cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= -cloud.google.com/go/speech v1.8.0/go.mod h1:9bYIl1/tjsAnMgKGHKmBZzXKEkGgtU+MpdDPTE9f7y0= -cloud.google.com/go/speech v1.9.0/go.mod h1:xQ0jTcmnRFFM2RfX/U+rk6FQNUF6DQlydUSyoooSpco= -cloud.google.com/go/speech v1.14.1/go.mod h1:gEosVRPJ9waG7zqqnsHpYTOoAS4KouMRLDFMekpJ0J0= -cloud.google.com/go/speech v1.15.0/go.mod h1:y6oH7GhqCaZANH7+Oe0BhgIogsNInLlz542tg3VqeYI= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= -cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= -cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= -cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= -cloud.google.com/go/storage v1.28.1/go.mod h1:Qnisd4CqDdo6BGs2AD5LLnEsmSQ80wQ5ogcBBKhU86Y= -cloud.google.com/go/storage v1.29.0/go.mod h1:4puEjyTKnku6gfKoTfNOU/W+a9JyuVNxjpS5GBrB8h4= -cloud.google.com/go/storage v1.57.2 h1:sVlym3cHGYhrp6XZKkKb+92I1V42ks2qKKpB0CF5Mb4= -cloud.google.com/go/storage v1.57.2/go.mod h1:n5ijg4yiRXXpCu0sJTD6k+eMf7GRrJmPyr9YxLXGHOk= -cloud.google.com/go/storagetransfer v1.5.0/go.mod h1:dxNzUopWy7RQevYFHewchb29POFv3/AaBgnhqzqiK0w= -cloud.google.com/go/storagetransfer v1.6.0/go.mod h1:y77xm4CQV/ZhFZH75PLEXY0ROiS7Gh6pSKrM8dJyg6I= -cloud.google.com/go/storagetransfer v1.7.0/go.mod h1:8Giuj1QNb1kfLAiWM1bN6dHzfdlDAVC9rv9abHot2W4= -cloud.google.com/go/storagetransfer v1.8.0/go.mod h1:JpegsHHU1eXg7lMHkvf+KE5XDJ7EQu0GwNJbbVGanEw= -cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= -cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= -cloud.google.com/go/talent v1.3.0/go.mod h1:CmcxwJ/PKfRgd1pBjQgU6W3YBwiewmUzQYH5HHmSCmM= -cloud.google.com/go/talent v1.4.0/go.mod h1:ezFtAgVuRf8jRsvyE6EwmbTK5LKciD4KVnHuDEFmOOA= -cloud.google.com/go/talent v1.5.0/go.mod h1:G+ODMj9bsasAEJkQSzO2uHQWXHHXUomArjWQQYkqK6c= -cloud.google.com/go/texttospeech v1.4.0/go.mod h1:FX8HQHA6sEpJ7rCMSfXuzBcysDAuWusNNNvN9FELDd8= -cloud.google.com/go/texttospeech v1.5.0/go.mod h1:oKPLhR4n4ZdQqWKURdwxMy0uiTS1xU161C8W57Wkea4= -cloud.google.com/go/texttospeech v1.6.0/go.mod h1:YmwmFT8pj1aBblQOI3TfKmwibnsfvhIBzPXcW4EBovc= -cloud.google.com/go/tpu v1.3.0/go.mod h1:aJIManG0o20tfDQlRIej44FcwGGl/cD0oiRyMKG19IQ= -cloud.google.com/go/tpu v1.4.0/go.mod h1:mjZaX8p0VBgllCzF6wcU2ovUXN9TONFLd7iz227X2Xg= -cloud.google.com/go/tpu v1.5.0/go.mod h1:8zVo1rYDFuW2l4yZVY0R0fb/v44xLh3llq7RuV61fPM= -cloud.google.com/go/trace v1.3.0/go.mod h1:FFUE83d9Ca57C+K8rDl/Ih8LwOzWIV1krKgxg6N0G28= -cloud.google.com/go/trace v1.4.0/go.mod h1:UG0v8UBqzusp+z63o7FK74SdFE+AXpCLdFb1rshXG+Y= -cloud.google.com/go/trace v1.8.0/go.mod h1:zH7vcsbAhklH8hWFig58HvxcxyQbaIqMarMg9hn5ECA= -cloud.google.com/go/trace v1.9.0/go.mod h1:lOQqpE5IaWY0Ixg7/r2SjixMuc6lfTFeO4QGM4dQWOk= +cloud.google.com/go/storage v1.61.3 h1:VS//ZfBuPGDvakfD9xyPW1RGF1Vy3BWUoVZXgW1KMOg= +cloud.google.com/go/storage v1.61.3/go.mod h1:JtqK8BBB7TWv0HVGHubtUdzYYrakOQIsMLffZ2Z/HWk= cloud.google.com/go/trace v1.11.7 h1:kDNDX8JkaAG3R2nq1lIdkb7FCSi1rCmsEtKVsty7p+U= cloud.google.com/go/trace v1.11.7/go.mod h1:TNn9d5V3fQVf6s4SCveVMIBS2LJUqo73GACmq/Tky0s= -cloud.google.com/go/translate v1.3.0/go.mod h1:gzMUwRjvOqj5i69y/LYLd8RrNQk+hOmIXTi9+nb3Djs= -cloud.google.com/go/translate v1.4.0/go.mod h1:06Dn/ppvLD6WvA5Rhdp029IX2Mi3Mn7fpMRLPvXT5Wg= -cloud.google.com/go/translate v1.5.0/go.mod h1:29YDSYveqqpA1CQFD7NQuP49xymq17RXNaUDdc0mNu0= -cloud.google.com/go/translate v1.6.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= -cloud.google.com/go/translate v1.7.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= -cloud.google.com/go/video v1.8.0/go.mod h1:sTzKFc0bUSByE8Yoh8X0mn8bMymItVGPfTuUBUyRgxk= -cloud.google.com/go/video v1.9.0/go.mod h1:0RhNKFRF5v92f8dQt0yhaHrEuH95m068JYOvLZYnJSw= -cloud.google.com/go/video v1.12.0/go.mod h1:MLQew95eTuaNDEGriQdcYn0dTwf9oWiA4uYebxM5kdg= -cloud.google.com/go/video v1.13.0/go.mod h1:ulzkYlYgCp15N2AokzKjy7MQ9ejuynOJdf1tR5lGthk= -cloud.google.com/go/video v1.14.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= -cloud.google.com/go/video v1.15.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= -cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= -cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= -cloud.google.com/go/videointelligence v1.8.0/go.mod h1:dIcCn4gVDdS7yte/w+koiXn5dWVplOZkE+xwG9FgK+M= -cloud.google.com/go/videointelligence v1.9.0/go.mod h1:29lVRMPDYHikk3v8EdPSaL8Ku+eMzDljjuvRs105XoU= -cloud.google.com/go/videointelligence v1.10.0/go.mod h1:LHZngX1liVtUhZvi2uNS0VQuOzNi2TkY1OakiuoUOjU= -cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= -cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= -cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= -cloud.google.com/go/vision/v2 v2.4.0/go.mod h1:VtI579ll9RpVTrdKdkMzckdnwMyX2JILb+MhPqRbPsY= -cloud.google.com/go/vision/v2 v2.5.0/go.mod h1:MmaezXOOE+IWa+cS7OhRRLK2cNv1ZL98zhqFFZaaH2E= -cloud.google.com/go/vision/v2 v2.6.0/go.mod h1:158Hes0MvOS9Z/bDMSFpjwsUrZ5fPrdwuyyvKSGAGMY= -cloud.google.com/go/vision/v2 v2.7.0/go.mod h1:H89VysHy21avemp6xcf9b9JvZHVehWbET0uT/bcuY/0= -cloud.google.com/go/vmmigration v1.2.0/go.mod h1:IRf0o7myyWFSmVR1ItrBSFLFD/rJkfDCUTO4vLlJvsE= -cloud.google.com/go/vmmigration v1.3.0/go.mod h1:oGJ6ZgGPQOFdjHuocGcLqX4lc98YQ7Ygq8YQwHh9A7g= -cloud.google.com/go/vmmigration v1.5.0/go.mod h1:E4YQ8q7/4W9gobHjQg4JJSgXXSgY21nA5r8swQV+Xxc= -cloud.google.com/go/vmmigration v1.6.0/go.mod h1:bopQ/g4z+8qXzichC7GW1w2MjbErL54rk3/C843CjfY= -cloud.google.com/go/vmwareengine v0.1.0/go.mod h1:RsdNEf/8UDvKllXhMz5J40XxDrNJNN4sagiox+OI208= -cloud.google.com/go/vmwareengine v0.2.2/go.mod h1:sKdctNJxb3KLZkE/6Oui94iw/xs9PRNC2wnNLXsHvH8= -cloud.google.com/go/vmwareengine v0.3.0/go.mod h1:wvoyMvNWdIzxMYSpH/R7y2h5h3WFkx6d+1TIsP39WGY= -cloud.google.com/go/vpcaccess v1.4.0/go.mod h1:aQHVbTWDYUR1EbTApSVvMq1EnT57ppDmQzZ3imqIk4w= -cloud.google.com/go/vpcaccess v1.5.0/go.mod h1:drmg4HLk9NkZpGfCmZ3Tz0Bwnm2+DKqViEpeEpOq0m8= -cloud.google.com/go/vpcaccess v1.6.0/go.mod h1:wX2ILaNhe7TlVa4vC5xce1bCnqE3AeH27RV31lnmZes= -cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= -cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= -cloud.google.com/go/webrisk v1.6.0/go.mod h1:65sW9V9rOosnc9ZY7A7jsy1zoHS5W9IAXv6dGqhMQMc= -cloud.google.com/go/webrisk v1.7.0/go.mod h1:mVMHgEYH0r337nmt1JyLthzMr6YxwN1aAIEc2fTcq7A= -cloud.google.com/go/webrisk v1.8.0/go.mod h1:oJPDuamzHXgUc+b8SiHRcVInZQuybnvEW72PqTc7sSg= -cloud.google.com/go/websecurityscanner v1.3.0/go.mod h1:uImdKm2wyeXQevQJXeh8Uun/Ym1VqworNDlBXQevGMo= -cloud.google.com/go/websecurityscanner v1.4.0/go.mod h1:ebit/Fp0a+FWu5j4JOmJEV8S8CzdTkAS77oDsiSqYWQ= -cloud.google.com/go/websecurityscanner v1.5.0/go.mod h1:Y6xdCPy81yi0SQnDY1xdNTNpfY1oAgXUlcfN3B3eSng= -cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= -cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= -cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= -cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA= -cloud.google.com/go/workflows v1.10.0/go.mod h1:fZ8LmRmZQWacon9UCX1r/g/DfAXx5VcPALq2CxzdePw= connectrpc.com/connect v1.19.1 h1:R5M57z05+90EfEvCY1b7hBxDVOUl45PrtXtAV2fOC14= connectrpc.com/connect v1.19.1/go.mod h1:tN20fjdGlewnSFeZxLKb0xwIZ6ozc3OQs2hTXy4du9w= connectrpc.com/otelconnect v0.9.0 h1:NggB3pzRC3pukQWaYbRHJulxuXvmCKCKkQ9hbrHAWoA= @@ -685,8 +93,6 @@ cosmossdk.io/x/upgrade v0.2.0/go.mod h1:DXDtkvi//TrFyHWSOaeCZGBoiGAE6Rs8/0ABt2pc dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= filippo.io/edwards25519 v1.1.1 h1:YpjwWWlNmGIDyXOn8zLzqiD+9TyIlPhGFG96P39uBpw= filippo.io/edwards25519 v1.1.1/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= -gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= -git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= github.com/4meepo/tagalign v1.4.2 h1:0hcLHPGMjDyM1gHG58cS73aQF8J4TdVR96TZViorO9E= github.com/4meepo/tagalign v1.4.2/go.mod h1:+p4aMyFM+ra7nb41CnFG6aSDXqRxU/w1VQqScKqDARI= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= @@ -720,13 +126,12 @@ github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.1 h1:Sz1JIXEcSfhz7fUi7xHnh github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.1/go.mod h1:n/LSCXNuIYqVfBlVXyHfMQkZDdp1/mmxfSjADd3z1Zg= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 h1:sBEjpZlNHzK1voKq9695PJSX2o5NEXl7/OL3coiIY0c= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.54.0 h1:lhhYARPUu3LmHysQ/igznQphfzynnqI3D75oUyw1HXk= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.54.0/go.mod h1:l9rva3ApbBpEJxSNYnwT9N4CDLrWgtq3u8736C5hyJw= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.54.0 h1:xfK3bbi6F2RDtaZFtUdKO3osOBIhNb+xTs8lFW6yx9o= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.54.0/go.mod h1:vB2GH9GAYYJTO3mEn8oYwzEdhlayZIdQz6zdzgUIRvA= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.54.0 h1:s0WlVbf9qpvkh1c/uDAPElam0WrL7fHRIidgZJ7UqZI= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.54.0/go.mod h1:Mf6O40IAyB9zR/1J8nGDDPirZQQPbYJni8Yisy7NTMc= -github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0 h1:UnDZ/zFfG1JhH/DqxIZYU/1CUAlTUScoXD/LcM2Ykk8= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0/go.mod h1:IA1C1U7jO/ENqm/vhi7V9YYpBsp+IMyqNrEN94N7tVc= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.55.0 h1:7t/qx5Ost0s0wbA/VDrByOooURhp+ikYwv20i9Y07TQ= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.55.0/go.mod h1:vB2GH9GAYYJTO3mEn8oYwzEdhlayZIdQz6zdzgUIRvA= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0 h1:0s6TxfCu2KHkkZPnBfsQ2y5qia0jl3MMrmBhu3nCOYk= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0/go.mod h1:Mf6O40IAyB9zR/1J8nGDDPirZQQPbYJni8Yisy7NTMc= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= github.com/Masterminds/semver/v3 v3.3.1 h1:QtNSWtVZ3nBfk8mAOu/B6v7FMJ+NHTIgUPi7rj+4nv4= github.com/Masterminds/semver/v3 v3.3.1/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= @@ -734,7 +139,6 @@ github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERo github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/OpenPeeDeeP/depguard/v2 v2.2.1 h1:vckeWVESWp6Qog7UZSARNqfu/cZqvki8zsuj3piCMx4= github.com/OpenPeeDeeP/depguard/v2 v2.2.1/go.mod h1:q4DKzC4UcVaAvcfd41CZh0PWpGgzrVxUYBlgKNGquUo= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= @@ -747,10 +151,6 @@ github.com/adlio/schema v1.3.6 h1:k1/zc2jNfeiZBA5aFTRy37jlBIuCkXCm0XmvpzCKI9I= github.com/adlio/schema v1.3.6/go.mod h1:qkxwLgPBd1FgLRHYVCmQT/rrBr3JH38J9LjmVzWNudg= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= -github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY= -github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= -github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= -github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM= github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k= github.com/alecthomas/go-check-sumtype v0.3.1 h1:u9aUvbGINJxLVXiFvHUlPEaD7VDULsrxJb4Aq31NLkU= @@ -772,15 +172,11 @@ github.com/alingse/nilnesserr v0.1.2 h1:Yf8Iwm3z2hUUrP4muWfW83DF4nE3r1xZ26fGWUKC github.com/alingse/nilnesserr v0.1.2/go.mod h1:1xJPrXonEtX7wyTq8Dytns5P2hNzoWymVUIaKm4HNFg= github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156 h1:eMwmnE/GDgah4HI848JfFxHt+iPb26b4zyfspmqY0/8= github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= -github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/antlr4-go/antlr/v4 v4.13.1 h1:SqQKkuVZ+zWkMMNkjy5FZe5mr5WURWnlpmOuzYWrPrQ= github.com/antlr4-go/antlr/v4 v4.13.1/go.mod h1:GKmUxMtwp6ZgGwZSva4eWPC5mS6vUAmOABFgjdkM7Nw= -github.com/apache/arrow/go/v10 v10.0.1/go.mod h1:YvhnlEePVnBS4+0z3fhPfUy7W1Ikj0Ih0vcRo/gZ1M0= -github.com/apache/arrow/go/v11 v11.0.0/go.mod h1:Eg5OsL5H+e299f7u5ssuXsuHQVEGC4xei5aX110hRiI= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= @@ -792,10 +188,45 @@ github.com/ashanbrown/makezero v1.2.0 h1:/2Lp1bypdmK9wDIq7uWBlDF1iMUpIIS4A+pF6C9 github.com/ashanbrown/makezero v1.2.0/go.mod h1:dxlPhHbDMC6N6xICzFBSK+4njQDdK8euNO0qjQMtGY4= github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go v1.55.8 h1:JRmEUbU52aJQZ2AjX4q4Wu7t4uZjOu71uyNmaWlUkJQ= -github.com/aws/aws-sdk-go v1.55.8/go.mod h1:ZkViS9AqA6otK+JBBNH2++sx1sgxrPKcSzPPvQkUtXk= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= +github.com/aws/aws-sdk-go-v2 v1.41.4 h1:10f50G7WyU02T56ox1wWXq+zTX9I1zxG46HYuG1hH/k= +github.com/aws/aws-sdk-go-v2 v1.41.4/go.mod h1:mwsPRE8ceUUpiTgF7QmQIJ7lgsKUPQOUl3o72QBrE1o= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.7 h1:3kGOqnh1pPeddVa/E37XNTaWJ8W6vrbYV9lJEkCnhuY= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.7/go.mod h1:lyw7GFp3qENLh7kwzf7iMzAxDn+NzjXEAGjKS2UOKqI= +github.com/aws/aws-sdk-go-v2/config v1.32.12 h1:O3csC7HUGn2895eNrLytOJQdoL2xyJy0iYXhoZ1OmP0= +github.com/aws/aws-sdk-go-v2/config v1.32.12/go.mod h1:96zTvoOFR4FURjI+/5wY1vc1ABceROO4lWgWJuxgy0g= +github.com/aws/aws-sdk-go-v2/credentials v1.19.12 h1:oqtA6v+y5fZg//tcTWahyN9PEn5eDU/Wpvc2+kJ4aY8= +github.com/aws/aws-sdk-go-v2/credentials v1.19.12/go.mod h1:U3R1RtSHx6NB0DvEQFGyf/0sbrpJrluENHdPy1j/3TE= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20 h1:zOgq3uezl5nznfoK3ODuqbhVg1JzAGDUhXOsU0IDCAo= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20/go.mod h1:z/MVwUARehy6GAg/yQ1GO2IMl0k++cu1ohP9zo887wE= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20 h1:CNXO7mvgThFGqOFgbNAP2nol2qAWBOGfqR/7tQlvLmc= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20/go.mod h1:oydPDJKcfMhgfcgBUZaG+toBbwy8yPWubJXBVERtI4o= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20 h1:tN6W/hg+pkM+tf9XDkWUbDEjGLb+raoBMFsTodcoYKw= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20/go.mod h1:YJ898MhD067hSHA6xYCx5ts/jEd8BSOLtQDL3iZsvbc= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 h1:qYQ4pzQ2Oz6WpQ8T3HvGHnZydA72MnLuFK9tJwmrbHw= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.6/go.mod h1:O3h0IK87yXci+kg6flUKzJnWeziQUKciKrLjcatSNcY= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.21 h1:SwGMTMLIlvDNyhMteQ6r8IJSBPlRdXX5d4idhIGbkXA= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.21/go.mod h1:UUxgWxofmOdAMuqEsSppbDtGKLfR04HGsD0HXzvhI1k= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 h1:5EniKhLZe4xzL7a+fU3C2tfUN4nWIqlLesfrjkuPFTY= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7/go.mod h1:x0nZssQ3qZSnIcePWLvcoFisRXJzcTVvYpAAdYX8+GI= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.12 h1:qtJZ70afD3ISKWnoX3xB0J2otEqu3LqicRcDBqsj0hQ= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.12/go.mod h1:v2pNpJbRNl4vEUWEh5ytQok0zACAKfdmKS51Hotc3pQ= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20 h1:2HvVAIq+YqgGotK6EkMf+KIEqTISmTYh5zLpYyeTo1Y= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20/go.mod h1:V4X406Y666khGa8ghKmphma/7C0DAtEQYhkq9z4vpbk= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.20 h1:siU1A6xjUZ2N8zjTHSXFhB9L/2OY8Dqs0xXiLjF30jA= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.20/go.mod h1:4TLZCmVJDM3FOu5P5TJP0zOlu9zWgDWU7aUxWbr+rcw= +github.com/aws/aws-sdk-go-v2/service/s3 v1.97.1 h1:csi9NLpFZXb9fxY7rS1xVzgPRGMt7MSNWeQ6eo247kE= +github.com/aws/aws-sdk-go-v2/service/s3 v1.97.1/go.mod h1:qXVal5H0ChqXP63t6jze5LmFalc7+ZE7wOdLtZ0LCP0= +github.com/aws/aws-sdk-go-v2/service/signin v1.0.8 h1:0GFOLzEbOyZABS3PhYfBIx2rNBACYcKty+XGkTgw1ow= +github.com/aws/aws-sdk-go-v2/service/signin v1.0.8/go.mod h1:LXypKvk85AROkKhOG6/YEcHFPoX+prKTowKnVdcaIxE= +github.com/aws/aws-sdk-go-v2/service/sso v1.30.13 h1:kiIDLZ005EcKomYYITtfsjn7dtOwHDOFy7IbPXKek2o= +github.com/aws/aws-sdk-go-v2/service/sso v1.30.13/go.mod h1:2h/xGEowcW/g38g06g3KpRWDlT+OTfxxI0o1KqayAB8= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17 h1:jzKAXIlhZhJbnYwHbvUQZEB8KfgAEuG0dc08Bkda7NU= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17/go.mod h1:Al9fFsXjv4KfbzQHGe6V4NZSZQXecFcvaIF4e70FoRA= +github.com/aws/aws-sdk-go-v2/service/sts v1.41.9 h1:Cng+OOwCHmFljXIxpEVXAGMnBia8MSU6Ch5i9PgBkcU= +github.com/aws/aws-sdk-go-v2/service/sts v1.41.9/go.mod h1:LrlIndBDdjA/EeXeyNBle+gyCwTlizzW5ycgWnvIxkk= +github.com/aws/smithy-go v1.24.2 h1:FzA3bu/nt/vDvmnkg+R8Xl46gmzEDam6mZ1hzmwXFng= +github.com/aws/smithy-go v1.24.2/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= @@ -816,8 +247,6 @@ github.com/bmatcuk/doublestar/v4 v4.9.1 h1:X8jg9rRZmJd4yRy7ZeNDRnM+T3ZfHv15JiBJ/ github.com/bmatcuk/doublestar/v4 v4.9.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= github.com/bombsimon/wsl/v4 v4.5.0 h1:iZRsEvDdyhd2La0FVi5k6tYehpOR/R7qIUjmKk7N74A= github.com/bombsimon/wsl/v4 v4.5.0/go.mod h1:NOQ3aLF4nD7N5YPXMruR6ZXDOAqLoM0GEpLwTdvmOSc= -github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= -github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= github.com/breml/bidichk v0.3.2 h1:xV4flJ9V5xWTqxL+/PMFF6dtJPvZLPsyixAoPe8BGJs= github.com/breml/bidichk v0.3.2/go.mod h1:VzFLBxuYtT23z5+iVkamXO386OB+/sVwZOpIj6zXGos= github.com/breml/errchkjson v0.4.0 h1:gftf6uWZMtIa/Is3XJgibewBm2ksAQSY/kABDNFTAdk= @@ -878,20 +307,15 @@ github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInq github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= -github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/charithe/durationcheck v0.0.10 h1:wgw73BiocdBDQPik+zcEoBG/ob8uyBHf2iyoHGPf5w4= github.com/charithe/durationcheck v0.0.10/go.mod h1:bCWXb7gYRysD1CU3C+u4ceO49LoGOY1C1L6uouGNreQ= github.com/chavacava/garif v0.1.0 h1:2JHa3hbYf5D9dsgseMKAmc/MZ109otzgNFk5s87H9Pc= github.com/chavacava/garif v0.1.0/go.mod h1:XMyYCkEL58DF0oyW4qDjjnPWONs2HBqYKI+UIPD+Gww= -github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/logex v1.2.1 h1:XHDu3E6q+gdHgsdTPH6ImJMIp436vR6MPtH8gP05QzM= github.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ= @@ -912,18 +336,12 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk github.com/cloudwego/base64x v0.1.6 h1:t11wG9AECkCDk5fMSoxmufanudBtJ+/HemLstXDLI2M= github.com/cloudwego/base64x v0.1.6/go.mod h1:OFcloc187FXDaYHvrNIjxSe8ncn0OOM8gEHfghB2IPU= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 h1:6xNmx7iTtyBRev0+D/Tv1FZd4SCg8axKApyNyRsAt/w= github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5/go.mod h1:KdCmV+x/BuvyMxRnYBlmVaq4OLiKW6iRQfvC62cvdkI= github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= @@ -1063,9 +481,7 @@ github.com/docker/go-connections v0.6.0 h1:LlMG9azAe1TqfR7sO+NJttz1gy6KO7VJBh+pM github.com/docker/go-connections v0.6.0/go.mod h1:AahvXYshr6JgfUJGdDCs2b5EZG/vmaMAntpSFH5BFKE= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/dvsekhvalnov/jose2go v1.7.0 h1:bnQc8+GMnidJZA8zc6lLEAb4xNrIqHwO+9TzqvtQZPo= @@ -1080,14 +496,9 @@ github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4s github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= -github.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJJM//w9BV6Fxbg2LuVd34= -github.com/envoyproxy/go-control-plane v0.11.1-0.20230524094728-9239064ad72f/go.mod h1:sfYdkwUW4BA3PbKjySwjJy+O4Pu0h62rlqCMHNk+K+Q= github.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA= github.com/envoyproxy/go-control-plane v0.14.0/go.mod h1:NcS5X47pLl/hfqxU70yPwL9ZMkUlwlKxtAohpi2wBEU= github.com/envoyproxy/go-control-plane/envoy v1.36.0 h1:yg/JjO5E7ubRyKX3m07GF3reDNEnfOboJ0QySbH736g= @@ -1095,9 +506,6 @@ github.com/envoyproxy/go-control-plane/envoy v1.36.0/go.mod h1:ty89S1YCCVruQAm9O github.com/envoyproxy/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI= github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= -github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w= -github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= github.com/envoyproxy/protoc-gen-validate v1.3.0 h1:TvGH1wof4H33rezVKWSpqKz5NXWg5VPuZ0uONDT6eb4= github.com/envoyproxy/protoc-gen-validate v1.3.0/go.mod h1:HvYl7zwPa5mffgyeTUHA9zHIH36nmrm7oCbo4YKoSWA= github.com/ethereum/c-kzg-4844/v2 v2.1.5 h1:aVtoLK5xwJ6c5RiqO8g8ptJ5KU+2Hdquf6G3aXiHh5s= @@ -1118,8 +526,6 @@ github.com/ferranbt/fastssz v0.1.4 h1:OCDB+dYDEQDvAgtAGnTSidK1Pe2tW3nFV40XyMkTeD github.com/ferranbt/fastssz v0.1.4/go.mod h1:Ea3+oeoRGGLGm5shYAeDgu6PGUlcvQhE2fILyD9+tGg= github.com/firefart/nonamedreturns v1.0.5 h1:tM+Me2ZaXs8tfdDw3X6DOX++wMCOqzYUho6tUTYIdRA= github.com/firefart/nonamedreturns v1.0.5/go.mod h1:gHJjDqhGM4WyPt639SOZs+G89Ko7QKH5R5BhnO6xJhw= -github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= -github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= @@ -1148,13 +554,6 @@ github.com/go-critic/go-critic v0.12.0 h1:iLosHZuye812wnkEz1Xu3aBwn5ocCPfc9yqmFG github.com/go-critic/go-critic v0.12.0/go.mod h1:DpE0P6OVc6JzVYzmM5gq5jMU31zLr4am5mB/VfFK64w= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= -github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= -github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks= -github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= -github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= -github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-jose/go-jose/v4 v4.1.4 h1:moDMcTHmvE6Groj34emNPLs/qtYXRVcd6S7NHbHz3kA= github.com/go-jose/go-jose/v4 v4.1.4/go.mod h1:x4oUasVrzR7071A4TnHLGSPpNOm2a21K9Kf04k1rs08= @@ -1166,8 +565,6 @@ github.com/go-kit/kit v0.13.0/go.mod h1:phqEHMMUbyrCFCTgH48JueqrM3md2HcAZ8N3XE4F github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= -github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= -github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= @@ -1181,8 +578,6 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= -github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= -github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= @@ -1221,7 +616,6 @@ github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJA github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= -github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= @@ -1239,27 +633,15 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt/v4 v4.5.1 h1:JdqV9zKUdtaa9gdPlywC3aeoEsR681PlKC+4F5gQgeo= github.com/golang-jwt/jwt/v4 v4.5.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= -github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= -github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= github.com/golang/glog v1.2.5 h1:DrW6hGnjIhtvhOIiAKT6Psh/Kd/ldepEa81DKeiRJ5I= github.com/golang/glog v1.2.5/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= -github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= -github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= -github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -1267,7 +649,6 @@ github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= @@ -1278,13 +659,10 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v1.0.0 h1:Oy607GVXHs7RtbggtPBnr2RmDArIsAefDwvrdWvRhGs= github.com/golang/snappy v1.0.0/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= @@ -1310,14 +688,12 @@ github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/cel-go v0.26.1 h1:iPbVVEdkhTX++hpe3lzSk7D3G3QSYqLGoHOcEio+UXQ= github.com/google/cel-go v0.26.1/go.mod h1:A9O8OU9rdvrK5MQyrqfIxo1a0u4g3sF8KB6PUIaryMM= -github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/flatbuffers v24.3.25+incompatible h1:CX395cjN9Kke9mmalRoL3d81AtFUxJM+yDthflgJGkI= github.com/google/flatbuffers v24.3.25+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= @@ -1325,10 +701,7 @@ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/go-containerregistry v0.20.7 h1:24VGNpS0IwrOZ2ms2P1QE3Xa5X9p4phx0aUgzYzHW6I= @@ -1337,31 +710,10 @@ github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSN github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc= github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0= github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a h1://KbezygeMJZCSHH+HgUZiTeSoiuFspbMg1ge+eFj18= github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a/go.mod h1:5hDyRhoBCxViHszMt12TnOpEI4VVi+U8Gm9iphldiMA= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= @@ -1369,31 +721,12 @@ github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= -github.com/googleapis/enterprise-certificate-proxy v0.2.1/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= -github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= -github.com/googleapis/enterprise-certificate-proxy v0.3.7 h1:zrn2Ee/nWmHulBx5sAVrGgAa0f2/R35S4DJwfFaUPFQ= -github.com/googleapis/enterprise-certificate-proxy v0.3.7/go.mod h1:MkHOF77EYAE7qfSuSS9PU6g4Nt4e11cnsDUowfwewLA= -github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= -github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= -github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= -github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= -github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= -github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= -github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= -github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= -github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= -github.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= -github.com/googleapis/gax-go/v2 v2.15.0 h1:SyjDc1mGgZU5LncH8gimWo9lW1DtIfPibOG81vgd/bo= -github.com/googleapis/gax-go/v2 v2.15.0/go.mod h1:zVVkkxAQHa1RQpg9z2AUCMnKhi0Qld9rcmyfL1OZhoc= -github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= -github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/googleapis/enterprise-certificate-proxy v0.3.14 h1:yh8ncqsbUY4shRD5dA6RlzjJaT4hi3kII+zYw8wmLb8= +github.com/googleapis/enterprise-certificate-proxy v0.3.14/go.mod h1:vqVt9yG9480NtzREnTlmGSBmFrA+bzb0yl0TxoBQXOg= +github.com/googleapis/gax-go/v2 v2.17.0 h1:RksgfBpxqff0EZkDWYuz9q/uWsTVz+kf43LsZ1J6SMc= +github.com/googleapis/gax-go/v2 v2.17.0/go.mod h1:mzaqghpQp4JDh3HvADwrat+6M3MOIDp5YKHhb9PAgDY= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gordonklaus/ineffassign v0.1.0 h1:y2Gd/9I7MdY1oEIt+n+rowjBNDcLQq3RsH5hwJd0f9s= github.com/gordonklaus/ineffassign v0.1.0/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0= @@ -1432,12 +765,12 @@ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgf github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5 h1:jP1RStw811EvUDzsUQ9oESqw2e4RqCjSAD9qIL8eMns= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5/go.mod h1:WXNBZ64q3+ZUemCMXD9kYnr56H7CgZxDBHCVwstfl3s= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= +github.com/hashicorp/aws-sdk-go-base/v2 v2.0.0-beta.72 h1:vTCWu1wbdYo7PEZFem/rlr01+Un+wwVmI7wiegFdRLk= +github.com/hashicorp/aws-sdk-go-base/v2 v2.0.0-beta.72/go.mod h1:Vn+BBgKQHVQYdVQ4NZDICE1Brb+JfaONyDHr3q07oQc= github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -1447,8 +780,8 @@ github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtng github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= -github.com/hashicorp/go-getter v1.7.9 h1:G9gcjrDixz7glqJ+ll5IWvggSBR+R0B54DSRt4qfdC4= -github.com/hashicorp/go-getter v1.7.9/go.mod h1:dyFCmT1AQkDfOIt9NH8pw9XBDqNrIKJT5ylbpi7zPNE= +github.com/hashicorp/go-getter v1.8.6 h1:9sQboWULaydVphxc4S64oAI4YqpuCk7nPmvbk131ebY= +github.com/hashicorp/go-getter v1.8.6/go.mod h1:nVH12eOV2P58dIiL3rsU6Fh3wLeJEKBOJzhMmzlSWoo= github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= @@ -1464,8 +797,6 @@ github.com/hashicorp/go-plugin v1.6.3 h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0U github.com/hashicorp/go-plugin v1.6.3/go.mod h1:MRobyh+Wc/nYy1V4KAXUiYfzxoYhs7V1mlH1Z7iY2h0= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= -github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= @@ -1474,7 +805,6 @@ github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/C github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.8.0 h1:KAkNb1HAiZd1ukkxDFGmokVZe1Xy9HG6NUp+bPle2i4= github.com/hashicorp/go-version v1.8.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= @@ -1510,11 +840,8 @@ github.com/huin/goupnp v1.3.0 h1:UvLUlWDNpoUdYzb2TCn+MuTWtcjXKSza2n6CBdQ0xXc= github.com/huin/goupnp v1.3.0/go.mod h1:gnGPsThkYa7bFi/KWmEysQRf48l2dvR5bxr2OFckNX8= github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJn+Ichc= github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= -github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ= github.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPtwNr0l57L4f878wP8= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= @@ -1544,10 +871,6 @@ github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+D github.com/jjti/go-spancheck v0.6.4 h1:Tl7gQpYf4/TMU7AT84MN83/6PutY21Nb9fuQjFTpRRc= github.com/jjti/go-spancheck v0.6.4/go.mod h1:yAEYdKJ2lRkDA8g7X+oKUHXOWVAXSBJRv04OhF+QUjk= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= -github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= -github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= @@ -1559,18 +882,13 @@ github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/u github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/julz/importas v0.2.0 h1:y+MJN/UdL63QbFJHws9BVC5RpA2iq0kpjrFajTGivjQ= github.com/julz/importas v0.2.0/go.mod h1:pThlt589EnCYtMnmhmRYY/qn9lCf/frPOK+WMx3xiJY= -github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= -github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/karamaru-alpha/copyloopvar v1.2.1 h1:wmZaZYIjnJ0b5UoKDjUHrikcV0zuPyyxI4SVplLd2CI= github.com/karamaru-alpha/copyloopvar v1.2.1/go.mod h1:nFmMlFNlClC2BPvNaHMdkirmTJxVCY0lhxBtlfOypMM= -github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= @@ -1580,26 +898,19 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/kkHAIKE/contextcheck v1.1.6 h1:7HIyRcnyzxL9Lz06NGhiKvenXq7Zw6Q0UQu/ttjfJCE= github.com/kkHAIKE/contextcheck v1.1.6/go.mod h1:3dDbMRNBFaq8HFXWC1JyvDSPm43CmE6IuHam8Wr0rkg= github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= -github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= -github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= -github.com/klauspost/compress v1.18.3 h1:9PJRvfbmTabkOX8moIpXPbMMbYN60bWImDDU7L+/6zw= -github.com/klauspost/compress v1.18.3/go.mod h1:R0h/fSBs8DE4ENlcrlib3PsXS61voFxhIs2DeRhCvJ4= +github.com/klauspost/compress v1.18.5 h1:/h1gH5Ce+VWNLSWqPzOVn6XBO+vJbCNGvjoaGBFW2IE= +github.com/klauspost/compress v1.18.5/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ= github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE= github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU= github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -1635,9 +946,6 @@ github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-b github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= github.com/linxGnu/grocksdb v1.10.4 h1:C9WZslnCjXxx+BL/fXCIe1pLhEri3V9vLQcBZOHadnU= github.com/linxGnu/grocksdb v1.10.4/go.mod h1:OLQKZwiKwaJiAVCsOzWKvwiLwfZ5Vz8Md5TYR7t7pM8= -github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= -github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= -github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/macabu/inamedparam v0.1.3 h1:2tk/phHkMlEL/1GNe/Yf6kkR/hkcUdAEY3L0hjYV1Mk= github.com/macabu/inamedparam v0.1.3/go.mod h1:93FLICAIk/quk7eaPPQvbzihUdn/QkGDwIZEoLtpH6I= @@ -1668,19 +976,15 @@ github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= -github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mdp/qrterminal/v3 v3.2.1 h1:6+yQjiiOsSuXT5n9/m60E54vdgFsw0zhADHhHLrFet4= github.com/mdp/qrterminal/v3 v3.2.1/go.mod h1:jOTmXvnBsMy5xqLniO0R++Jmjs2sTm9dFSuQ5kpz/SU= github.com/mgechev/revive v1.7.0 h1:JyeQ4yO5K8aZhIKf5rec56u0376h8AlKNQEmjfkjKlY= github.com/mgechev/revive v1.7.0/go.mod h1:qZnwcNhoguE58dfi96IJeSTPeZQejNeoMQLUZGi4SW4= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= -github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= github.com/minio/highwayhash v1.0.3 h1:kbnuUMoHYyVl7szWjSxJnxw11k2U709jqFPPmIUyD6Q= github.com/minio/highwayhash v1.0.3/go.mod h1:GGYsuwP/fPD6Y9hMiXuapVvlIUEhFhMTh0rxU3ik1LQ= github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g= @@ -1803,12 +1107,8 @@ github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssy github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= github.com/petermattis/goid v0.0.0-20260113132338-7c7de50cc741 h1:KPpdlQLZcHfTMQRi6bFQ7ogNO0ltFT4PmtwTLW4W+14= github.com/petermattis/goid v0.0.0-20260113132338-7c7de50cc741/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= -github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY= -github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= -github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= github.com/pion/dtls/v2 v2.2.7 h1:cSUBsETxepsCSFSxC3mc/aDo14qQLMSL+O6IjG28yV8= @@ -1827,8 +1127,6 @@ github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= -github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= -github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo= github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -1854,7 +1152,6 @@ github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1: github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= github.com/prometheus/client_model v0.6.2 h1:oBsgwpGs7iVziMvrGhE53c/GrLUsZdHnqNwqPLxwZyk= github.com/prometheus/client_model v0.6.2/go.mod h1:y3m2F6Gdpfy6Ut/GBsUqTWZqCUvMVzSfMLjcu6wAwpE= github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= @@ -1898,7 +1195,6 @@ github.com/raeperd/recvcheck v0.2.0/go.mod h1:n04eYkwIR0JbgD73wT8wL4JjPC3wm0nFtz github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= @@ -1907,7 +1203,6 @@ github.com/rodaine/protogofakeit v0.1.1/go.mod h1:pXn/AstBYMaSfc1/RqH3N82pBuxtWg github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= @@ -1920,8 +1215,6 @@ github.com/rs/zerolog v1.34.0/go.mod h1:bJsvje4Z08ROH4Nhs5iH600c3IkWhwp44iRc54W6 github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= -github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= github.com/ryancurrah/gomodguard v1.3.5 h1:cShyguSwUEeC0jS7ylOiG/idnd1TpJ1LfHGpV3oJmPU= github.com/ryancurrah/gomodguard v1.3.5/go.mod h1:MXlEPQRxgfPQa62O8wzK3Ozbkv9Rkqr+wKjSxTdsNJE= github.com/ryanrolds/sqlclosecheck v0.5.1 h1:dibWW826u0P8jNLsLN+En7+RqWWTYrjCB9fJfSfdyCU= @@ -1972,10 +1265,6 @@ github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrel github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8/go.mod h1:3n1Cwaq1E1/1lhQhtRK2ts/ZwZEhjcQeJQ1RuC6Q/8U= github.com/sourcegraph/go-diff v0.7.0 h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCpA8G0= github.com/sourcegraph/go-diff v0.7.0/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs= -github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= -github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= -github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I= github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg= github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY= @@ -2073,7 +1362,6 @@ github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2n github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= -github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ulikunitz/xz v0.5.15 h1:9DNdB5s+SgV3bQ2ApL10xRc35ck0DuIX/isZvIk+ubY= github.com/ulikunitz/xz v0.5.15/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ultraware/funlen v0.2.0 h1:gCHmCn+d2/1SemTdYMiKLAHFYxTYz7z9VIDRaTGyLkI= @@ -2111,8 +1399,6 @@ github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1 github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= -github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= github.com/zondax/golem v0.29.0 h1:exAKRxX7ap5b9FuBLSFtPtdMkPBUqWV6h1DLN1m/pFg= github.com/zondax/golem v0.29.0/go.mod h1:MU2oVfrHeSg5d8oFvfuTKVddHebEXwgE/W24uPiRpWI= github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U= @@ -2141,13 +1427,7 @@ go.lsp.dev/uri v0.3.0 h1:KcZJmh6nFIBeJzTugn5JTU6OOyG0lDOo3R9KwTxTYbo= go.lsp.dev/uri v0.3.0/go.mod h1:P5sbO1IQR+qySTWOCnhnK7phBx+W3zbLqSMDJNTw88I= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= @@ -2158,25 +1438,23 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.6 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0 h1:ssfIgGNANqpVFCndZvcuyKbl0g+UAVcbBcqGkG28H0Y= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0/go.mod h1:GQ/474YrbE4Jx8gZ4q5I4hrhUzM6UPzyrqJYV2AqPoQ= -go.opentelemetry.io/otel v1.40.0 h1:oA5YeOcpRTXq6NN7frwmwFR0Cn3RhTVZvXsP4duvCms= -go.opentelemetry.io/otel v1.40.0/go.mod h1:IMb+uXZUKkMXdPddhwAHm6UfOwJyh4ct1ybIlV14J0g= +go.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho= +go.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 h1:f0cb2XPmrqn4XMy9PNliTgRKJgS5WcL/u0/WRYGz4t0= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0/go.mod h1:vnakAaFckOMiMtOIhFI2MNH4FYrZzXCYxmb1LlhoGz8= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0 h1:wpMfgF8E1rkrT1Z6meFh1NDtownE9Ii3n3X2GJYjsaU= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0/go.mod h1:wAy0T/dUbs468uOlkT31xjvqQgEVXv58BRFWEgn5v/0= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.36.0 h1:rixTyDGXFxRy1xzhKrotaHy3/KXdPhlWARrCgK+eqUY= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.36.0/go.mod h1:dowW6UsM9MKbJq5JTz2AMVp3/5iW5I/TStsk8S+CfHw= -go.opentelemetry.io/otel/metric v1.40.0 h1:rcZe317KPftE2rstWIBitCdVp89A2HqjkxR3c11+p9g= -go.opentelemetry.io/otel/metric v1.40.0/go.mod h1:ib/crwQH7N3r5kfiBZQbwrTge743UDc7DTFVZrrXnqc= -go.opentelemetry.io/otel/sdk v1.40.0 h1:KHW/jUzgo6wsPh9At46+h4upjtccTmuZCFAc9OJ71f8= -go.opentelemetry.io/otel/sdk v1.40.0/go.mod h1:Ph7EFdYvxq72Y8Li9q8KebuYUr2KoeyHx0DRMKrYBUE= -go.opentelemetry.io/otel/sdk/metric v1.40.0 h1:mtmdVqgQkeRxHgRv4qhyJduP3fYJRMX4AtAlbuWdCYw= -go.opentelemetry.io/otel/sdk/metric v1.40.0/go.mod h1:4Z2bGMf0KSK3uRjlczMOeMhKU2rhUqdWNoKcYrtcBPg= -go.opentelemetry.io/otel/trace v1.40.0 h1:WA4etStDttCSYuhwvEa8OP8I5EWu24lkOzp+ZYblVjw= -go.opentelemetry.io/otel/trace v1.40.0/go.mod h1:zeAhriXecNGP/s2SEG3+Y8X9ujcJOTqQ5RgdEJcawiA= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.40.0 h1:ZrPRak/kS4xI3AVXy8F7pipuDXmDsrO8Lg+yQjBLjw0= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.40.0/go.mod h1:3y6kQCWztq6hyW8Z9YxQDDm0Je9AJoFar2G0yDcmhRk= +go.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4= +go.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI= +go.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo= +go.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts= +go.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA= +go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc= +go.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY= +go.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= -go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= go.opentelemetry.io/proto/otlp v1.9.0 h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A= go.opentelemetry.io/proto/otlp v1.9.0/go.mod h1:xE+Cx5E/eEHw+ISFkwPLwCZefwVjY+pqKg1qcK03+/4= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= @@ -2212,84 +1490,41 @@ golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnf golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE= golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= -golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= -golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= -golang.org/x/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts= -golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos= -golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4= +golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3/go.mod h1:NOZ3BPKG0ec/BKJQgnvsSFpcKLM5xXVWnvZS97DWHgE= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= golang.org/x/exp v0.0.0-20260112195511-716be5621a96 h1:Z/6YuSHTLOHfNFdb8zVZomZr7cqNgTJvA8+Qz75D8gU= golang.org/x/exp v0.0.0-20260112195511-716be5621a96/go.mod h1:nzimsREAkjBCIEFtHiYkrJyT+2uy9YZJB7H1k68CXZU= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac h1:TSSpLIG4v+p0rPv1pNOQtl1I8knsO4S9trOxNMOLVP4= golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= -golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20200430140353-33d19683fad8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20200618115811-c13761719519/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20201208152932-35266b937fa6/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20210216034530-4410531fe030/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/image v0.0.0-20210607152325-775e3b0c77b9/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= -golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= -golang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= -golang.org/x/image v0.0.0-20220302094943-723b81ca9867/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= -golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= -golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= -golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= @@ -2297,10 +1532,8 @@ golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.32.0 h1:9F4d3PHLljb6x//jOyokMv3eX+YDeepZSEo3mFJy93c= -golang.org/x/mod v0.32.0/go.mod h1:SgipZ/3h2Ci89DlEtEXWUk/HteuRin+HHhN+WbNhguU= +golang.org/x/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8= +golang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -2314,126 +1547,55 @@ golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73r golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= -golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.0.0-20221012135044-0b7e1fb9d458/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= -golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= -golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= -golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= -golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= -golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= -golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60= -golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM= +golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= +golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20221006150949-b44042a4b9c1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec= -golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= -golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= -golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= -golang.org/x/oauth2 v0.34.0 h1:hqK/t4AKgbqWkdkcAeI8XLmbK+4m4G5YeQRrmiotGlw= -golang.org/x/oauth2 v0.34.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= +golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs= +golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= -golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4= -golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4= +golang.org/x/sync v0.20.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -2447,9 +1609,6 @@ golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -2458,86 +1617,42 @@ golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210304124612-50617c2ba197/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211105183446-c75c47738b0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -2545,20 +1660,14 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k= -golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= -golang.org/x/telemetry v0.0.0-20260109210033-bd525da824e2 h1:O1cMQHRfwNpDfDJerqRoE2oD+AFlyid87D40L/OkkJo= -golang.org/x/telemetry v0.0.0-20260109210033-bd525da824e2/go.mod h1:b7fPSJ0pKZ3ccUh8gnTONJxhn3c/PS6tyzQvyqw4iA8= +golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= +golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4 h1:bTLqdHv7xrGlFbvf5/TXNxy/iUwwdkjhqQTJDjW7aj0= +golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4/go.mod h1:g5NllXBEermZrmR51cJDQxmJUHUOfRAaNyWBM+R+548= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= -golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= -golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= @@ -2566,117 +1675,54 @@ golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= -golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= -golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= -golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= -golang.org/x/term v0.40.0 h1:36e4zGLqU4yhjlmxEaagx2KuYbJq3EwY8K943ZsHcvg= -golang.org/x/term v0.40.0/go.mod h1:w2P8uVp06p2iyKKuvXIm7N/y0UCRt3UfJTfZ7oOpglM= -golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/term v0.41.0 h1:QCgPso/Q3RTJx2Th4bDLqML4W6iJiaXFq2/ftQF13YU= +golang.org/x/term v0.41.0/go.mod h1:3pfBgksrReYfZ5lvYM0kSO0LIkAl4Yl2bXOkKP7Ec2A= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk= -golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA= +golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= +golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= -golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= +golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= +golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200724022722-7017fd6b1305/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200820010801-b793a1359eac/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1-0.20210205202024-ef80cdb6ec6d/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= golang.org/x/tools v0.1.1-0.20210302220138-2ac05c832e1a/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= @@ -2684,9 +1730,8 @@ golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= -golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/tools v0.41.0 h1:a9b8iMweWG+S0OBnlU36rzLp20z1Rp10w+IY2czHTQc= -golang.org/x/tools v0.41.0/go.mod h1:XSY6eDqxVNiYgezAVqqCeihT4j1U2CCsqvH3WhQpnlg= +golang.org/x/tools v0.42.0 h1:uNgphsn75Tdz5Ji2q36v/nsFSfR/9BRFvqhGBaJGd5k= +golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0= golang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM= golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM= @@ -2695,281 +1740,51 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= -gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= -gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= -gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= -gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= -gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= -gonum.org/v1/plot v0.10.1/go.mod h1:VZW5OlhkL1mysU9vaqNHnsy86inf6Ot+jB3r+BczCEo= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= -google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= -google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= -google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= -google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= -google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= -google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= -google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= -google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= -google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= -google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= -google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= -google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= -google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= -google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= -google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= -google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= -google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= -google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= -google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= -google.golang.org/api v0.99.0/go.mod h1:1YOf74vkVndF7pG6hIHuINsM7eWwpVTAfNMNiL91A08= -google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= -google.golang.org/api v0.102.0/go.mod h1:3VFl6/fzoA+qNuS1N1/VfXY4LjoXN/wzeIp7TweWwGo= -google.golang.org/api v0.103.0/go.mod h1:hGtW6nK1AC+d9si/UBhw8Xli+QMOf6xyNAyJw4qU9w0= -google.golang.org/api v0.106.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= -google.golang.org/api v0.107.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= -google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= -google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= -google.golang.org/api v0.111.0/go.mod h1:qtFHvU9mhgTJegR31csQ+rwxyUTHOKFqCKWp1J0fdw0= -google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= -google.golang.org/api v0.256.0 h1:u6Khm8+F9sxbCTYNoBHg6/Hwv0N/i+V94MvkOSor6oI= -google.golang.org/api v0.256.0/go.mod h1:KIgPhksXADEKJlnEoRa9qAII4rXcy40vfI8HRqcU964= +google.golang.org/api v0.271.0 h1:cIPN4qcUc61jlh7oXu6pwOQqbJW2GqYh5PS6rB2C/JY= +google.golang.org/api v0.271.0/go.mod h1:CGT29bhwkbF+i11qkRUJb2KMKqcJ1hdFceEIRd9u64Q= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= -google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= -google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= -google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= -google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= google.golang.org/genproto v0.0.0-20220314164441-57ef72a4c106/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= -google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= -google.golang.org/genproto v0.0.0-20220329172620-7be39ac1afc7/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= -google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= -google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= -google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= -google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= -google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= -google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= -google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= -google.golang.org/genproto v0.0.0-20221024153911-1573dae28c9c/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20221024183307-1bc688fe9f3e/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= -google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c/go.mod h1:CGI5F/G+E5bKwmfYo09AXuVN4dD894kIKUFmVbP2/Fo= -google.golang.org/genproto v0.0.0-20221109142239-94d6d90a7d66/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221114212237-e4508ebdbee1/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221117204609-8f9c96812029/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221201164419-0e50fba7f41c/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221201204527-e3fa12d562f3/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= -google.golang.org/genproto v0.0.0-20221202195650-67e5cbc046fd/go.mod h1:cTsE614GARnxrLsqKREzmNYJACSWWpAWdNMwnD7c2BE= -google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230112194545-e10362b5ecf9/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230113154510-dbe35b8444a5/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230123190316-2c411cf9d197/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230124163310-31e0e69b6fc2/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230127162408-596548ed4efa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= -google.golang.org/genproto v0.0.0-20230216225411-c8e22ba71e44/go.mod h1:8B0gmkoRebU8ukX6HP+4wrVQUY1+6PkQ44BSyIlflHA= -google.golang.org/genproto v0.0.0-20230222225845-10f96fb3dbec/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= -google.golang.org/genproto v0.0.0-20230223222841-637eb2293923/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= -google.golang.org/genproto v0.0.0-20230303212802-e74f57abe488/go.mod h1:TvhZT5f700eVlTNwND1xoEZQeWTB2RY/65kplwl/bFA= -google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= -google.golang.org/genproto v0.0.0-20230320184635-7606e756e683/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= -google.golang.org/genproto v0.0.0-20230323212658-478b75c54725/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= -google.golang.org/genproto v0.0.0-20230330154414-c0448cd141ea/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= -google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= -google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= -google.golang.org/genproto v0.0.0-20251124214823-79d6a2a48846 h1:dDbsTLIK7EzwUq36kCSAsk0slouq/S0tWHeeGi97cD8= -google.golang.org/genproto v0.0.0-20251124214823-79d6a2a48846/go.mod h1:PP0g88Dz3C7hRAfbQCQggeWAXjuqGsNPLE4s7jh0RGU= -google.golang.org/genproto/googleapis/api v0.0.0-20260122232226-8e98ce8d340d h1:tUKoKfdZnSjTf5LW7xpG4c6SZ3Ozisn5eumcoTuMEN4= -google.golang.org/genproto/googleapis/api v0.0.0-20260122232226-8e98ce8d340d/go.mod h1:p3MLuOwURrGBRoEyFHBT3GjUwaCQVKeNqqWxlcISGdw= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260122232226-8e98ce8d340d h1:xXzuihhT3gL/ntduUZwHECzAn57E8dA6l8SOtYWdD8Q= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260122232226-8e98ce8d340d/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= +google.golang.org/genproto v0.0.0-20260128011058-8636f8732409 h1:VQZ/yAbAtjkHgH80teYd2em3xtIkkHd7ZhqfH2N9CsM= +google.golang.org/genproto v0.0.0-20260128011058-8636f8732409/go.mod h1:rxKD3IEILWEu3P44seeNOAwZN4SaoKaQ/2eTg4mM6EM= +google.golang.org/genproto/googleapis/api v0.0.0-20260203192932-546029d2fa20 h1:7ei4lp52gK1uSejlA8AZl5AJjeLUOHBQscRQZUgAcu0= +google.golang.org/genproto/googleapis/api v0.0.0-20260203192932-546029d2fa20/go.mod h1:ZdbssH/1SOVnjnDlXzxDHK2MCidiqXtbYccJNzNYPEE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171 h1:ggcbiqK8WWh6l1dnltU4BgWGIGo+EVYxCaAPih/zQXQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww= -google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= -google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= -google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= -google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.0 h1:6Al3kEFFP9VJhRz3DID6quisgPnTeZVr4lep9kkxdPA= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.0/go.mod h1:QLvsjh0OIR0TYBeiu2bkWGTJBUNQ64st52iWj/yA93I= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= @@ -2985,11 +1800,7 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= @@ -3000,7 +1811,6 @@ gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= @@ -3028,49 +1838,10 @@ gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= honnef.co/go/tools v0.6.1 h1:R094WgE8K4JirYjBaOpz/AvTyUu/3wbmAoskKN/pxTI= honnef.co/go/tools v0.6.1/go.mod h1:3puzxxljPCe8RGJX7BIy1plGbxEOZni5mR2aXe3/uk4= -lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= -lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= -modernc.org/cc/v3 v3.36.0/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= -modernc.org/cc/v3 v3.36.2/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= -modernc.org/cc/v3 v3.36.3/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= -modernc.org/ccgo/v3 v3.0.0-20220428102840-41399a37e894/go.mod h1:eI31LL8EwEBKPpNpA4bU1/i+sKOwOrQy8D87zWUcRZc= -modernc.org/ccgo/v3 v3.0.0-20220430103911-bc99d88307be/go.mod h1:bwdAnOoaIt8Ax9YdWGjxWsdkPcZyRPHqrOvJxaKAKGw= -modernc.org/ccgo/v3 v3.16.4/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= -modernc.org/ccgo/v3 v3.16.6/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= -modernc.org/ccgo/v3 v3.16.8/go.mod h1:zNjwkizS+fIFDrDjIAgBSCLkWbJuHF+ar3QRn+Z9aws= -modernc.org/ccgo/v3 v3.16.9/go.mod h1:zNMzC9A9xeNUepy6KuZBbugn3c0Mc9TeiJO4lgvkJDo= -modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ= -modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM= -modernc.org/libc v0.0.0-20220428101251-2d5f3daf273b/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= -modernc.org/libc v1.16.0/go.mod h1:N4LD6DBE9cf+Dzf9buBlzVJndKr/iJHG97vGLHYnb5A= -modernc.org/libc v1.16.1/go.mod h1:JjJE0eu4yeK7tab2n4S1w8tlWd9MxXLRzheaRnAKymU= -modernc.org/libc v1.16.17/go.mod h1:hYIV5VZczAmGZAnG15Vdngn5HSF5cSkbvfz2B7GRuVU= -modernc.org/libc v1.16.19/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= -modernc.org/libc v1.17.0/go.mod h1:XsgLldpP4aWlPlsjqKRdHPqCxCjISdHfM/yeWC5GyW0= -modernc.org/libc v1.17.1/go.mod h1:FZ23b+8LjxZs7XtFMbSzL/EhPxNbfZbErxEHc7cbD9s= -modernc.org/mathutil v1.2.2/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= -modernc.org/mathutil v1.4.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= -modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= -modernc.org/memory v1.1.1/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= -modernc.org/memory v1.2.0/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= -modernc.org/memory v1.2.1/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= -modernc.org/opt v0.1.1/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= -modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= -modernc.org/sqlite v1.18.1/go.mod h1:6ho+Gow7oX5V+OiOQ6Tr4xeqbx13UZ6t+Fw9IRUG4d4= -modernc.org/strutil v1.1.1/go.mod h1:DE+MQQ/hjKBZS2zNInV5hhcipt5rLPWkmpbGeW5mmdw= -modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= -modernc.org/tcl v1.13.1/go.mod h1:XOLfOwzhkljL4itZkK6T72ckMgvj0BDsnKNdZVUOecw= -modernc.org/token v1.0.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= -modernc.org/z v1.5.1/go.mod h1:eWFB510QWW5Th9YGZT81s+LwvaAs3Q2yr4sP0rmLkv8= mvdan.cc/gofumpt v0.7.0 h1:bg91ttqXmi9y2xawvkuMXyvAA/1ZGJqYAEGjXuP0JXU= mvdan.cc/gofumpt v0.7.0/go.mod h1:txVFJy/Sc/mvaycET54pV8SW8gWxTlUuGHVEcncmNUo= mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f h1:lMpcwN6GxNbWtbpI1+xzFLSW8XzX0u72NttUGVFjO3U= @@ -3084,12 +1855,8 @@ pgregory.net/rapid v1.2.0 h1:keKAYRcjm+e1F0oAuU5F5+YPAWcyxNNRK2wud503Gnk= pgregory.net/rapid v1.2.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= pluginrpc.com/pluginrpc v0.5.0 h1:tOQj2D35hOmvHyPu8e7ohW2/QvAnEtKscy2IJYWQ2yo= pluginrpc.com/pluginrpc v0.5.0/go.mod h1:UNWZ941hcVAoOZUn8YZsMmOZBzbUjQa3XMns8RQLp9o= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/qr v0.2.0 h1:6vBLea5/NRMVTz8V66gipeLycZMl/+UlFmk8DvqQ6WY= rsc.io/qr v0.2.0/go.mod h1:IF+uZjkb9fqyeF/4tlBoynqmQxUoPfWEKh921coOuXs= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs= sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4= From 6996b9d00c15e08c723538fab21fac82c22eddff Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 17 Apr 2026 06:59:08 -0400 Subject: [PATCH 03/24] chore(deps): bump go.opentelemetry.io/otel/sdk from 1.40.0 to 1.43.0 (#59) Bumps [go.opentelemetry.io/otel/sdk](https://github.com/open-telemetry/opentelemetry-go) from 1.40.0 to 1.43.0. - [Release notes](https://github.com/open-telemetry/opentelemetry-go/releases) - [Changelog](https://github.com/open-telemetry/opentelemetry-go/blob/main/CHANGELOG.md) - [Commits](https://github.com/open-telemetry/opentelemetry-go/compare/v1.40.0...v1.43.0) --- updated-dependencies: - dependency-name: go.opentelemetry.io/otel/sdk dependency-version: 1.43.0 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 10 +++++----- go.sum | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/go.mod b/go.mod index 5b2b848a..17e61142 100644 --- a/go.mod +++ b/go.mod @@ -457,11 +457,11 @@ require ( go.opentelemetry.io/contrib/detectors/gcp v1.39.0 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0 // indirect - go.opentelemetry.io/otel v1.42.0 // indirect - go.opentelemetry.io/otel/metric v1.42.0 // indirect - go.opentelemetry.io/otel/sdk v1.42.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.42.0 // indirect - go.opentelemetry.io/otel/trace v1.42.0 // indirect + go.opentelemetry.io/otel v1.43.0 // indirect + go.opentelemetry.io/otel/metric v1.43.0 // indirect + go.opentelemetry.io/otel/sdk v1.43.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect + go.opentelemetry.io/otel/trace v1.43.0 // indirect go.uber.org/automaxprocs v1.6.0 // indirect go.uber.org/mock v0.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect diff --git a/go.sum b/go.sum index ae796093..32bf20c8 100644 --- a/go.sum +++ b/go.sum @@ -1438,22 +1438,22 @@ go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.6 go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0 h1:ssfIgGNANqpVFCndZvcuyKbl0g+UAVcbBcqGkG28H0Y= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0/go.mod h1:GQ/474YrbE4Jx8gZ4q5I4hrhUzM6UPzyrqJYV2AqPoQ= -go.opentelemetry.io/otel v1.42.0 h1:lSQGzTgVR3+sgJDAU/7/ZMjN9Z+vUip7leaqBKy4sho= -go.opentelemetry.io/otel v1.42.0/go.mod h1:lJNsdRMxCUIWuMlVJWzecSMuNjE7dOYyWlqOXWkdqCc= +go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= +go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 h1:f0cb2XPmrqn4XMy9PNliTgRKJgS5WcL/u0/WRYGz4t0= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0/go.mod h1:vnakAaFckOMiMtOIhFI2MNH4FYrZzXCYxmb1LlhoGz8= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0 h1:wpMfgF8E1rkrT1Z6meFh1NDtownE9Ii3n3X2GJYjsaU= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0/go.mod h1:wAy0T/dUbs468uOlkT31xjvqQgEVXv58BRFWEgn5v/0= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.40.0 h1:ZrPRak/kS4xI3AVXy8F7pipuDXmDsrO8Lg+yQjBLjw0= go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.40.0/go.mod h1:3y6kQCWztq6hyW8Z9YxQDDm0Je9AJoFar2G0yDcmhRk= -go.opentelemetry.io/otel/metric v1.42.0 h1:2jXG+3oZLNXEPfNmnpxKDeZsFI5o4J+nz6xUlaFdF/4= -go.opentelemetry.io/otel/metric v1.42.0/go.mod h1:RlUN/7vTU7Ao/diDkEpQpnz3/92J9ko05BIwxYa2SSI= -go.opentelemetry.io/otel/sdk v1.42.0 h1:LyC8+jqk6UJwdrI/8VydAq/hvkFKNHZVIWuslJXYsDo= -go.opentelemetry.io/otel/sdk v1.42.0/go.mod h1:rGHCAxd9DAph0joO4W6OPwxjNTYWghRWmkHuGbayMts= -go.opentelemetry.io/otel/sdk/metric v1.42.0 h1:D/1QR46Clz6ajyZ3G8SgNlTJKBdGp84q9RKCAZ3YGuA= -go.opentelemetry.io/otel/sdk/metric v1.42.0/go.mod h1:Ua6AAlDKdZ7tdvaQKfSmnFTdHx37+J4ba8MwVCYM5hc= -go.opentelemetry.io/otel/trace v1.42.0 h1:OUCgIPt+mzOnaUTpOQcBiM/PLQ/Op7oq6g4LenLmOYY= -go.opentelemetry.io/otel/trace v1.42.0/go.mod h1:f3K9S+IFqnumBkKhRJMeaZeNk9epyhnCmQh/EysQCdc= +go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM= +go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY= +go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg= +go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg= +go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw= +go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= +go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= +go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v1.9.0 h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A= go.opentelemetry.io/proto/otlp v1.9.0/go.mod h1:xE+Cx5E/eEHw+ISFkwPLwCZefwVjY+pqKg1qcK03+/4= From 9b88102d0288ccabecd9a7f446f7aa9cf44d723c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 18 Apr 2026 17:30:58 -0400 Subject: [PATCH 04/24] chore(deps): bump github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream (#72) Bumps [github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream](https://github.com/aws/aws-sdk-go-v2) from 1.7.7 to 1.7.8. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/m2/v1.7.7...service/m2/v1.7.8) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream dependency-version: 1.7.8 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 17e61142..57f0187d 100644 --- a/go.mod +++ b/go.mod @@ -120,7 +120,7 @@ require ( github.com/ashanbrown/forbidigo v1.6.0 // indirect github.com/ashanbrown/makezero v1.2.0 // indirect github.com/aws/aws-sdk-go-v2 v1.41.4 // indirect - github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.7 // indirect + github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.8 // indirect github.com/aws/aws-sdk-go-v2/config v1.32.12 // indirect github.com/aws/aws-sdk-go-v2/credentials v1.19.12 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20 // indirect diff --git a/go.sum b/go.sum index 32bf20c8..bead14be 100644 --- a/go.sum +++ b/go.sum @@ -191,8 +191,8 @@ github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= github.com/aws/aws-sdk-go-v2 v1.41.4 h1:10f50G7WyU02T56ox1wWXq+zTX9I1zxG46HYuG1hH/k= github.com/aws/aws-sdk-go-v2 v1.41.4/go.mod h1:mwsPRE8ceUUpiTgF7QmQIJ7lgsKUPQOUl3o72QBrE1o= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.7 h1:3kGOqnh1pPeddVa/E37XNTaWJ8W6vrbYV9lJEkCnhuY= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.7/go.mod h1:lyw7GFp3qENLh7kwzf7iMzAxDn+NzjXEAGjKS2UOKqI= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.8 h1:eBMB84YGghSocM7PsjmmPffTa+1FBUeNvGvFou6V/4o= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.8/go.mod h1:lyw7GFp3qENLh7kwzf7iMzAxDn+NzjXEAGjKS2UOKqI= github.com/aws/aws-sdk-go-v2/config v1.32.12 h1:O3csC7HUGn2895eNrLytOJQdoL2xyJy0iYXhoZ1OmP0= github.com/aws/aws-sdk-go-v2/config v1.32.12/go.mod h1:96zTvoOFR4FURjI+/5wY1vc1ABceROO4lWgWJuxgy0g= github.com/aws/aws-sdk-go-v2/credentials v1.19.12 h1:oqtA6v+y5fZg//tcTWahyN9PEn5eDU/Wpvc2+kJ4aY8= From 2f37ee7193eea2373f47a1b4f3e5fe4f059388b1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 19 Apr 2026 07:19:50 -0400 Subject: [PATCH 05/24] chore(deps): bump github.com/aws/aws-sdk-go-v2/service/s3 (#71) Bumps [github.com/aws/aws-sdk-go-v2/service/s3](https://github.com/aws/aws-sdk-go-v2) from 1.97.1 to 1.97.3. - [Release notes](https://github.com/aws/aws-sdk-go-v2/releases) - [Commits](https://github.com/aws/aws-sdk-go-v2/compare/service/s3/v1.97.1...service/s3/v1.97.3) --- updated-dependencies: - dependency-name: github.com/aws/aws-sdk-go-v2/service/s3 dependency-version: 1.97.3 dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 16 ++++++++-------- go.sum | 32 ++++++++++++++++---------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/go.mod b/go.mod index 57f0187d..738551dd 100644 --- a/go.mod +++ b/go.mod @@ -119,20 +119,20 @@ require ( github.com/antlr4-go/antlr/v4 v4.13.1 // indirect github.com/ashanbrown/forbidigo v1.6.0 // indirect github.com/ashanbrown/makezero v1.2.0 // indirect - github.com/aws/aws-sdk-go-v2 v1.41.4 // indirect + github.com/aws/aws-sdk-go-v2 v1.41.5 // indirect github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.8 // indirect github.com/aws/aws-sdk-go-v2/config v1.32.12 // indirect github.com/aws/aws-sdk-go-v2/credentials v1.19.12 // indirect github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.21 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.21 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 // indirect - github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.21 // indirect + github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.22 // indirect github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.12 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.20 // indirect - github.com/aws/aws-sdk-go-v2/service/s3 v1.97.1 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.13 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.21 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.21 // indirect + github.com/aws/aws-sdk-go-v2/service/s3 v1.97.3 // indirect github.com/aws/aws-sdk-go-v2/service/signin v1.0.8 // indirect github.com/aws/aws-sdk-go-v2/service/sso v1.30.13 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17 // indirect diff --git a/go.sum b/go.sum index bead14be..5c3d1e89 100644 --- a/go.sum +++ b/go.sum @@ -189,8 +189,8 @@ github.com/ashanbrown/makezero v1.2.0/go.mod h1:dxlPhHbDMC6N6xICzFBSK+4njQDdK8eu github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/aws/aws-sdk-go-v2 v1.41.4 h1:10f50G7WyU02T56ox1wWXq+zTX9I1zxG46HYuG1hH/k= -github.com/aws/aws-sdk-go-v2 v1.41.4/go.mod h1:mwsPRE8ceUUpiTgF7QmQIJ7lgsKUPQOUl3o72QBrE1o= +github.com/aws/aws-sdk-go-v2 v1.41.5 h1:dj5kopbwUsVUVFgO4Fi5BIT3t4WyqIDjGKCangnV/yY= +github.com/aws/aws-sdk-go-v2 v1.41.5/go.mod h1:mwsPRE8ceUUpiTgF7QmQIJ7lgsKUPQOUl3o72QBrE1o= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.8 h1:eBMB84YGghSocM7PsjmmPffTa+1FBUeNvGvFou6V/4o= github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.8/go.mod h1:lyw7GFp3qENLh7kwzf7iMzAxDn+NzjXEAGjKS2UOKqI= github.com/aws/aws-sdk-go-v2/config v1.32.12 h1:O3csC7HUGn2895eNrLytOJQdoL2xyJy0iYXhoZ1OmP0= @@ -199,24 +199,24 @@ github.com/aws/aws-sdk-go-v2/credentials v1.19.12 h1:oqtA6v+y5fZg//tcTWahyN9PEn5 github.com/aws/aws-sdk-go-v2/credentials v1.19.12/go.mod h1:U3R1RtSHx6NB0DvEQFGyf/0sbrpJrluENHdPy1j/3TE= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20 h1:zOgq3uezl5nznfoK3ODuqbhVg1JzAGDUhXOsU0IDCAo= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20/go.mod h1:z/MVwUARehy6GAg/yQ1GO2IMl0k++cu1ohP9zo887wE= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20 h1:CNXO7mvgThFGqOFgbNAP2nol2qAWBOGfqR/7tQlvLmc= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20/go.mod h1:oydPDJKcfMhgfcgBUZaG+toBbwy8yPWubJXBVERtI4o= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20 h1:tN6W/hg+pkM+tf9XDkWUbDEjGLb+raoBMFsTodcoYKw= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20/go.mod h1:YJ898MhD067hSHA6xYCx5ts/jEd8BSOLtQDL3iZsvbc= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.21 h1:Rgg6wvjjtX8bNHcvi9OnXWwcE0a2vGpbwmtICOsvcf4= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.21/go.mod h1:A/kJFst/nm//cyqonihbdpQZwiUhhzpqTsdbhDdRF9c= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.21 h1:PEgGVtPoB6NTpPrBgqSE5hE/o47Ij9qk/SEZFbUOe9A= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.21/go.mod h1:p+hz+PRAYlY3zcpJhPwXlLC4C+kqn70WIHwnzAfs6ps= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 h1:qYQ4pzQ2Oz6WpQ8T3HvGHnZydA72MnLuFK9tJwmrbHw= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.6/go.mod h1:O3h0IK87yXci+kg6flUKzJnWeziQUKciKrLjcatSNcY= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.21 h1:SwGMTMLIlvDNyhMteQ6r8IJSBPlRdXX5d4idhIGbkXA= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.21/go.mod h1:UUxgWxofmOdAMuqEsSppbDtGKLfR04HGsD0HXzvhI1k= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.22 h1:rWyie/PxDRIdhNf4DzRk0lvjVOqFJuNnO8WwaIRVxzQ= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.22/go.mod h1:zd/JsJ4P7oGfUhXn1VyLqaRZwPmZwg44Jf2dS84Dm3Y= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 h1:5EniKhLZe4xzL7a+fU3C2tfUN4nWIqlLesfrjkuPFTY= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7/go.mod h1:x0nZssQ3qZSnIcePWLvcoFisRXJzcTVvYpAAdYX8+GI= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.12 h1:qtJZ70afD3ISKWnoX3xB0J2otEqu3LqicRcDBqsj0hQ= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.12/go.mod h1:v2pNpJbRNl4vEUWEh5ytQok0zACAKfdmKS51Hotc3pQ= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20 h1:2HvVAIq+YqgGotK6EkMf+KIEqTISmTYh5zLpYyeTo1Y= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20/go.mod h1:V4X406Y666khGa8ghKmphma/7C0DAtEQYhkq9z4vpbk= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.20 h1:siU1A6xjUZ2N8zjTHSXFhB9L/2OY8Dqs0xXiLjF30jA= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.20/go.mod h1:4TLZCmVJDM3FOu5P5TJP0zOlu9zWgDWU7aUxWbr+rcw= -github.com/aws/aws-sdk-go-v2/service/s3 v1.97.1 h1:csi9NLpFZXb9fxY7rS1xVzgPRGMt7MSNWeQ6eo247kE= -github.com/aws/aws-sdk-go-v2/service/s3 v1.97.1/go.mod h1:qXVal5H0ChqXP63t6jze5LmFalc7+ZE7wOdLtZ0LCP0= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.13 h1:JRaIgADQS/U6uXDqlPiefP32yXTda7Kqfx+LgspooZM= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.13/go.mod h1:CEuVn5WqOMilYl+tbccq8+N2ieCy0gVn3OtRb0vBNNM= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.21 h1:c31//R3xgIJMSC8S6hEVq+38DcvUlgFY0FM6mSI5oto= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.21/go.mod h1:r6+pf23ouCB718FUxaqzZdbpYFyDtehyZcmP5KL9FkA= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.21 h1:ZlvrNcHSFFWURB8avufQq9gFsheUgjVD9536obIknfM= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.21/go.mod h1:cv3TNhVrssKR0O/xxLJVRfd2oazSnZnkUeTf6ctUwfQ= +github.com/aws/aws-sdk-go-v2/service/s3 v1.97.3 h1:HwxWTbTrIHm5qY+CAEur0s/figc3qwvLWsNkF4RPToo= +github.com/aws/aws-sdk-go-v2/service/s3 v1.97.3/go.mod h1:uoA43SdFwacedBfSgfFSjjCvYe8aYBS7EnU5GZ/YKMM= github.com/aws/aws-sdk-go-v2/service/signin v1.0.8 h1:0GFOLzEbOyZABS3PhYfBIx2rNBACYcKty+XGkTgw1ow= github.com/aws/aws-sdk-go-v2/service/signin v1.0.8/go.mod h1:LXypKvk85AROkKhOG6/YEcHFPoX+prKTowKnVdcaIxE= github.com/aws/aws-sdk-go-v2/service/sso v1.30.13 h1:kiIDLZ005EcKomYYITtfsjn7dtOwHDOFy7IbPXKek2o= From 365db706c0a7573764cd163371578b7557a47e5a Mon Sep 17 00:00:00 2001 From: Trevor Miller <61992896+trevormil@users.noreply.github.com> Date: Sun, 19 Apr 2026 07:51:07 -0400 Subject: [PATCH 06/24] fix(tokenization): bound AltTimeChecks v29 fields in ValidateBasic (#73) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously ValidateAltTimeChecks only bounded OfflineHours (0-23) and OfflineDays (0-6). The v29-added fields — OfflineMonths, OfflineDaysOfMonth, OfflineWeeksOfYear, and TimezoneOffsetMinutes — had no bounds at all. Since TimezoneOffsetMinutes is an sdkmath.Uint settable by any user via MsgSetIncomingApproval, a caller could set it to a value that later caused the consumer (approval_criteria/ alt_time_checks.go) to either panic in sdkmath.Uint.Uint64() (for values exceeding uint64) or silently wrap through int64 overflow in time.Duration multiplication (for values in [2^63, 2^64-1]). Bounds chosen: - OfflineMonths: [1, 12] - OfflineDaysOfMonth: [1, 31] - OfflineWeeksOfYear: [1, 53] (ISO 8601 weeks can reach 53 in long years) - TimezoneOffsetMinutes: [0, 840] where 840 = 14*60, the widest real-world UTC offset (UTC+14:00, Kiribati). Also: - validateTimeRanges now checks start/end against uint64 range before calling .Uint64() (which panics on overflow) and enforces the min bound it was already accepting as a parameter. - Defense-in-depth added to alt_time_checks.go consumer: reject the same out-of-range values with an error rather than panicking or wrapping, in case a checker is ever constructed outside the validate-basic path (e.g. from migrated state). Follows the throw-not-bandaid principle: the producer (validate_basic) rejects bad input up front instead of the consumer silently tolerating nonsense local times. Implements backlog #0255. Co-authored-by: Claude Opus 4.7 (1M context) --- .../approval_criteria/alt_time_checks.go | 15 +- x/tokenization/types/validate_basic.go | 71 +++++++- x/tokenization/types/validate_basic_test.go | 162 +++++++++++++++++- 3 files changed, 238 insertions(+), 10 deletions(-) diff --git a/x/tokenization/approval_criteria/alt_time_checks.go b/x/tokenization/approval_criteria/alt_time_checks.go index cc79502a..6723e948 100644 --- a/x/tokenization/approval_criteria/alt_time_checks.go +++ b/x/tokenization/approval_criteria/alt_time_checks.go @@ -38,7 +38,20 @@ func (c *AltTimeChecksChecker) Check(ctx sdk.Context, approval *types.Collection blockTime := ctx.BlockTime() localTime := blockTime.UTC() if c.altTimeChecks.TimezoneOffsetMinutes.GT(sdkmath.NewUint(0)) { - offsetDuration := time.Duration(c.altTimeChecks.TimezoneOffsetMinutes.Uint64()) * time.Minute + // Defense-in-depth: ValidateAltTimeChecks bounds this to ≤ 14*60 + // minutes, but if a checker is ever constructed outside that path + // (e.g. corrupt migrated state), reject rather than panic or wrap. + // Values that don't fit in uint64 would panic in .Uint64(); values + // in [2^63, 2^64-1] would silently wrap through int64 overflow + // when multiplied by time.Minute. + if !c.altTimeChecks.TimezoneOffsetMinutes.BigInt().IsUint64() { + return "", sdkerrors.Wrapf(types.ErrInvalidRequest, "timezoneOffsetMinutes exceeds uint64 range") + } + offsetMinutes := c.altTimeChecks.TimezoneOffsetMinutes.Uint64() + if offsetMinutes > types.MaxTimezoneOffsetMinutes { + return "", sdkerrors.Wrapf(types.ErrInvalidRequest, "timezoneOffsetMinutes %d exceeds maximum real-world offset of %d minutes", offsetMinutes, types.MaxTimezoneOffsetMinutes) + } + offsetDuration := time.Duration(offsetMinutes) * time.Minute if c.altTimeChecks.TimezoneOffsetNegative { localTime = localTime.Add(-offsetDuration) } else { diff --git a/x/tokenization/types/validate_basic.go b/x/tokenization/types/validate_basic.go index 143f0a00..05f90620 100644 --- a/x/tokenization/types/validate_basic.go +++ b/x/tokenization/types/validate_basic.go @@ -230,7 +230,22 @@ func ValidateNoStringElementIsX(addresses []string, x string) error { return nil } -// ValidateAltTimeChecks validates alt time checks for offline hours and days +// MaxTimezoneOffsetMinutes is the widest real-world UTC offset in minutes +// (UTC+14:00 is observed in Kiribati; UTC-12:00 is the westernmost common +// offset). We bound |offset| ≤ 14 * 60 = 840 regardless of sign. Anything +// larger is either a malformed client or a griefing attempt. +const MaxTimezoneOffsetMinutes = uint64(14 * 60) + +// ValidateAltTimeChecks validates alt time checks for offline hours, days, +// months, days-of-month, weeks-of-year, and the timezone offset magnitude. +// +// All fields originate from attacker-controlled messages (e.g. +// MsgSetIncomingApproval). Without these bounds, a caller can set +// TimezoneOffsetMinutes to an arbitrary sdkmath.Uint, which would later +// panic during transfer evaluation when the consumer calls .Uint64() on an +// out-of-uint64-range value, or silently wrap through int64 overflow for +// values in [2^63, 2^64-1]. We reject at validate-basic time so the producer +// fails fast rather than the consumer band-aiding. func ValidateAltTimeChecks(altTimeChecks *AltTimeChecks) error { if altTimeChecks == nil { return nil @@ -241,11 +256,42 @@ func ValidateAltTimeChecks(altTimeChecks *AltTimeChecks) error { return err } - // Validate offline days (0-6) + // Validate offline days of week (0-6, Sunday..Saturday) if err := validateTimeRanges(altTimeChecks.OfflineDays, 0, 6, "offline days"); err != nil { return err } + // Validate offline months (1-12, January..December) + if err := validateTimeRanges(altTimeChecks.OfflineMonths, 1, 12, "offline months"); err != nil { + return err + } + + // Validate offline days of month (1-31) + if err := validateTimeRanges(altTimeChecks.OfflineDaysOfMonth, 1, 31, "offline days of month"); err != nil { + return err + } + + // Validate offline weeks of year (1-53, ISO 8601 week numbering). + // ISO weeks can be 53 in long years (e.g. 2020, 2026), so upper bound is 53. + if err := validateTimeRanges(altTimeChecks.OfflineWeeksOfYear, 1, 53, "offline weeks of year"); err != nil { + return err + } + + // Validate timezone offset magnitude. The proto field is an sdkmath.Uint + // (arbitrary 256-bit), so we must defend against values that would panic + // or silently wrap when converted to a time.Duration later in + // x/tokenization/approval_criteria/alt_time_checks.go. + if !altTimeChecks.TimezoneOffsetMinutes.IsNil() { + // Reject anything that doesn't fit in uint64 (would panic in .Uint64()). + if !altTimeChecks.TimezoneOffsetMinutes.BigInt().IsUint64() { + return sdkerrors.Wrapf(ErrInvalidRequest, "timezoneOffsetMinutes exceeds uint64 range (max real-world offset is %d minutes)", MaxTimezoneOffsetMinutes) + } + offsetMinutes := altTimeChecks.TimezoneOffsetMinutes.Uint64() + if offsetMinutes > MaxTimezoneOffsetMinutes { + return sdkerrors.Wrapf(ErrInvalidRequest, "timezoneOffsetMinutes %d exceeds maximum real-world offset of %d minutes (±14 hours from UTC)", offsetMinutes, MaxTimezoneOffsetMinutes) + } + } + return nil } @@ -271,10 +317,29 @@ func validateTimeRanges(ranges []*UintRange, min, max uint64, fieldName string) return sdkerrors.Wrapf(ErrUintUnititialized, "%s range at index %d has nil start or end", fieldName, i) } + // Reject values that do not fit in uint64 before calling .Uint64(), + // which would panic on overflow. The subsequent `start > max` / + // `end > max` checks will then reject values that fit in uint64 but + // exceed the field's logical max. + if !r.Start.BigInt().IsUint64() { + return sdkerrors.Wrapf(ErrInvalidRequest, "%s range at index %d has start value that exceeds uint64 range (maximum is %d)", fieldName, i, max) + } + if !r.End.BigInt().IsUint64() { + return sdkerrors.Wrapf(ErrInvalidRequest, "%s range at index %d has end value that exceeds uint64 range (maximum is %d)", fieldName, i, max) + } + start := r.Start.Uint64() end := r.End.Uint64() - // Check that start and end are within valid range (0 to max, inclusive) + // Check that start and end are within valid range [min, max] inclusive. + if start < min { + return sdkerrors.Wrapf(ErrInvalidRequest, "%s range at index %d has start value %d which is below minimum %d", fieldName, i, start, min) + } + + if end < min { + return sdkerrors.Wrapf(ErrInvalidRequest, "%s range at index %d has end value %d which is below minimum %d", fieldName, i, end, min) + } + if start > max { return sdkerrors.Wrapf(ErrInvalidRequest, "%s range at index %d has start value %d which exceeds maximum %d", fieldName, i, start, max) } diff --git a/x/tokenization/types/validate_basic_test.go b/x/tokenization/types/validate_basic_test.go index f1bfa280..72a5553b 100644 --- a/x/tokenization/types/validate_basic_test.go +++ b/x/tokenization/types/validate_basic_test.go @@ -362,16 +362,166 @@ func TestValidateAltTimeChecks(t *testing.T) { }, expectError: false, }, + // --- v29 field coverage: OfflineMonths (1-12) --- + { + name: "valid offline months boundary - should pass", + altTimeChecks: &AltTimeChecks{ + OfflineMonths: []*UintRange{ + {Start: sdkmath.NewUint(1), End: sdkmath.NewUint(12)}, + }, + }, + expectError: false, + }, + { + name: "offline months start below minimum (0) - should fail", + altTimeChecks: &AltTimeChecks{ + OfflineMonths: []*UintRange{ + {Start: sdkmath.NewUint(0), End: sdkmath.NewUint(5)}, + }, + }, + expectError: true, + }, + { + name: "offline months end exceeds 12 - should fail", + altTimeChecks: &AltTimeChecks{ + OfflineMonths: []*UintRange{ + {Start: sdkmath.NewUint(1), End: sdkmath.NewUint(13)}, + }, + }, + expectError: true, + }, + // --- v29 field coverage: OfflineDaysOfMonth (1-31) --- + { + name: "valid offline days of month boundary - should pass", + altTimeChecks: &AltTimeChecks{ + OfflineDaysOfMonth: []*UintRange{ + {Start: sdkmath.NewUint(1), End: sdkmath.NewUint(31)}, + }, + }, + expectError: false, + }, + { + name: "offline days of month start 0 - should fail", + altTimeChecks: &AltTimeChecks{ + OfflineDaysOfMonth: []*UintRange{ + {Start: sdkmath.NewUint(0), End: sdkmath.NewUint(15)}, + }, + }, + expectError: true, + }, + { + name: "offline days of month end 32 - should fail", + altTimeChecks: &AltTimeChecks{ + OfflineDaysOfMonth: []*UintRange{ + {Start: sdkmath.NewUint(1), End: sdkmath.NewUint(32)}, + }, + }, + expectError: true, + }, + // --- v29 field coverage: OfflineWeeksOfYear (1-53, ISO-week upper bound) --- + { + name: "valid offline weeks of year boundary 53 - should pass", + altTimeChecks: &AltTimeChecks{ + OfflineWeeksOfYear: []*UintRange{ + {Start: sdkmath.NewUint(1), End: sdkmath.NewUint(53)}, + }, + }, + expectError: false, + }, + { + name: "offline weeks of year start 0 - should fail", + altTimeChecks: &AltTimeChecks{ + OfflineWeeksOfYear: []*UintRange{ + {Start: sdkmath.NewUint(0), End: sdkmath.NewUint(10)}, + }, + }, + expectError: true, + }, + { + name: "offline weeks of year end 54 - should fail", + altTimeChecks: &AltTimeChecks{ + OfflineWeeksOfYear: []*UintRange{ + {Start: sdkmath.NewUint(1), End: sdkmath.NewUint(54)}, + }, + }, + expectError: true, + }, + // --- v29 field coverage: TimezoneOffsetMinutes (0..840) --- + { + name: "timezone offset zero (UTC) - should pass", + altTimeChecks: &AltTimeChecks{ + TimezoneOffsetMinutes: sdkmath.NewUint(0), + }, + expectError: false, + }, + { + name: "timezone offset 300 (EST) - should pass", + altTimeChecks: &AltTimeChecks{ + TimezoneOffsetMinutes: sdkmath.NewUint(300), + }, + expectError: false, + }, + { + name: "timezone offset 840 (UTC+14:00 Kiribati - max real-world) - should pass", + altTimeChecks: &AltTimeChecks{ + TimezoneOffsetMinutes: sdkmath.NewUint(840), + }, + expectError: false, + }, + { + name: "timezone offset 841 (just over max real-world) - should fail", + altTimeChecks: &AltTimeChecks{ + TimezoneOffsetMinutes: sdkmath.NewUint(841), + }, + expectError: true, + }, + { + name: "timezone offset in silent-wrap range [2^63+1] - should fail", + altTimeChecks: &AltTimeChecks{ + // 2^63 + 1 — fits in uint64 but time.Duration(u64) * time.Minute + // silently wraps through int64 overflow at the consumer. + TimezoneOffsetMinutes: sdkmath.NewUintFromString("9223372036854775809"), + }, + expectError: true, + }, + { + name: "timezone offset at uint64 max - should fail", + altTimeChecks: &AltTimeChecks{ + TimezoneOffsetMinutes: sdkmath.NewUintFromString("18446744073709551615"), + }, + expectError: true, + }, + { + name: "timezone offset exceeds uint64 (2^64) - should fail without panic", + altTimeChecks: &AltTimeChecks{ + // 2^64 — would panic in .Uint64() at the consumer. Must be + // caught by ValidateBasic with a regular error, not a panic. + TimezoneOffsetMinutes: sdkmath.NewUintFromString("18446744073709551616"), + }, + expectError: true, + }, + { + name: "timezone offset 200-bit value - should fail without panic", + altTimeChecks: &AltTimeChecks{ + // Larger than 2^64 and well into sdkmath.Uint territory. + TimezoneOffsetMinutes: sdkmath.NewUintFromString("1606938044258990275541962092341162602522202993782792835301376"), + }, + expectError: true, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - err := ValidateAltTimeChecks(tt.altTimeChecks) - if tt.expectError { - require.Error(t, err, "expected error but got none") - } else { - require.NoError(t, err, "expected no error but got: %v", err) - } + // The fix must never panic — attacker-controlled values going + // into validate_basic should yield errors, not crashes. + require.NotPanics(t, func() { + err := ValidateAltTimeChecks(tt.altTimeChecks) + if tt.expectError { + require.Error(t, err, "expected error but got none") + } else { + require.NoError(t, err, "expected no error but got: %v", err) + } + }) }) } } From 55ba30b294a37f9e46dcfc5b836fe0613c49a3d5 Mon Sep 17 00:00:00 2001 From: Trevor Miller <61992896+trevormil@users.noreply.github.com> Date: Sun, 19 Apr 2026 15:57:36 -0400 Subject: [PATCH 07/24] fix(tokenization): pool->intermediate swaps rejected by prioritization filter (#75) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SendNativeTokensFromAddressWithPoolApprovals set OnlyCheckPrioritizedIncomingApprovals=true but only ever prioritizes an outgoing approval, so every non-prioritized incoming approval (including the synthetic "all-incoming" appended for recipients with AutoApproveAllIncomingTransfers=true) was dropped by FilterApprovalsWithPrioritizedHandling before the auto-scannable check could run. This broke swap-and-action-hooks flows where the IBC-derived intermediate address is freshly flagged for auto-approve, producing errors like: incoming approvals not satisfied ... auto-scan failed (checked 0 potentially matching approval). Approvals not checked (require prioritization): ["all-incoming"] Switch to OnlyCheckPrioritizedOutgoingApprovals=true, which matches the ApprovalLevel of the one-time approval we're actually trying to gate the pool on. Also rewrite the "require prioritization" branch in buildPotentialErrorsString to diff unfilteredApprovals against the post-filter list. The previous code labeled every unfiltered approval as "require prioritization" whenever approvalIdxsChecked was empty, even when the real cause was an address/time mismatch — which is how this bug looked when it surfaced in production. Regression test reproduces the original failure against the pre-fix code. Co-authored-by: Claude Opus 4.7 (1M context) --- .../approved_transfers_error_helpers.go | 30 +++- x/tokenization/keeper/pool_integration.go | 10 +- .../keeper/pool_integration_test.go | 133 ++++++++++++++++++ 3 files changed, 166 insertions(+), 7 deletions(-) diff --git a/x/tokenization/keeper/approved_transfers_error_helpers.go b/x/tokenization/keeper/approved_transfers_error_helpers.go index 8fa475ee..18b8db06 100644 --- a/x/tokenization/keeper/approved_transfers_error_helpers.go +++ b/x/tokenization/keeper/approved_transfers_error_helpers.go @@ -133,11 +133,35 @@ func buildPotentialErrorsString( potentialErrorsStr += ")" if len(approvalIdxsChecked) == 0 && len(unfilteredApprovals) > 0 { - skippedIds := []string{} + // Distinguish approvals that were dropped by the priority filter (genuinely "require + // prioritization") from those that survived the filter but failed address/time checks. + // The old code lumped both under "require prioritization", which was misleading when + // e.g. a Transfer set OnlyCheckPrioritized*Approvals=true and filtered out an otherwise- + // matching auto-scannable approval. + postFilterIds := make(map[string]struct{}, len(approvals)) + for _, a := range approvals { + if a != nil { + postFilterIds[a.ApprovalId] = struct{}{} + } + } + filteredOut := []string{} + survivedButFailed := []string{} for _, a := range unfilteredApprovals { - skippedIds = append(skippedIds, fmt.Sprintf("%q", a.ApprovalId)) + if a == nil { + continue + } + if _, kept := postFilterIds[a.ApprovalId]; kept { + survivedButFailed = append(survivedButFailed, fmt.Sprintf("%q", a.ApprovalId)) + } else { + filteredOut = append(filteredOut, fmt.Sprintf("%q", a.ApprovalId)) + } + } + if len(filteredOut) > 0 { + potentialErrorsStr += fmt.Sprintf(". Approvals dropped by prioritization filter (set OnlyCheckPrioritized*Approvals or missing from PrioritizedApprovals): [%s]", strings.Join(filteredOut, ", ")) + } + if len(survivedButFailed) > 0 { + potentialErrorsStr += fmt.Sprintf(". Approvals checked but failed address/time match: [%s]", strings.Join(survivedButFailed, ", ")) } - potentialErrorsStr += fmt.Sprintf(". Approvals not checked (require prioritization): [%s]", strings.Join(skippedIds, ", ")) } // Try to be smart about error logs. If we only checked one approval via auto-scan, we can just log the errors for that approval diff --git a/x/tokenization/keeper/pool_integration.go b/x/tokenization/keeper/pool_integration.go index d9a07d38..177e458e 100644 --- a/x/tokenization/keeper/pool_integration.go +++ b/x/tokenization/keeper/pool_integration.go @@ -232,9 +232,11 @@ func (k *Keeper) SendNativeTokensFromAddressWithPoolApprovals(ctx sdk.Context, f return sdkerrors.Wrapf(err, "failed to create one-time approval: %s", approvalId) } - // Important: We should only allow auto-scanned approvals here - // Anything prioritized is potentially unsafe if we are using an IBC hook (where we cannot trust the sender) - // The one-time outgoing approval is safe because it uses a unique ID and version + // Restrict the outgoing (pool) side to only the one-time prioritized approval we just set + // up — the pool cannot be drained via any other outgoing approval it happens to have. + // The incoming (recipient) side is intentionally left unrestricted so normal auto-scannable + // approvals (including the synthetic "all-incoming" for intermediate swap addresses with + // AutoApproveAllIncomingTransfers=true) can satisfy the transfer. msg := &tokenizationtypes.MsgTransferTokens{ Creator: recipientAddress, CollectionId: collection.CollectionId, @@ -251,7 +253,7 @@ func (k *Keeper) SendNativeTokensFromAddressWithPoolApprovals(ctx sdk.Context, f Version: approvalVersion, }, }, - OnlyCheckPrioritizedIncomingApprovals: true, + OnlyCheckPrioritizedOutgoingApprovals: true, }, }, } diff --git a/x/tokenization/keeper/pool_integration_test.go b/x/tokenization/keeper/pool_integration_test.go index ee0dfbeb..b43a8002 100644 --- a/x/tokenization/keeper/pool_integration_test.go +++ b/x/tokenization/keeper/pool_integration_test.go @@ -342,3 +342,136 @@ func (suite *PoolIntegrationTestSuite) TestGetBalancesToTransferWithAlias_Invali suite.Require().Error(err) } +// createCollectionWithAliasPathNoIncomingOverride builds a collection with alias paths but, +// unlike createCollectionWithAliasPath, leaves OverridesToIncomingApprovals=false so the +// recipient's incoming approvals are actually exercised on transfer. +func (suite *PoolIntegrationTestSuite) createCollectionWithAliasPathNoIncomingOverride(creator string, denom string) (*types.TokenCollection, string, error) { + wctx := sdk.WrapSDKContext(suite.ctx) + + collectionsToCreate := GetTransferableCollectionToCreateAllMintedToCreator(creator) + collectionsToCreate[0].AliasPathsToAdd = []*types.AliasPathAddObject{ + { + Denom: denom, + Conversion: &types.ConversionWithoutDenom{ + SideA: &types.ConversionSideA{Amount: sdkmath.NewUint(1)}, + SideB: []*types.Balance{ + { + Amount: sdkmath.NewUint(1), + OwnershipTimes: GetFullUintRanges(), + TokenIds: GetOneUintRange(), + }, + }, + }, + Symbol: "SWAPHOOK", + DenomUnits: []*types.DenomUnit{{Decimals: sdkmath.NewUint(6), Symbol: denom, IsDefaultDisplay: true}}, + }, + } + collectionsToCreate[0].CollectionApprovals = append(collectionsToCreate[0].CollectionApprovals, &types.CollectionApproval{ + ApprovalId: "wrapper-transfer", + TransferTimes: GetFullUintRanges(), + OwnershipTimes: GetFullUintRanges(), + TokenIds: GetOneUintRange(), + FromListId: "AllWithoutMint", + ToListId: "AllWithoutMint", + InitiatedByListId: "AllWithoutMint", + ApprovalCriteria: &types.ApprovalCriteria{ + OverridesFromOutgoingApprovals: true, + // Deliberately NOT setting OverridesToIncomingApprovals — we want the recipient's + // incoming approvals to run, which is how the swap-and-action-hooks flow actually + // behaves for intermediate addresses. + }, + }) + + if err := CreateCollections(&suite.TestSuite, wctx, collectionsToCreate); err != nil { + return nil, "", err + } + + collection, err := GetCollection(&suite.TestSuite, wctx, sdkmath.NewUint(1)) + if err != nil { + return nil, "", err + } + + wrapperDenom := keeper.AliasDenomPrefix + collection.CollectionId.String() + ":" + denom + return collection, wrapperDenom, nil +} + +// TestSendNativeTokensFromAddressWithPoolApprovals_RecipientUsesAutoApproveAllIncoming simulates +// the swap-and-action-hooks flow where a pool sends wrapped tokens to an intermediate address +// that was just flagged with AutoApproveAllIncomingTransfers=true (e.g., an IBC-derived swap +// recipient). The synthetic "all-incoming" approval must satisfy the transfer. +// +// Regression: previously this path set OnlyCheckPrioritizedIncomingApprovals=true on the +// generated transfer, which dropped the synthetic (and every other non-prioritized incoming +// approval) from the filter, causing "incoming approvals not satisfied" even though the +// recipient had explicitly opted into receiving everything. +func (suite *PoolIntegrationTestSuite) TestSendNativeTokensFromAddressWithPoolApprovals_RecipientUsesAutoApproveAllIncoming() { + wctx := sdk.WrapSDKContext(suite.ctx) + + collection, wrapperDenom, err := suite.createCollectionWithAliasPathNoIncomingOverride(bob, "swaphooktest") + suite.Require().NoError(err) + + // Mint tokens to bob (stand-in for the pool's pre-funded source). + err = TransferTokens(&suite.TestSuite, wctx, &types.MsgTransferTokens{ + Creator: bob, + CollectionId: sdkmath.NewUint(1), + Transfers: []*types.Transfer{ + { + From: "Mint", + ToAddresses: []string{bob}, + Balances: []*types.Balance{ + { + Amount: sdkmath.NewUint(10), + TokenIds: GetOneUintRange(), + OwnershipTimes: GetFullUintRanges(), + }, + }, + PrioritizedApprovals: []*types.ApprovalIdentifierDetails{ + { + ApprovalId: "mint-test", + ApprovalLevel: "collection", + ApproverAddress: "", + Version: sdkmath.NewUint(0), + }, + }, + }, + }, + }) + suite.Require().NoError(err) + + // Recipient = alice, standing in for the IBC-derived intermediate swap address. + // Simulate swap-and-action-hooks flagging the intermediate for auto-approve. + err = UpdateUserApprovals(&suite.TestSuite, wctx, &types.MsgUpdateUserApprovals{ + Creator: alice, + CollectionId: sdkmath.NewUint(1), + UpdateAutoApproveAllIncomingTransfers: true, + AutoApproveAllIncomingTransfers: true, + }) + suite.Require().NoError(err) + + aliceBalanceBefore, err := GetUserBalance(&suite.TestSuite, wctx, collection.CollectionId, alice) + suite.Require().NoError(err) + suite.Require().True(aliceBalanceBefore.AutoApproveAllIncomingTransfers) + + // The call under test — mirrors what SendCoinsFromPoolWithAliasRouting invokes after the + // gamm swap finishes and needs to move tokenized output to the recipient. + err = suite.app.TokenizationKeeper.SendNativeTokensFromAddressWithPoolApprovals( + suite.ctx, + bob, // fromAddress (pool stand-in) + alice, // recipient (intermediate swap address) + wrapperDenom, + sdkmath.NewUint(1), + ) + suite.Require().NoError(err, "pool->intermediate transfer must succeed when recipient has AutoApproveAllIncomingTransfers") + + // Sanity: alice received the tokens and the one-time outgoing approval was cleaned up on bob. + aliceBalanceAfter, err := GetUserBalance(&suite.TestSuite, wctx, collection.CollectionId, alice) + suite.Require().NoError(err) + suite.Require().True(len(aliceBalanceAfter.Balances) > 0, "recipient should have received tokens") + + bobBalanceAfter, err := GetUserBalance(&suite.TestSuite, wctx, collection.CollectionId, bob) + suite.Require().NoError(err) + for _, ap := range bobBalanceAfter.OutgoingApprovals { + suite.Require().NotContains(ap.ApprovalId, "one-time-outgoing-", "one-time approval must be deleted after transfer") + } +} + From 3ec1825b8c6b21deba0f1b985698e6fc5830febb Mon Sep 17 00:00:00 2001 From: Trevor Miller Date: Mon, 20 Apr 2026 13:22:46 -0400 Subject: [PATCH 08/24] feat(tokenization): add v29 proto definitions for address lists, approval conditions, criteria, tracking, and dynamic stores This commit introduces several new proto files for version 29 of the tokenization module, including: - `address_lists.proto`: Defines AddressList and AddressListInput messages for managing lists of addresses. - `approval_conditions.proto`: Introduces various conditions for approvals, such as MustOwnTokens and DynamicStoreChallenge. - `approval_criteria.proto`: Specifies criteria for approving transfers, including Merkle challenges and predetermined balances. - `approval_tracking.proto`: Implements tracking for approval amounts and transfer limits. - `dynamic_stores.proto`: Defines DynamicStore and DynamicStoreValue for flexible on-chain data storage. These additions enhance the functionality and flexibility of the tokenization module, enabling more complex approval and transfer scenarios. --- proto/tokenization/v29/address_lists.proto | 55 + .../v29/approval_conditions.proto | 129 + .../tokenization/v29/approval_criteria.proto | 226 + .../tokenization/v29/approval_tracking.proto | 78 + proto/tokenization/v29/approvals.proto | 155 + proto/tokenization/v29/balances.proto | 55 + proto/tokenization/v29/challenges.proto | 204 + proto/tokenization/v29/collections.proto | 198 + proto/tokenization/v29/dynamic_stores.proto | 41 + proto/tokenization/v29/genesis.proto | 47 + proto/tokenization/v29/icq.proto | 95 + proto/tokenization/v29/metadata.proto | 47 + proto/tokenization/v29/packet.proto | 29 + proto/tokenization/v29/params.proto | 19 + proto/tokenization/v29/permissions.proto | 241 + .../v29/predetermined_balances.proto | 75 + proto/tokenization/v29/timelines.proto | 74 + proto/tokenization/v29/transfers.proto | 57 + proto/tokenization/v29/tx.proto | 994 + .../tokenization/v29/user_balance_store.proto | 56 + x/tokenization/types/v29/address_lists.pb.go | 959 + .../types/v29/approval_conditions.pb.go | 2558 ++ .../types/v29/approval_criteria.pb.go | 4013 +++ .../types/v29/approval_tracking.pb.go | 1816 ++ x/tokenization/types/v29/approvals.pb.go | 2581 ++ x/tokenization/types/v29/balances.pb.go | 958 + x/tokenization/types/v29/challenges.pb.go | 3466 +++ x/tokenization/types/v29/collections.pb.go | 4258 +++ x/tokenization/types/v29/dynamic_stores.pb.go | 833 + x/tokenization/types/v29/genesis.pb.go | 1797 ++ x/tokenization/types/v29/icq.pb.go | 1964 ++ x/tokenization/types/v29/math.go | 37 + x/tokenization/types/v29/metadata.pb.go | 893 + x/tokenization/types/v29/packet.pb.go | 1000 + x/tokenization/types/v29/params.pb.go | 409 + x/tokenization/types/v29/permissions.pb.go | 3874 +++ .../types/v29/predetermined_balances.pb.go | 1881 ++ x/tokenization/types/v29/timelines.pb.go | 1824 ++ x/tokenization/types/v29/transfers.pb.go | 1286 + x/tokenization/types/v29/tx.pb.go | 23046 ++++++++++++++++ .../types/v29/user_balance_store.pb.go | 677 + 41 files changed, 63005 insertions(+) create mode 100644 proto/tokenization/v29/address_lists.proto create mode 100644 proto/tokenization/v29/approval_conditions.proto create mode 100644 proto/tokenization/v29/approval_criteria.proto create mode 100644 proto/tokenization/v29/approval_tracking.proto create mode 100644 proto/tokenization/v29/approvals.proto create mode 100644 proto/tokenization/v29/balances.proto create mode 100644 proto/tokenization/v29/challenges.proto create mode 100644 proto/tokenization/v29/collections.proto create mode 100644 proto/tokenization/v29/dynamic_stores.proto create mode 100644 proto/tokenization/v29/genesis.proto create mode 100644 proto/tokenization/v29/icq.proto create mode 100644 proto/tokenization/v29/metadata.proto create mode 100644 proto/tokenization/v29/packet.proto create mode 100644 proto/tokenization/v29/params.proto create mode 100644 proto/tokenization/v29/permissions.proto create mode 100644 proto/tokenization/v29/predetermined_balances.proto create mode 100644 proto/tokenization/v29/timelines.proto create mode 100644 proto/tokenization/v29/transfers.proto create mode 100644 proto/tokenization/v29/tx.proto create mode 100644 proto/tokenization/v29/user_balance_store.proto create mode 100644 x/tokenization/types/v29/address_lists.pb.go create mode 100644 x/tokenization/types/v29/approval_conditions.pb.go create mode 100644 x/tokenization/types/v29/approval_criteria.pb.go create mode 100644 x/tokenization/types/v29/approval_tracking.pb.go create mode 100644 x/tokenization/types/v29/approvals.pb.go create mode 100644 x/tokenization/types/v29/balances.pb.go create mode 100644 x/tokenization/types/v29/challenges.pb.go create mode 100644 x/tokenization/types/v29/collections.pb.go create mode 100644 x/tokenization/types/v29/dynamic_stores.pb.go create mode 100644 x/tokenization/types/v29/genesis.pb.go create mode 100644 x/tokenization/types/v29/icq.pb.go create mode 100644 x/tokenization/types/v29/math.go create mode 100644 x/tokenization/types/v29/metadata.pb.go create mode 100644 x/tokenization/types/v29/packet.pb.go create mode 100644 x/tokenization/types/v29/params.pb.go create mode 100644 x/tokenization/types/v29/permissions.pb.go create mode 100644 x/tokenization/types/v29/predetermined_balances.pb.go create mode 100644 x/tokenization/types/v29/timelines.pb.go create mode 100644 x/tokenization/types/v29/transfers.pb.go create mode 100644 x/tokenization/types/v29/tx.pb.go create mode 100644 x/tokenization/types/v29/user_balance_store.pb.go diff --git a/proto/tokenization/v29/address_lists.proto b/proto/tokenization/v29/address_lists.proto new file mode 100644 index 00000000..c2bcc749 --- /dev/null +++ b/proto/tokenization/v29/address_lists.proto @@ -0,0 +1,55 @@ +syntax = "proto3"; +package tokenization.v29; + +import "gogoproto/gogo.proto"; +import "tokenization/v29/balances.proto"; + +// this line is used by starport scaffolding # proto/tx/import + +option go_package = "github.com/bitbadges/bitbadgeschain/x/tokenization/types/v29"; + +/* + An AddressList is a list of addresses that are referenced by an ID. + AddressLists are used in defining approvals ia a reusbale identifier. + Note: We also support a reserved ID system by string ID; "Mint", "!Mint" +*/ +message AddressList { + // Unique identifier for the address list. + string listId = 1; + + // List of addresses included in the list. + repeated string addresses = 2; + + // Indicates whether the list includes the specified addresses (true) or excludes them (false). + bool whitelist = 3; + + // URI (Uniform Resource Identifier) associated with the address list to provide metadata, if applicable. + string uri = 4; + + // Custom arbitrary data or additional information related to the address list. + string customData = 5; + + // The user or entity who created the address list. + string createdBy = 6; +} + +/* + AddressListInput is used for creating address lists via MsgCreateAddressLists. + It contains all fields from AddressList except createdBy, which is automatically set from the message creator. +*/ +message AddressListInput { + // Unique identifier for the address list. + string listId = 1; + + // List of addresses included in the list. + repeated string addresses = 2; + + // Indicates whether the list includes the specified addresses (true) or excludes them (false). + bool whitelist = 3; + + // URI (Uniform Resource Identifier) associated with the address list to provide metadata, if applicable. + string uri = 4; + + // Custom arbitrary data or additional information related to the address list. + string customData = 5; +} diff --git a/proto/tokenization/v29/approval_conditions.proto b/proto/tokenization/v29/approval_conditions.proto new file mode 100644 index 00000000..37f7cbda --- /dev/null +++ b/proto/tokenization/v29/approval_conditions.proto @@ -0,0 +1,129 @@ +syntax = "proto3"; +package tokenization.v29; + +import "gogoproto/gogo.proto"; +import "tokenization/v29/balances.proto"; +import "cosmos/base/v1beta1/coin.proto"; + +option go_package = "github.com/bitbadges/bitbadgeschain/x/tokenization/types/v29"; + +message CoinTransfer { + // The address of the recipient of the transfer. + string to = 1; + // The sdk.Coins to be transferred. + repeated cosmos.base.v1beta1.Coin coins = 2; + // By default, the from address is the initiator of the transaction. + // If this is set to true, we will override the from address with the approver address. + // Note: This is not applicable for collection approvals (since approverAddress == ''). + bool overrideFromWithApproverAddress = 3; + // By default, the to address is what is specified in the coin transfer. + // If this is set to true, we will override the to address with the initiator of the transaction. + bool overrideToWithInitiator = 4; +} + +/* + MustOwnTokens represents a condition where a user must own specific tokens + to be approved to transfer. + + - collectionId: The ID of the collection for the tokens that must be owned + - amountRange: The range of amounts the user must own (min to max) + - ownershipTimes: The time ranges during which the user must own the tokens. + - tokenIds: The token IDs the user must own. + - overrideWithCurrentTime: If true, auto override ownershipTimes with the current time. + - mustSatisfyForAllAssets: If true, the user must own all specified tokens; otherwise, owning any one for >= 1 millisecond is sufficient. +*/ +message MustOwnTokens { + // The ID of the collection. + string collectionId = 1 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + + // The range of amounts the user must own (min to max). + UintRange amountRange = 2; + + // The time ranges during which the user must own the tokens. + repeated UintRange ownershipTimes = 3; + + // The token IDs the user must own. + repeated UintRange tokenIds = 4; + + // If true, override ownershipTimes with the current time. + bool overrideWithCurrentTime = 5; + + // If true, the user must meet ownership requirements for all specified tokens; else, must meet requirements for any single token. + bool mustSatisfyForAllAssets = 6; + + // The party to check ownership for. Options are "initiator", "sender", "recipient", or any valid bb1 address. + // If a valid bb1 address is provided, ownership will be checked for that specific address. + // This enables use cases like halt tokens where ownership is checked for an arbitrary address (e.g., halt token owner). + // Defaults to "initiator" if empty or if the value is not a recognized option or valid bb1 address. + string ownershipCheckParty = 7; +} + +// DynamicStoreChallenge defines a challenge that requires the initiator to pass a dynamic store check. +message DynamicStoreChallenge { + // The ID of the dynamic store to check. + string storeId = 1 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + + // The party to check ownership for. Options are "initiator", "sender", "recipient", or any valid bb1 address. + // If a valid bb1 address is provided, ownership will be checked for that specific address. + // This enables use cases like halt tokens where ownership is checked for an arbitrary address (e.g., halt token owner). + // Defaults to "initiator" if empty or if the value is not a recognized option or valid bb1 address. + string ownershipCheckParty = 2; +} + +// AddressChecks defines checks for address types (EVM contract, liquidity pool, etc.) +message AddressChecks { + // Require the address to be an EVM contract (has code). + bool mustBeEvmContract = 1; + // Require the address to not be an EVM contract (no code). + bool mustNotBeEvmContract = 2; + // Require the address to be a liquidity pool. + bool mustBeLiquidityPool = 3; + // Require the address to not be a liquidity pool. + bool mustNotBeLiquidityPool = 4; +} + +// AltTimeChecks defines alternative time-based checks for approval denial. +// If the transfer time falls within any of the specified offline hours or days, the approval is denied. +// Uses UTC timezone for neutral timezone approach. +// offlineHours: ranges of hours (0-23) when transfers should be denied +// offlineDays: ranges of days (0-6, where 0=Sunday, 1=Monday, ..., 6=Saturday) when transfers should be denied +message AltTimeChecks { + // Hours (0-23) when transfers should be denied. + repeated UintRange offlineHours = 1; + // Days (0-6, where 0=Sunday, 1=Monday, ..., 6=Saturday) when transfers should be denied. + repeated UintRange offlineDays = 2; + // Months (1-12, where 1=January, 12=December) when transfers should be denied. + repeated UintRange offlineMonths = 3; + // Days of month (1-31) when transfers should be denied. + repeated UintRange offlineDaysOfMonth = 4; + // Weeks of year (1-52) when transfers should be denied. Uses ISO 8601 week numbering. + repeated UintRange offlineWeeksOfYear = 5; + // Timezone offset magnitude in minutes from UTC. Default 0 = UTC. Examples: 300 for EST (UTC-5), 330 for IST (UTC+5:30). + // All time checks are evaluated after applying this offset to the block time. + string timezoneOffsetMinutes = 6 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + // If true, the timezone offset is subtracted (west of UTC). If false, it is added (east of UTC). + // Example: EST (UTC-5) = timezoneOffsetMinutes: 300, timezoneOffsetNegative: true + bool timezoneOffsetNegative = 7; +} + +// UserApprovalSettings defines issuer-imposed constraints on user-level approvals. +// Set on collection-level ApprovalCriteria and propagated to user-level approvals +// during greedy transfer matching. Each balance slice carries its own settings. +message UserApprovalSettings { + // Restricts which denoms user-level coinTransfers can reference (beyond params-level AllowedDenoms). + // If empty, all params-allowed denoms are permitted. + repeated string allowedDenoms = 1; + // If true, user-level approvals cannot trigger coinTransfers at all for transfers matched by this collection approval. + bool disableUserCoinTransfers = 2; + // User-level royalties to enforce for transfers matched by this collection approval. + UserRoyalties userRoyalties = 3; +} + +// UserRoyalties defines the royalties for a user. +message UserRoyalties { + // Percentage of the transfer amount to apply as royalties. 1 to 10000 represents basis points. + string percentage = 1 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + // Payout address for the royalties. + string payoutAddress = 2; +} + diff --git a/proto/tokenization/v29/approval_criteria.proto b/proto/tokenization/v29/approval_criteria.proto new file mode 100644 index 00000000..5287052b --- /dev/null +++ b/proto/tokenization/v29/approval_criteria.proto @@ -0,0 +1,226 @@ +syntax = "proto3"; +package tokenization.v29; + +import "gogoproto/gogo.proto"; +import "tokenization/v29/challenges.proto"; +import "tokenization/v29/predetermined_balances.proto"; +import "tokenization/v29/approval_tracking.proto"; +import "tokenization/v29/approval_conditions.proto"; + +option go_package = "github.com/bitbadges/bitbadgeschain/x/tokenization/types/v29"; + +// ApprovalCriteria defines the criteria for approving transfers. +// All criteria must be satisfied for the approval to be considered valid. +message ApprovalCriteria { + // Merkle challenges that must be satisfied for approval. The initiator must provide valid Merkle proofs + // that satisfy all specified challenges. Each challenge requires a proof that leads to a specific root hash. + repeated MerkleChallenge merkleChallenges = 1; + // Predetermined balances that must be used for each approval. Defines the exact token amounts and IDs + // that can be transferred when using this approval. + PredeterminedBalances predeterminedBalances = 2; + // Threshold limit of amounts that can be transferred using this approval. Tracks cumulative amounts + // transferred and enforces maximum limits per approval. + ApprovalAmounts approvalAmounts = 3; + // Maximum number of transfers that can be processed using this approval. Tracks the count of transfers + // and enforces the limit to prevent exceeding the allowed number of uses. + MaxNumTransfers maxNumTransfers = 4; + // The sdk.Coins that need to be transferred for approval. Defines required coin transfers (e.g., fees, + // royalties) that must be executed alongside the token transfer for the approval to be valid. + repeated CoinTransfer coinTransfers = 5; + + // Require the "to" address to be equal to the "initiated by" address for approval. + // If true, only transfers where the recipient matches the initiator are allowed. + bool requireToEqualsInitiatedBy = 6; + // Require the "from" address to be equal to the "initiated by" address for approval. + // If true, only transfers where the sender matches the initiator are allowed. + bool requireFromEqualsInitiatedBy = 7; + // Require the "to" address to not be equal to the "initiated by" address for approval. + // If true, transfers where the recipient equals the initiator are forbidden. + bool requireToDoesNotEqualInitiatedBy = 8; + // Require the "from" address to not be equal to the "initiated by" address for approval. + // If true, transfers where the sender equals the initiator are forbidden. + bool requireFromDoesNotEqualInitiatedBy = 9; + + // Overrides the user's outgoing approvals for approval. If true, this collection-level approval + // takes precedence over any outgoing approvals defined by the sender, allowing the collection to + // control outgoing transfer behavior. + bool overridesFromOutgoingApprovals = 10; + // Overrides the user's incoming approvals for approval. If true, this collection-level approval + // takes precedence over any incoming approvals defined by the recipient, allowing the collection to + // control incoming transfer behavior. + bool overridesToIncomingApprovals = 11; + + // Auto-deletion options for this approval. Defines conditions under which this approval should be + // automatically deleted (e.g., after a certain number of uses or time period). + AutoDeletionOptions autoDeletionOptions = 12; + + // DEPRECATED: User royalties moved to UserApprovalSettings.userRoyalties (field 26). + // Field number 13 is reserved for backwards compatibility. + reserved 13; + + // Must own tokens for approval. Defines token ownership requirements that must be satisfied for + // the approval to be valid. The initiator must own the specified tokens at the specified ownership times. + repeated MustOwnTokens mustOwnTokens = 14; + // Dynamic store challenges that the initiator must pass for approval. The initiator must provide + // valid proofs that satisfy all specified dynamic store challenges (e.g., key-value store lookups). + repeated DynamicStoreChallenge dynamicStoreChallenges = 15; + // ETH signature challenges that the initiator must pass for approval. The initiator must provide + // valid Ethereum signatures for all specified challenges. Each signature can only be used once. + repeated ETHSignatureChallenge ethSignatureChallenges = 16; + // Address checks for the sender of the transfer. Validates that the sender address meets the + // specified criteria (e.g., whitelist, blacklist, protocol address requirements). + AddressChecks senderChecks = 17; + // Address checks for the recipient of the transfer. Validates that the recipient address meets the + // specified criteria (e.g., whitelist, blacklist, protocol address requirements). + AddressChecks recipientChecks = 18; + // Address checks for the initiator of the transfer. Validates that the initiator address meets the + // specified criteria (e.g., whitelist, blacklist, protocol address requirements). + AddressChecks initiatorChecks = 19; + // Alternative time-based checks for approval denial (offline hours/days). Defines time periods + // during which this approval should be denied, such as specific hours of the day or days of the week. + AltTimeChecks altTimeChecks = 20; + // If true, this approval must be explicitly prioritized in PrioritizedApprovals to be used. + // This allows fine-grained control over which approvals are applied when multiple approvals could match. + bool mustPrioritize = 21; + // Voting challenges that must be satisfied for approval. The initiator must provide + // valid votes that meet the quorum threshold for all specified challenges. + repeated VotingChallenge votingChallenges = 22; + // If true, this collection approval allows backed minting operations (CosmosCoinBackedPath). + // When false, this approval cannot be used for transfers involving backed minting addresses. + // This prevents accidental allowances when toListIds is "All". + bool allowBackedMinting = 23; + // If true, this collection approval allows special wrapping operations (CosmosCoinWrapperPath). + // When false, this approval cannot be used for transfers involving wrapping addresses. + // This prevents accidental allowances when toListIds is "All". + bool allowSpecialWrapping = 24; + // EVM query challenges that must pass for approval. Read-only contract queries + // that verify external EVM state (e.g., token ownership in another contract). + repeated EVMQueryChallenge evmQueryChallenges = 25; + // Issuer-imposed constraints on user-level coin transfers. Propagated to user-level approvals + // during greedy transfer matching (same pattern as userRoyalties). Only applicable on collection-level approvals. + // If conflicting settings across multiple matched approvals, the transfer is rejected (like royalties). + UserApprovalSettings userApprovalSettings = 26; +} + +// OutgoingApprovalCriteria defines the criteria for approving outgoing transfers. +// This is used for user-level outgoing approvals and only includes fields relevant to outgoing transfers. +// All criteria must be satisfied for the approval to be considered valid. +message OutgoingApprovalCriteria { + // Merkle challenges that must be satisfied for approval. The initiator must provide valid Merkle proofs + // that satisfy all specified challenges. Each challenge requires a proof that leads to a specific root hash. + repeated MerkleChallenge merkleChallenges = 1; + // Predetermined balances that must be used for each approval. Defines the exact token amounts and IDs + // that can be transferred when using this approval. + PredeterminedBalances predeterminedBalances = 2; + // Threshold limit of amounts that can be transferred using this approval. Tracks cumulative amounts + // transferred and enforces maximum limits per approval. + ApprovalAmounts approvalAmounts = 3; + // Maximum number of transfers that can be processed using this approval. Tracks the count of transfers + // and enforces the limit to prevent exceeding the allowed number of uses. + MaxNumTransfers maxNumTransfers = 4; + // The sdk.Coins that need to be transferred for approval. Defines required coin transfers (e.g., fees, + // royalties) that must be executed alongside the token transfer for the approval to be valid. + repeated CoinTransfer coinTransfers = 5; + + // Require the "to" address to be equal to the "initiated by" address for approval. + // If true, only transfers where the recipient matches the initiator are allowed. + bool requireToEqualsInitiatedBy = 6; + // Require the "to" address to not be equal to the "initiated by" address for approval. + // If true, transfers where the recipient equals the initiator are forbidden. + bool requireToDoesNotEqualInitiatedBy = 7; + + // Auto-deletion options for this approval. Defines conditions under which this approval should be + // automatically deleted (e.g., after a certain number of uses or time period). + AutoDeletionOptions autoDeletionOptions = 8; + + // Must own tokens for approval. Defines token ownership requirements that must be satisfied for + // the approval to be valid. The initiator must own the specified tokens at the specified ownership times. + repeated MustOwnTokens mustOwnTokens = 9; + // Dynamic store challenges that the initiator must pass for approval. The initiator must provide + // valid proofs that satisfy all specified dynamic store challenges (e.g., key-value store lookups). + repeated DynamicStoreChallenge dynamicStoreChallenges = 10; + // ETH signature challenges that the initiator must pass for approval. The initiator must provide + // valid Ethereum signatures for all specified challenges. Each signature can only be used once. + repeated ETHSignatureChallenge ethSignatureChallenges = 11; + // Address checks for the recipient of the transfer. Validates that the recipient address meets the + // specified criteria (e.g., whitelist, blacklist, protocol address requirements). + // Note: No sender checks are included for outgoing approvals since the sender is the user themselves. + AddressChecks recipientChecks = 12; + // Address checks for the initiator of the transfer. Validates that the initiator address meets the + // specified criteria (e.g., whitelist, blacklist, protocol address requirements). + AddressChecks initiatorChecks = 13; + // Alternative time-based checks for approval denial (offline hours/days). Defines time periods + // during which this approval should be denied, such as specific hours of the day or days of the week. + AltTimeChecks altTimeChecks = 14; + // If true, this approval must be explicitly prioritized in PrioritizedApprovals to be used. + // This allows fine-grained control over which approvals are applied when multiple approvals could match. + bool mustPrioritize = 15; + // Voting challenges that must be satisfied for approval. The initiator must provide + // valid votes that meet the quorum threshold for all specified challenges. + repeated VotingChallenge votingChallenges = 16; + // EVM query challenges that must pass for approval. Read-only contract queries + // that verify external EVM state (e.g., token ownership in another contract). + repeated EVMQueryChallenge evmQueryChallenges = 17; +} + +// IncomingApprovalCriteria defines the criteria for approving incoming transfers. +// This is used for user-level incoming approvals and only includes fields relevant to incoming transfers. +// All criteria must be satisfied for the approval to be considered valid. +message IncomingApprovalCriteria { + // Merkle challenges that must be satisfied for approval. The initiator must provide valid Merkle proofs + // that satisfy all specified challenges. Each challenge requires a proof that leads to a specific root hash. + repeated MerkleChallenge merkleChallenges = 1; + // Predetermined balances that must be used for each approval. Defines the exact token amounts and IDs + // that can be transferred when using this approval. + PredeterminedBalances predeterminedBalances = 2; + // Threshold limit of amounts that can be transferred using this approval. Tracks cumulative amounts + // transferred and enforces maximum limits per approval. + ApprovalAmounts approvalAmounts = 3; + // Maximum number of transfers that can be processed using this approval. Tracks the count of transfers + // and enforces the limit to prevent exceeding the allowed number of uses. + MaxNumTransfers maxNumTransfers = 4; + // The sdk.Coins that need to be transferred for approval. Defines required coin transfers (e.g., fees, + // royalties) that must be executed alongside the token transfer for the approval to be valid. + repeated CoinTransfer coinTransfers = 5; + + // Require the "from" address to be equal to the "initiated by" address for approval. + // If true, only transfers where the sender matches the initiator are allowed. + bool requireFromEqualsInitiatedBy = 6; + // Require the "from" address to not be equal to the "initiated by" address for approval. + // If true, transfers where the sender equals the initiator are forbidden. + bool requireFromDoesNotEqualInitiatedBy = 7; + + // Auto-deletion options for this approval. Defines conditions under which this approval should be + // automatically deleted (e.g., after a certain number of uses or time period). + AutoDeletionOptions autoDeletionOptions = 8; + + // Must own tokens for approval. Defines token ownership requirements that must be satisfied for + // the approval to be valid. The initiator must own the specified tokens at the specified ownership times. + repeated MustOwnTokens mustOwnTokens = 9; + // Dynamic store challenges that the initiator must pass for approval. The initiator must provide + // valid proofs that satisfy all specified dynamic store challenges (e.g., key-value store lookups). + repeated DynamicStoreChallenge dynamicStoreChallenges = 10; + // ETH signature challenges that the initiator must pass for approval. The initiator must provide + // valid Ethereum signatures for all specified challenges. Each signature can only be used once. + repeated ETHSignatureChallenge ethSignatureChallenges = 11; + // Address checks for the sender of the transfer. Validates that the sender address meets the + // specified criteria (e.g., whitelist, blacklist, protocol address requirements). + // Note: No recipient checks are included for incoming approvals since the recipient is the user themselves. + AddressChecks senderChecks = 12; + // Address checks for the initiator of the transfer. Validates that the initiator address meets the + // specified criteria (e.g., whitelist, blacklist, protocol address requirements). + AddressChecks initiatorChecks = 13; + // Alternative time-based checks for approval denial (offline hours/days). Defines time periods + // during which this approval should be denied, such as specific hours of the day or days of the week. + AltTimeChecks altTimeChecks = 14; + // If true, this approval must be explicitly prioritized in PrioritizedApprovals to be used. + // This allows fine-grained control over which approvals are applied when multiple approvals could match. + bool mustPrioritize = 15; + // Voting challenges that must be satisfied for approval. The initiator must provide + // valid votes that meet the quorum threshold for all specified challenges. + repeated VotingChallenge votingChallenges = 16; + // EVM query challenges that must pass for approval. Read-only contract queries + // that verify external EVM state (e.g., token ownership in another contract). + repeated EVMQueryChallenge evmQueryChallenges = 17; +} + diff --git a/proto/tokenization/v29/approval_tracking.proto b/proto/tokenization/v29/approval_tracking.proto new file mode 100644 index 00000000..a2488027 --- /dev/null +++ b/proto/tokenization/v29/approval_tracking.proto @@ -0,0 +1,78 @@ +syntax = "proto3"; +package tokenization.v29; + +import "gogoproto/gogo.proto"; +import "tokenization/v29/balances.proto"; + +option go_package = "github.com/bitbadges/bitbadgeschain/x/tokenization/types/v29"; + +// AutoDeletionOptions defines the options for auto-deletion of approvals. +message AutoDeletionOptions { + // After one use? + bool afterOneUse = 1; + // After overall max number of uses threshold is met? + bool afterOverallMaxNumTransfers = 2; + // Allow counterparty to purge this approval if they are the only initiator + bool allowCounterpartyPurge = 3; + // Allow others to call PurgeApprovals on behalf of this approval owner + bool allowPurgeIfExpired = 4; +} + +// Time intervals to reset the trackers at. +message ResetTimeIntervals { + // Original start time of the first interval. + string startTime = 1 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + // Interval length in unix milliseconds. + string intervalLength = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; +} + +// ApprovalAmounts defines approval amounts per unique "from," "to," and/or "initiated by" address. +// If any of these are nil or "0", we assume unlimited approvals. +// If they are set to a value, then the running tally of the amounts transferred for the specified token IDs and ownership times +// must not exceed the corresponding value. +message ApprovalAmounts { + // Overall approval amount. + string overallApprovalAmount = 1 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + // Approval amount per "to" address. + string perToAddressApprovalAmount = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + // Approval amount per "from" address. + string perFromAddressApprovalAmount = 3 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + // Approval amount per "initiated by" address. + string perInitiatedByAddressApprovalAmount = 4 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + // The ID of the amount tracker associated with this approval. + // We use this ID to track the number of transfers and amounts transferred. + string amountTrackerId = 6; + // Time intervals to reset the trackers at. + ResetTimeIntervals resetTimeIntervals = 7; +} + +// MaxNumTransfers defines the maximum number of transfers per unique "from," "to," and/or "initiated by" address. +// If any of these are nil or "0", we assume unlimited approvals. +// If they are set to a value, then the running tally of the number of transfers for the specified token IDs and ownership times +// must not exceed the corresponding value. +message MaxNumTransfers { + // Overall maximum number of transfers. + string overallMaxNumTransfers = 1 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + // Maximum number of transfers per "to" address. + string perToAddressMaxNumTransfers = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + // Maximum number of transfers per "from" address. + string perFromAddressMaxNumTransfers = 3 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + // Maximum number of transfers per "initiated by" address. + string perInitiatedByAddressMaxNumTransfers = 4 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + // The ID of the amount tracker associated with this approval. + // We use this ID to track the number of transfers and amounts transferred. + string amountTrackerId = 6; + // Time intervals to reset the trackers at. + ResetTimeIntervals resetTimeIntervals = 7; +} + +// ApprovalTracker defines the tracker for approvals. This tracks the cumulative number of transfers and associated balances transferred. +message ApprovalTracker { + // The number of transfers that have been processed. + string numTransfers = 1 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + // Cumulative balances associated with the transfers that have been processed. + repeated Balance amounts = 2; + // Last updated at time. + string lastUpdatedAt = 3 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; +} + diff --git a/proto/tokenization/v29/approvals.proto b/proto/tokenization/v29/approvals.proto new file mode 100644 index 00000000..c4b4f278 --- /dev/null +++ b/proto/tokenization/v29/approvals.proto @@ -0,0 +1,155 @@ +syntax = "proto3"; +package tokenization.v29; + +import "gogoproto/gogo.proto"; +import "tokenization/v29/balances.proto"; +import "tokenization/v29/approval_criteria.proto"; + +option go_package = "github.com/bitbadges/bitbadgeschain/x/tokenization/types/v29"; + +// CollectionApproval defines the rules for the approval of a transfer. +// Each transfer can be broken down into a (from, to, initiatedBy, transferTime, tokenId) tuple. +// We check the approvals for first match of this tuple, using the approvals. Subsequent matches are ignored. +// +// If the first match is disallowed, the transfer is disallowed. +// If the first match is allowed, then we check the rest of the restrictions. If any restrictions fail, then the transfer is disallowed. +// We do not proceed to the next match. +// +// Challenges defines the challenges that must be met with valid solutions for the transfer to be approved. +// +// requireTo/From(DoesNot)EqualsInitiatedBy defines whether the to/from address must equal the initiatedBy address or not. If it doesn't, then the transfer is disallowed. +// +// overallApprovals defines the overall approvals for the transfer (i.e. the running tally of the number of transfers and amounts transferred by all addresses). +// perAddressApprovals defines the approvals per unique from, to, and/or initiatedBy address. +// If any of these are nil, we assume unlimited approvals. +// +// IMPORTANT: We track the number of transfers and amounts transferred according to a tracker ID. This is a running tally that increments over time. +// Whenever a transfer is processed that maps to a specific tracker ID, we increment the number of transfers and amounts transferred. +// If the number of transfers or amounts transferred exceeds the corresponding overall or per address approvals, then the transfer is disallowed. +// Note we only track if overallApprovals or to/from/intiiatedByApprovals is not nil. +// If you want to reset the tracker tally, update the tracker ID to a new unique tracker ID. +// Tracker IDs are unique to their timelines. A tracker ID "abc" can be used for the collection, outgoing, and incoming timelines without overlap or overwriting one another. +// +// Ex: If overallApprovals maxNumTransfers = 20 and trackerID = "abc", then the first 20 transfers that map to trackerID = "abc" will be approved. The 21st transfer will be disallowed. +// +// IMPORTANT: Be very careful when updating an approved transfer but keeping the same tracker ID. +// For example, if you change the corresponding token IDs and the old token IDs overlap, then the overlapping token IDs will already have existing tallies. +// +// Another common area of confusion is what is actually being tallied. The tally is based on the approved transfer rules that are set. +// For example, if you don't have per address rules set and you update the approved transfer rules to include per address rules, +// then the tally doesn't retroactively apply the per address rules to the previous transfers. It starts at that time. +// +// Lastly, we have overridesFromOutgoingApprovals and overridesToIncomingApprovals. +// If these are set to true, we ignore the from / to user's approved outgoing / incoming transfers, respectively. +// This is useful, for example, for forcefully revoking tokens. +// If these are set to false, the transfer must also be approved by the from /to user's approved outgoing / incoming transfers, respectively. + +// CollectionApproval defines the rules for the approval of a transfer on the collection level +message CollectionApproval { + // The list ID for the sender of the transfer. + string fromListId = 1; + // The list ID for the recipient of the transfer. + string toListId = 2; + // The list ID for the user who initiated the transfer. + string initiatedByListId = 3; + // The allowed range of transfer times for approval. + repeated UintRange transferTimes = 4; + // The allowed range of token IDs for approval. + repeated UintRange tokenIds = 5; + // The allowed range of ownership times for approval. + repeated UintRange ownershipTimes = 6; + + // The URI associated with this approval, optionally providing metadata about the approval. + string uri = 7; + + // Arbitrary custom data associated with this approval. + string customData = 8; + + // The ID of this approval. Must be unique per level (i.e. collection, outgoing, incoming). + string approvalId = 9; + + // The criteria that must be met for this approval to be considered. + ApprovalCriteria approvalCriteria = 10; + + // Version of the approval. Maintained internally. + string version = 11 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; +} + +// UserOutgoingApproval defines the rules for the approval of an outgoing transfer from a user. +message UserOutgoingApproval { + // The list ID for the recipient of the transfer. + string toListId = 1; + + // The list ID for the user who initiated the transfer. + string initiatedByListId = 2; + + // The allowed range of transfer times for approval. + repeated UintRange transferTimes = 3; + + // The allowed range of token IDs for approval. + repeated UintRange tokenIds = 4; + + // The allowed range of ownership times for approval. + repeated UintRange ownershipTimes = 5; + + // The URI associated with this approval, optionally providing metadata about the approval. + string uri = 6; + + // Arbitrary custom data associated with this approval. + string customData = 7; + + // The ID of this approval. Must be unique per level (i.e. collection, outgoing, incoming). + string approvalId = 8; + + // The criteria that must be met for this approval to be considered. + OutgoingApprovalCriteria approvalCriteria = 9; + + // Version of the approval. Maintained internally. + string version = 10 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; +} + +// UserIncomingApproval defines the rules for the approval of an incoming transfer to a user. +message UserIncomingApproval { + // The list ID for the sender of the transfer. + string fromListId = 1; + + // The list ID for the user who initiated the transfer. + string initiatedByListId = 2; + + // The allowed range of transfer times for approval. + repeated UintRange transferTimes = 3; + + // The allowed range of token IDs for approval. + repeated UintRange tokenIds = 4; + + // The allowed range of ownership times for approval. + repeated UintRange ownershipTimes = 5; + + // The URI associated with this approval, optionally providing metadata about the approval. + string uri = 6; + + // Arbitrary custom data associated with this approval. + string customData = 7; + + // The ID of this approval. Must be unique per level (i.e. collection, outgoing, incoming). + string approvalId = 8; + + // The criteria that must be met for this approval to be considered. + IncomingApprovalCriteria approvalCriteria = 9; + + // Version of the approval. Maintained internally. + string version = 10 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; +} + +// ApprovalIdentifierDetails defines the details to identify a specific approval. +message ApprovalIdentifierDetails { + // The ID of the approval. + string approvalId = 1; + // The level of the approval. Can be "collection", "incoming", or "outgoing". + string approvalLevel = 2; + // The address of the approver. Leave blank "" if approvalLevel == "collection". + string approverAddress = 3; + // The version of the approval. + string version = 4 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; +} + diff --git a/proto/tokenization/v29/balances.proto b/proto/tokenization/v29/balances.proto new file mode 100644 index 00000000..2959b26e --- /dev/null +++ b/proto/tokenization/v29/balances.proto @@ -0,0 +1,55 @@ +syntax = "proto3"; +package tokenization.v29; + +import "gogoproto/gogo.proto"; +import "tokenization/v29/params.proto"; +// this line is used by starport scaffolding # genesis/proto/import + +option go_package = "github.com/bitbadges/bitbadgeschain/x/tokenization/types/v29"; + +/* + The UintRange is a range of IDs from some start to some end (inclusive). + uintRanges are one of the core types used. + + They are used for everything from token IDs to time ranges to min/max balance amounts. + + See the BitBadges documentation for more information. +*/ +message UintRange { + // The starting value of the range (inclusive). + string start = 1 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + + // The ending value of the range (inclusive). + string end = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; +} + + +/* + Balance represents the balance of a token for a specific user. + The user amounts xAmount of a token specified for the time ranges specified. + + Example: User A owns x10 of token IDs 1-10 from 1/1/2020 to 1/1/2021. + + If times or tokenIDs have len > 1, then the user owns all token IDs specified for all time ranges specified. +*/ +message Balance { + // The amount of the token owned by the user. + string amount = 1 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + + // The time ranges during which the user owns the token. + repeated UintRange ownershipTimes = 2; + + // The token IDs for which the user owns the token. + repeated UintRange tokenIds = 3; +} + +// PrecalculationOptions defines the options for precalculating the balances. +message PrecalculationOptions { + // The timestamp to override with when calculating the balances. + string overrideTimestamp = 1 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + // The IDs to override for the transfer. Only applicable if using this option in precalculation. + repeated UintRange tokenIdsOverride = 2; + // When > 0 and allowAmountScaling is true on the approval, all precalculated balance amounts + // are multiplied by this value. Must be <= maxScalingMultiplier. 0 means no scaling (returns 1x base). + string scalingMultiplier = 3 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; +} \ No newline at end of file diff --git a/proto/tokenization/v29/challenges.proto b/proto/tokenization/v29/challenges.proto new file mode 100644 index 00000000..28b2ef83 --- /dev/null +++ b/proto/tokenization/v29/challenges.proto @@ -0,0 +1,204 @@ +syntax = "proto3"; +package tokenization.v29; + +import "gogoproto/gogo.proto"; + +option go_package = "github.com/bitbadges/bitbadgeschain/x/tokenization/types/v29"; + +/* + Challenges define a rule for the approval in the form of a Merkle challenge. + + A Merkle challenge is a challenge where the user must provide a Merkle proof to a Merkle tree. If they provide a valid proof, + then the challenge is met. All challenges must be met with valid solutions for the transfer to be approved. + + IMPORTANT: Merkle challenges currently are limited to SHA256 hashes. See documentation for MerkleChallenge for more details and tutorials. + + IMPORTANT: We track the number of uses per leaf according to the challengeTrackerId specified by the parent approval of this challenge. + If you update the challenge ID, then the used leaves tracker will reset and start a new tally. + We recommend using a unique challenge ID for each challenge to prevent overlap and unexpected behavior. +*/ +message MerkleChallenge { + // The root hash of the Merkle tree to which the Merkle path must lead for verification. + string root = 1; + + // The expected length of the Merkle path for verification. Used to prevent Merkle path truncation attacks. + string expectedProofLength = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + + // If true, we will override the user's leaf for their proof with their creator address. Used for whitelist trees where all leaves are valid BitBadges addresses. + bool useCreatorAddressAsLeaf = 3; + + // The maximum number of times each leaf can be used. Must be 1 if useCreatorAddressAsLeaf is false to prevent replay attacks. + string maxUsesPerLeaf = 4 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + + // The URI associated with this Merkle challenge, optionally providing metadata about the challenge. + string uri = 5; + + // Arbitrary custom data associated with this Merkle challenge. + string customData = 6; + + // The ID of this Merkle challenge for tracking the number of uses per leaf. + string challengeTrackerId = 7; + + // Ethereum address that must sign the leaf. Used to protect against man-in-the-middle attacks. + // Signature scheme: sign(leaf + "-" + creatorAddress), verified using elliptic curve signature verification. + string leafSigner = 8; +} + +/* + ETHSignatureChallenge defines a rule for the approval in the form of an Ethereum signature challenge. + + An ETH signature challenge is a challenge where the user must provide a valid Ethereum signature for a specific nonce. + The signature scheme is ETHSign(nonce + "-" + initiatorAddress + "-" + collectionId + "-" + approverAddress + "-" + approvalLevel + "-" + approvalId + "-" + challengeId) and each signature can only be used once. + All challenges must be met with valid solutions for the transfer to be approved. + + IMPORTANT: We track the usage of each signature to prevent replay attacks. Each signature can only be used once. + If you update the challenge ID, then the used signatures tracker will reset and start a new tally. + We recommend using a unique challenge ID for each challenge to prevent overlap and unexpected behavior. +*/ +message ETHSignatureChallenge { + // The Ethereum address that must sign the nonce for verification. + string signer = 1; + + // The ID of this ETH signature challenge for tracking the number of uses per signature. + string challengeTrackerId = 2; + + // The URI associated with this ETH signature challenge, optionally providing metadata about the challenge. + string uri = 3; + + // Arbitrary custom data associated with this ETH signature challenge. + string customData = 4; +} + +// MerklePathItem represents an item in a Merkle path. +message MerklePathItem { + // The hash of the sibling node (aunt) in the Merkle path. + string aunt = 1; + // Indicates whether the aunt node is on the right side of the path. + bool onRight = 2; +} + +// MerkleProof represents a Merkle proof, consistent with Tendermint/Crypto Merkle tree. +message MerkleProof { + // The hash of the leaf node for which the proof is generated. + string leaf = 1; + // List of Merkle path items (aunts) that make up the proof. + repeated MerklePathItem aunts = 2; + // The signature of the leaf node tying the address to the leaf node. + string leafSignature = 3; +} + +// ETHSignatureProof represents an Ethereum signature proof for a challenge. +message ETHSignatureProof { + // The nonce that was signed. The signature scheme is ETHSign(nonce + "-" + initiatorAddress + "-" + collectionId + "-" + approverAddress + "-" + approvalLevel + "-" + approvalId + "-" + challengeId). + string nonce = 1; + // The Ethereum signature of the nonce. + string signature = 2; +} + +/* + VotingChallenge defines a rule for approval in the form of a voting/multi-sig challenge. + Requires a weighted quorum threshold to be met through votes from specified voters. + All challenges must be met with valid solutions for the transfer to be approved. + + IMPORTANT: Votes are stored separately and can be updated. The threshold is calculated as a percentage + of total possible weight (all voters), not just voted weight. If you update the proposal ID, then the + vote tracker will reset and start a new tally. We recommend using a unique proposal ID for each challenge + to prevent overlap and unexpected behavior. +*/ +message VotingChallenge { + // The ID of this voting challenge for tracking votes (scoped like challengeTrackerId). + // Format: collectionId-approverAddress-approvalLevel-approvalId-challengeId + string proposalId = 1; + + // The quorum threshold as a percentage (0-100) of total possible weight that must vote "yes". + // Example: 50 means 50% of total voter weight must vote yes for approval. + string quorumThreshold = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + + // List of voters with their weights. Each voter can cast a weighted vote. + repeated Voter voters = 3; + + // The URI associated with this voting challenge. + string uri = 4; + + // Arbitrary custom data associated with this voting challenge. + string customData = 5; + + // If true, all votes for this challenge are cleared after a successful transfer execution. + // This makes the challenge reusable (e.g., for vault withdrawals that need fresh approval each time). + bool resetAfterExecution = 6; + + // Mandatory delay in milliseconds after quorum is reached before the transfer can execute. + // If set, the transfer will fail until: now >= quorumReachedTimestamp + delayAfterQuorum. + // During the delay, signers can remove their votes to cancel (quorum drops = delay resets). + string delayAfterQuorum = 7 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; +} + +// Voter defines a voter with their address and weight. +message Voter { + // The address of the voter. + string address = 1; + + // The weight of this voter's vote. + string weight = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; +} + +// VoteProof represents a vote cast for a voting challenge. +message VoteProof { + // The proposal ID this vote is for. + string proposalId = 1; + + // The address of the voter casting the vote. + string voter = 2; + + // The percentage weight (0-100) allocated to "yes" vote. + // The remaining percentage (100 - yesWeight) is allocated to "no" vote. + // Example: yesWeight=70 means 70% yes, 30% no. + string yesWeight = 3 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + + // Timestamp (unix ms) when this vote was cast. Set automatically by the chain. + string votedAt = 4 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; +} + +// VotingChallengeTracker tracks the quorum state for a voting challenge. +// Stored per (collectionId, approverAddress, approvalLevel, approvalId, proposalId). +message VotingChallengeTracker { + // Timestamp (unix ms) when quorum was first reached. Cleared when quorum drops or after reset. + string quorumReachedTimestamp = 1 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; +} + +/* + EVMQueryChallenge defines a rule for approval via read-only EVM contract query. + + The challenge executes a staticcall to the specified contract with the given calldata. + The result is compared against the expected result (if provided) or checked for non-zero return. + + IMPORTANT: This is read-only and cannot modify state. The query is executed with a gas limit + to prevent DoS attacks. All results are deterministic since EVM state is consistent within a block. +*/ +message EVMQueryChallenge { + // The EVM contract address to query (0x format or bb1 format) + string contractAddress = 1; + + // ABI-encoded function selector + arguments (hex string without 0x prefix) + // Example: "70a08231000000000000000000000000{address}" for balanceOf(address) + // Can use placeholders: $initiator, $sender, $recipient (replaced at runtime) + string calldata = 2; + + // Expected return value (hex string without 0x prefix). If empty, any non-error result passes. + // For boolean checks, use "0000...0001" for true. + string expectedResult = 3; + + // Comparison operator: "eq" (equals), "ne" (not equals), "gt" (greater than), "gte", "lt", "lte" + // Only "eq" and "ne" work for non-numeric types. Default is "eq". + string comparisonOperator = 4; + + // Gas limit for the query (default 100000, max 500000) + string gasLimit = 5 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + + // The URI associated with this challenge (metadata) + string uri = 6; + + // Arbitrary custom data + string customData = 7; +} + diff --git a/proto/tokenization/v29/collections.proto b/proto/tokenization/v29/collections.proto new file mode 100644 index 00000000..2e28d9a7 --- /dev/null +++ b/proto/tokenization/v29/collections.proto @@ -0,0 +1,198 @@ +syntax = "proto3"; +package tokenization.v29; + +import "google/protobuf/any.proto"; +import "tokenization/v29/transfers.proto"; +import "tokenization/v29/balances.proto"; +import "tokenization/v29/permissions.proto"; +import "tokenization/v29/metadata.proto"; +import "tokenization/v29/approvals.proto"; +import "tokenization/v29/user_balance_store.proto"; +import "tokenization/v29/challenges.proto"; +import "gogoproto/gogo.proto"; + +option go_package = "github.com/bitbadges/bitbadgeschain/x/tokenization/types/v29"; + +/* + A TokenCollection is the top-level object for a collection of tokens. + It defines everything about the collection, such as the manager, metadata, etc. + + All collections are identified by a collectionId assigned by the blockchain, which is a uint64 that increments (i.e. the first collection has ID 1). + + All collections can have a manager who is responsible for managing the collection and can be granted certain admin + permissions, such as the ability to mint new tokens. + + Collections may have different balance types: standard vs. off-chain - indexed vs. inherited.vs off-chain - non-indexed vs non-public. + + See documentation for more details. +*/ +message TokenCollection { + // The unique identifier for this collection. This is assigned by the blockchain. First collection has ID 1. + string collectionId = 1 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + + // The metadata for the collection itself. + CollectionMetadata collectionMetadata = 2; + + // The metadata for each token in the collection. + repeated TokenMetadata tokenMetadata = 3; + + // An arbitrary field that can store any data. + string customData = 4; + + // The address of the manager of this collection. + string manager = 5; + + // Permissions that define what the manager of the collection can do or not do. + CollectionPermissions collectionPermissions = 6; + + // Transferability of the collection for collections with standard balances, subject to changes over time. + // Overrides user approvals for a transfer if specified. + // Transfer must satisfy both user and collection-level approvals. + // Only applicable to on-chain balances. + repeated CollectionApproval collectionApprovals = 7; + + // Standards that define how to interpret the fields of the collection. + repeated string standards = 8; + + // Whether the collection is archived or not. + // When archived, it becomes read-only, and no transactions can be processed until it is unarchived. + bool isArchived = 9; + + // The default store of a balance / approvals for a user, upon genesis. + UserBalanceStore defaultBalances = 10; + + // The user or entity who created the collection. + string createdBy = 11; + + // The valid token IDs for this collection. + repeated UintRange validTokenIds = 12; + + //The generated address of the collection. Also used to escrow Mint balances. + string mintEscrowAddress = 13; + + // The IBC wrapper (sdk.coin) paths for the collection. + repeated CosmosCoinWrapperPath cosmosCoinWrapperPaths = 14; + + // Collection-level invariants that cannot be broken. + // These are set upon genesis and cannot be modified. + CollectionInvariants invariants = 15; + + // The alias (non-wrapping) paths for the collection. + repeated AliasPath aliasPaths = 16; +} + +// Conversion defines a bidirectional conversion between a cosmos coin (with denom) and token balances. +message Conversion { + // Side A: The cosmos coin side of the conversion (amount + denom). + ConversionSideAWithDenom sideA = 1; + // Side B: The token balances side of the conversion. + repeated Balance sideB = 2; +} + +// ConversionSideAWithDenom represents the cosmos coin side of a conversion with denomination. +message ConversionSideAWithDenom { + // The amount of the cosmos coin (0 decimals). + string amount = 1 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + // The denomination of the cosmos coin. + string denom = 2; +} + +// ConversionWithoutDenom defines a bidirectional conversion between a cosmos coin amount (without denom) and token balances. +// The denom is stored at the base level (e.g., in AliasPath or CosmosCoinWrapperPath). +message ConversionWithoutDenom { + // Side A: The cosmos coin amount side of the conversion (amount only, denom stored separately). + ConversionSideA sideA = 1; + // Side B: The token balances side of the conversion. + repeated Balance sideB = 2; +} + +// ConversionSideA represents the cosmos coin amount side of a conversion without denomination. +message ConversionSideA { + // The amount of the cosmos coin (0 decimals). + string amount = 1 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; +} + +message CosmosCoinWrapperPath { + // The BitBadges address associated with this wrapper path. Used for routing and identifying the wrapper. + string address = 1; + // The denomination (denom) to be used for the wrapped coin or the alias denom. + string denom = 2; + // The conversion between cosmos coin and token balances. + ConversionWithoutDenom conversion = 3; + // The symbol for the wrapped coin (e.g., "BADGE", "NFT"). Used for display purposes. Note that this may not be the default. + string symbol = 4; + // Denomination units for the wrapped coin. Defines how the coin can be displayed with different + // decimal places and symbols (e.g., base unit, display unit). You can specify which is the default display unit (base level or one of these). + repeated DenomUnit denomUnits = 5; + // If true, allows this wrapper path to be used with any valid token ID in the collection via an {id} placeholder. + bool allowOverrideWithAnyValidToken = 6; + // The metadata for this wrapper path. + PathMetadata metadata = 7; +} + +message AliasPath { + // The denomination (denom) to be used for the alias. + string denom = 1; + // The conversion between cosmos coin and token balances. + ConversionWithoutDenom conversion = 2; + // The symbol for the alias (e.g., "BADGE", "NFT"). Used for display purposes. Note that this may not be the default. + string symbol = 3; + // Denomination units for the alias. Defines how the coin can be displayed with different decimal places and symbols. + repeated DenomUnit denomUnits = 4; + // The metadata for this alias path. + PathMetadata metadata = 5; +} + +message CosmosCoinBackedPath { + // The address associated with this backed path. Used for routing and escrowing IBC tokens. + string address = 1; + // The conversion between IBC cosmos coin and token balances. + Conversion conversion = 2; +} + +message DenomUnit { + // The number of decimal places for this unit. Defines the precision of the unit. + string decimals = 1 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + // The symbol for this unit (e.g., "BADGE", "nBADGE"). Used for display purposes. + string symbol = 2; + // If true, this is the default display unit. Only one unit should be marked as the default display unit. + // This unit will be used by default when displaying the coin amount. If none are marked default, we use the base level. + bool isDefaultDisplay = 3; + // The metadata for this denomination unit. + PathMetadata metadata = 4; +} + +// CollectionInvariants defines the invariants that apply to a collection. +message CollectionInvariants { + // If true, all ownership times must be full ranges [{ start: 1, end: GoMaxUInt64 }]. + // This prevents time-based restrictions on token ownership. + bool noCustomOwnershipTimes = 1; + + // Maximum supply per token ID. Checked against Total address balances after transfers complete. + // A value of 0 means no limit (unlimited). + string maxSupplyPerId = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + + // The IBC backed (sdk.coin) path for the collection. Only one path is allowed. + CosmosCoinBackedPath cosmosCoinBackedPath = 3; + + // If true, disallows any collection approvals that have overridesFromOutgoingApprovals or overridesToIncomingApprovals set to true. + // This prevents forceful transfers that bypass user-level approvals. + // This only applies to transfers where the from address does not equal "Mint". + bool noForcefulPostMintTransfers = 4; + + // If true, disallows pool creation with this collection's assets. + // When true, any attempt to create a pool with tokenization assets from this collection will fail. + bool disablePoolCreation = 5; + + // EVM query invariants that must pass after all transfers complete. + // These are checked once per message after all balance updates, with access to ALL recipient addresses. + // Placeholders: $sender, $recipients (comma-separated), $initiator, $collectionId, $recipient + repeated EVMQueryChallenge evmQueryChallenges = 6; +} + +// CollectionStats tracks aggregated statistics for a collection. +message CollectionStats { + string holderCount = 1 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + // Tracks circulating supply as Balance[] for proper range handling + repeated Balance balances = 2; +} diff --git a/proto/tokenization/v29/dynamic_stores.proto b/proto/tokenization/v29/dynamic_stores.proto new file mode 100644 index 00000000..b9e6904c --- /dev/null +++ b/proto/tokenization/v29/dynamic_stores.proto @@ -0,0 +1,41 @@ +syntax = "proto3"; +package tokenization.v29; + +import "gogoproto/gogo.proto"; + +option go_package = "github.com/bitbadges/bitbadgeschain/x/tokenization/types/v29"; + +/* + A DynamicStore is a flexible storage object that can store arbitrary data. + It is identified by a unique ID assigned by the blockchain, which is a uint64 that increments. + Dynamic stores are created by users and can only be updated or deleted by their creator. + They provide a way to store custom data on-chain with proper access control. +*/ +message DynamicStore { + // The unique identifier for this dynamic store. This is assigned by the blockchain. + string storeId = 1 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + // The address of the creator of this dynamic store. + string createdBy = 2; + // The default value for uninitialized addresses (true/false). + bool defaultValue = 3; + // Global kill switch state (defaults to true on creation, can be toggled via UpdateDynamicStore). + // When false, all approvals using this store via DynamicStoreChallenge will fail immediately. + bool globalEnabled = 4; + // URI for additional metadata or resources associated with this dynamic store. + string uri = 5; + // Custom data field for storing arbitrary data associated with this dynamic store. + string customData = 6; +} + +/* + A DynamicStoreValue stores a boolean value for a specific address in a dynamic store. + This allows the creator to set true/false values per address that can be checked during approval. +*/ +message DynamicStoreValue { + // The unique identifier for this dynamic store. + string storeId = 1 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + // The address for which this value is stored. + string address = 2; + // The boolean value (true/false). + bool value = 3; +} \ No newline at end of file diff --git a/proto/tokenization/v29/genesis.proto b/proto/tokenization/v29/genesis.proto new file mode 100644 index 00000000..af968c12 --- /dev/null +++ b/proto/tokenization/v29/genesis.proto @@ -0,0 +1,47 @@ +syntax = "proto3"; +package tokenization.v29; + +import "gogoproto/gogo.proto"; +import "tokenization/v29/params.proto"; +import "tokenization/v29/collections.proto"; +import "tokenization/v29/balances.proto"; +import "tokenization/v29/transfers.proto"; +import "tokenization/v29/address_lists.proto"; +import "tokenization/v29/dynamic_stores.proto"; +import "tokenization/v29/user_balance_store.proto"; +import "tokenization/v29/approval_tracking.proto"; +import "tokenization/v29/challenges.proto"; +// this line is used by starport scaffolding # genesis/proto/import + +option go_package = "github.com/bitbadges/bitbadgeschain/x/tokenization/types/v29"; + +// GenesisState defines the tokens module's genesis state. +message GenesisState { + Params params = 1 [(gogoproto.nullable) = false]; + string port_id = 2; + repeated TokenCollection collections = 3; + string nextCollectionId = 4 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + repeated UserBalanceStore balances = 5; + repeated string balanceStoreKeys = 6; + repeated string challengeTrackers = 7 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + repeated string challengeTrackerStoreKeys = 8; + repeated AddressList addressLists = 9; + repeated ApprovalTracker approvalTrackers = 10; + repeated string approvalTrackerStoreKeys = 11; + repeated string approvalTrackerVersions = 12 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + repeated string approvalTrackerVersionsStoreKeys = 13; + repeated DynamicStore dynamicStores = 14; + string nextDynamicStoreId = 15 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + repeated DynamicStoreValue dynamicStoreValues = 16; + repeated string ethSignatureTrackers = 17 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + repeated string ethSignatureTrackerStoreKeys = 18; + repeated VoteProof votingTrackers = 19; + repeated string votingTrackerStoreKeys = 20; + repeated CollectionStats collectionStats = 21; + repeated string collectionStatsIds = 22 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + repeated VotingChallengeTracker votingChallengeTrackers = 23; + repeated string votingChallengeTrackerStoreKeys = 24; + string nextAddressListCounter = 25 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + repeated string reservedProtocolAddresses = 26; + // this line is used by starport scaffolding # genesis/proto/state +} diff --git a/proto/tokenization/v29/icq.proto b/proto/tokenization/v29/icq.proto new file mode 100644 index 00000000..23879a5f --- /dev/null +++ b/proto/tokenization/v29/icq.proto @@ -0,0 +1,95 @@ +syntax = "proto3"; +package tokenization.v29; + +import "gogoproto/gogo.proto"; +import "tokenization/v29/balances.proto"; + +option go_package = "github.com/bitbadges/bitbadgeschain/x/tokenization/types/v29"; + +// OwnershipQueryPacket is sent from a querying chain to BitBadges to verify token ownership. +// The querying chain provides the address and token criteria, and BitBadges responds with +// ownership status and optional cryptographic proof. +message OwnershipQueryPacket { + // Unique identifier for correlating request and response + string query_id = 1; + + // Address to check ownership for (bech32 or EVM hex format) + string address = 2; + + // Collection ID to query (uint as string for cross-chain compatibility) + string collection_id = 3; + + // Token ID to check ownership for (uint as string) + string token_id = 4; + + // Ownership time to check (uint as string, typically current time in milliseconds) + string ownership_time = 5; +} + +// OwnershipQueryResponsePacket is sent from BitBadges back to the querying chain +// with the ownership verification result. +message OwnershipQueryResponsePacket { + // Correlation ID from the original request + string query_id = 1; + + // True if the address owns any of the specified tokens (total_amount > 0) + bool owns_tokens = 2; + + // Total amount owned for the specified token IDs and ownership times + string total_amount = 3 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + + // Block height at which the response was generated + uint64 proof_height = 4; + + // Error message if the query failed (empty on success) + string error = 5; +} + +// BulkOwnershipQueryPacket allows querying multiple addresses/collections in a single IBC packet. +// This is more efficient than sending multiple individual queries. +message BulkOwnershipQueryPacket { + // Unique identifier for the bulk query + string query_id = 1; + + // Individual queries to process (max 100 recommended) + repeated OwnershipQueryPacket queries = 2; +} + +// BulkOwnershipQueryResponsePacket contains responses for all queries in a bulk request. +message BulkOwnershipQueryResponsePacket { + // Correlation ID from the original bulk request + string query_id = 1; + + // Responses in the same order as the original queries + repeated OwnershipQueryResponsePacket responses = 2; +} + +// FullBalanceQueryPacket is sent from a querying chain to BitBadges to retrieve +// the complete balance store for a user (balances, approvals, permissions). +message FullBalanceQueryPacket { + // Unique identifier for correlating request and response + string query_id = 1; + + // Address to get balance for (bech32 or EVM hex format) + string address = 2; + + // Collection ID to query (uint as string for cross-chain compatibility) + string collection_id = 3; +} + +// FullBalanceQueryResponsePacket is sent from BitBadges back to the querying chain +// with the complete balance store (serialized as bytes for cross-chain compatibility). +message FullBalanceQueryResponsePacket { + // Correlation ID from the original request + string query_id = 1; + + // The serialized UserBalanceStore (protobuf bytes) + // Contains balances, incoming/outgoing approvals, auto-approve settings, and permissions + bytes balance_store = 2; + + // Block height at which the response was generated + uint64 proof_height = 3; + + // Error message if the query failed (empty on success) + string error = 4; +} diff --git a/proto/tokenization/v29/metadata.proto b/proto/tokenization/v29/metadata.proto new file mode 100644 index 00000000..aec640ca --- /dev/null +++ b/proto/tokenization/v29/metadata.proto @@ -0,0 +1,47 @@ +syntax = "proto3"; +package tokenization.v29; + +import "google/protobuf/any.proto"; +import "tokenization/v29/balances.proto"; +import "gogoproto/gogo.proto"; + +option go_package = "github.com/bitbadges/bitbadgeschain/x/tokenization/types/v29"; + +/* + This message defines the metadata for specific token IDs. + The interpretation of this metadata should follow the collection standard. +*/ +message TokenMetadata { + // The URI (Uniform Resource Identifier) associated with the token metadata. + string uri = 1; + + // Custom data or additional information related to the token metadata. + string customData = 2; + + // The token IDs to which this metadata applies. + repeated UintRange tokenIds = 3; +} + +/* + This message defines the metadata for the collection. + The interpretation of this metadata should follow the collection standard. +*/ +message CollectionMetadata { + // The URI (Uniform Resource Identifier) associated with the collection metadata. + string uri = 1; + + // Custom data or additional information related to the collection metadata. + string customData = 2; +} + +/* + This message defines the metadata for paths (alias paths and cosmos coin wrapper paths). + The interpretation of this metadata should follow the collection standard. +*/ +message PathMetadata { + // The URI (Uniform Resource Identifier) associated with the path metadata. + string uri = 1; + + // Custom data or additional information related to the path metadata. + string customData = 2; +} diff --git a/proto/tokenization/v29/packet.proto b/proto/tokenization/v29/packet.proto new file mode 100644 index 00000000..08166ac7 --- /dev/null +++ b/proto/tokenization/v29/packet.proto @@ -0,0 +1,29 @@ +syntax = "proto3"; +package tokenization.v29; + +import "tokenization/v29/icq.proto"; + +option go_package = "github.com/bitbadges/bitbadgeschain/x/tokenization/types/v29"; + +// TokenizationPacketData defines the packet data for the tokenization module. +// It uses a oneof to support multiple packet types over the same IBC channel. +message TokenizationPacketData { + oneof packet { + NoData noData = 1; + + // ICQ (Interchain Query) packet types for cross-chain token ownership verification + // OwnershipQuery: Query for a single token ID and ownership time -> returns amount + OwnershipQueryPacket ownershipQuery = 2; + OwnershipQueryResponsePacket ownershipQueryResponse = 3; + BulkOwnershipQueryPacket bulkOwnershipQuery = 4; + BulkOwnershipQueryResponsePacket bulkOwnershipQueryResponse = 5; + + // FullBalanceQuery: Query for complete balance store -> returns full UserBalanceStore + FullBalanceQueryPacket fullBalanceQuery = 6; + FullBalanceQueryResponsePacket fullBalanceQueryResponse = 7; + } +} + +// NoData is a placeholder packet type (legacy scaffold). +message NoData { +} diff --git a/proto/tokenization/v29/params.proto b/proto/tokenization/v29/params.proto new file mode 100644 index 00000000..a70cb58e --- /dev/null +++ b/proto/tokenization/v29/params.proto @@ -0,0 +1,19 @@ +syntax = "proto3"; +package tokenization.v29; + +import "amino/amino.proto"; +import "gogoproto/gogo.proto"; + +option go_package = "github.com/bitbadges/bitbadgeschain/x/tokenization/types/v29"; + +// Params defines the parameters for the module. +message Params { + option (amino.name) = "github.com/bitbadges/bitbadgeschain/x/tokenization/Params"; + option (gogoproto.equal) = true; + + // allowed_denoms defines the list of denoms that are allowed to be used in coin_transfers + repeated string allowed_denoms = 1; + + // affiliate_percentage defines the percentage of the transfer amount that goes to the affiliate + string affiliate_percentage = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; +} \ No newline at end of file diff --git a/proto/tokenization/v29/permissions.proto b/proto/tokenization/v29/permissions.proto new file mode 100644 index 00000000..0782ed6e --- /dev/null +++ b/proto/tokenization/v29/permissions.proto @@ -0,0 +1,241 @@ +syntax = "proto3"; +package tokenization.v29; + +import "google/protobuf/any.proto"; +import "tokenization/v29/balances.proto"; +import "tokenization/v29/address_lists.proto"; +import "gogoproto/gogo.proto"; + +option go_package = "github.com/bitbadges/bitbadgeschain/x/tokenization/types/v29"; + + +/* + CollectionPermissions defines the permissions for the collection (i.e., what the manager can and cannot do). + + There are three types of permissions for a collection: ActionPermission, TokenIdsActionPermission, and CollectionApprovalPermission. + + The permission type allows fine-grained access control for each action. + - ActionPermission: defines when the manager can perform an action or update a field. + - TokenIdsActionPermission: defines when the manager can perform an action for specific tokens + - CollectionApprovalPermission: defines when the manager can update the transferability of the collection and what transfers can be updated vs. locked. + + Note there are a few different times here which could get confusing: + - permanentlyPermitted/ForbiddenTimes - the times that a permission can be performed + - transferTimes - the times that a transfer occurs + - ownershipTimes - the times when a token is owned by a user + + The permitted/permanentlyForbiddenTimes are used to determine when a permission can be executed. + Once a time is set to be permitted or forbidden, it is PERMANENT and cannot be changed. + If a time is not set to be permitted or forbidden, it is considered NEUTRAL and can be updated but is ALLOWED by default. + + IMPORTANT: We take first-match only for the permissions. This means that if you forbid time T in array index 0 and permit time T in index 1, + we will only check the first permission (forbid time T) and not the second permission (permit time T). +*/ +message CollectionPermissions { + // Permissions related to deleting the collection. + repeated ActionPermission canDeleteCollection = 1; + + // Permissions related to archiving the collection. + repeated ActionPermission canArchiveCollection = 2; + + // Permissions related to updating standards for the collection. + repeated ActionPermission canUpdateStandards = 3; + + // Permissions related to updating custom data for the collection. + repeated ActionPermission canUpdateCustomData = 4; + + // Permissions related to updating the collection's manager. + repeated ActionPermission canUpdateManager = 5; + + // Permissions related to updating the metadata of the collection. + repeated ActionPermission canUpdateCollectionMetadata = 6; + + // Permissions related to creating more tokens for the collection. + repeated TokenIdsActionPermission canUpdateValidTokenIds = 7; + + // Permissions related to updating token metadata for specific tokens. + repeated TokenIdsActionPermission canUpdateTokenMetadata = 8; + + // Permissions related to updating collection approvals. + repeated CollectionApprovalPermission canUpdateCollectionApprovals = 9; + + // Permissions related to adding more alias paths to the collection. + repeated ActionPermission canAddMoreAliasPaths = 10; + + // Permissions related to adding more cosmos coin wrapper paths to the collection. + repeated ActionPermission canAddMoreCosmosCoinWrapperPaths = 11; +} + +/* + UserPermissions defines the permissions for the user about their approvals (i.e., what the user can and cannot do). + + See CollectionPermissions for more details on the different types of permissions. + + canUpdateOutgoingApprovals and canUpdateOutgoingApprovals follow the same as the canUpdateCollectionApprovals in CollectionPermissions, + but certain fields are removed because they are not relevant to the user. +*/ +message UserPermissions { + // Permissions related to updating the user's approved outgoing transfers. + repeated UserOutgoingApprovalPermission canUpdateOutgoingApprovals = 1; + + // Permissions related to updating the user's approved incoming transfers. + repeated UserIncomingApprovalPermission canUpdateIncomingApprovals = 2; + + // Permissions related to updating auto-approval settings for self-initiated outgoing transfers (whether they are allowed by default). + repeated ActionPermission canUpdateAutoApproveSelfInitiatedOutgoingTransfers = 3; + + // Permissions related to updating auto-approval settings for self-initiated incoming transfers (whether they are allowed by default). + repeated ActionPermission canUpdateAutoApproveSelfInitiatedIncomingTransfers = 4; + + // Permissions related to updating auto-approval settings for all incoming transfers (whether they are allowed by default). + repeated ActionPermission canUpdateAutoApproveAllIncomingTransfers = 5; +} + + +/* + CollectionApprovalPermission defines what collection approved transfers can be updated vs. are locked. + + Each transfer is broken down to a (from, to, initiatedBy, transferTime, tokenId) tuple. + For a transfer to match, we need to match ALL of the fields in the combination. + These are determined by the fromListId, toListId, initiatedByListId, transferTimes, tokenIds fields. + AddressLists are used for (from, to, initiatedBy) which are a permanent list of addresses identified by an ID (see AddressLists). + + permanentlyPermitted/ForbiddenTimes: when can the manager execute this permission? + + Ex: Let's say we are updating the transferability for the transfer tuple ("AllWithoutMint", "AllWithoutMint", "AllWithoutMint", 10, 1000). + We would check to find the FIRST CollectionApprovalPermission that matches this combination. + If we find a match, we would check the permitted/forbidden times to see if we can execute this permission (default is ALLOWED). + + Ex: So if you wanted to freeze the transferability to enforce that token ID 1 will always be transferable, you could set + the combination ("AllWithoutMint", "AllWithoutMint", "AllWithoutMint", "All Transfer Times", 1) to always be forbidden. +*/ +message CollectionApprovalPermission { + // Identifier for the sender list. + string fromListId = 1; + + // Identifier for the recipient list. + string toListId = 2; + + // Identifier for the initiator list (who is approved?). + string initiatedByListId = 3; + + // Specifies the times when the transfer can occur. + repeated UintRange transferTimes = 4; + + // Specifies the token IDs involved in the transfer. + repeated UintRange tokenIds = 5; + + // Specifies the ownership times for the tokens in the transfer. + repeated UintRange ownershipTimes = 6; + + // Identifier for the approvalId. You can use "All" or "!approvalId" for shorthand. + // If you use "All", this approval will match to all approvalIds. + // If you use "!approvalId", this approval will match to all approvalIds except for approvalId. + // If you use "approvalId", this approval will match to only the specified approvalId and fail on all others. + string approvalId = 7; + + // Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes. + repeated UintRange permanentlyPermittedTimes = 8; + + // Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes. + repeated UintRange permanentlyForbiddenTimes = 9; +} + + +/* + UserOutgoingApprovalPermission defines the permissions for updating the user's approved outgoing transfers. +*/ +message UserOutgoingApprovalPermission { + // Identifier for the recipient list. + string toListId = 1; + + // Identifier for the initiator list (who is approved?). + string initiatedByListId = 2; + + // Specifies the times when the transfer can occur. + repeated UintRange transferTimes = 3; + + // Specifies the token IDs involved in the transfer. + repeated UintRange tokenIds = 4; + + // Specifies the ownership times for the tokens in the transfer. + repeated UintRange ownershipTimes = 5; + + // Identifier for the approvalId. You can use "All" or "!approvalId" for shorthand. + // If you use "All", this approval will match to all approvalIds. + // If you use "!approvalId", this approval will match to all approvalIds except for approvalId. + // If you use "approvalId", this approval will match to only the specified approvalId and fail on all others. + string approvalId = 6; + + + // Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes. + repeated UintRange permanentlyPermittedTimes = 7; + + // Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes. + repeated UintRange permanentlyForbiddenTimes = 8; +} + +/* + UserIncomingApprovalPermission defines the permissions for updating the user's approved incoming transfers. + + See CollectionApprovalPermission for more details. This is equivalent without the toListId field because that is always the user. +*/ +message UserIncomingApprovalPermission { + // Identifier for the sender list. + string fromListId = 1; + + // Identifier for the initiator list (who is approved?). + string initiatedByListId = 2; + + // Specifies the times when the transfer can occur. + repeated UintRange transferTimes = 3; + + // Specifies the token IDs involved in the transfer. + repeated UintRange tokenIds = 4; + + // Specifies the ownership times for the tokens in the transfer. + repeated UintRange ownershipTimes = 5; + + // Identifier for the approvalId. You can use "All" or "!approvalId" for shorthand. + // If you use "All", this approval will match to all approvalIds. + // If you use "!approvalId", this approval will match to all approvalIds except for approvalId. + // If you use "approvalId", this approval will match to only the specified approvalId and fail on all others. + string approvalId = 6; + + // Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes. + repeated UintRange permanentlyPermittedTimes = 7; + + // Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes. + repeated UintRange permanentlyForbiddenTimes = 8; +} + +/* + TokenIdsActionPermission defines the permissions for performing an action for specific tokens. + Currently, this is only used for creating new tokens. + + Ex: If you want to lock the ability to create new tokens for tokenIds [1,2] at ownershipTimes 1/1/2020 - 1/1/2021, + you could set the combination (tokenIds: [1,2], ownershipTimes: [1/1/2020 - 1/1/2021]) to always be forbidden. +*/ +message TokenIdsActionPermission { + // Specifies the token IDs involved in the transfer. + repeated UintRange tokenIds = 1; + + // Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes. + repeated UintRange permanentlyPermittedTimes = 2; + + // Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes. + repeated UintRange permanentlyForbiddenTimes = 3; +} + +/* + ActionPermission defines the permissions for performing an action. + + This is simple and straightforward as the only thing we need to check is the permitted/forbidden times. +*/ +message ActionPermission { + // Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes. + repeated UintRange permanentlyPermittedTimes = 1; + + // Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes. + repeated UintRange permanentlyForbiddenTimes = 2; +} diff --git a/proto/tokenization/v29/predetermined_balances.proto b/proto/tokenization/v29/predetermined_balances.proto new file mode 100644 index 00000000..ecafb069 --- /dev/null +++ b/proto/tokenization/v29/predetermined_balances.proto @@ -0,0 +1,75 @@ +syntax = "proto3"; +package tokenization.v29; + +import "gogoproto/gogo.proto"; +import "tokenization/v29/balances.proto"; +import "tokenization/v29/challenges.proto"; + +option go_package = "github.com/bitbadges/bitbadgeschain/x/tokenization/types/v29"; + +// ManualBalances represents a list of manual balances entered for the predetermined balances criteria. Order is calculated according to the calculation method set. +message ManualBalances { + repeated Balance balances = 1; +} + +// RecurringOwnershipTimes represents a list of recurring ownership times. +message RecurringOwnershipTimes { + // The original start time of the first interval. + string startTime = 1 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + // The interval length in unix milliseconds. + string intervalLength = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + // Grace period length where you can charge the next interval (nextStartTime - chargePeriodLength) until (nextStartTime) = charge period + string chargePeriodLength = 3 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; +} + +// IncrementedBalances represents balances that are incremented by specific amounts, according to the order calculation method. +message IncrementedBalances { + repeated Balance startBalances = 1; + // The amount by which to increment token IDs. + string incrementTokenIdsBy = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + // The amount by which to increment ownership times. Incompatible with approveStartingFromNowBy. + string incrementOwnershipTimesBy = 3 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + // The amount of unix milliseconds to approve starting from now. Incompatible with incrementOwnershipTimesBy. + string durationFromTimestamp = 4 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + // Whether to allow overriding the timestamp for the balances (only applicable with durationFromTimestamp set). + bool allowOverrideTimestamp = 5; + // Recurring ownership times. + RecurringOwnershipTimes recurringOwnershipTimes = 6; + // Allow override of any valid ID + bool allowOverrideWithAnyValidToken = 7; + // When true, the actual transfer can be any evenly divisible integer multiple (>=1x) of startBalances. + // approvalCriteria.coinTransfers are scaled by the same multiplier. + // All other IncrementedBalances fields must be zero/false/nil when this is true. + bool allowAmountScaling = 8; + // Maximum allowed scaling multiplier. Must be > 0 when allowAmountScaling is true. + // The chain rejects transfers where the computed multiplier exceeds this cap. + // Ignored (set to "0") when allowAmountScaling is false. + string maxScalingMultiplier = 9 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; +} + +// PredeterminedOrderCalculationMethod defines the method to calculate predetermined balances order. +message PredeterminedOrderCalculationMethod { + // Use the overall number of transfers to calculate the order. Ex: First transfer gets the first balance, second transfer gets the second balance, etc. + bool useOverallNumTransfers = 1; + // Use the number of transfers per "to" address to calculate the order. Ex: First transfer to address A gets the first balance, second transfer to address A gets the second balance, etc. + bool usePerToAddressNumTransfers = 2; + // Use the number of transfers per "from" address to calculate the order. Ex: First transfer from address A gets the first balance, second transfer from address A gets the second balance, etc. + bool usePerFromAddressNumTransfers = 3; + // Use the number of transfers per "initiated by" address to calculate the order. Ex: First transfer initiated by address A gets the first balance, second transfer initiated by address A gets the second balance, etc. + bool usePerInitiatedByAddressNumTransfers = 4; + // Use the Merkle challenge leaf index to calculate the order. Ex: Transfer that uses leaf index 0 gets the first balance, transfer that uses leaf index 1 gets the second balance, etc. + bool useMerkleChallengeLeafIndex = 5; + // If useMerkleChallengeLeafIndex is set, then this is the ID of the challenge tracker associated with this calculation method. + string challengeTrackerId = 6; +} + +// PredeterminedBalances represents balances with predetermined order calculation. +message PredeterminedBalances { + // Manual balances that can be entered. If this is nil, then we use the incremented balances. + repeated ManualBalances manualBalances = 1; + // Balances that have a starting amount and increment. If this is nil, then we use the manual balances. + IncrementedBalances incrementedBalances = 2; + // The method to calculate the order of predetermined balances. + PredeterminedOrderCalculationMethod orderCalculationMethod = 3; +} + diff --git a/proto/tokenization/v29/timelines.proto b/proto/tokenization/v29/timelines.proto new file mode 100644 index 00000000..99bc2028 --- /dev/null +++ b/proto/tokenization/v29/timelines.proto @@ -0,0 +1,74 @@ +syntax = "proto3"; +package tokenization.v29; + +import "google/protobuf/any.proto"; +import "tokenization/v29/transfers.proto"; +import "tokenization/v29/balances.proto"; +import "tokenization/v29/permissions.proto"; +import "tokenization/v29/metadata.proto"; +import "gogoproto/gogo.proto"; + +option go_package = "github.com/bitbadges/bitbadgeschain/x/tokenization/types/v29"; + +// CollectionMetadataTimeline defines the metadata for a collection at different timeline times. +message CollectionMetadataTimeline { + // The collection metadata for a specific timeline element. + CollectionMetadata collectionMetadata = 1; + + // The timeline times when the collection metadata is valid. Can not overlap with other timeline elements in same array. + repeated UintRange timelineTimes = 2; +} + +// TokenMetadataTimeline defines the metadata for tokens at different timeline times. +message TokenMetadataTimeline { + // The token metadata for a specific timeline element. + repeated TokenMetadata tokenMetadata = 1; + + // The timeline times when the token metadata is valid. Can not overlap with other timeline elements in same array. + repeated UintRange timelineTimes = 2; +} + +// CustomDataTimeline defines custom data at different timeline times. +message CustomDataTimeline { + // The custom data for a specific timeline element. + string customData = 1; + + // The timeline times when the custom data is valid. Can not overlap with other timeline elements in same array. + repeated UintRange timelineTimes = 2; +} + +// ManagerTimeline defines the manager address at different timeline times. +message ManagerTimeline { + // The manager address for a specific timeline element. + string manager = 1; + + // The timeline times when the manager address is valid. Can not overlap with other timeline elements in same array. + repeated UintRange timelineTimes = 2; +} + +// IsArchivedTimeline defines whether a collection is archived at different timeline times. +message IsArchivedTimeline { + // Indicates whether the collection is archived for a specific timeline element. + bool isArchived = 1; + + // The timeline times when the archived status is valid. Can not overlap with other timeline elements in same array. + repeated UintRange timelineTimes = 2; +} + +// ContractAddressTimeline defines the contract address at different timeline times. +message ContractAddressTimeline { + // The contract address for a specific timeline element. + string contractAddress = 1; + + // The timeline times when the contract address is valid. Can not overlap with other timeline elements in same array. + repeated UintRange timelineTimes = 2; +} + +// StandardsTimeline defines the standards used for a collection at different timeline times. +message StandardsTimeline { + // The standards applied to the collection for a specific timeline element. + repeated string standards = 1; + + // The timeline times when the standards are valid. Can not overlap with other timeline elements in same array. + repeated UintRange timelineTimes = 2; +} diff --git a/proto/tokenization/v29/transfers.proto b/proto/tokenization/v29/transfers.proto new file mode 100644 index 00000000..5eb73b37 --- /dev/null +++ b/proto/tokenization/v29/transfers.proto @@ -0,0 +1,57 @@ +syntax = "proto3"; +package tokenization.v29; + +import "gogoproto/gogo.proto"; +import "tokenization/v29/balances.proto"; +import "tokenization/v29/approvals.proto"; +import "tokenization/v29/challenges.proto"; + +option go_package = "github.com/bitbadges/bitbadgeschain/x/tokenization/types/v29"; + +// Transfer defines the details of a transfer of tokens. +message Transfer { + // The address of the sender of the transfer. + string from = 1; + // The addresses of the recipients of the transfer. + repeated string toAddresses = 2; + // The balances to be transferred. + repeated Balance balances = 3; + // If defined, we will use the predeterminedBalances from the specified approval to calculate the balances at execution time. + // We will override the balances field with the precalculated balances. Only applicable for approvals with predeterminedBalances set. + PrecalculateBalancesFromApprovalDetails precalculateBalancesFromApproval = 4; + // The Merkle proofs / solutions for all Merkle challenges required for the transfer. + repeated MerkleProof merkleProofs = 5; + // The ETH signature proofs / solutions for all ETH signature challenges required for the transfer. + repeated ETHSignatureProof ethSignatureProofs = 6; + // The memo for the transfer. + string memo = 7; + // The prioritized approvals for the transfer. By default, we scan linearly through the approvals and use the first match. + // This field can be used to prioritize specific approvals and scan through them first. + repeated ApprovalIdentifierDetails prioritizedApprovals = 8; + // Whether to only check prioritized approvals for the transfer. + // If true, we will only check the prioritized approvals and fail if none of them match (i.e. do not check any non-prioritized approvals). + // If false, we will check the prioritized approvals first and then scan through the rest of the approvals. + bool onlyCheckPrioritizedCollectionApprovals = 9; + // Whether to only check prioritized approvals for the transfer. + // If true, we will only check the prioritized approvals and fail if none of them match (i.e. do not check any non-prioritized approvals). + // If false, we will check the prioritized approvals first and then scan through the rest of the approvals. + bool onlyCheckPrioritizedIncomingApprovals = 10; + // Whether to only check prioritized approvals for the transfer. + // If true, we will only check the prioritized approvals and fail if none of them match (i.e. do not check any non-prioritized approvals). + // If false, we will check the prioritized approvals first and then scan through the rest of the approvals. + bool onlyCheckPrioritizedOutgoingApprovals = 11; +} + +// PrecalculateBalancesFromApprovalDetails defines the details for precalculating balances from an approval. +message PrecalculateBalancesFromApprovalDetails { + // The ID of the approval. + string approvalId = 1; + // The level of the approval. Can be "collection", "incoming", or "outgoing". + string approvalLevel = 2; + // The address of the approver. Leave blank "" if approvalLevel == "collection". + string approverAddress = 3; + // The version of the approval. + string version = 4 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + // The options for precalculating the balances. + PrecalculationOptions precalculationOptions = 5; +} diff --git a/proto/tokenization/v29/tx.proto b/proto/tokenization/v29/tx.proto new file mode 100644 index 00000000..46ba5214 --- /dev/null +++ b/proto/tokenization/v29/tx.proto @@ -0,0 +1,994 @@ +syntax = "proto3"; +package tokenization.v29; + +import "amino/amino.proto"; +import "cosmos/msg/v1/msg.proto"; +import "cosmos_proto/cosmos.proto"; +import "gogoproto/gogo.proto"; +import "tokenization/v29/params.proto"; + +import "tokenization/v29/transfers.proto"; +import "tokenization/v29/balances.proto"; +import "tokenization/v29/permissions.proto"; +import "tokenization/v29/metadata.proto"; +import "tokenization/v29/collections.proto"; +import "tokenization/v29/address_lists.proto"; +import "tokenization/v29/dynamic_stores.proto"; +import "tokenization/v29/approvals.proto"; +import "tokenization/v29/user_balance_store.proto"; +import "tokenization/v29/challenges.proto"; + +import "cosmos/base/v1beta1/coin.proto"; + +option go_package = "github.com/bitbadges/bitbadgeschain/x/tokenization/types/v29"; + +// Msg defines the Msg service. +service Msg { + option (cosmos.msg.v1.service) = true; + + // UpdateParams defines a (governance) operation for updating the module + // parameters. The authority defaults to the x/gov module account. + rpc UpdateParams(MsgUpdateParams) returns (MsgUpdateParamsResponse); + rpc UniversalUpdateCollection (MsgUniversalUpdateCollection) returns (MsgUniversalUpdateCollectionResponse); + rpc CreateAddressLists (MsgCreateAddressLists) returns (MsgCreateAddressListsResponse); + rpc TransferTokens(MsgTransferTokens) returns (MsgTransferTokensResponse); + rpc UpdateUserApprovals(MsgUpdateUserApprovals) returns (MsgUpdateUserApprovalsResponse); + rpc SetIncomingApproval(MsgSetIncomingApproval) returns (MsgSetIncomingApprovalResponse); + rpc DeleteIncomingApproval(MsgDeleteIncomingApproval) returns (MsgDeleteIncomingApprovalResponse); + rpc SetOutgoingApproval(MsgSetOutgoingApproval) returns (MsgSetOutgoingApprovalResponse); + rpc DeleteOutgoingApproval(MsgDeleteOutgoingApproval) returns (MsgDeleteOutgoingApprovalResponse); + rpc PurgeApprovals(MsgPurgeApprovals) returns (MsgPurgeApprovalsResponse); + rpc DeleteCollection(MsgDeleteCollection) returns (MsgDeleteCollectionResponse); + rpc UpdateCollection (MsgUpdateCollection) returns (MsgUpdateCollectionResponse); + rpc CreateCollection (MsgCreateCollection) returns (MsgCreateCollectionResponse); + rpc CreateDynamicStore (MsgCreateDynamicStore) returns (MsgCreateDynamicStoreResponse); + rpc UpdateDynamicStore (MsgUpdateDynamicStore) returns (MsgUpdateDynamicStoreResponse); + rpc DeleteDynamicStore (MsgDeleteDynamicStore) returns (MsgDeleteDynamicStoreResponse); + rpc SetDynamicStoreValue (MsgSetDynamicStoreValue) returns (MsgSetDynamicStoreValueResponse); + + // Helper message types for UniversalUpdateCollection subsets + rpc SetValidTokenIds(MsgSetValidTokenIds) returns (MsgSetValidTokenIdsResponse); + rpc SetManager(MsgSetManager) returns (MsgSetManagerResponse); + rpc SetCollectionMetadata(MsgSetCollectionMetadata) returns (MsgSetCollectionMetadataResponse); + rpc SetTokenMetadata(MsgSetTokenMetadata) returns (MsgSetTokenMetadataResponse); + rpc SetCustomData(MsgSetCustomData) returns (MsgSetCustomDataResponse); + rpc SetStandards(MsgSetStandards) returns (MsgSetStandardsResponse); + rpc SetCollectionApprovals(MsgSetCollectionApprovals) returns (MsgSetCollectionApprovalsResponse); + rpc SetIsArchived(MsgSetIsArchived) returns (MsgSetIsArchivedResponse); + rpc SetReservedProtocolAddress(MsgSetReservedProtocolAddress) returns (MsgSetReservedProtocolAddressResponse); + rpc CastVote(MsgCastVote) returns (MsgCastVoteResponse); +} + +//Used for WASM bindings and JSON parsing +message TokenizationCustomMsgType { + MsgCreateAddressLists createAddressListsMsg = 1; + MsgUniversalUpdateCollection universalUpdateCollectionMsg = 2; + MsgDeleteCollection deleteCollectionMsg = 3; + MsgTransferTokens transferTokensMsg = 4; + MsgUpdateUserApprovals updateUserApprovalsMsg = 5; + MsgUpdateCollection updateCollectionMsg = 6; + MsgCreateCollection createCollectionMsg = 7; + MsgCreateDynamicStore createDynamicStoreMsg = 8; + MsgUpdateDynamicStore updateDynamicStoreMsg = 9; + MsgDeleteDynamicStore deleteDynamicStoreMsg = 10; + MsgSetDynamicStoreValue setDynamicStoreValueMsg = 11; + MsgSetIncomingApproval setIncomingApprovalMsg = 14; + MsgDeleteIncomingApproval deleteIncomingApprovalMsg = 15; + MsgSetOutgoingApproval setOutgoingApprovalMsg = 16; + MsgDeleteOutgoingApproval deleteOutgoingApprovalMsg = 17; + MsgPurgeApprovals purgeApprovalsMsg = 18; + + // Helper message types for UniversalUpdateCollection subsets + MsgSetValidTokenIds setValidTokenIdsMsg = 19; + MsgSetManager setManagerMsg = 20; + MsgSetCollectionMetadata setCollectionMetadataMsg = 21; + MsgSetTokenMetadata setTokenMetadataMsg = 22; + MsgSetCustomData setCustomDataMsg = 23; + MsgSetStandards setStandardsMsg = 24; + MsgSetCollectionApprovals setCollectionApprovalsMsg = 25; + MsgSetIsArchived setIsArchivedMsg = 26; + MsgSetReservedProtocolAddress setReservedProtocolAddressMsg = 27; + MsgCastVote castVoteMsg = 28; +} + +// MsgUpdateParams is the Msg/UpdateParams request type. +message MsgUpdateParams { + option (cosmos.msg.v1.signer) = "authority"; + option (amino.name) = "tokenization/v29/MsgUpdateParams"; + + // authority is the address that controls the module (defaults to x/gov unless overwritten). + string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + + // params defines the module parameters to update. + // + // NOTE: All parameters must be supplied. + Params params = 2 [ + (gogoproto.nullable) = false, + (amino.dont_omitempty) = true + ]; +} + +// MsgUpdateParamsResponse defines the response structure for executing a +// MsgUpdateParams message. +message MsgUpdateParamsResponse {} + +message CosmosCoinWrapperPathAddObject { + string denom = 1; + ConversionWithoutDenom conversion = 2; + string symbol = 3; + repeated DenomUnit denomUnits = 4; + bool allowOverrideWithAnyValidToken = 5; + // The metadata for this wrapper path. + PathMetadata metadata = 6; +} + +message AliasPathAddObject { + string denom = 1; + ConversionWithoutDenom conversion = 2; + string symbol = 3; + repeated DenomUnit denomUnits = 4; + // The metadata for this alias path. + PathMetadata metadata = 5; +} + +message CosmosCoinBackedPathAddObject { + Conversion conversion = 1; +} + +// InvariantsAddObject is used for adding invariants without specifying addresses. +// Addresses are generated by the keeper and stored in the collection. +message InvariantsAddObject { + // If true, all ownership times must be full ranges [{ start: 1, end: GoMaxUInt64 }]. + // This prevents time-based restrictions on token ownership. + bool noCustomOwnershipTimes = 1; + + // Maximum supply per token ID. Checked against Total address balances after transfers complete. + // A value of 0 means no limit (unlimited). + string maxSupplyPerId = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + + // The IBC backed (sdk.coin) path for the collection. Only one path is allowed. + // Address will be generated by the keeper. + CosmosCoinBackedPathAddObject cosmosCoinBackedPath = 3; + + // If true, disallows any collection approvals that have overridesFromOutgoingApprovals or overridesToIncomingApprovals set to true. + // This prevents forceful transfers that bypass user-level approvals. + // This only applies to transfers where the from address does not equal "Mint". + bool noForcefulPostMintTransfers = 4; + + // If true, disallows pool creation with this collection's assets. + // When true, any attempt to create a pool with tokenization assets from this collection will fail. + bool disablePoolCreation = 5; + + // EVM query invariants that must pass after all transfers complete. + // These are checked once per message after all balance updates, with access to ALL recipient addresses. + // Placeholders: $sender, $recipients (comma-separated), $initiator, $collectionId, $recipient + repeated EVMQueryChallenge evmQueryChallenges = 6; +} + +// MsgUniversalUpdateCollection is used to define MsgServer types for all requests and responses for Msgs of the tokens module. +// It is a universal interface that can be used for both creating and updating collections. +// We have it defined for legacy purposes, but it is recommended to use MsgCreateCollection and MsgUpdateCollection instead. +message MsgUniversalUpdateCollection { + option (cosmos.msg.v1.signer) = "creator"; + option (amino.name) = "tokenization/v29/UniversalUpdateCollection"; + + // Address of the creator. + string creator = 1; + + // ID of the collection (0 for new collection). + string collectionId = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + + //The default balances for the user + UserBalanceStore defaultBalances = 3; + + // Indicates if the valid token IDs should be updated. If true, we set to value in this Msg. If false, we keep existing value. + bool updateValidTokenIds = 4; + + // New token IDs to add to this collection + repeated UintRange validTokenIds = 5; + + // Indicates if collection permissions should be updated. If true, we set to value in this Msg. If false, we keep existing value. + bool updateCollectionPermissions = 6; + + // New collection permissions to set. + CollectionPermissions collectionPermissions = 7; + + // Indicates if the manager should be updated. If true, we set to value in this Msg. If false, we keep existing value. + bool updateManager = 8; + + // New manager to set. + string manager = 9; + + // Indicates if the collection metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value. + bool updateCollectionMetadata = 10; + + // New collection metadata to set. + CollectionMetadata collectionMetadata = 11; + + // Indicates if the token metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value. + bool updateTokenMetadata = 12; + + // New token metadata to set. + repeated TokenMetadata tokenMetadata = 13; + + + // Indicates if the custom data should be updated. If true, we set to value in this Msg. If false, we keep existing value. + bool updateCustomData = 14; + + // New custom data to set. + string customData = 15; + + // Indicates if collection approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value. + bool updateCollectionApprovals = 16; + + // New collection approvals to set. + repeated CollectionApproval collectionApprovals = 17; + + // Indicates if the standards should be updated. If true, we set to value in this Msg. If false, we keep existing value. + bool updateStandards = 18; + + // New standards to set. + repeated string standards = 19; + + // Indicates if the isArchived should be updated. If true, we set to value in this Msg. If false, we keep existing value. + bool updateIsArchived = 20; + + // New isArchived to set. + bool isArchived = 21; + + // Coins to be transferred to the mint escrow address. + repeated cosmos.base.v1beta1.Coin mintEscrowCoinsToTransfer = 22; + + // IBC wrapper paths to add. + repeated CosmosCoinWrapperPathAddObject cosmosCoinWrapperPathsToAdd = 23; + + // Collection-level invariants that cannot be broken. + // These are set upon genesis and cannot be modified. + // Addresses are generated by the keeper and stored in the collection. + InvariantsAddObject invariants = 24; + + // Alias (non-wrapping) paths to add. + repeated AliasPathAddObject aliasPathsToAdd = 25; +} + +// MsgUniversalUpdateCollectionResponse is the response to MsgUniversalUpdateCollection. +message MsgUniversalUpdateCollectionResponse { + // ID of the collection. + string collectionId = 1 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + repeated ApprovalChange approvalChanges = 2; + repeated string reviewItems = 3; +} + +// MsgUpdateCollection is used to update a collection. +message MsgUpdateCollection { + option (cosmos.msg.v1.signer) = "creator"; + option (amino.name) = "tokenization/v29/UpdateCollection"; + + // Address of the creator. + string creator = 1; + + // ID of the collection (0 for new collection). + string collectionId = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + + // Indicates if the valid token IDs should be updated. If true, we set to value in this Msg. If false, we keep existing value. + bool updateValidTokenIds = 3; + + // New token IDs to add to this collection + repeated UintRange validTokenIds = 4; + + // Indicates if collection permissions should be updated. If true, we set to value in this Msg. If false, we keep existing value. + bool updateCollectionPermissions = 5; + + // New collection permissions to set. + CollectionPermissions collectionPermissions = 6; + + // Indicates if the manager should be updated. If true, we set to value in this Msg. If false, we keep existing value. + bool updateManager = 7; + + // New manager to set. + string manager = 8; + + // Indicates if the collection metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value. + bool updateCollectionMetadata = 9; + + // New collection metadata to set. + CollectionMetadata collectionMetadata = 10; + + // Indicates if the token metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value. + bool updateTokenMetadata = 11; + + // New token metadata to set. + repeated TokenMetadata tokenMetadata = 12; + + + // Indicates if the custom data should be updated. If true, we set to value in this Msg. If false, we keep existing value. + bool updateCustomData = 13; + + // New custom data to set. + string customData = 14; + + // Indicates if collection approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value. + bool updateCollectionApprovals = 15; + + // New collection approvals to set. + repeated CollectionApproval collectionApprovals = 16; + + // Indicates if the standards should be updated. If true, we set to value in this Msg. If false, we keep existing value. + bool updateStandards = 17; + + // New standards to set. + repeated string standards = 18; + + // Indicates if the isArchived should be updated. If true, we set to value in this Msg. If false, we keep existing value. + bool updateIsArchived = 19; + + // New isArchived to set. + bool isArchived = 20; + + // Coins to be transferred to the mint escrow address. + repeated cosmos.base.v1beta1.Coin mintEscrowCoinsToTransfer = 21; + + // IBC wrapper paths to add. + repeated CosmosCoinWrapperPathAddObject cosmosCoinWrapperPathsToAdd = 22; + + // Collection-level invariants that cannot be broken. + // These are set upon genesis and cannot be modified. + // Addresses are generated by the keeper and stored in the collection. + InvariantsAddObject invariants = 23; + + // Alias (non-wrapping) paths to add. + repeated AliasPathAddObject aliasPathsToAdd = 24; +} + +// MsgUpdateCollectionResponse is the response to MsgUpdateCollection. +message MsgUpdateCollectionResponse { + // ID of the collection. + string collectionId = 1 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + repeated ApprovalChange approvalChanges = 2; + repeated string reviewItems = 3; +} + +// MsgCreateCollection is used to create a new collection. +message MsgCreateCollection { + option (cosmos.msg.v1.signer) = "creator"; + option (amino.name) = "tokenization/v29/CreateCollection"; + + // Address of the creator. + string creator = 1; + + //The default balances for the user + UserBalanceStore defaultBalances = 2; + + // New token IDs to add to this collection + repeated UintRange validTokenIds = 3; + + // Collection permissions. + CollectionPermissions collectionPermissions = 4; + + // Manager address. + string manager = 5; + + // Collection metadata. + CollectionMetadata collectionMetadata = 6; + + // Token metadata entries. + repeated TokenMetadata tokenMetadata = 7; + + // Custom data. + string customData = 8; + + // Collection approvals. + repeated CollectionApproval collectionApprovals = 9; + + // Standards entries. + repeated string standards = 10; + + // isArchived flag. + bool isArchived = 11; + + // Coins to be transferred to the mint escrow address. + repeated cosmos.base.v1beta1.Coin mintEscrowCoinsToTransfer = 12; + + // IBC wrapper paths to add. + repeated CosmosCoinWrapperPathAddObject cosmosCoinWrapperPathsToAdd = 13; + + // Collection-level invariants that cannot be broken. + // Addresses are generated by the keeper and stored in the collection. + InvariantsAddObject invariants = 14; + + // Alias (non-wrapping) paths to add. + repeated AliasPathAddObject aliasPathsToAdd = 15; +} + +// MsgCreateCollectionResponse is the response to MsgCreateCollection. +message MsgCreateCollectionResponse { + // ID of the collection. + string collectionId = 1 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + repeated ApprovalChange approvalChanges = 2; + repeated string reviewItems = 3; +} + +// MsgCreateAddressLists is used to create address lists. +message MsgCreateAddressLists { + option (cosmos.msg.v1.signer) = "creator"; + option (amino.name) = "tokenization/v29/CreateAddressLists"; + + // Address of the creator. + string creator = 1; + + // Address lists to create. The createdBy field will be automatically set to the creator address. + repeated AddressListInput addressLists = 2; +} + +// MsgCreateAddressListsResponse is the response to MsgCreateAddressLists. +message MsgCreateAddressListsResponse {} + +// MsgTransferTokens is used to transfer tokens. +message MsgTransferTokens { + option (cosmos.msg.v1.signer) = "creator"; + option (amino.name) = "tokenization/v29/TransferTokens"; + + // Address of the creator. + string creator = 1; + + // ID of the collection. + string collectionId = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + + // Transfers to execute. + repeated Transfer transfers = 3; +} + +// MsgTransferTokensResponse is the response to MsgTransferTokens. +message MsgTransferTokensResponse { + repeated ApprovalUsed approvalsUsed = 1; + repeated CoinTransferProto coinTransfers = 2; + repeated Balance balancesTransferred = 3; + repeated string reviewItems = 4; +} + +// MsgDeleteCollection is used to delete a collection. +message MsgDeleteCollection { + option (cosmos.msg.v1.signer) = "creator"; + option (amino.name) = "tokenization/v29/DeleteCollection"; + + // Address of the creator. + string creator = 1; + + // ID of the collection. + string collectionId = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; +} + +// MsgDeleteCollectionResponse is the response to MsgDeleteCollection. +message MsgDeleteCollectionResponse {} + +// MsgUpdateUserApprovals is used to update user approvals. +message MsgUpdateUserApprovals { + option (cosmos.msg.v1.signer) = "creator"; + option (amino.name) = "tokenization/v29/UpdateUserApprovals"; + + // Address of the creator. + string creator = 1; + + // ID of the collection. + string collectionId = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + + // Indicates if outgoing approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value. + bool updateOutgoingApprovals = 3; + + // New outgoing approvals to set. + repeated UserOutgoingApproval outgoingApprovals = 4; + + // Indicates if incoming approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value. + bool updateIncomingApprovals = 5; + + // New incoming approvals to set. + repeated UserIncomingApproval incomingApprovals = 6; + + // Indicates if auto-approve settings for self-initiated outgoing transfers should be updated. If true, we set to value in this Msg. If false, we keep existing value. + bool updateAutoApproveSelfInitiatedOutgoingTransfers = 7; + + // Auto-approve setting for self-initiated outgoing transfers. + bool autoApproveSelfInitiatedOutgoingTransfers = 8; + + // Indicates if auto-approve settings for self-initiated incoming transfers should be updated. If true, we set to value in this Msg. If false, we keep existing value. + bool updateAutoApproveSelfInitiatedIncomingTransfers = 9; + + // Auto-approve setting for self-initiated incoming transfers. + bool autoApproveSelfInitiatedIncomingTransfers = 10; + + // Indicates if auto-approve settings for all incoming transfers should be updated. If true, we set to value in this Msg. If false, we keep existing value. + bool updateAutoApproveAllIncomingTransfers = 11; + + // Auto-approve setting for all incoming transfers. + bool autoApproveAllIncomingTransfers = 12; + + // Indicates if user permissions should be updated. If true, we set to value in this Msg. If false, we keep existing value. + bool updateUserPermissions = 13; + + // New user permissions to set. + UserPermissions userPermissions = 14; +} + +// MsgUpdateUserApprovalsResponse is the response to MsgUpdateUserApprovals. +message MsgUpdateUserApprovalsResponse { + repeated ApprovalChange incomingChanges = 1; + repeated ApprovalChange outgoingChanges = 2; + repeated string reviewItems = 3; +} + +// MsgSetIncomingApproval is a helper message to set a single incoming approval. +message MsgSetIncomingApproval { + option (cosmos.msg.v1.signer) = "creator"; + option (amino.name) = "tokenization/v29/SetIncomingApproval"; + + // Address of the creator. + string creator = 1; + + // ID of the collection. + string collectionId = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + + // The incoming approval to set. + UserIncomingApproval approval = 3; +} + +// MsgSetIncomingApprovalResponse is the response to MsgSetIncomingApproval. +message MsgSetIncomingApprovalResponse { + string action = 1; + string version = 2; + repeated string reviewItems = 3; +} + +// MsgDeleteIncomingApproval is a helper message to delete a single incoming approval. +message MsgDeleteIncomingApproval { + option (cosmos.msg.v1.signer) = "creator"; + option (amino.name) = "tokenization/v29/DeleteIncomingApproval"; + + // Address of the creator. + string creator = 1; + + // ID of the collection. + string collectionId = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + + // The ID of the approval to delete. + string approvalId = 3; +} + +// MsgDeleteIncomingApprovalResponse is the response to MsgDeleteIncomingApproval. +message MsgDeleteIncomingApprovalResponse { + bool found = 1; + string version = 2; + repeated string reviewItems = 3; +} + +// MsgSetOutgoingApproval is a helper message to set a single outgoing approval. +message MsgSetOutgoingApproval { + option (cosmos.msg.v1.signer) = "creator"; + option (amino.name) = "tokenization/v29/SetOutgoingApproval"; + + // Address of the creator. + string creator = 1; + + // ID of the collection. + string collectionId = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + + // The outgoing approval to set. + UserOutgoingApproval approval = 3; +} + +// MsgSetOutgoingApprovalResponse is the response to MsgSetOutgoingApproval. +message MsgSetOutgoingApprovalResponse { + string action = 1; + string version = 2; + repeated string reviewItems = 3; +} + +// MsgDeleteOutgoingApproval is a helper message to delete a single outgoing approval. +message MsgDeleteOutgoingApproval { + option (cosmos.msg.v1.signer) = "creator"; + option (amino.name) = "tokenization/v29/DeleteOutgoingApproval"; + + // Address of the creator. + string creator = 1; + + // ID of the collection. + string collectionId = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + + // The ID of the approval to delete. + string approvalId = 3; +} + +// MsgDeleteOutgoingApprovalResponse is the response to MsgDeleteOutgoingApproval. +message MsgDeleteOutgoingApprovalResponse { + bool found = 1; + string version = 2; + repeated string reviewItems = 3; +} + +// MsgPurgeApprovals is a helper message to purge expired approvals. +message MsgPurgeApprovals { + option (cosmos.msg.v1.signer) = "creator"; + option (amino.name) = "tokenization/v29/PurgeApprovals"; + + // Address of the creator. + string creator = 1; + + // ID of the collection. + string collectionId = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + + // Whether to purge expired approvals (approvals with no future valid transfer times). + bool purgeExpired = 3; + + // Address of the user whose approvals to purge. If empty, defaults to creator. + string approverAddress = 4; + + // Whether to purge counterparty approvals (approvals where the creator is the only initiator). + bool purgeCounterpartyApprovals = 5; + + // Specific approvals to purge. If empty, purges all applicable approvals based on other flags. + repeated ApprovalIdentifierDetails approvalsToPurge = 6; +} + +// MsgPurgeApprovalsResponse is the response to MsgPurgeApprovals. +message MsgPurgeApprovalsResponse { + // Number of approvals purged. + string numPurged = 1 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + repeated string purgedApprovalIds = 2; + repeated string reviewItems = 3; +} + +// MsgCreateDynamicStore is used to create a new dynamic store. +message MsgCreateDynamicStore { + option (cosmos.msg.v1.signer) = "creator"; + option (amino.name) = "tokenization/v29/CreateDynamicStore"; + + // Address of the creator. + string creator = 1; + // The default value for uninitialized addresses (true/false). + bool defaultValue = 2; + // URI for additional metadata or resources associated with this dynamic store. + string uri = 3; + // Custom data field for storing arbitrary data associated with this dynamic store. + string customData = 4; +} + +// MsgCreateDynamicStoreResponse is the response to MsgCreateDynamicStore. +message MsgCreateDynamicStoreResponse { + // ID of the dynamic store. + string storeId = 1 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + repeated string reviewItems = 2; +} + +// MsgUpdateDynamicStore is used to update an existing dynamic store. +message MsgUpdateDynamicStore { + option (cosmos.msg.v1.signer) = "creator"; + option (amino.name) = "tokenization/v29/UpdateDynamicStore"; + + // Address of the creator. + string creator = 1; + // ID of the dynamic store to update. + string storeId = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + // The new default value for uninitialized addresses (true/false). + bool defaultValue = 3; + // The global kill switch state (true = enabled, false = disabled/halted). + // Callers should query the current value first if they want to keep it unchanged. + bool globalEnabled = 4; + // URI for additional metadata or resources associated with this dynamic store. + string uri = 5; + // Custom data field for storing arbitrary data associated with this dynamic store. + string customData = 6; +} + +// MsgUpdateDynamicStoreResponse is the response to MsgUpdateDynamicStore. +message MsgUpdateDynamicStoreResponse {} + +// MsgDeleteDynamicStore is used to delete a dynamic store. +message MsgDeleteDynamicStore { + option (cosmos.msg.v1.signer) = "creator"; + option (amino.name) = "tokenization/v29/DeleteDynamicStore"; + + // Address of the creator. + string creator = 1; + + // ID of the dynamic store to delete. + string storeId = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; +} + +// MsgDeleteDynamicStoreResponse is the response to MsgDeleteDynamicStore. +message MsgDeleteDynamicStoreResponse {} + +// MsgSetDynamicStoreValue is used to set a boolean value for a specific address in a dynamic store. +message MsgSetDynamicStoreValue { + option (cosmos.msg.v1.signer) = "creator"; + option (amino.name) = "tokenization/v29/SetDynamicStoreValue"; + + // Address of the creator. + string creator = 1; + + // ID of the dynamic store. + string storeId = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + + // The address for which to set the value. + string address = 3; + + // The boolean value to set (true/false). + bool value = 4; +} + +// MsgSetDynamicStoreValueResponse is the response to MsgSetDynamicStoreValue. +message MsgSetDynamicStoreValueResponse { + string previousValue = 1; + repeated string reviewItems = 2; +} + +// Helper message types for UniversalUpdateCollection subsets +// These are convenience messages that set specific subsets of the UniversalUpdateCollection message + +// MsgSetValidTokenIds sets the validTokenIds and canUpdateValidTokenIds permission +message MsgSetValidTokenIds { + option (cosmos.msg.v1.signer) = "creator"; + option (amino.name) = "tokenization/v29/SetValidTokenIds"; + + // Address of the creator. + string creator = 1; + + // ID of the collection. + string collectionId = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + + // New token IDs to add to this collection + repeated UintRange validTokenIds = 3; + + // Permission to update valid token IDs + repeated TokenIdsActionPermission canUpdateValidTokenIds = 4; +} + +// MsgSetValidTokenIdsResponse is the response to MsgSetValidTokenIds. +message MsgSetValidTokenIdsResponse { + // ID of the collection. + string collectionId = 1 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; +} + +// MsgSetManager sets the manager and canUpdateManager permission +message MsgSetManager { + option (cosmos.msg.v1.signer) = "creator"; + option (amino.name) = "tokenization/v29/SetManager"; + + // Address of the creator. + string creator = 1; + + // ID of the collection. + string collectionId = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + + // New manager to set. + string manager = 3; + + // Permission to update manager + repeated ActionPermission canUpdateManager = 4; +} + +// MsgSetManagerResponse is the response to MsgSetManager. +message MsgSetManagerResponse { + // ID of the collection. + string collectionId = 1 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; +} + +// MsgSetCollectionMetadata sets the collection metadata and canUpdateCollectionMetadata permission +message MsgSetCollectionMetadata { + option (cosmos.msg.v1.signer) = "creator"; + option (amino.name) = "tokenization/v29/SetCollectionMetadata"; + + // Address of the creator. + string creator = 1; + + // ID of the collection. + string collectionId = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + + // New collection metadata to set. + CollectionMetadata collectionMetadata = 3; + + // Permission to update collection metadata + repeated ActionPermission canUpdateCollectionMetadata = 4; +} + +// MsgSetCollectionMetadataResponse is the response to MsgSetCollectionMetadata. +message MsgSetCollectionMetadataResponse { + // ID of the collection. + string collectionId = 1 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; +} + +// MsgSetTokenMetadata sets the token metadata and canUpdateTokenMetadata permission +message MsgSetTokenMetadata { + option (cosmos.msg.v1.signer) = "creator"; + option (amino.name) = "tokenization/v29/SetTokenMetadata"; + + // Address of the creator. + string creator = 1; + + // ID of the collection. + string collectionId = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + + // New token metadata to set. + repeated TokenMetadata tokenMetadata = 3; + + // Permission to update token metadata + repeated TokenIdsActionPermission canUpdateTokenMetadata = 4; +} + +// MsgSetTokenMetadataResponse is the response to MsgSetTokenMetadata. +message MsgSetTokenMetadataResponse { + // ID of the collection. + string collectionId = 1 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; +} + +// MsgSetCustomData sets the custom data and canUpdateCustomData permission +message MsgSetCustomData { + option (cosmos.msg.v1.signer) = "creator"; + option (amino.name) = "tokenization/v29/SetCustomData"; + + // Address of the creator. + string creator = 1; + + // ID of the collection. + string collectionId = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + + // New custom data to set. + string customData = 3; + + // Permission to update custom data + repeated ActionPermission canUpdateCustomData = 4; +} + +// MsgSetCustomDataResponse is the response to MsgSetCustomData. +message MsgSetCustomDataResponse { + // ID of the collection. + string collectionId = 1 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; +} + +// MsgSetStandards sets the standards and canUpdateStandards permission +message MsgSetStandards { + option (cosmos.msg.v1.signer) = "creator"; + option (amino.name) = "tokenization/v29/SetStandards"; + + // Address of the creator. + string creator = 1; + + // ID of the collection. + string collectionId = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + + // New standards to set. + repeated string standards = 3; + + // Permission to update standards + repeated ActionPermission canUpdateStandards = 4; +} + +// MsgSetStandardsResponse is the response to MsgSetStandards. +message MsgSetStandardsResponse { + // ID of the collection. + string collectionId = 1 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; +} + +// MsgSetCollectionApprovals sets the collection approvals and canUpdateCollectionApprovals permission +message MsgSetCollectionApprovals { + option (cosmos.msg.v1.signer) = "creator"; + option (amino.name) = "tokenization/v29/SetCollectionApprovals"; + + // Address of the creator. + string creator = 1; + + // ID of the collection. + string collectionId = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + + // New collection approvals to set. + repeated CollectionApproval collectionApprovals = 3; + + // Permission to update collection approvals + repeated CollectionApprovalPermission canUpdateCollectionApprovals = 4; +} + +// MsgSetCollectionApprovalsResponse is the response to MsgSetCollectionApprovals. +message MsgSetCollectionApprovalsResponse { + // ID of the collection. + string collectionId = 1 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + repeated ApprovalChange approvalChanges = 2; + repeated string reviewItems = 3; +} + +// MsgSetIsArchived sets the isArchived and canArchiveCollection permission +message MsgSetIsArchived { + option (cosmos.msg.v1.signer) = "creator"; + option (amino.name) = "tokenization/v29/SetIsArchived"; + + // Address of the creator. + string creator = 1; + + // ID of the collection. + string collectionId = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + + // New isArchived to set. + bool isArchived = 3; + + // Permission to archive collection + repeated ActionPermission canArchiveCollection = 4; +} + +// MsgSetIsArchivedResponse is the response to MsgSetIsArchived. +message MsgSetIsArchivedResponse { + // ID of the collection. + string collectionId = 1 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; +} + +// MsgSetReservedProtocolAddress sets or unsets a reserved protocol address (governance-only). +message MsgSetReservedProtocolAddress { + option (cosmos.msg.v1.signer) = "authority"; + option (amino.name) = "tokenization/v29/SetReservedProtocolAddress"; + + // authority is the address that controls the module (defaults to x/gov unless overwritten). + string authority = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + + // Address to set or unset as reserved protocol address. + string address = 2; + + // Whether the address should be a reserved protocol address (true) or not (false). + bool isReservedProtocol = 3; +} + +// MsgSetReservedProtocolAddressResponse is the response to MsgSetReservedProtocolAddress. +message MsgSetReservedProtocolAddressResponse {} + +// MsgCastVote allows a voter to cast or update their vote for a voting challenge. +message MsgCastVote { + option (cosmos.msg.v1.signer) = "creator"; + option (amino.name) = "tokenization/v29/CastVote"; + + // The address of the voter casting the vote. + string creator = 1 [(cosmos_proto.scalar) = "cosmos.AddressString"]; + + // The collection ID for the voting challenge. + string collectionId = 2 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; + + // The approval level ("collection", "incoming", or "outgoing"). + string approvalLevel = 3; + + // The approver address (empty string for collection-level approvals). + string approverAddress = 4; + + // The approval ID. + string approvalId = 5; + + // The proposal ID (challenge ID) from the VotingChallenge. + string proposalId = 6; + + // The percentage weight (0-100) allocated to "yes" vote. + // The remaining percentage (100 - yesWeight) is allocated to "no" vote. + // Example: yesWeight=70 means 70% yes, 30% no. + string yesWeight = 7 [(gogoproto.customtype) = "Uint", (gogoproto.nullable) = false]; +} + +message MsgCastVoteResponse {} + +// Shared response types + +// ApprovalUsed represents an approval that was consumed during a transfer. +message ApprovalUsed { + string approvalId = 1; + string approvalLevel = 2; + string approverAddress = 3; + string version = 4; +} + +// CoinTransferProto represents a coin transfer that occurred during a transaction. +message CoinTransferProto { + string from = 1; + string to = 2; + string amount = 3; + string denom = 4; + bool isProtocolFee = 5; +} + +// ApprovalChange represents a change to an approval (created, edited, or deleted). +message ApprovalChange { + string approvalId = 1; + string approvalLevel = 2; + string action = 3; + string version = 4; +} diff --git a/proto/tokenization/v29/user_balance_store.proto b/proto/tokenization/v29/user_balance_store.proto new file mode 100644 index 00000000..449cd2ab --- /dev/null +++ b/proto/tokenization/v29/user_balance_store.proto @@ -0,0 +1,56 @@ +syntax = "proto3"; +package tokenization.v29; + +import "gogoproto/gogo.proto"; +import "tokenization/v29/balances.proto"; +import "tokenization/v29/permissions.proto"; +import "tokenization/v29/approvals.proto"; + +option go_package = "github.com/bitbadges/bitbadgeschain/x/tokenization/types/v29"; + +/* + UserBalanceStore is the store for the user balances for a collection. + + It consists of a list of balances, a list of approved outgoing transfers, and a list of approved incoming transfers, + as well as the permissions for updating the approved incoming/outgoing transfers. + + Upon initialization, all fields (minus the balances) are set to the defaults specified by the collection. + + The outgoing transfers can be used to allow / disallow transfers which are sent from this user. + If a transfer has no match, then it is disallowed by default, unless from == initiatedBy (i.e. initiated by this user) + and autoApproveSelfInitiatedOutgoingTransfers is set to true. + + The incoming transfers can be used to allow / disallow transfers which are sent to this user. + If a transfer has no match, then it is disallowed by default, unless to == initiatedBy (i.e. initiated by this user) + and autoApproveSelfInitiatedIncomingTransfers is set to true. + + Note that the user approved transfers are only checked if the collection approved transfers do not specify to override + the user approved transfers. + + The permissions are used to determine whether the user can update the approved incoming/outgoing transfers and auto approvals. +*/ +message UserBalanceStore { + // The list of balances associated with this user. + repeated Balance balances = 1; + + // The list of approved outgoing transfers for this user. + repeated UserOutgoingApproval outgoingApprovals = 2; + + // The list of approved incoming transfers for this user. + repeated UserIncomingApproval incomingApprovals = 3; + + // Whether to auto-approve self-initiated outgoing transfers for this user (i.e. from == initiatedBy). + bool autoApproveSelfInitiatedOutgoingTransfers = 4; + + // Whether to auto-approve self-initiated incoming transfers for this user (i.e. to == initiatedBy). + bool autoApproveSelfInitiatedIncomingTransfers = 5; + + // Whether to auto-approve all incoming transfers by default. + // This is just shorthand for adding an accept everything incoming approval + // with no restrictions. + bool autoApproveAllIncomingTransfers = 6; + + // The permissions for this user's actions and transfers. + UserPermissions userPermissions = 7; +} + diff --git a/x/tokenization/types/v29/address_lists.pb.go b/x/tokenization/types/v29/address_lists.pb.go new file mode 100644 index 00000000..6449344e --- /dev/null +++ b/x/tokenization/types/v29/address_lists.pb.go @@ -0,0 +1,959 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: tokenization/v29/address_lists.proto + +package v29 + +import ( + fmt "fmt" + _ "github.com/cosmos/gogoproto/gogoproto" + 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 + +// An AddressList is a list of addresses that are referenced by an ID. +// AddressLists are used in defining approvals ia a reusbale identifier. +// Note: We also support a reserved ID system by string ID; "Mint", "!Mint" +type AddressList struct { + // Unique identifier for the address list. + ListId string `protobuf:"bytes,1,opt,name=listId,proto3" json:"listId,omitempty"` + // List of addresses included in the list. + Addresses []string `protobuf:"bytes,2,rep,name=addresses,proto3" json:"addresses,omitempty"` + // Indicates whether the list includes the specified addresses (true) or excludes them (false). + Whitelist bool `protobuf:"varint,3,opt,name=whitelist,proto3" json:"whitelist,omitempty"` + // URI (Uniform Resource Identifier) associated with the address list to provide metadata, if applicable. + Uri string `protobuf:"bytes,4,opt,name=uri,proto3" json:"uri,omitempty"` + // Custom arbitrary data or additional information related to the address list. + CustomData string `protobuf:"bytes,5,opt,name=customData,proto3" json:"customData,omitempty"` + // The user or entity who created the address list. + CreatedBy string `protobuf:"bytes,6,opt,name=createdBy,proto3" json:"createdBy,omitempty"` +} + +func (m *AddressList) Reset() { *m = AddressList{} } +func (m *AddressList) String() string { return proto.CompactTextString(m) } +func (*AddressList) ProtoMessage() {} +func (*AddressList) Descriptor() ([]byte, []int) { + return fileDescriptor_29fb9e3c2bd3ebfc, []int{0} +} +func (m *AddressList) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AddressList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AddressList.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 *AddressList) XXX_Merge(src proto.Message) { + xxx_messageInfo_AddressList.Merge(m, src) +} +func (m *AddressList) XXX_Size() int { + return m.Size() +} +func (m *AddressList) XXX_DiscardUnknown() { + xxx_messageInfo_AddressList.DiscardUnknown(m) +} + +var xxx_messageInfo_AddressList proto.InternalMessageInfo + +func (m *AddressList) GetListId() string { + if m != nil { + return m.ListId + } + return "" +} + +func (m *AddressList) GetAddresses() []string { + if m != nil { + return m.Addresses + } + return nil +} + +func (m *AddressList) GetWhitelist() bool { + if m != nil { + return m.Whitelist + } + return false +} + +func (m *AddressList) GetUri() string { + if m != nil { + return m.Uri + } + return "" +} + +func (m *AddressList) GetCustomData() string { + if m != nil { + return m.CustomData + } + return "" +} + +func (m *AddressList) GetCreatedBy() string { + if m != nil { + return m.CreatedBy + } + return "" +} + +// AddressListInput is used for creating address lists via MsgCreateAddressLists. +// It contains all fields from AddressList except createdBy, which is automatically set from the message creator. +type AddressListInput struct { + // Unique identifier for the address list. + ListId string `protobuf:"bytes,1,opt,name=listId,proto3" json:"listId,omitempty"` + // List of addresses included in the list. + Addresses []string `protobuf:"bytes,2,rep,name=addresses,proto3" json:"addresses,omitempty"` + // Indicates whether the list includes the specified addresses (true) or excludes them (false). + Whitelist bool `protobuf:"varint,3,opt,name=whitelist,proto3" json:"whitelist,omitempty"` + // URI (Uniform Resource Identifier) associated with the address list to provide metadata, if applicable. + Uri string `protobuf:"bytes,4,opt,name=uri,proto3" json:"uri,omitempty"` + // Custom arbitrary data or additional information related to the address list. + CustomData string `protobuf:"bytes,5,opt,name=customData,proto3" json:"customData,omitempty"` +} + +func (m *AddressListInput) Reset() { *m = AddressListInput{} } +func (m *AddressListInput) String() string { return proto.CompactTextString(m) } +func (*AddressListInput) ProtoMessage() {} +func (*AddressListInput) Descriptor() ([]byte, []int) { + return fileDescriptor_29fb9e3c2bd3ebfc, []int{1} +} +func (m *AddressListInput) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AddressListInput) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AddressListInput.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 *AddressListInput) XXX_Merge(src proto.Message) { + xxx_messageInfo_AddressListInput.Merge(m, src) +} +func (m *AddressListInput) XXX_Size() int { + return m.Size() +} +func (m *AddressListInput) XXX_DiscardUnknown() { + xxx_messageInfo_AddressListInput.DiscardUnknown(m) +} + +var xxx_messageInfo_AddressListInput proto.InternalMessageInfo + +func (m *AddressListInput) GetListId() string { + if m != nil { + return m.ListId + } + return "" +} + +func (m *AddressListInput) GetAddresses() []string { + if m != nil { + return m.Addresses + } + return nil +} + +func (m *AddressListInput) GetWhitelist() bool { + if m != nil { + return m.Whitelist + } + return false +} + +func (m *AddressListInput) GetUri() string { + if m != nil { + return m.Uri + } + return "" +} + +func (m *AddressListInput) GetCustomData() string { + if m != nil { + return m.CustomData + } + return "" +} + +func init() { + proto.RegisterType((*AddressList)(nil), "tokenization.v29.AddressList") + proto.RegisterType((*AddressListInput)(nil), "tokenization.v29.AddressListInput") +} + +func init() { + proto.RegisterFile("tokenization/v29/address_lists.proto", fileDescriptor_29fb9e3c2bd3ebfc) +} + +var fileDescriptor_29fb9e3c2bd3ebfc = []byte{ + // 298 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x51, 0xb1, 0x4a, 0xc4, 0x40, + 0x14, 0xbc, 0xf5, 0x34, 0x98, 0xb5, 0x09, 0x41, 0x64, 0x39, 0x64, 0x0d, 0x87, 0x45, 0xaa, 0x2c, + 0x9c, 0xd5, 0x81, 0x8d, 0x87, 0xcd, 0x81, 0x55, 0x0a, 0x0b, 0x1b, 0xd9, 0x24, 0x4b, 0xb2, 0x78, + 0x97, 0x0d, 0xd9, 0x97, 0xd3, 0xf3, 0x2b, 0x2c, 0xfd, 0x0d, 0xff, 0xc2, 0xf2, 0x4a, 0x4b, 0x49, + 0x7e, 0x44, 0x36, 0x17, 0x48, 0xc4, 0x1f, 0xb0, 0x9b, 0x37, 0x33, 0xcc, 0x1b, 0x18, 0x7c, 0x09, + 0xea, 0x49, 0xe4, 0xf2, 0x95, 0x83, 0x54, 0x39, 0xdb, 0xcc, 0xe6, 0x8c, 0x27, 0x49, 0x29, 0xb4, + 0x7e, 0x5c, 0x49, 0x0d, 0x3a, 0x28, 0x4a, 0x05, 0xca, 0x75, 0x86, 0xae, 0x60, 0x33, 0x9b, 0x4f, + 0x4e, 0x53, 0x95, 0xaa, 0x56, 0x64, 0x06, 0xed, 0x7d, 0x93, 0x8b, 0x3f, 0x69, 0x11, 0x5f, 0xf1, + 0x3c, 0x16, 0x5d, 0xd0, 0xf4, 0x03, 0xe1, 0x93, 0x9b, 0xfd, 0x83, 0x3b, 0xa9, 0xc1, 0x3d, 0xc3, + 0x96, 0xf9, 0xb3, 0x4c, 0x08, 0xf2, 0x90, 0x6f, 0x87, 0xdd, 0xe5, 0x9e, 0x63, 0xbb, 0xeb, 0x21, + 0x34, 0x39, 0xf0, 0xc6, 0xbe, 0x1d, 0xf6, 0x84, 0x51, 0x9f, 0x33, 0x09, 0xc2, 0x98, 0xc9, 0xd8, + 0x43, 0xfe, 0x71, 0xd8, 0x13, 0xae, 0x83, 0xc7, 0x55, 0x29, 0xc9, 0x61, 0x1b, 0x68, 0xa0, 0x4b, + 0x31, 0x8e, 0x2b, 0x0d, 0x6a, 0x7d, 0xcb, 0x81, 0x93, 0xa3, 0x56, 0x18, 0x30, 0x26, 0x2f, 0x2e, + 0x05, 0x07, 0x91, 0x2c, 0xb6, 0xc4, 0x6a, 0xe5, 0x9e, 0x98, 0xbe, 0x23, 0xec, 0x0c, 0x3a, 0x2f, + 0xf3, 0xa2, 0xfa, 0x27, 0xc5, 0x17, 0xf7, 0x9f, 0x35, 0x45, 0xbb, 0x9a, 0xa2, 0xef, 0x9a, 0xa2, + 0xb7, 0x86, 0x8e, 0x76, 0x0d, 0x1d, 0x7d, 0x35, 0x74, 0xf4, 0x70, 0x9d, 0x4a, 0xc8, 0xaa, 0x28, + 0x88, 0xd5, 0x9a, 0x45, 0x12, 0x22, 0x9e, 0xa4, 0x42, 0xf7, 0x28, 0xce, 0xb8, 0xcc, 0xd9, 0x0b, + 0xfb, 0xb5, 0x17, 0x6c, 0x0b, 0xa1, 0xcd, 0x6a, 0x91, 0xd5, 0xae, 0x75, 0xf5, 0x13, 0x00, 0x00, + 0xff, 0xff, 0xc0, 0x75, 0xbc, 0x9b, 0x1e, 0x02, 0x00, 0x00, +} + +func (m *AddressList) 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 *AddressList) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *AddressList) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.CreatedBy) > 0 { + i -= len(m.CreatedBy) + copy(dAtA[i:], m.CreatedBy) + i = encodeVarintAddressLists(dAtA, i, uint64(len(m.CreatedBy))) + i-- + dAtA[i] = 0x32 + } + if len(m.CustomData) > 0 { + i -= len(m.CustomData) + copy(dAtA[i:], m.CustomData) + i = encodeVarintAddressLists(dAtA, i, uint64(len(m.CustomData))) + i-- + dAtA[i] = 0x2a + } + if len(m.Uri) > 0 { + i -= len(m.Uri) + copy(dAtA[i:], m.Uri) + i = encodeVarintAddressLists(dAtA, i, uint64(len(m.Uri))) + i-- + dAtA[i] = 0x22 + } + if m.Whitelist { + i-- + if m.Whitelist { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } + if len(m.Addresses) > 0 { + for iNdEx := len(m.Addresses) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Addresses[iNdEx]) + copy(dAtA[i:], m.Addresses[iNdEx]) + i = encodeVarintAddressLists(dAtA, i, uint64(len(m.Addresses[iNdEx]))) + i-- + dAtA[i] = 0x12 + } + } + if len(m.ListId) > 0 { + i -= len(m.ListId) + copy(dAtA[i:], m.ListId) + i = encodeVarintAddressLists(dAtA, i, uint64(len(m.ListId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *AddressListInput) 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 *AddressListInput) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *AddressListInput) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.CustomData) > 0 { + i -= len(m.CustomData) + copy(dAtA[i:], m.CustomData) + i = encodeVarintAddressLists(dAtA, i, uint64(len(m.CustomData))) + i-- + dAtA[i] = 0x2a + } + if len(m.Uri) > 0 { + i -= len(m.Uri) + copy(dAtA[i:], m.Uri) + i = encodeVarintAddressLists(dAtA, i, uint64(len(m.Uri))) + i-- + dAtA[i] = 0x22 + } + if m.Whitelist { + i-- + if m.Whitelist { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } + if len(m.Addresses) > 0 { + for iNdEx := len(m.Addresses) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Addresses[iNdEx]) + copy(dAtA[i:], m.Addresses[iNdEx]) + i = encodeVarintAddressLists(dAtA, i, uint64(len(m.Addresses[iNdEx]))) + i-- + dAtA[i] = 0x12 + } + } + if len(m.ListId) > 0 { + i -= len(m.ListId) + copy(dAtA[i:], m.ListId) + i = encodeVarintAddressLists(dAtA, i, uint64(len(m.ListId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintAddressLists(dAtA []byte, offset int, v uint64) int { + offset -= sovAddressLists(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *AddressList) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ListId) + if l > 0 { + n += 1 + l + sovAddressLists(uint64(l)) + } + if len(m.Addresses) > 0 { + for _, s := range m.Addresses { + l = len(s) + n += 1 + l + sovAddressLists(uint64(l)) + } + } + if m.Whitelist { + n += 2 + } + l = len(m.Uri) + if l > 0 { + n += 1 + l + sovAddressLists(uint64(l)) + } + l = len(m.CustomData) + if l > 0 { + n += 1 + l + sovAddressLists(uint64(l)) + } + l = len(m.CreatedBy) + if l > 0 { + n += 1 + l + sovAddressLists(uint64(l)) + } + return n +} + +func (m *AddressListInput) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ListId) + if l > 0 { + n += 1 + l + sovAddressLists(uint64(l)) + } + if len(m.Addresses) > 0 { + for _, s := range m.Addresses { + l = len(s) + n += 1 + l + sovAddressLists(uint64(l)) + } + } + if m.Whitelist { + n += 2 + } + l = len(m.Uri) + if l > 0 { + n += 1 + l + sovAddressLists(uint64(l)) + } + l = len(m.CustomData) + if l > 0 { + n += 1 + l + sovAddressLists(uint64(l)) + } + return n +} + +func sovAddressLists(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozAddressLists(x uint64) (n int) { + return sovAddressLists(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *AddressList) 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 ErrIntOverflowAddressLists + } + 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: AddressList: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AddressList: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAddressLists + } + 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 ErrInvalidLengthAddressLists + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAddressLists + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ListId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Addresses", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAddressLists + } + 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 ErrInvalidLengthAddressLists + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAddressLists + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Addresses = append(m.Addresses, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Whitelist", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAddressLists + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Whitelist = bool(v != 0) + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Uri", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAddressLists + } + 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 ErrInvalidLengthAddressLists + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAddressLists + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Uri = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CustomData", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAddressLists + } + 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 ErrInvalidLengthAddressLists + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAddressLists + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CustomData = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CreatedBy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAddressLists + } + 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 ErrInvalidLengthAddressLists + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAddressLists + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CreatedBy = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipAddressLists(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthAddressLists + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *AddressListInput) 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 ErrIntOverflowAddressLists + } + 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: AddressListInput: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AddressListInput: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ListId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAddressLists + } + 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 ErrInvalidLengthAddressLists + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAddressLists + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ListId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Addresses", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAddressLists + } + 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 ErrInvalidLengthAddressLists + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAddressLists + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Addresses = append(m.Addresses, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Whitelist", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAddressLists + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Whitelist = bool(v != 0) + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Uri", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAddressLists + } + 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 ErrInvalidLengthAddressLists + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAddressLists + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Uri = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CustomData", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowAddressLists + } + 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 ErrInvalidLengthAddressLists + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthAddressLists + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CustomData = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipAddressLists(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthAddressLists + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipAddressLists(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, ErrIntOverflowAddressLists + } + 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, ErrIntOverflowAddressLists + } + 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, ErrIntOverflowAddressLists + } + 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, ErrInvalidLengthAddressLists + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupAddressLists + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthAddressLists + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthAddressLists = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowAddressLists = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupAddressLists = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/tokenization/types/v29/approval_conditions.pb.go b/x/tokenization/types/v29/approval_conditions.pb.go new file mode 100644 index 00000000..bd4bdac3 --- /dev/null +++ b/x/tokenization/types/v29/approval_conditions.pb.go @@ -0,0 +1,2558 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: tokenization/v29/approval_conditions.proto + +package v29 + +import ( + fmt "fmt" + types "github.com/cosmos/cosmos-sdk/types" + _ "github.com/cosmos/gogoproto/gogoproto" + 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 CoinTransfer struct { + // The address of the recipient of the transfer. + To string `protobuf:"bytes,1,opt,name=to,proto3" json:"to,omitempty"` + // The sdk.Coins to be transferred. + Coins []*types.Coin `protobuf:"bytes,2,rep,name=coins,proto3" json:"coins,omitempty"` + // By default, the from address is the initiator of the transaction. + // If this is set to true, we will override the from address with the approver address. + // Note: This is not applicable for collection approvals (since approverAddress == ''). + OverrideFromWithApproverAddress bool `protobuf:"varint,3,opt,name=overrideFromWithApproverAddress,proto3" json:"overrideFromWithApproverAddress,omitempty"` + // By default, the to address is what is specified in the coin transfer. + // If this is set to true, we will override the to address with the initiator of the transaction. + OverrideToWithInitiator bool `protobuf:"varint,4,opt,name=overrideToWithInitiator,proto3" json:"overrideToWithInitiator,omitempty"` +} + +func (m *CoinTransfer) Reset() { *m = CoinTransfer{} } +func (m *CoinTransfer) String() string { return proto.CompactTextString(m) } +func (*CoinTransfer) ProtoMessage() {} +func (*CoinTransfer) Descriptor() ([]byte, []int) { + return fileDescriptor_4b1b78acd2cabdbe, []int{0} +} +func (m *CoinTransfer) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CoinTransfer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CoinTransfer.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 *CoinTransfer) XXX_Merge(src proto.Message) { + xxx_messageInfo_CoinTransfer.Merge(m, src) +} +func (m *CoinTransfer) XXX_Size() int { + return m.Size() +} +func (m *CoinTransfer) XXX_DiscardUnknown() { + xxx_messageInfo_CoinTransfer.DiscardUnknown(m) +} + +var xxx_messageInfo_CoinTransfer proto.InternalMessageInfo + +func (m *CoinTransfer) GetTo() string { + if m != nil { + return m.To + } + return "" +} + +func (m *CoinTransfer) GetCoins() []*types.Coin { + if m != nil { + return m.Coins + } + return nil +} + +func (m *CoinTransfer) GetOverrideFromWithApproverAddress() bool { + if m != nil { + return m.OverrideFromWithApproverAddress + } + return false +} + +func (m *CoinTransfer) GetOverrideToWithInitiator() bool { + if m != nil { + return m.OverrideToWithInitiator + } + return false +} + +// MustOwnTokens represents a condition where a user must own specific tokens +// to be approved to transfer. +// +// - collectionId: The ID of the collection for the tokens that must be owned +// - amountRange: The range of amounts the user must own (min to max) +// - ownershipTimes: The time ranges during which the user must own the tokens. +// - tokenIds: The token IDs the user must own. +// - overrideWithCurrentTime: If true, auto override ownershipTimes with the current time. +// - mustSatisfyForAllAssets: If true, the user must own all specified tokens; otherwise, owning any one for >= 1 millisecond is sufficient. +type MustOwnTokens struct { + // The ID of the collection. + CollectionId Uint `protobuf:"bytes,1,opt,name=collectionId,proto3,customtype=Uint" json:"collectionId"` + // The range of amounts the user must own (min to max). + AmountRange *UintRange `protobuf:"bytes,2,opt,name=amountRange,proto3" json:"amountRange,omitempty"` + // The time ranges during which the user must own the tokens. + OwnershipTimes []*UintRange `protobuf:"bytes,3,rep,name=ownershipTimes,proto3" json:"ownershipTimes,omitempty"` + // The token IDs the user must own. + TokenIds []*UintRange `protobuf:"bytes,4,rep,name=tokenIds,proto3" json:"tokenIds,omitempty"` + // If true, override ownershipTimes with the current time. + OverrideWithCurrentTime bool `protobuf:"varint,5,opt,name=overrideWithCurrentTime,proto3" json:"overrideWithCurrentTime,omitempty"` + // If true, the user must meet ownership requirements for all specified tokens; else, must meet requirements for any single token. + MustSatisfyForAllAssets bool `protobuf:"varint,6,opt,name=mustSatisfyForAllAssets,proto3" json:"mustSatisfyForAllAssets,omitempty"` + // The party to check ownership for. Options are "initiator", "sender", "recipient", or any valid bb1 address. + // If a valid bb1 address is provided, ownership will be checked for that specific address. + // This enables use cases like halt tokens where ownership is checked for an arbitrary address (e.g., halt token owner). + // Defaults to "initiator" if empty or if the value is not a recognized option or valid bb1 address. + OwnershipCheckParty string `protobuf:"bytes,7,opt,name=ownershipCheckParty,proto3" json:"ownershipCheckParty,omitempty"` +} + +func (m *MustOwnTokens) Reset() { *m = MustOwnTokens{} } +func (m *MustOwnTokens) String() string { return proto.CompactTextString(m) } +func (*MustOwnTokens) ProtoMessage() {} +func (*MustOwnTokens) Descriptor() ([]byte, []int) { + return fileDescriptor_4b1b78acd2cabdbe, []int{1} +} +func (m *MustOwnTokens) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MustOwnTokens) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MustOwnTokens.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 *MustOwnTokens) XXX_Merge(src proto.Message) { + xxx_messageInfo_MustOwnTokens.Merge(m, src) +} +func (m *MustOwnTokens) XXX_Size() int { + return m.Size() +} +func (m *MustOwnTokens) XXX_DiscardUnknown() { + xxx_messageInfo_MustOwnTokens.DiscardUnknown(m) +} + +var xxx_messageInfo_MustOwnTokens proto.InternalMessageInfo + +func (m *MustOwnTokens) GetAmountRange() *UintRange { + if m != nil { + return m.AmountRange + } + return nil +} + +func (m *MustOwnTokens) GetOwnershipTimes() []*UintRange { + if m != nil { + return m.OwnershipTimes + } + return nil +} + +func (m *MustOwnTokens) GetTokenIds() []*UintRange { + if m != nil { + return m.TokenIds + } + return nil +} + +func (m *MustOwnTokens) GetOverrideWithCurrentTime() bool { + if m != nil { + return m.OverrideWithCurrentTime + } + return false +} + +func (m *MustOwnTokens) GetMustSatisfyForAllAssets() bool { + if m != nil { + return m.MustSatisfyForAllAssets + } + return false +} + +func (m *MustOwnTokens) GetOwnershipCheckParty() string { + if m != nil { + return m.OwnershipCheckParty + } + return "" +} + +// DynamicStoreChallenge defines a challenge that requires the initiator to pass a dynamic store check. +type DynamicStoreChallenge struct { + // The ID of the dynamic store to check. + StoreId Uint `protobuf:"bytes,1,opt,name=storeId,proto3,customtype=Uint" json:"storeId"` + // The party to check ownership for. Options are "initiator", "sender", "recipient", or any valid bb1 address. + // If a valid bb1 address is provided, ownership will be checked for that specific address. + // This enables use cases like halt tokens where ownership is checked for an arbitrary address (e.g., halt token owner). + // Defaults to "initiator" if empty or if the value is not a recognized option or valid bb1 address. + OwnershipCheckParty string `protobuf:"bytes,2,opt,name=ownershipCheckParty,proto3" json:"ownershipCheckParty,omitempty"` +} + +func (m *DynamicStoreChallenge) Reset() { *m = DynamicStoreChallenge{} } +func (m *DynamicStoreChallenge) String() string { return proto.CompactTextString(m) } +func (*DynamicStoreChallenge) ProtoMessage() {} +func (*DynamicStoreChallenge) Descriptor() ([]byte, []int) { + return fileDescriptor_4b1b78acd2cabdbe, []int{2} +} +func (m *DynamicStoreChallenge) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *DynamicStoreChallenge) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_DynamicStoreChallenge.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 *DynamicStoreChallenge) XXX_Merge(src proto.Message) { + xxx_messageInfo_DynamicStoreChallenge.Merge(m, src) +} +func (m *DynamicStoreChallenge) XXX_Size() int { + return m.Size() +} +func (m *DynamicStoreChallenge) XXX_DiscardUnknown() { + xxx_messageInfo_DynamicStoreChallenge.DiscardUnknown(m) +} + +var xxx_messageInfo_DynamicStoreChallenge proto.InternalMessageInfo + +func (m *DynamicStoreChallenge) GetOwnershipCheckParty() string { + if m != nil { + return m.OwnershipCheckParty + } + return "" +} + +// AddressChecks defines checks for address types (EVM contract, liquidity pool, etc.) +type AddressChecks struct { + // Require the address to be an EVM contract (has code). + MustBeEvmContract bool `protobuf:"varint,1,opt,name=mustBeEvmContract,proto3" json:"mustBeEvmContract,omitempty"` + // Require the address to not be an EVM contract (no code). + MustNotBeEvmContract bool `protobuf:"varint,2,opt,name=mustNotBeEvmContract,proto3" json:"mustNotBeEvmContract,omitempty"` + // Require the address to be a liquidity pool. + MustBeLiquidityPool bool `protobuf:"varint,3,opt,name=mustBeLiquidityPool,proto3" json:"mustBeLiquidityPool,omitempty"` + // Require the address to not be a liquidity pool. + MustNotBeLiquidityPool bool `protobuf:"varint,4,opt,name=mustNotBeLiquidityPool,proto3" json:"mustNotBeLiquidityPool,omitempty"` +} + +func (m *AddressChecks) Reset() { *m = AddressChecks{} } +func (m *AddressChecks) String() string { return proto.CompactTextString(m) } +func (*AddressChecks) ProtoMessage() {} +func (*AddressChecks) Descriptor() ([]byte, []int) { + return fileDescriptor_4b1b78acd2cabdbe, []int{3} +} +func (m *AddressChecks) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AddressChecks) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AddressChecks.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 *AddressChecks) XXX_Merge(src proto.Message) { + xxx_messageInfo_AddressChecks.Merge(m, src) +} +func (m *AddressChecks) XXX_Size() int { + return m.Size() +} +func (m *AddressChecks) XXX_DiscardUnknown() { + xxx_messageInfo_AddressChecks.DiscardUnknown(m) +} + +var xxx_messageInfo_AddressChecks proto.InternalMessageInfo + +func (m *AddressChecks) GetMustBeEvmContract() bool { + if m != nil { + return m.MustBeEvmContract + } + return false +} + +func (m *AddressChecks) GetMustNotBeEvmContract() bool { + if m != nil { + return m.MustNotBeEvmContract + } + return false +} + +func (m *AddressChecks) GetMustBeLiquidityPool() bool { + if m != nil { + return m.MustBeLiquidityPool + } + return false +} + +func (m *AddressChecks) GetMustNotBeLiquidityPool() bool { + if m != nil { + return m.MustNotBeLiquidityPool + } + return false +} + +// AltTimeChecks defines alternative time-based checks for approval denial. +// If the transfer time falls within any of the specified offline hours or days, the approval is denied. +// Uses UTC timezone for neutral timezone approach. +// offlineHours: ranges of hours (0-23) when transfers should be denied +// offlineDays: ranges of days (0-6, where 0=Sunday, 1=Monday, ..., 6=Saturday) when transfers should be denied +type AltTimeChecks struct { + // Hours (0-23) when transfers should be denied. + OfflineHours []*UintRange `protobuf:"bytes,1,rep,name=offlineHours,proto3" json:"offlineHours,omitempty"` + // Days (0-6, where 0=Sunday, 1=Monday, ..., 6=Saturday) when transfers should be denied. + OfflineDays []*UintRange `protobuf:"bytes,2,rep,name=offlineDays,proto3" json:"offlineDays,omitempty"` + // Months (1-12, where 1=January, 12=December) when transfers should be denied. + OfflineMonths []*UintRange `protobuf:"bytes,3,rep,name=offlineMonths,proto3" json:"offlineMonths,omitempty"` + // Days of month (1-31) when transfers should be denied. + OfflineDaysOfMonth []*UintRange `protobuf:"bytes,4,rep,name=offlineDaysOfMonth,proto3" json:"offlineDaysOfMonth,omitempty"` + // Weeks of year (1-52) when transfers should be denied. Uses ISO 8601 week numbering. + OfflineWeeksOfYear []*UintRange `protobuf:"bytes,5,rep,name=offlineWeeksOfYear,proto3" json:"offlineWeeksOfYear,omitempty"` + // Timezone offset magnitude in minutes from UTC. Default 0 = UTC. Examples: 300 for EST (UTC-5), 330 for IST (UTC+5:30). + // All time checks are evaluated after applying this offset to the block time. + TimezoneOffsetMinutes Uint `protobuf:"bytes,6,opt,name=timezoneOffsetMinutes,proto3,customtype=Uint" json:"timezoneOffsetMinutes"` + // If true, the timezone offset is subtracted (west of UTC). If false, it is added (east of UTC). + // Example: EST (UTC-5) = timezoneOffsetMinutes: 300, timezoneOffsetNegative: true + TimezoneOffsetNegative bool `protobuf:"varint,7,opt,name=timezoneOffsetNegative,proto3" json:"timezoneOffsetNegative,omitempty"` +} + +func (m *AltTimeChecks) Reset() { *m = AltTimeChecks{} } +func (m *AltTimeChecks) String() string { return proto.CompactTextString(m) } +func (*AltTimeChecks) ProtoMessage() {} +func (*AltTimeChecks) Descriptor() ([]byte, []int) { + return fileDescriptor_4b1b78acd2cabdbe, []int{4} +} +func (m *AltTimeChecks) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AltTimeChecks) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AltTimeChecks.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 *AltTimeChecks) XXX_Merge(src proto.Message) { + xxx_messageInfo_AltTimeChecks.Merge(m, src) +} +func (m *AltTimeChecks) XXX_Size() int { + return m.Size() +} +func (m *AltTimeChecks) XXX_DiscardUnknown() { + xxx_messageInfo_AltTimeChecks.DiscardUnknown(m) +} + +var xxx_messageInfo_AltTimeChecks proto.InternalMessageInfo + +func (m *AltTimeChecks) GetOfflineHours() []*UintRange { + if m != nil { + return m.OfflineHours + } + return nil +} + +func (m *AltTimeChecks) GetOfflineDays() []*UintRange { + if m != nil { + return m.OfflineDays + } + return nil +} + +func (m *AltTimeChecks) GetOfflineMonths() []*UintRange { + if m != nil { + return m.OfflineMonths + } + return nil +} + +func (m *AltTimeChecks) GetOfflineDaysOfMonth() []*UintRange { + if m != nil { + return m.OfflineDaysOfMonth + } + return nil +} + +func (m *AltTimeChecks) GetOfflineWeeksOfYear() []*UintRange { + if m != nil { + return m.OfflineWeeksOfYear + } + return nil +} + +func (m *AltTimeChecks) GetTimezoneOffsetNegative() bool { + if m != nil { + return m.TimezoneOffsetNegative + } + return false +} + +// UserApprovalSettings defines issuer-imposed constraints on user-level approvals. +// Set on collection-level ApprovalCriteria and propagated to user-level approvals +// during greedy transfer matching. Each balance slice carries its own settings. +type UserApprovalSettings struct { + // Restricts which denoms user-level coinTransfers can reference (beyond params-level AllowedDenoms). + // If empty, all params-allowed denoms are permitted. + AllowedDenoms []string `protobuf:"bytes,1,rep,name=allowedDenoms,proto3" json:"allowedDenoms,omitempty"` + // If true, user-level approvals cannot trigger coinTransfers at all for transfers matched by this collection approval. + DisableUserCoinTransfers bool `protobuf:"varint,2,opt,name=disableUserCoinTransfers,proto3" json:"disableUserCoinTransfers,omitempty"` + // User-level royalties to enforce for transfers matched by this collection approval. + UserRoyalties *UserRoyalties `protobuf:"bytes,3,opt,name=userRoyalties,proto3" json:"userRoyalties,omitempty"` +} + +func (m *UserApprovalSettings) Reset() { *m = UserApprovalSettings{} } +func (m *UserApprovalSettings) String() string { return proto.CompactTextString(m) } +func (*UserApprovalSettings) ProtoMessage() {} +func (*UserApprovalSettings) Descriptor() ([]byte, []int) { + return fileDescriptor_4b1b78acd2cabdbe, []int{5} +} +func (m *UserApprovalSettings) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *UserApprovalSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_UserApprovalSettings.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 *UserApprovalSettings) XXX_Merge(src proto.Message) { + xxx_messageInfo_UserApprovalSettings.Merge(m, src) +} +func (m *UserApprovalSettings) XXX_Size() int { + return m.Size() +} +func (m *UserApprovalSettings) XXX_DiscardUnknown() { + xxx_messageInfo_UserApprovalSettings.DiscardUnknown(m) +} + +var xxx_messageInfo_UserApprovalSettings proto.InternalMessageInfo + +func (m *UserApprovalSettings) GetAllowedDenoms() []string { + if m != nil { + return m.AllowedDenoms + } + return nil +} + +func (m *UserApprovalSettings) GetDisableUserCoinTransfers() bool { + if m != nil { + return m.DisableUserCoinTransfers + } + return false +} + +func (m *UserApprovalSettings) GetUserRoyalties() *UserRoyalties { + if m != nil { + return m.UserRoyalties + } + return nil +} + +// UserRoyalties defines the royalties for a user. +type UserRoyalties struct { + // Percentage of the transfer amount to apply as royalties. 1 to 10000 represents basis points. + Percentage Uint `protobuf:"bytes,1,opt,name=percentage,proto3,customtype=Uint" json:"percentage"` + // Payout address for the royalties. + PayoutAddress string `protobuf:"bytes,2,opt,name=payoutAddress,proto3" json:"payoutAddress,omitempty"` +} + +func (m *UserRoyalties) Reset() { *m = UserRoyalties{} } +func (m *UserRoyalties) String() string { return proto.CompactTextString(m) } +func (*UserRoyalties) ProtoMessage() {} +func (*UserRoyalties) Descriptor() ([]byte, []int) { + return fileDescriptor_4b1b78acd2cabdbe, []int{6} +} +func (m *UserRoyalties) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *UserRoyalties) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_UserRoyalties.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 *UserRoyalties) XXX_Merge(src proto.Message) { + xxx_messageInfo_UserRoyalties.Merge(m, src) +} +func (m *UserRoyalties) XXX_Size() int { + return m.Size() +} +func (m *UserRoyalties) XXX_DiscardUnknown() { + xxx_messageInfo_UserRoyalties.DiscardUnknown(m) +} + +var xxx_messageInfo_UserRoyalties proto.InternalMessageInfo + +func (m *UserRoyalties) GetPayoutAddress() string { + if m != nil { + return m.PayoutAddress + } + return "" +} + +func init() { + proto.RegisterType((*CoinTransfer)(nil), "tokenization.v29.CoinTransfer") + proto.RegisterType((*MustOwnTokens)(nil), "tokenization.v29.MustOwnTokens") + proto.RegisterType((*DynamicStoreChallenge)(nil), "tokenization.v29.DynamicStoreChallenge") + proto.RegisterType((*AddressChecks)(nil), "tokenization.v29.AddressChecks") + proto.RegisterType((*AltTimeChecks)(nil), "tokenization.v29.AltTimeChecks") + proto.RegisterType((*UserApprovalSettings)(nil), "tokenization.v29.UserApprovalSettings") + proto.RegisterType((*UserRoyalties)(nil), "tokenization.v29.UserRoyalties") +} + +func init() { + proto.RegisterFile("tokenization/v29/approval_conditions.proto", fileDescriptor_4b1b78acd2cabdbe) +} + +var fileDescriptor_4b1b78acd2cabdbe = []byte{ + // 847 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x55, 0x5f, 0x6f, 0xdb, 0x54, + 0x14, 0xaf, 0x93, 0x76, 0xeb, 0x6e, 0x9b, 0x09, 0x2e, 0x1d, 0x98, 0x22, 0x25, 0x55, 0x84, 0x50, + 0x85, 0x26, 0x7b, 0x0b, 0x12, 0x30, 0x04, 0x42, 0x69, 0xba, 0x69, 0x15, 0x74, 0x9d, 0xdc, 0x8e, + 0x09, 0x5e, 0xd0, 0x8d, 0x7d, 0x92, 0x5c, 0xd5, 0xbe, 0x27, 0xbb, 0xf7, 0x38, 0x25, 0xfb, 0x14, + 0x7c, 0x08, 0xbe, 0x07, 0xaf, 0x7b, 0x9c, 0xc4, 0x0b, 0x02, 0x69, 0x42, 0xed, 0x0b, 0x1f, 0x03, + 0x5d, 0xdb, 0x2d, 0x76, 0x9a, 0xac, 0x7d, 0xb3, 0xcf, 0xef, 0xcf, 0xf5, 0x39, 0xf7, 0x1c, 0x1f, + 0xf6, 0x29, 0xe1, 0x31, 0x28, 0xf9, 0x52, 0x90, 0x44, 0xe5, 0x4f, 0x3a, 0x0f, 0x7c, 0x31, 0x1e, + 0x6b, 0x9c, 0x88, 0xf8, 0xe7, 0x10, 0x55, 0x24, 0x6d, 0xd8, 0x78, 0x63, 0x8d, 0x84, 0xfc, 0x9d, + 0x32, 0xd7, 0x9b, 0x74, 0x1e, 0x6c, 0x6e, 0x0c, 0x71, 0x88, 0x19, 0xe8, 0xdb, 0xa7, 0x9c, 0xb7, + 0xd9, 0xba, 0xe4, 0xd9, 0x17, 0xb1, 0x50, 0x21, 0x14, 0x46, 0x9b, 0xcd, 0x10, 0x4d, 0x82, 0xc6, + 0xef, 0x0b, 0x03, 0xfe, 0xe4, 0x7e, 0x1f, 0x48, 0xdc, 0xf7, 0x43, 0x94, 0x2a, 0xc7, 0xdb, 0x7f, + 0x38, 0x6c, 0xbd, 0x87, 0x52, 0x1d, 0x69, 0xa1, 0xcc, 0x00, 0x34, 0xbf, 0xcd, 0x6a, 0x84, 0xae, + 0xb3, 0xe5, 0x6c, 0xdf, 0x0a, 0x6a, 0x84, 0xdc, 0x67, 0x2b, 0x96, 0x6e, 0xdc, 0xda, 0x56, 0x7d, + 0x7b, 0xad, 0xf3, 0xa1, 0x97, 0x1b, 0x7a, 0xd6, 0xd0, 0x2b, 0x0c, 0x3d, 0xeb, 0x10, 0xe4, 0x3c, + 0xfe, 0x98, 0xb5, 0x70, 0x02, 0x5a, 0xcb, 0x08, 0x1e, 0x69, 0x4c, 0x9e, 0x4b, 0x1a, 0x75, 0xb3, + 0x3c, 0x41, 0x77, 0xa3, 0x48, 0x83, 0x31, 0x6e, 0x7d, 0xcb, 0xd9, 0x5e, 0x0d, 0xae, 0xa2, 0xf1, + 0x2f, 0xd9, 0x07, 0xe7, 0x94, 0x23, 0xb4, 0x84, 0x3d, 0x25, 0x49, 0x0a, 0x42, 0xed, 0x2e, 0x67, + 0x0e, 0x8b, 0xe0, 0xf6, 0x6f, 0x75, 0xd6, 0xd8, 0x4f, 0x0d, 0x1d, 0x9c, 0xa8, 0x23, 0x5b, 0x20, + 0xc3, 0xef, 0xb1, 0xf5, 0x10, 0xe3, 0x18, 0x42, 0x5b, 0xa8, 0xbd, 0x28, 0x4f, 0x70, 0x67, 0xfd, + 0xd5, 0x9b, 0xd6, 0xd2, 0x5f, 0x6f, 0x5a, 0xcb, 0xcf, 0xa4, 0xa2, 0xa0, 0xc2, 0xe0, 0xdf, 0xb0, + 0x35, 0x91, 0x60, 0xaa, 0x28, 0x10, 0x6a, 0x08, 0x6e, 0x6d, 0xcb, 0xd9, 0x5e, 0xeb, 0x7c, 0xe4, + 0xcd, 0x5e, 0x8c, 0x97, 0x49, 0x2d, 0x25, 0x28, 0xf3, 0x79, 0x8f, 0xdd, 0xc6, 0x13, 0x05, 0xda, + 0x8c, 0xe4, 0xf8, 0x48, 0x26, 0x60, 0xb3, 0xae, 0x5f, 0xe5, 0x30, 0x23, 0xe1, 0x5f, 0xb0, 0xd5, + 0x8c, 0xbd, 0x17, 0x19, 0x77, 0xf9, 0x6a, 0xf9, 0x05, 0xb9, 0x5c, 0x3a, 0x5b, 0x99, 0x5e, 0xaa, + 0x35, 0x28, 0xb2, 0xa6, 0xee, 0x4a, 0xb5, 0x74, 0x33, 0xb0, 0x55, 0x26, 0xa9, 0xa1, 0x43, 0x41, + 0xd2, 0x0c, 0xa6, 0x8f, 0x50, 0x77, 0xe3, 0xb8, 0x6b, 0x0c, 0x90, 0x71, 0x6f, 0xe4, 0xca, 0x05, + 0x30, 0xbf, 0xc7, 0xde, 0xbb, 0xf8, 0xfc, 0xde, 0x08, 0xc2, 0xe3, 0xa7, 0x42, 0xd3, 0xd4, 0xbd, + 0x99, 0xb5, 0xd2, 0x3c, 0xa8, 0xfd, 0x82, 0xdd, 0xd9, 0x9d, 0x2a, 0x91, 0xc8, 0xf0, 0x90, 0x50, + 0x43, 0x6f, 0x24, 0xe2, 0x18, 0x6c, 0xf1, 0x3e, 0x61, 0x37, 0x8d, 0x8d, 0x2c, 0xb8, 0xa8, 0x73, + 0x70, 0xd1, 0x91, 0xb5, 0xc5, 0x47, 0xfe, 0xed, 0xb0, 0x46, 0xd1, 0x5f, 0x59, 0xd4, 0xf0, 0xbb, + 0xec, 0x5d, 0x9b, 0xd1, 0x0e, 0x3c, 0x9c, 0x24, 0x3d, 0x54, 0xa4, 0x45, 0x48, 0xd9, 0xa9, 0xab, + 0xc1, 0x65, 0x80, 0x77, 0xd8, 0x86, 0x0d, 0x3e, 0xc1, 0x19, 0x41, 0x2d, 0x13, 0xcc, 0xc5, 0xec, + 0x57, 0xe6, 0x46, 0xdf, 0xcb, 0x17, 0xa9, 0x8c, 0x24, 0x4d, 0x9f, 0x22, 0xc6, 0xc5, 0x14, 0xcc, + 0x83, 0xf8, 0xe7, 0xec, 0xfd, 0x0b, 0xa7, 0xaa, 0x28, 0x6f, 0xfc, 0x05, 0x68, 0xfb, 0xdf, 0x3a, + 0x6b, 0x74, 0xe3, 0xec, 0x22, 0x8b, 0xec, 0xbe, 0x65, 0xeb, 0x38, 0x18, 0xc4, 0x52, 0xc1, 0x63, + 0x4c, 0xb5, 0x71, 0x9d, 0xab, 0xbb, 0xa8, 0x22, 0xb0, 0x63, 0x50, 0xbc, 0xef, 0x8a, 0xe9, 0xf9, + 0x5f, 0xe0, 0xed, 0x63, 0x50, 0xe2, 0xf3, 0x2e, 0x6b, 0x14, 0xaf, 0xfb, 0xa8, 0x68, 0x74, 0xad, + 0x29, 0xa8, 0x2a, 0xf8, 0x77, 0x8c, 0x97, 0x1c, 0x0f, 0x06, 0x59, 0xf8, 0x3a, 0xe3, 0x30, 0x47, + 0x56, 0x32, 0x7b, 0x0e, 0x70, 0x6c, 0x0e, 0x06, 0x3f, 0x82, 0xd0, 0xee, 0xca, 0xf5, 0xcd, 0x4a, + 0x32, 0xbe, 0xc3, 0xee, 0x90, 0x4c, 0xe0, 0x25, 0x2a, 0x38, 0x18, 0x0c, 0x0c, 0xd0, 0xbe, 0x54, + 0x29, 0x41, 0x3e, 0x29, 0xb3, 0x4d, 0x3b, 0x9f, 0x6a, 0xaf, 0xba, 0x0a, 0x3c, 0x81, 0xa1, 0x20, + 0x39, 0x81, 0x6c, 0x70, 0x56, 0x83, 0x05, 0x68, 0xfb, 0x77, 0x87, 0x6d, 0x3c, 0x33, 0xa0, 0xbb, + 0xc5, 0x0e, 0x39, 0x04, 0x22, 0xa9, 0x86, 0x86, 0x7f, 0xcc, 0x1a, 0x22, 0x8e, 0xf1, 0x04, 0xa2, + 0x5d, 0x50, 0x98, 0xe4, 0x57, 0x7e, 0x2b, 0xa8, 0x06, 0xf9, 0x57, 0xcc, 0x8d, 0xa4, 0x11, 0xfd, + 0x18, 0xac, 0x49, 0x79, 0x03, 0x98, 0xa2, 0x97, 0x17, 0xe2, 0xfc, 0x21, 0x6b, 0xa4, 0x06, 0x74, + 0x80, 0x53, 0x11, 0x93, 0x84, 0xfc, 0x7f, 0xbe, 0xd6, 0x69, 0xcd, 0x29, 0x5f, 0x99, 0x16, 0x54, + 0x55, 0xed, 0x90, 0x35, 0x2a, 0x38, 0xbf, 0xcb, 0xd8, 0x18, 0x74, 0x08, 0x8a, 0xc4, 0x10, 0xe6, + 0x0e, 0x7e, 0x09, 0xb7, 0x79, 0x8e, 0xc5, 0x14, 0x53, 0x3a, 0xdf, 0x2a, 0xf9, 0xd4, 0x57, 0x83, + 0x3b, 0x3f, 0xbc, 0x3a, 0x6d, 0x3a, 0xaf, 0x4f, 0x9b, 0xce, 0x3f, 0xa7, 0x4d, 0xe7, 0xd7, 0xb3, + 0xe6, 0xd2, 0xeb, 0xb3, 0xe6, 0xd2, 0x9f, 0x67, 0xcd, 0xa5, 0x9f, 0xbe, 0x1e, 0x4a, 0x1a, 0xa5, + 0x7d, 0x2f, 0xc4, 0xc4, 0xef, 0x4b, 0xea, 0x8b, 0x68, 0x08, 0xe6, 0xff, 0xa7, 0x70, 0x24, 0xa4, + 0xf2, 0x7f, 0xf1, 0x2b, 0x0b, 0x96, 0xa6, 0x63, 0x30, 0x76, 0xcd, 0xf6, 0x6f, 0x64, 0xeb, 0xf3, + 0xb3, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0x5c, 0xd5, 0x41, 0x9f, 0xd5, 0x07, 0x00, 0x00, +} + +func (m *CoinTransfer) 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 *CoinTransfer) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CoinTransfer) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.OverrideToWithInitiator { + i-- + if m.OverrideToWithInitiator { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x20 + } + if m.OverrideFromWithApproverAddress { + i-- + if m.OverrideFromWithApproverAddress { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } + if len(m.Coins) > 0 { + for iNdEx := len(m.Coins) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Coins[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalConditions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.To) > 0 { + i -= len(m.To) + copy(dAtA[i:], m.To) + i = encodeVarintApprovalConditions(dAtA, i, uint64(len(m.To))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MustOwnTokens) 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 *MustOwnTokens) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MustOwnTokens) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.OwnershipCheckParty) > 0 { + i -= len(m.OwnershipCheckParty) + copy(dAtA[i:], m.OwnershipCheckParty) + i = encodeVarintApprovalConditions(dAtA, i, uint64(len(m.OwnershipCheckParty))) + i-- + dAtA[i] = 0x3a + } + if m.MustSatisfyForAllAssets { + i-- + if m.MustSatisfyForAllAssets { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x30 + } + if m.OverrideWithCurrentTime { + i-- + if m.OverrideWithCurrentTime { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x28 + } + if len(m.TokenIds) > 0 { + for iNdEx := len(m.TokenIds) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TokenIds[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalConditions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.OwnershipTimes) > 0 { + for iNdEx := len(m.OwnershipTimes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.OwnershipTimes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalConditions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if m.AmountRange != nil { + { + size, err := m.AmountRange.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalConditions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + { + size := m.CollectionId.Size() + i -= size + if _, err := m.CollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintApprovalConditions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *DynamicStoreChallenge) 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 *DynamicStoreChallenge) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *DynamicStoreChallenge) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.OwnershipCheckParty) > 0 { + i -= len(m.OwnershipCheckParty) + copy(dAtA[i:], m.OwnershipCheckParty) + i = encodeVarintApprovalConditions(dAtA, i, uint64(len(m.OwnershipCheckParty))) + i-- + dAtA[i] = 0x12 + } + { + size := m.StoreId.Size() + i -= size + if _, err := m.StoreId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintApprovalConditions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *AddressChecks) 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 *AddressChecks) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *AddressChecks) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.MustNotBeLiquidityPool { + i-- + if m.MustNotBeLiquidityPool { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x20 + } + if m.MustBeLiquidityPool { + i-- + if m.MustBeLiquidityPool { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } + if m.MustNotBeEvmContract { + i-- + if m.MustNotBeEvmContract { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 + } + if m.MustBeEvmContract { + i-- + if m.MustBeEvmContract { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *AltTimeChecks) 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 *AltTimeChecks) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *AltTimeChecks) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.TimezoneOffsetNegative { + i-- + if m.TimezoneOffsetNegative { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x38 + } + { + size := m.TimezoneOffsetMinutes.Size() + i -= size + if _, err := m.TimezoneOffsetMinutes.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintApprovalConditions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + if len(m.OfflineWeeksOfYear) > 0 { + for iNdEx := len(m.OfflineWeeksOfYear) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.OfflineWeeksOfYear[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalConditions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + } + if len(m.OfflineDaysOfMonth) > 0 { + for iNdEx := len(m.OfflineDaysOfMonth) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.OfflineDaysOfMonth[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalConditions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.OfflineMonths) > 0 { + for iNdEx := len(m.OfflineMonths) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.OfflineMonths[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalConditions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.OfflineDays) > 0 { + for iNdEx := len(m.OfflineDays) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.OfflineDays[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalConditions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.OfflineHours) > 0 { + for iNdEx := len(m.OfflineHours) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.OfflineHours[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalConditions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *UserApprovalSettings) 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 *UserApprovalSettings) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *UserApprovalSettings) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.UserRoyalties != nil { + { + size, err := m.UserRoyalties.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalConditions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if m.DisableUserCoinTransfers { + i-- + if m.DisableUserCoinTransfers { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 + } + if len(m.AllowedDenoms) > 0 { + for iNdEx := len(m.AllowedDenoms) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.AllowedDenoms[iNdEx]) + copy(dAtA[i:], m.AllowedDenoms[iNdEx]) + i = encodeVarintApprovalConditions(dAtA, i, uint64(len(m.AllowedDenoms[iNdEx]))) + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *UserRoyalties) 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 *UserRoyalties) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *UserRoyalties) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.PayoutAddress) > 0 { + i -= len(m.PayoutAddress) + copy(dAtA[i:], m.PayoutAddress) + i = encodeVarintApprovalConditions(dAtA, i, uint64(len(m.PayoutAddress))) + i-- + dAtA[i] = 0x12 + } + { + size := m.Percentage.Size() + i -= size + if _, err := m.Percentage.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintApprovalConditions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func encodeVarintApprovalConditions(dAtA []byte, offset int, v uint64) int { + offset -= sovApprovalConditions(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *CoinTransfer) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.To) + if l > 0 { + n += 1 + l + sovApprovalConditions(uint64(l)) + } + if len(m.Coins) > 0 { + for _, e := range m.Coins { + l = e.Size() + n += 1 + l + sovApprovalConditions(uint64(l)) + } + } + if m.OverrideFromWithApproverAddress { + n += 2 + } + if m.OverrideToWithInitiator { + n += 2 + } + return n +} + +func (m *MustOwnTokens) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.CollectionId.Size() + n += 1 + l + sovApprovalConditions(uint64(l)) + if m.AmountRange != nil { + l = m.AmountRange.Size() + n += 1 + l + sovApprovalConditions(uint64(l)) + } + if len(m.OwnershipTimes) > 0 { + for _, e := range m.OwnershipTimes { + l = e.Size() + n += 1 + l + sovApprovalConditions(uint64(l)) + } + } + if len(m.TokenIds) > 0 { + for _, e := range m.TokenIds { + l = e.Size() + n += 1 + l + sovApprovalConditions(uint64(l)) + } + } + if m.OverrideWithCurrentTime { + n += 2 + } + if m.MustSatisfyForAllAssets { + n += 2 + } + l = len(m.OwnershipCheckParty) + if l > 0 { + n += 1 + l + sovApprovalConditions(uint64(l)) + } + return n +} + +func (m *DynamicStoreChallenge) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.StoreId.Size() + n += 1 + l + sovApprovalConditions(uint64(l)) + l = len(m.OwnershipCheckParty) + if l > 0 { + n += 1 + l + sovApprovalConditions(uint64(l)) + } + return n +} + +func (m *AddressChecks) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.MustBeEvmContract { + n += 2 + } + if m.MustNotBeEvmContract { + n += 2 + } + if m.MustBeLiquidityPool { + n += 2 + } + if m.MustNotBeLiquidityPool { + n += 2 + } + return n +} + +func (m *AltTimeChecks) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.OfflineHours) > 0 { + for _, e := range m.OfflineHours { + l = e.Size() + n += 1 + l + sovApprovalConditions(uint64(l)) + } + } + if len(m.OfflineDays) > 0 { + for _, e := range m.OfflineDays { + l = e.Size() + n += 1 + l + sovApprovalConditions(uint64(l)) + } + } + if len(m.OfflineMonths) > 0 { + for _, e := range m.OfflineMonths { + l = e.Size() + n += 1 + l + sovApprovalConditions(uint64(l)) + } + } + if len(m.OfflineDaysOfMonth) > 0 { + for _, e := range m.OfflineDaysOfMonth { + l = e.Size() + n += 1 + l + sovApprovalConditions(uint64(l)) + } + } + if len(m.OfflineWeeksOfYear) > 0 { + for _, e := range m.OfflineWeeksOfYear { + l = e.Size() + n += 1 + l + sovApprovalConditions(uint64(l)) + } + } + l = m.TimezoneOffsetMinutes.Size() + n += 1 + l + sovApprovalConditions(uint64(l)) + if m.TimezoneOffsetNegative { + n += 2 + } + return n +} + +func (m *UserApprovalSettings) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.AllowedDenoms) > 0 { + for _, s := range m.AllowedDenoms { + l = len(s) + n += 1 + l + sovApprovalConditions(uint64(l)) + } + } + if m.DisableUserCoinTransfers { + n += 2 + } + if m.UserRoyalties != nil { + l = m.UserRoyalties.Size() + n += 1 + l + sovApprovalConditions(uint64(l)) + } + return n +} + +func (m *UserRoyalties) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Percentage.Size() + n += 1 + l + sovApprovalConditions(uint64(l)) + l = len(m.PayoutAddress) + if l > 0 { + n += 1 + l + sovApprovalConditions(uint64(l)) + } + return n +} + +func sovApprovalConditions(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozApprovalConditions(x uint64) (n int) { + return sovApprovalConditions(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *CoinTransfer) 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 ErrIntOverflowApprovalConditions + } + 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: CoinTransfer: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CoinTransfer: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field To", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalConditions + } + 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 ErrInvalidLengthApprovalConditions + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovalConditions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.To = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Coins", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalConditions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalConditions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalConditions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Coins = append(m.Coins, &types.Coin{}) + if err := m.Coins[len(m.Coins)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field OverrideFromWithApproverAddress", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalConditions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.OverrideFromWithApproverAddress = bool(v != 0) + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field OverrideToWithInitiator", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalConditions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.OverrideToWithInitiator = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipApprovalConditions(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApprovalConditions + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MustOwnTokens) 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 ErrIntOverflowApprovalConditions + } + 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: MustOwnTokens: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MustOwnTokens: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalConditions + } + 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 ErrInvalidLengthApprovalConditions + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovalConditions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.CollectionId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AmountRange", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalConditions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalConditions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalConditions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AmountRange == nil { + m.AmountRange = &UintRange{} + } + if err := m.AmountRange.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OwnershipTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalConditions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalConditions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalConditions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OwnershipTimes = append(m.OwnershipTimes, &UintRange{}) + if err := m.OwnershipTimes[len(m.OwnershipTimes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TokenIds", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalConditions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalConditions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalConditions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TokenIds = append(m.TokenIds, &UintRange{}) + if err := m.TokenIds[len(m.TokenIds)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field OverrideWithCurrentTime", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalConditions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.OverrideWithCurrentTime = bool(v != 0) + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MustSatisfyForAllAssets", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalConditions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.MustSatisfyForAllAssets = bool(v != 0) + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OwnershipCheckParty", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalConditions + } + 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 ErrInvalidLengthApprovalConditions + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovalConditions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OwnershipCheckParty = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApprovalConditions(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApprovalConditions + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DynamicStoreChallenge) 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 ErrIntOverflowApprovalConditions + } + 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: DynamicStoreChallenge: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DynamicStoreChallenge: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StoreId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalConditions + } + 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 ErrInvalidLengthApprovalConditions + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovalConditions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.StoreId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OwnershipCheckParty", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalConditions + } + 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 ErrInvalidLengthApprovalConditions + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovalConditions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OwnershipCheckParty = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApprovalConditions(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApprovalConditions + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *AddressChecks) 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 ErrIntOverflowApprovalConditions + } + 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: AddressChecks: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AddressChecks: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MustBeEvmContract", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalConditions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.MustBeEvmContract = bool(v != 0) + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MustNotBeEvmContract", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalConditions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.MustNotBeEvmContract = bool(v != 0) + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MustBeLiquidityPool", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalConditions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.MustBeLiquidityPool = bool(v != 0) + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MustNotBeLiquidityPool", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalConditions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.MustNotBeLiquidityPool = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipApprovalConditions(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApprovalConditions + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *AltTimeChecks) 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 ErrIntOverflowApprovalConditions + } + 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: AltTimeChecks: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AltTimeChecks: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OfflineHours", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalConditions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalConditions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalConditions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OfflineHours = append(m.OfflineHours, &UintRange{}) + if err := m.OfflineHours[len(m.OfflineHours)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OfflineDays", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalConditions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalConditions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalConditions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OfflineDays = append(m.OfflineDays, &UintRange{}) + if err := m.OfflineDays[len(m.OfflineDays)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OfflineMonths", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalConditions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalConditions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalConditions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OfflineMonths = append(m.OfflineMonths, &UintRange{}) + if err := m.OfflineMonths[len(m.OfflineMonths)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OfflineDaysOfMonth", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalConditions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalConditions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalConditions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OfflineDaysOfMonth = append(m.OfflineDaysOfMonth, &UintRange{}) + if err := m.OfflineDaysOfMonth[len(m.OfflineDaysOfMonth)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OfflineWeeksOfYear", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalConditions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalConditions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalConditions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OfflineWeeksOfYear = append(m.OfflineWeeksOfYear, &UintRange{}) + if err := m.OfflineWeeksOfYear[len(m.OfflineWeeksOfYear)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TimezoneOffsetMinutes", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalConditions + } + 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 ErrInvalidLengthApprovalConditions + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovalConditions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.TimezoneOffsetMinutes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TimezoneOffsetNegative", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalConditions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.TimezoneOffsetNegative = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipApprovalConditions(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApprovalConditions + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *UserApprovalSettings) 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 ErrIntOverflowApprovalConditions + } + 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: UserApprovalSettings: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: UserApprovalSettings: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AllowedDenoms", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalConditions + } + 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 ErrInvalidLengthApprovalConditions + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovalConditions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AllowedDenoms = append(m.AllowedDenoms, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DisableUserCoinTransfers", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalConditions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.DisableUserCoinTransfers = bool(v != 0) + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UserRoyalties", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalConditions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalConditions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalConditions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.UserRoyalties == nil { + m.UserRoyalties = &UserRoyalties{} + } + if err := m.UserRoyalties.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApprovalConditions(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApprovalConditions + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *UserRoyalties) 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 ErrIntOverflowApprovalConditions + } + 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: UserRoyalties: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: UserRoyalties: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Percentage", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalConditions + } + 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 ErrInvalidLengthApprovalConditions + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovalConditions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Percentage.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PayoutAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalConditions + } + 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 ErrInvalidLengthApprovalConditions + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovalConditions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PayoutAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApprovalConditions(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApprovalConditions + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipApprovalConditions(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, ErrIntOverflowApprovalConditions + } + 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, ErrIntOverflowApprovalConditions + } + 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, ErrIntOverflowApprovalConditions + } + 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, ErrInvalidLengthApprovalConditions + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupApprovalConditions + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthApprovalConditions + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthApprovalConditions = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowApprovalConditions = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupApprovalConditions = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/tokenization/types/v29/approval_criteria.pb.go b/x/tokenization/types/v29/approval_criteria.pb.go new file mode 100644 index 00000000..16078b6b --- /dev/null +++ b/x/tokenization/types/v29/approval_criteria.pb.go @@ -0,0 +1,4013 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: tokenization/v29/approval_criteria.proto + +package v29 + +import ( + fmt "fmt" + _ "github.com/cosmos/gogoproto/gogoproto" + 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 + +// ApprovalCriteria defines the criteria for approving transfers. +// All criteria must be satisfied for the approval to be considered valid. +type ApprovalCriteria struct { + // Merkle challenges that must be satisfied for approval. The initiator must provide valid Merkle proofs + // that satisfy all specified challenges. Each challenge requires a proof that leads to a specific root hash. + MerkleChallenges []*MerkleChallenge `protobuf:"bytes,1,rep,name=merkleChallenges,proto3" json:"merkleChallenges,omitempty"` + // Predetermined balances that must be used for each approval. Defines the exact token amounts and IDs + // that can be transferred when using this approval. + PredeterminedBalances *PredeterminedBalances `protobuf:"bytes,2,opt,name=predeterminedBalances,proto3" json:"predeterminedBalances,omitempty"` + // Threshold limit of amounts that can be transferred using this approval. Tracks cumulative amounts + // transferred and enforces maximum limits per approval. + ApprovalAmounts *ApprovalAmounts `protobuf:"bytes,3,opt,name=approvalAmounts,proto3" json:"approvalAmounts,omitempty"` + // Maximum number of transfers that can be processed using this approval. Tracks the count of transfers + // and enforces the limit to prevent exceeding the allowed number of uses. + MaxNumTransfers *MaxNumTransfers `protobuf:"bytes,4,opt,name=maxNumTransfers,proto3" json:"maxNumTransfers,omitempty"` + // The sdk.Coins that need to be transferred for approval. Defines required coin transfers (e.g., fees, + // royalties) that must be executed alongside the token transfer for the approval to be valid. + CoinTransfers []*CoinTransfer `protobuf:"bytes,5,rep,name=coinTransfers,proto3" json:"coinTransfers,omitempty"` + // Require the "to" address to be equal to the "initiated by" address for approval. + // If true, only transfers where the recipient matches the initiator are allowed. + RequireToEqualsInitiatedBy bool `protobuf:"varint,6,opt,name=requireToEqualsInitiatedBy,proto3" json:"requireToEqualsInitiatedBy,omitempty"` + // Require the "from" address to be equal to the "initiated by" address for approval. + // If true, only transfers where the sender matches the initiator are allowed. + RequireFromEqualsInitiatedBy bool `protobuf:"varint,7,opt,name=requireFromEqualsInitiatedBy,proto3" json:"requireFromEqualsInitiatedBy,omitempty"` + // Require the "to" address to not be equal to the "initiated by" address for approval. + // If true, transfers where the recipient equals the initiator are forbidden. + RequireToDoesNotEqualInitiatedBy bool `protobuf:"varint,8,opt,name=requireToDoesNotEqualInitiatedBy,proto3" json:"requireToDoesNotEqualInitiatedBy,omitempty"` + // Require the "from" address to not be equal to the "initiated by" address for approval. + // If true, transfers where the sender equals the initiator are forbidden. + RequireFromDoesNotEqualInitiatedBy bool `protobuf:"varint,9,opt,name=requireFromDoesNotEqualInitiatedBy,proto3" json:"requireFromDoesNotEqualInitiatedBy,omitempty"` + // Overrides the user's outgoing approvals for approval. If true, this collection-level approval + // takes precedence over any outgoing approvals defined by the sender, allowing the collection to + // control outgoing transfer behavior. + OverridesFromOutgoingApprovals bool `protobuf:"varint,10,opt,name=overridesFromOutgoingApprovals,proto3" json:"overridesFromOutgoingApprovals,omitempty"` + // Overrides the user's incoming approvals for approval. If true, this collection-level approval + // takes precedence over any incoming approvals defined by the recipient, allowing the collection to + // control incoming transfer behavior. + OverridesToIncomingApprovals bool `protobuf:"varint,11,opt,name=overridesToIncomingApprovals,proto3" json:"overridesToIncomingApprovals,omitempty"` + // Auto-deletion options for this approval. Defines conditions under which this approval should be + // automatically deleted (e.g., after a certain number of uses or time period). + AutoDeletionOptions *AutoDeletionOptions `protobuf:"bytes,12,opt,name=autoDeletionOptions,proto3" json:"autoDeletionOptions,omitempty"` + // Must own tokens for approval. Defines token ownership requirements that must be satisfied for + // the approval to be valid. The initiator must own the specified tokens at the specified ownership times. + MustOwnTokens []*MustOwnTokens `protobuf:"bytes,14,rep,name=mustOwnTokens,proto3" json:"mustOwnTokens,omitempty"` + // Dynamic store challenges that the initiator must pass for approval. The initiator must provide + // valid proofs that satisfy all specified dynamic store challenges (e.g., key-value store lookups). + DynamicStoreChallenges []*DynamicStoreChallenge `protobuf:"bytes,15,rep,name=dynamicStoreChallenges,proto3" json:"dynamicStoreChallenges,omitempty"` + // ETH signature challenges that the initiator must pass for approval. The initiator must provide + // valid Ethereum signatures for all specified challenges. Each signature can only be used once. + EthSignatureChallenges []*ETHSignatureChallenge `protobuf:"bytes,16,rep,name=ethSignatureChallenges,proto3" json:"ethSignatureChallenges,omitempty"` + // Address checks for the sender of the transfer. Validates that the sender address meets the + // specified criteria (e.g., whitelist, blacklist, protocol address requirements). + SenderChecks *AddressChecks `protobuf:"bytes,17,opt,name=senderChecks,proto3" json:"senderChecks,omitempty"` + // Address checks for the recipient of the transfer. Validates that the recipient address meets the + // specified criteria (e.g., whitelist, blacklist, protocol address requirements). + RecipientChecks *AddressChecks `protobuf:"bytes,18,opt,name=recipientChecks,proto3" json:"recipientChecks,omitempty"` + // Address checks for the initiator of the transfer. Validates that the initiator address meets the + // specified criteria (e.g., whitelist, blacklist, protocol address requirements). + InitiatorChecks *AddressChecks `protobuf:"bytes,19,opt,name=initiatorChecks,proto3" json:"initiatorChecks,omitempty"` + // Alternative time-based checks for approval denial (offline hours/days). Defines time periods + // during which this approval should be denied, such as specific hours of the day or days of the week. + AltTimeChecks *AltTimeChecks `protobuf:"bytes,20,opt,name=altTimeChecks,proto3" json:"altTimeChecks,omitempty"` + // If true, this approval must be explicitly prioritized in PrioritizedApprovals to be used. + // This allows fine-grained control over which approvals are applied when multiple approvals could match. + MustPrioritize bool `protobuf:"varint,21,opt,name=mustPrioritize,proto3" json:"mustPrioritize,omitempty"` + // Voting challenges that must be satisfied for approval. The initiator must provide + // valid votes that meet the quorum threshold for all specified challenges. + VotingChallenges []*VotingChallenge `protobuf:"bytes,22,rep,name=votingChallenges,proto3" json:"votingChallenges,omitempty"` + // If true, this collection approval allows backed minting operations (CosmosCoinBackedPath). + // When false, this approval cannot be used for transfers involving backed minting addresses. + // This prevents accidental allowances when toListIds is "All". + AllowBackedMinting bool `protobuf:"varint,23,opt,name=allowBackedMinting,proto3" json:"allowBackedMinting,omitempty"` + // If true, this collection approval allows special wrapping operations (CosmosCoinWrapperPath). + // When false, this approval cannot be used for transfers involving wrapping addresses. + // This prevents accidental allowances when toListIds is "All". + AllowSpecialWrapping bool `protobuf:"varint,24,opt,name=allowSpecialWrapping,proto3" json:"allowSpecialWrapping,omitempty"` + // EVM query challenges that must pass for approval. Read-only contract queries + // that verify external EVM state (e.g., token ownership in another contract). + EvmQueryChallenges []*EVMQueryChallenge `protobuf:"bytes,25,rep,name=evmQueryChallenges,proto3" json:"evmQueryChallenges,omitempty"` + // Issuer-imposed constraints on user-level coin transfers. Propagated to user-level approvals + // during greedy transfer matching (same pattern as userRoyalties). Only applicable on collection-level approvals. + // If conflicting settings across multiple matched approvals, the transfer is rejected (like royalties). + UserApprovalSettings *UserApprovalSettings `protobuf:"bytes,26,opt,name=userApprovalSettings,proto3" json:"userApprovalSettings,omitempty"` +} + +func (m *ApprovalCriteria) Reset() { *m = ApprovalCriteria{} } +func (m *ApprovalCriteria) String() string { return proto.CompactTextString(m) } +func (*ApprovalCriteria) ProtoMessage() {} +func (*ApprovalCriteria) Descriptor() ([]byte, []int) { + return fileDescriptor_c373d815c4655b4d, []int{0} +} +func (m *ApprovalCriteria) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ApprovalCriteria) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ApprovalCriteria.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 *ApprovalCriteria) XXX_Merge(src proto.Message) { + xxx_messageInfo_ApprovalCriteria.Merge(m, src) +} +func (m *ApprovalCriteria) XXX_Size() int { + return m.Size() +} +func (m *ApprovalCriteria) XXX_DiscardUnknown() { + xxx_messageInfo_ApprovalCriteria.DiscardUnknown(m) +} + +var xxx_messageInfo_ApprovalCriteria proto.InternalMessageInfo + +func (m *ApprovalCriteria) GetMerkleChallenges() []*MerkleChallenge { + if m != nil { + return m.MerkleChallenges + } + return nil +} + +func (m *ApprovalCriteria) GetPredeterminedBalances() *PredeterminedBalances { + if m != nil { + return m.PredeterminedBalances + } + return nil +} + +func (m *ApprovalCriteria) GetApprovalAmounts() *ApprovalAmounts { + if m != nil { + return m.ApprovalAmounts + } + return nil +} + +func (m *ApprovalCriteria) GetMaxNumTransfers() *MaxNumTransfers { + if m != nil { + return m.MaxNumTransfers + } + return nil +} + +func (m *ApprovalCriteria) GetCoinTransfers() []*CoinTransfer { + if m != nil { + return m.CoinTransfers + } + return nil +} + +func (m *ApprovalCriteria) GetRequireToEqualsInitiatedBy() bool { + if m != nil { + return m.RequireToEqualsInitiatedBy + } + return false +} + +func (m *ApprovalCriteria) GetRequireFromEqualsInitiatedBy() bool { + if m != nil { + return m.RequireFromEqualsInitiatedBy + } + return false +} + +func (m *ApprovalCriteria) GetRequireToDoesNotEqualInitiatedBy() bool { + if m != nil { + return m.RequireToDoesNotEqualInitiatedBy + } + return false +} + +func (m *ApprovalCriteria) GetRequireFromDoesNotEqualInitiatedBy() bool { + if m != nil { + return m.RequireFromDoesNotEqualInitiatedBy + } + return false +} + +func (m *ApprovalCriteria) GetOverridesFromOutgoingApprovals() bool { + if m != nil { + return m.OverridesFromOutgoingApprovals + } + return false +} + +func (m *ApprovalCriteria) GetOverridesToIncomingApprovals() bool { + if m != nil { + return m.OverridesToIncomingApprovals + } + return false +} + +func (m *ApprovalCriteria) GetAutoDeletionOptions() *AutoDeletionOptions { + if m != nil { + return m.AutoDeletionOptions + } + return nil +} + +func (m *ApprovalCriteria) GetMustOwnTokens() []*MustOwnTokens { + if m != nil { + return m.MustOwnTokens + } + return nil +} + +func (m *ApprovalCriteria) GetDynamicStoreChallenges() []*DynamicStoreChallenge { + if m != nil { + return m.DynamicStoreChallenges + } + return nil +} + +func (m *ApprovalCriteria) GetEthSignatureChallenges() []*ETHSignatureChallenge { + if m != nil { + return m.EthSignatureChallenges + } + return nil +} + +func (m *ApprovalCriteria) GetSenderChecks() *AddressChecks { + if m != nil { + return m.SenderChecks + } + return nil +} + +func (m *ApprovalCriteria) GetRecipientChecks() *AddressChecks { + if m != nil { + return m.RecipientChecks + } + return nil +} + +func (m *ApprovalCriteria) GetInitiatorChecks() *AddressChecks { + if m != nil { + return m.InitiatorChecks + } + return nil +} + +func (m *ApprovalCriteria) GetAltTimeChecks() *AltTimeChecks { + if m != nil { + return m.AltTimeChecks + } + return nil +} + +func (m *ApprovalCriteria) GetMustPrioritize() bool { + if m != nil { + return m.MustPrioritize + } + return false +} + +func (m *ApprovalCriteria) GetVotingChallenges() []*VotingChallenge { + if m != nil { + return m.VotingChallenges + } + return nil +} + +func (m *ApprovalCriteria) GetAllowBackedMinting() bool { + if m != nil { + return m.AllowBackedMinting + } + return false +} + +func (m *ApprovalCriteria) GetAllowSpecialWrapping() bool { + if m != nil { + return m.AllowSpecialWrapping + } + return false +} + +func (m *ApprovalCriteria) GetEvmQueryChallenges() []*EVMQueryChallenge { + if m != nil { + return m.EvmQueryChallenges + } + return nil +} + +func (m *ApprovalCriteria) GetUserApprovalSettings() *UserApprovalSettings { + if m != nil { + return m.UserApprovalSettings + } + return nil +} + +// OutgoingApprovalCriteria defines the criteria for approving outgoing transfers. +// This is used for user-level outgoing approvals and only includes fields relevant to outgoing transfers. +// All criteria must be satisfied for the approval to be considered valid. +type OutgoingApprovalCriteria struct { + // Merkle challenges that must be satisfied for approval. The initiator must provide valid Merkle proofs + // that satisfy all specified challenges. Each challenge requires a proof that leads to a specific root hash. + MerkleChallenges []*MerkleChallenge `protobuf:"bytes,1,rep,name=merkleChallenges,proto3" json:"merkleChallenges,omitempty"` + // Predetermined balances that must be used for each approval. Defines the exact token amounts and IDs + // that can be transferred when using this approval. + PredeterminedBalances *PredeterminedBalances `protobuf:"bytes,2,opt,name=predeterminedBalances,proto3" json:"predeterminedBalances,omitempty"` + // Threshold limit of amounts that can be transferred using this approval. Tracks cumulative amounts + // transferred and enforces maximum limits per approval. + ApprovalAmounts *ApprovalAmounts `protobuf:"bytes,3,opt,name=approvalAmounts,proto3" json:"approvalAmounts,omitempty"` + // Maximum number of transfers that can be processed using this approval. Tracks the count of transfers + // and enforces the limit to prevent exceeding the allowed number of uses. + MaxNumTransfers *MaxNumTransfers `protobuf:"bytes,4,opt,name=maxNumTransfers,proto3" json:"maxNumTransfers,omitempty"` + // The sdk.Coins that need to be transferred for approval. Defines required coin transfers (e.g., fees, + // royalties) that must be executed alongside the token transfer for the approval to be valid. + CoinTransfers []*CoinTransfer `protobuf:"bytes,5,rep,name=coinTransfers,proto3" json:"coinTransfers,omitempty"` + // Require the "to" address to be equal to the "initiated by" address for approval. + // If true, only transfers where the recipient matches the initiator are allowed. + RequireToEqualsInitiatedBy bool `protobuf:"varint,6,opt,name=requireToEqualsInitiatedBy,proto3" json:"requireToEqualsInitiatedBy,omitempty"` + // Require the "to" address to not be equal to the "initiated by" address for approval. + // If true, transfers where the recipient equals the initiator are forbidden. + RequireToDoesNotEqualInitiatedBy bool `protobuf:"varint,7,opt,name=requireToDoesNotEqualInitiatedBy,proto3" json:"requireToDoesNotEqualInitiatedBy,omitempty"` + // Auto-deletion options for this approval. Defines conditions under which this approval should be + // automatically deleted (e.g., after a certain number of uses or time period). + AutoDeletionOptions *AutoDeletionOptions `protobuf:"bytes,8,opt,name=autoDeletionOptions,proto3" json:"autoDeletionOptions,omitempty"` + // Must own tokens for approval. Defines token ownership requirements that must be satisfied for + // the approval to be valid. The initiator must own the specified tokens at the specified ownership times. + MustOwnTokens []*MustOwnTokens `protobuf:"bytes,9,rep,name=mustOwnTokens,proto3" json:"mustOwnTokens,omitempty"` + // Dynamic store challenges that the initiator must pass for approval. The initiator must provide + // valid proofs that satisfy all specified dynamic store challenges (e.g., key-value store lookups). + DynamicStoreChallenges []*DynamicStoreChallenge `protobuf:"bytes,10,rep,name=dynamicStoreChallenges,proto3" json:"dynamicStoreChallenges,omitempty"` + // ETH signature challenges that the initiator must pass for approval. The initiator must provide + // valid Ethereum signatures for all specified challenges. Each signature can only be used once. + EthSignatureChallenges []*ETHSignatureChallenge `protobuf:"bytes,11,rep,name=ethSignatureChallenges,proto3" json:"ethSignatureChallenges,omitempty"` + // Address checks for the recipient of the transfer. Validates that the recipient address meets the + // specified criteria (e.g., whitelist, blacklist, protocol address requirements). + // Note: No sender checks are included for outgoing approvals since the sender is the user themselves. + RecipientChecks *AddressChecks `protobuf:"bytes,12,opt,name=recipientChecks,proto3" json:"recipientChecks,omitempty"` + // Address checks for the initiator of the transfer. Validates that the initiator address meets the + // specified criteria (e.g., whitelist, blacklist, protocol address requirements). + InitiatorChecks *AddressChecks `protobuf:"bytes,13,opt,name=initiatorChecks,proto3" json:"initiatorChecks,omitempty"` + // Alternative time-based checks for approval denial (offline hours/days). Defines time periods + // during which this approval should be denied, such as specific hours of the day or days of the week. + AltTimeChecks *AltTimeChecks `protobuf:"bytes,14,opt,name=altTimeChecks,proto3" json:"altTimeChecks,omitempty"` + // If true, this approval must be explicitly prioritized in PrioritizedApprovals to be used. + // This allows fine-grained control over which approvals are applied when multiple approvals could match. + MustPrioritize bool `protobuf:"varint,15,opt,name=mustPrioritize,proto3" json:"mustPrioritize,omitempty"` + // Voting challenges that must be satisfied for approval. The initiator must provide + // valid votes that meet the quorum threshold for all specified challenges. + VotingChallenges []*VotingChallenge `protobuf:"bytes,16,rep,name=votingChallenges,proto3" json:"votingChallenges,omitempty"` + // EVM query challenges that must pass for approval. Read-only contract queries + // that verify external EVM state (e.g., token ownership in another contract). + EvmQueryChallenges []*EVMQueryChallenge `protobuf:"bytes,17,rep,name=evmQueryChallenges,proto3" json:"evmQueryChallenges,omitempty"` +} + +func (m *OutgoingApprovalCriteria) Reset() { *m = OutgoingApprovalCriteria{} } +func (m *OutgoingApprovalCriteria) String() string { return proto.CompactTextString(m) } +func (*OutgoingApprovalCriteria) ProtoMessage() {} +func (*OutgoingApprovalCriteria) Descriptor() ([]byte, []int) { + return fileDescriptor_c373d815c4655b4d, []int{1} +} +func (m *OutgoingApprovalCriteria) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *OutgoingApprovalCriteria) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_OutgoingApprovalCriteria.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 *OutgoingApprovalCriteria) XXX_Merge(src proto.Message) { + xxx_messageInfo_OutgoingApprovalCriteria.Merge(m, src) +} +func (m *OutgoingApprovalCriteria) XXX_Size() int { + return m.Size() +} +func (m *OutgoingApprovalCriteria) XXX_DiscardUnknown() { + xxx_messageInfo_OutgoingApprovalCriteria.DiscardUnknown(m) +} + +var xxx_messageInfo_OutgoingApprovalCriteria proto.InternalMessageInfo + +func (m *OutgoingApprovalCriteria) GetMerkleChallenges() []*MerkleChallenge { + if m != nil { + return m.MerkleChallenges + } + return nil +} + +func (m *OutgoingApprovalCriteria) GetPredeterminedBalances() *PredeterminedBalances { + if m != nil { + return m.PredeterminedBalances + } + return nil +} + +func (m *OutgoingApprovalCriteria) GetApprovalAmounts() *ApprovalAmounts { + if m != nil { + return m.ApprovalAmounts + } + return nil +} + +func (m *OutgoingApprovalCriteria) GetMaxNumTransfers() *MaxNumTransfers { + if m != nil { + return m.MaxNumTransfers + } + return nil +} + +func (m *OutgoingApprovalCriteria) GetCoinTransfers() []*CoinTransfer { + if m != nil { + return m.CoinTransfers + } + return nil +} + +func (m *OutgoingApprovalCriteria) GetRequireToEqualsInitiatedBy() bool { + if m != nil { + return m.RequireToEqualsInitiatedBy + } + return false +} + +func (m *OutgoingApprovalCriteria) GetRequireToDoesNotEqualInitiatedBy() bool { + if m != nil { + return m.RequireToDoesNotEqualInitiatedBy + } + return false +} + +func (m *OutgoingApprovalCriteria) GetAutoDeletionOptions() *AutoDeletionOptions { + if m != nil { + return m.AutoDeletionOptions + } + return nil +} + +func (m *OutgoingApprovalCriteria) GetMustOwnTokens() []*MustOwnTokens { + if m != nil { + return m.MustOwnTokens + } + return nil +} + +func (m *OutgoingApprovalCriteria) GetDynamicStoreChallenges() []*DynamicStoreChallenge { + if m != nil { + return m.DynamicStoreChallenges + } + return nil +} + +func (m *OutgoingApprovalCriteria) GetEthSignatureChallenges() []*ETHSignatureChallenge { + if m != nil { + return m.EthSignatureChallenges + } + return nil +} + +func (m *OutgoingApprovalCriteria) GetRecipientChecks() *AddressChecks { + if m != nil { + return m.RecipientChecks + } + return nil +} + +func (m *OutgoingApprovalCriteria) GetInitiatorChecks() *AddressChecks { + if m != nil { + return m.InitiatorChecks + } + return nil +} + +func (m *OutgoingApprovalCriteria) GetAltTimeChecks() *AltTimeChecks { + if m != nil { + return m.AltTimeChecks + } + return nil +} + +func (m *OutgoingApprovalCriteria) GetMustPrioritize() bool { + if m != nil { + return m.MustPrioritize + } + return false +} + +func (m *OutgoingApprovalCriteria) GetVotingChallenges() []*VotingChallenge { + if m != nil { + return m.VotingChallenges + } + return nil +} + +func (m *OutgoingApprovalCriteria) GetEvmQueryChallenges() []*EVMQueryChallenge { + if m != nil { + return m.EvmQueryChallenges + } + return nil +} + +// IncomingApprovalCriteria defines the criteria for approving incoming transfers. +// This is used for user-level incoming approvals and only includes fields relevant to incoming transfers. +// All criteria must be satisfied for the approval to be considered valid. +type IncomingApprovalCriteria struct { + // Merkle challenges that must be satisfied for approval. The initiator must provide valid Merkle proofs + // that satisfy all specified challenges. Each challenge requires a proof that leads to a specific root hash. + MerkleChallenges []*MerkleChallenge `protobuf:"bytes,1,rep,name=merkleChallenges,proto3" json:"merkleChallenges,omitempty"` + // Predetermined balances that must be used for each approval. Defines the exact token amounts and IDs + // that can be transferred when using this approval. + PredeterminedBalances *PredeterminedBalances `protobuf:"bytes,2,opt,name=predeterminedBalances,proto3" json:"predeterminedBalances,omitempty"` + // Threshold limit of amounts that can be transferred using this approval. Tracks cumulative amounts + // transferred and enforces maximum limits per approval. + ApprovalAmounts *ApprovalAmounts `protobuf:"bytes,3,opt,name=approvalAmounts,proto3" json:"approvalAmounts,omitempty"` + // Maximum number of transfers that can be processed using this approval. Tracks the count of transfers + // and enforces the limit to prevent exceeding the allowed number of uses. + MaxNumTransfers *MaxNumTransfers `protobuf:"bytes,4,opt,name=maxNumTransfers,proto3" json:"maxNumTransfers,omitempty"` + // The sdk.Coins that need to be transferred for approval. Defines required coin transfers (e.g., fees, + // royalties) that must be executed alongside the token transfer for the approval to be valid. + CoinTransfers []*CoinTransfer `protobuf:"bytes,5,rep,name=coinTransfers,proto3" json:"coinTransfers,omitempty"` + // Require the "from" address to be equal to the "initiated by" address for approval. + // If true, only transfers where the sender matches the initiator are allowed. + RequireFromEqualsInitiatedBy bool `protobuf:"varint,6,opt,name=requireFromEqualsInitiatedBy,proto3" json:"requireFromEqualsInitiatedBy,omitempty"` + // Require the "from" address to not be equal to the "initiated by" address for approval. + // If true, transfers where the sender equals the initiator are forbidden. + RequireFromDoesNotEqualInitiatedBy bool `protobuf:"varint,7,opt,name=requireFromDoesNotEqualInitiatedBy,proto3" json:"requireFromDoesNotEqualInitiatedBy,omitempty"` + // Auto-deletion options for this approval. Defines conditions under which this approval should be + // automatically deleted (e.g., after a certain number of uses or time period). + AutoDeletionOptions *AutoDeletionOptions `protobuf:"bytes,8,opt,name=autoDeletionOptions,proto3" json:"autoDeletionOptions,omitempty"` + // Must own tokens for approval. Defines token ownership requirements that must be satisfied for + // the approval to be valid. The initiator must own the specified tokens at the specified ownership times. + MustOwnTokens []*MustOwnTokens `protobuf:"bytes,9,rep,name=mustOwnTokens,proto3" json:"mustOwnTokens,omitempty"` + // Dynamic store challenges that the initiator must pass for approval. The initiator must provide + // valid proofs that satisfy all specified dynamic store challenges (e.g., key-value store lookups). + DynamicStoreChallenges []*DynamicStoreChallenge `protobuf:"bytes,10,rep,name=dynamicStoreChallenges,proto3" json:"dynamicStoreChallenges,omitempty"` + // ETH signature challenges that the initiator must pass for approval. The initiator must provide + // valid Ethereum signatures for all specified challenges. Each signature can only be used once. + EthSignatureChallenges []*ETHSignatureChallenge `protobuf:"bytes,11,rep,name=ethSignatureChallenges,proto3" json:"ethSignatureChallenges,omitempty"` + // Address checks for the sender of the transfer. Validates that the sender address meets the + // specified criteria (e.g., whitelist, blacklist, protocol address requirements). + // Note: No recipient checks are included for incoming approvals since the recipient is the user themselves. + SenderChecks *AddressChecks `protobuf:"bytes,12,opt,name=senderChecks,proto3" json:"senderChecks,omitempty"` + // Address checks for the initiator of the transfer. Validates that the initiator address meets the + // specified criteria (e.g., whitelist, blacklist, protocol address requirements). + InitiatorChecks *AddressChecks `protobuf:"bytes,13,opt,name=initiatorChecks,proto3" json:"initiatorChecks,omitempty"` + // Alternative time-based checks for approval denial (offline hours/days). Defines time periods + // during which this approval should be denied, such as specific hours of the day or days of the week. + AltTimeChecks *AltTimeChecks `protobuf:"bytes,14,opt,name=altTimeChecks,proto3" json:"altTimeChecks,omitempty"` + // If true, this approval must be explicitly prioritized in PrioritizedApprovals to be used. + // This allows fine-grained control over which approvals are applied when multiple approvals could match. + MustPrioritize bool `protobuf:"varint,15,opt,name=mustPrioritize,proto3" json:"mustPrioritize,omitempty"` + // Voting challenges that must be satisfied for approval. The initiator must provide + // valid votes that meet the quorum threshold for all specified challenges. + VotingChallenges []*VotingChallenge `protobuf:"bytes,16,rep,name=votingChallenges,proto3" json:"votingChallenges,omitempty"` + // EVM query challenges that must pass for approval. Read-only contract queries + // that verify external EVM state (e.g., token ownership in another contract). + EvmQueryChallenges []*EVMQueryChallenge `protobuf:"bytes,17,rep,name=evmQueryChallenges,proto3" json:"evmQueryChallenges,omitempty"` +} + +func (m *IncomingApprovalCriteria) Reset() { *m = IncomingApprovalCriteria{} } +func (m *IncomingApprovalCriteria) String() string { return proto.CompactTextString(m) } +func (*IncomingApprovalCriteria) ProtoMessage() {} +func (*IncomingApprovalCriteria) Descriptor() ([]byte, []int) { + return fileDescriptor_c373d815c4655b4d, []int{2} +} +func (m *IncomingApprovalCriteria) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *IncomingApprovalCriteria) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_IncomingApprovalCriteria.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 *IncomingApprovalCriteria) XXX_Merge(src proto.Message) { + xxx_messageInfo_IncomingApprovalCriteria.Merge(m, src) +} +func (m *IncomingApprovalCriteria) XXX_Size() int { + return m.Size() +} +func (m *IncomingApprovalCriteria) XXX_DiscardUnknown() { + xxx_messageInfo_IncomingApprovalCriteria.DiscardUnknown(m) +} + +var xxx_messageInfo_IncomingApprovalCriteria proto.InternalMessageInfo + +func (m *IncomingApprovalCriteria) GetMerkleChallenges() []*MerkleChallenge { + if m != nil { + return m.MerkleChallenges + } + return nil +} + +func (m *IncomingApprovalCriteria) GetPredeterminedBalances() *PredeterminedBalances { + if m != nil { + return m.PredeterminedBalances + } + return nil +} + +func (m *IncomingApprovalCriteria) GetApprovalAmounts() *ApprovalAmounts { + if m != nil { + return m.ApprovalAmounts + } + return nil +} + +func (m *IncomingApprovalCriteria) GetMaxNumTransfers() *MaxNumTransfers { + if m != nil { + return m.MaxNumTransfers + } + return nil +} + +func (m *IncomingApprovalCriteria) GetCoinTransfers() []*CoinTransfer { + if m != nil { + return m.CoinTransfers + } + return nil +} + +func (m *IncomingApprovalCriteria) GetRequireFromEqualsInitiatedBy() bool { + if m != nil { + return m.RequireFromEqualsInitiatedBy + } + return false +} + +func (m *IncomingApprovalCriteria) GetRequireFromDoesNotEqualInitiatedBy() bool { + if m != nil { + return m.RequireFromDoesNotEqualInitiatedBy + } + return false +} + +func (m *IncomingApprovalCriteria) GetAutoDeletionOptions() *AutoDeletionOptions { + if m != nil { + return m.AutoDeletionOptions + } + return nil +} + +func (m *IncomingApprovalCriteria) GetMustOwnTokens() []*MustOwnTokens { + if m != nil { + return m.MustOwnTokens + } + return nil +} + +func (m *IncomingApprovalCriteria) GetDynamicStoreChallenges() []*DynamicStoreChallenge { + if m != nil { + return m.DynamicStoreChallenges + } + return nil +} + +func (m *IncomingApprovalCriteria) GetEthSignatureChallenges() []*ETHSignatureChallenge { + if m != nil { + return m.EthSignatureChallenges + } + return nil +} + +func (m *IncomingApprovalCriteria) GetSenderChecks() *AddressChecks { + if m != nil { + return m.SenderChecks + } + return nil +} + +func (m *IncomingApprovalCriteria) GetInitiatorChecks() *AddressChecks { + if m != nil { + return m.InitiatorChecks + } + return nil +} + +func (m *IncomingApprovalCriteria) GetAltTimeChecks() *AltTimeChecks { + if m != nil { + return m.AltTimeChecks + } + return nil +} + +func (m *IncomingApprovalCriteria) GetMustPrioritize() bool { + if m != nil { + return m.MustPrioritize + } + return false +} + +func (m *IncomingApprovalCriteria) GetVotingChallenges() []*VotingChallenge { + if m != nil { + return m.VotingChallenges + } + return nil +} + +func (m *IncomingApprovalCriteria) GetEvmQueryChallenges() []*EVMQueryChallenge { + if m != nil { + return m.EvmQueryChallenges + } + return nil +} + +func init() { + proto.RegisterType((*ApprovalCriteria)(nil), "tokenization.v29.ApprovalCriteria") + proto.RegisterType((*OutgoingApprovalCriteria)(nil), "tokenization.v29.OutgoingApprovalCriteria") + proto.RegisterType((*IncomingApprovalCriteria)(nil), "tokenization.v29.IncomingApprovalCriteria") +} + +func init() { + proto.RegisterFile("tokenization/v29/approval_criteria.proto", fileDescriptor_c373d815c4655b4d) +} + +var fileDescriptor_c373d815c4655b4d = []byte{ + // 929 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x98, 0xdd, 0x6e, 0xdb, 0x36, + 0x14, 0xc7, 0xe3, 0xb5, 0x4b, 0x52, 0x26, 0x71, 0x5c, 0x36, 0xed, 0xb4, 0x60, 0xf0, 0xd2, 0x0c, + 0xeb, 0x82, 0x01, 0xb3, 0x01, 0xef, 0x2a, 0xc0, 0x30, 0x20, 0x76, 0x52, 0x2c, 0x1d, 0x9c, 0x74, + 0xb2, 0x97, 0x02, 0x05, 0x86, 0x80, 0x96, 0xce, 0x64, 0xc2, 0x12, 0xa9, 0x92, 0x94, 0xdb, 0xf4, + 0x29, 0xf6, 0x46, 0xc3, 0xee, 0x76, 0xd9, 0xcb, 0x5d, 0x0e, 0xc9, 0x8b, 0x0c, 0x62, 0x94, 0x54, + 0x1f, 0xb4, 0x23, 0x74, 0x0e, 0x30, 0x0c, 0xbe, 0x13, 0xc4, 0xff, 0xf9, 0xf1, 0xeb, 0xf0, 0xfc, + 0x45, 0xa1, 0x1d, 0xc5, 0x47, 0xc0, 0xe8, 0x5b, 0xa2, 0x28, 0x67, 0xcd, 0x71, 0x6b, 0xb7, 0x49, + 0xc2, 0x50, 0xf0, 0x31, 0xf1, 0x4f, 0x1d, 0x41, 0x15, 0x08, 0x4a, 0x1a, 0xa1, 0xe0, 0x8a, 0xe3, + 0x5a, 0x5a, 0xd9, 0x18, 0xb7, 0x76, 0x37, 0x37, 0x3c, 0xee, 0x71, 0xdd, 0xd8, 0x8c, 0x9f, 0x2e, + 0x75, 0x9b, 0x8f, 0x0b, 0x44, 0x67, 0x48, 0x7c, 0x1f, 0x98, 0x07, 0x32, 0x91, 0x7c, 0x53, 0x90, + 0x84, 0x02, 0x5c, 0x50, 0x20, 0x02, 0xca, 0xc0, 0x3d, 0x1d, 0x10, 0x9f, 0x30, 0xe7, 0x5a, 0x3e, + 0x65, 0x8c, 0x4a, 0x10, 0x67, 0x44, 0x99, 0x97, 0x28, 0xbf, 0x9e, 0x32, 0x1b, 0xce, 0x5c, 0x1a, + 0xbf, 0x4e, 0xa8, 0xdb, 0xe7, 0x55, 0x54, 0xdb, 0x4b, 0x5a, 0x3b, 0xc9, 0x54, 0x71, 0x17, 0xd5, + 0x02, 0x10, 0x23, 0x1f, 0x3a, 0xd7, 0x63, 0xb6, 0x2a, 0x5b, 0x77, 0x76, 0x56, 0x5a, 0x8f, 0x1b, + 0xf9, 0xf9, 0x37, 0xba, 0x59, 0xa5, 0x5d, 0x08, 0xc5, 0xbf, 0xa0, 0x87, 0x99, 0x99, 0xb5, 0x93, + 0x89, 0x59, 0x1f, 0x6d, 0x55, 0x76, 0x56, 0x5a, 0x5f, 0x15, 0x99, 0xcf, 0x4d, 0x72, 0xdb, 0x4c, + 0xc1, 0x3f, 0xa2, 0xf5, 0xab, 0xf9, 0xed, 0x05, 0x3c, 0x62, 0x4a, 0x5a, 0x77, 0x34, 0xd8, 0x30, + 0xd8, 0xbd, 0xac, 0xd0, 0xce, 0x47, 0xc6, 0xb0, 0x80, 0xbc, 0x39, 0x8a, 0x82, 0xbe, 0x20, 0x4c, + 0xfe, 0x0a, 0x42, 0x5a, 0x77, 0x27, 0xc1, 0xba, 0x59, 0xa1, 0x9d, 0x8f, 0xc4, 0xfb, 0x68, 0xcd, + 0xe1, 0x94, 0xbd, 0x47, 0x7d, 0xac, 0x17, 0xb1, 0x5e, 0x44, 0x75, 0x52, 0x32, 0x3b, 0x1b, 0x84, + 0xbf, 0x47, 0x9b, 0x02, 0x5e, 0x45, 0x54, 0x40, 0x9f, 0x1f, 0xbc, 0x8a, 0x88, 0x2f, 0x0f, 0x19, + 0x55, 0x94, 0x28, 0x70, 0xdb, 0x67, 0xd6, 0xe2, 0x56, 0x65, 0x67, 0xd9, 0x9e, 0xa2, 0xc0, 0x6d, + 0xf4, 0x59, 0xd2, 0xfa, 0x54, 0xf0, 0xa0, 0x48, 0x58, 0xd2, 0x84, 0xa9, 0x1a, 0xfc, 0x0c, 0x6d, + 0x5d, 0xf7, 0xb0, 0xcf, 0x41, 0x1e, 0x71, 0xa5, 0x45, 0x69, 0xce, 0xb2, 0xe6, 0xdc, 0xa8, 0xc3, + 0x47, 0x68, 0x3b, 0xd5, 0xd7, 0x24, 0xda, 0x3d, 0x4d, 0x2b, 0xa1, 0xc4, 0x4f, 0x51, 0x9d, 0x8f, + 0x41, 0x08, 0xea, 0x82, 0x8c, 0x75, 0xc7, 0x91, 0xf2, 0x38, 0x65, 0xde, 0xd5, 0x5e, 0x4b, 0x0b, + 0x69, 0xd6, 0x0d, 0xaa, 0x78, 0x9d, 0xae, 0x15, 0x7d, 0x7e, 0xc8, 0x1c, 0x1e, 0x64, 0x28, 0x2b, + 0x97, 0xeb, 0x34, 0x4d, 0x83, 0x5f, 0xa0, 0x07, 0x24, 0x52, 0x7c, 0x1f, 0x7c, 0x88, 0xf7, 0xf6, + 0x38, 0xd4, 0x67, 0xcd, 0x5a, 0xd5, 0x29, 0xf4, 0xa5, 0x21, 0x1f, 0x8b, 0x62, 0xdb, 0x44, 0xc0, + 0x07, 0x68, 0x2d, 0x88, 0xa4, 0x3a, 0x7e, 0xcd, 0xfa, 0x31, 0x43, 0x5a, 0x55, 0x9d, 0x4a, 0x9f, + 0x1b, 0xb2, 0x32, 0x2d, 0xb3, 0xb3, 0x51, 0xf8, 0x14, 0x3d, 0x72, 0xcf, 0x18, 0x09, 0xa8, 0xd3, + 0x53, 0x5c, 0xa4, 0xcf, 0xf7, 0xba, 0xe6, 0x19, 0xce, 0xe2, 0xbe, 0x49, 0x6f, 0x4f, 0xc0, 0xc4, + 0x1d, 0x80, 0x1a, 0xf6, 0xa8, 0xc7, 0x88, 0x8a, 0x32, 0x1d, 0xd4, 0x26, 0x75, 0x70, 0xd0, 0xff, + 0xa1, 0xa8, 0xb7, 0x27, 0x60, 0x70, 0x07, 0xad, 0x4a, 0x60, 0x2e, 0x88, 0xce, 0x10, 0x9c, 0x91, + 0xb4, 0xee, 0xeb, 0xa5, 0x35, 0xac, 0xc3, 0x9e, 0xeb, 0x0a, 0x90, 0xf2, 0x52, 0x66, 0x67, 0x82, + 0xf0, 0x21, 0x5a, 0x17, 0xe0, 0xd0, 0x90, 0x02, 0x53, 0x09, 0x07, 0x97, 0xe3, 0xe4, 0xe3, 0x62, + 0x14, 0xbd, 0x4c, 0x46, 0x7e, 0x35, 0xa4, 0x07, 0x25, 0x51, 0xb9, 0xb8, 0x78, 0x8f, 0x89, 0xaf, + 0xfa, 0x34, 0x80, 0x04, 0xb4, 0x31, 0x11, 0x94, 0x96, 0xd9, 0xd9, 0x28, 0xfc, 0x04, 0x55, 0xe3, + 0x4d, 0x7f, 0x2e, 0x28, 0x17, 0x54, 0xd1, 0xb7, 0x60, 0x3d, 0xd4, 0x99, 0x9b, 0x7b, 0x1b, 0x57, + 0xf9, 0x31, 0x57, 0x94, 0x79, 0xa9, 0x4d, 0x7a, 0x34, 0xa9, 0xca, 0x9f, 0x64, 0x95, 0x76, 0x21, + 0x14, 0x37, 0x10, 0x26, 0xbe, 0xcf, 0x5f, 0xb7, 0x89, 0x33, 0x02, 0xb7, 0x4b, 0x59, 0xdc, 0x6e, + 0x7d, 0xa2, 0xbb, 0x36, 0xb4, 0xe0, 0x16, 0xda, 0xd0, 0x6f, 0x7b, 0x21, 0x38, 0x94, 0xf8, 0x2f, + 0x04, 0x09, 0xc3, 0x38, 0xc2, 0xd2, 0x11, 0xc6, 0x36, 0xdc, 0x43, 0x18, 0xc6, 0xc1, 0x4f, 0x11, + 0x88, 0xb3, 0xd4, 0xa0, 0x3f, 0xd5, 0x83, 0xfe, 0xc2, 0x90, 0x59, 0x27, 0xdd, 0xac, 0xd6, 0x36, + 0x84, 0xe3, 0x97, 0x68, 0x23, 0x92, 0x20, 0xae, 0x0e, 0x71, 0x0f, 0x54, 0x3c, 0x3e, 0x69, 0x6d, + 0xea, 0xd5, 0x7f, 0x52, 0xc4, 0xfe, 0x6c, 0x50, 0xdb, 0x46, 0xc6, 0xb3, 0xbb, 0xcb, 0x6b, 0xb5, + 0xea, 0xf6, 0xef, 0x08, 0x59, 0xf9, 0x7a, 0x33, 0x37, 0xdb, 0xff, 0xa5, 0xd9, 0x96, 0x31, 0xca, + 0xa5, 0x92, 0x46, 0x39, 0xc1, 0x4c, 0x96, 0x67, 0x6f, 0x26, 0xf7, 0x66, 0x6c, 0x26, 0xe8, 0xb6, + 0xcd, 0x64, 0x65, 0x36, 0x66, 0x62, 0xf0, 0x81, 0xd5, 0xd9, 0xf9, 0xc0, 0xda, 0xac, 0x7c, 0xa0, + 0x3a, 0x23, 0x1f, 0x58, 0x2f, 0xed, 0x03, 0xb5, 0x0f, 0xf7, 0x01, 0x73, 0x8d, 0xbe, 0xff, 0xaf, + 0x6a, 0xf4, 0xf6, 0x1f, 0x08, 0x59, 0xf9, 0xaf, 0xad, 0x79, 0x05, 0xfd, 0x4f, 0x56, 0xd0, 0x9b, + 0xae, 0x1b, 0x8b, 0x25, 0xae, 0x1b, 0xe5, 0xae, 0x08, 0x4b, 0xa5, 0xaf, 0x08, 0xf3, 0x4a, 0x7a, + 0xdb, 0x95, 0x34, 0xff, 0x59, 0xbe, 0xfa, 0x81, 0x9f, 0xe5, 0xf3, 0x1a, 0x7a, 0x5b, 0x35, 0xb4, + 0x7d, 0xf2, 0xe7, 0x79, 0xbd, 0xf2, 0xee, 0xbc, 0x5e, 0xf9, 0xfb, 0xbc, 0x5e, 0xf9, 0xed, 0xa2, + 0xbe, 0xf0, 0xee, 0xa2, 0xbe, 0xf0, 0xd7, 0x45, 0x7d, 0xe1, 0xe5, 0x77, 0x1e, 0x55, 0xc3, 0x68, + 0xd0, 0x70, 0x78, 0xd0, 0x1c, 0x50, 0x35, 0x20, 0xae, 0x07, 0xf2, 0xfd, 0x93, 0x33, 0x24, 0x94, + 0x35, 0xdf, 0x34, 0x33, 0xbf, 0x95, 0xd4, 0x59, 0x08, 0xb2, 0x39, 0x6e, 0xed, 0x0e, 0x16, 0xf5, + 0x9f, 0xa4, 0x6f, 0xff, 0x09, 0x00, 0x00, 0xff, 0xff, 0x42, 0xce, 0xd4, 0xe7, 0x45, 0x13, 0x00, + 0x00, +} + +func (m *ApprovalCriteria) 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 *ApprovalCriteria) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ApprovalCriteria) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.UserApprovalSettings != nil { + { + size, err := m.UserApprovalSettings.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xd2 + } + if len(m.EvmQueryChallenges) > 0 { + for iNdEx := len(m.EvmQueryChallenges) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.EvmQueryChallenges[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xca + } + } + if m.AllowSpecialWrapping { + i-- + if m.AllowSpecialWrapping { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xc0 + } + if m.AllowBackedMinting { + i-- + if m.AllowBackedMinting { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xb8 + } + if len(m.VotingChallenges) > 0 { + for iNdEx := len(m.VotingChallenges) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.VotingChallenges[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xb2 + } + } + if m.MustPrioritize { + i-- + if m.MustPrioritize { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xa8 + } + if m.AltTimeChecks != nil { + { + size, err := m.AltTimeChecks.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xa2 + } + if m.InitiatorChecks != nil { + { + size, err := m.InitiatorChecks.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x9a + } + if m.RecipientChecks != nil { + { + size, err := m.RecipientChecks.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x92 + } + if m.SenderChecks != nil { + { + size, err := m.SenderChecks.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x8a + } + if len(m.EthSignatureChallenges) > 0 { + for iNdEx := len(m.EthSignatureChallenges) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.EthSignatureChallenges[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x82 + } + } + if len(m.DynamicStoreChallenges) > 0 { + for iNdEx := len(m.DynamicStoreChallenges) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.DynamicStoreChallenges[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x7a + } + } + if len(m.MustOwnTokens) > 0 { + for iNdEx := len(m.MustOwnTokens) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.MustOwnTokens[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x72 + } + } + if m.AutoDeletionOptions != nil { + { + size, err := m.AutoDeletionOptions.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x62 + } + if m.OverridesToIncomingApprovals { + i-- + if m.OverridesToIncomingApprovals { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x58 + } + if m.OverridesFromOutgoingApprovals { + i-- + if m.OverridesFromOutgoingApprovals { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x50 + } + if m.RequireFromDoesNotEqualInitiatedBy { + i-- + if m.RequireFromDoesNotEqualInitiatedBy { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x48 + } + if m.RequireToDoesNotEqualInitiatedBy { + i-- + if m.RequireToDoesNotEqualInitiatedBy { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x40 + } + if m.RequireFromEqualsInitiatedBy { + i-- + if m.RequireFromEqualsInitiatedBy { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x38 + } + if m.RequireToEqualsInitiatedBy { + i-- + if m.RequireToEqualsInitiatedBy { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x30 + } + if len(m.CoinTransfers) > 0 { + for iNdEx := len(m.CoinTransfers) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CoinTransfers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + } + if m.MaxNumTransfers != nil { + { + size, err := m.MaxNumTransfers.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if m.ApprovalAmounts != nil { + { + size, err := m.ApprovalAmounts.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if m.PredeterminedBalances != nil { + { + size, err := m.PredeterminedBalances.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.MerkleChallenges) > 0 { + for iNdEx := len(m.MerkleChallenges) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.MerkleChallenges[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *OutgoingApprovalCriteria) 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 *OutgoingApprovalCriteria) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *OutgoingApprovalCriteria) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.EvmQueryChallenges) > 0 { + for iNdEx := len(m.EvmQueryChallenges) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.EvmQueryChallenges[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x8a + } + } + if len(m.VotingChallenges) > 0 { + for iNdEx := len(m.VotingChallenges) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.VotingChallenges[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x82 + } + } + if m.MustPrioritize { + i-- + if m.MustPrioritize { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x78 + } + if m.AltTimeChecks != nil { + { + size, err := m.AltTimeChecks.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x72 + } + if m.InitiatorChecks != nil { + { + size, err := m.InitiatorChecks.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x6a + } + if m.RecipientChecks != nil { + { + size, err := m.RecipientChecks.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x62 + } + if len(m.EthSignatureChallenges) > 0 { + for iNdEx := len(m.EthSignatureChallenges) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.EthSignatureChallenges[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x5a + } + } + if len(m.DynamicStoreChallenges) > 0 { + for iNdEx := len(m.DynamicStoreChallenges) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.DynamicStoreChallenges[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x52 + } + } + if len(m.MustOwnTokens) > 0 { + for iNdEx := len(m.MustOwnTokens) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.MustOwnTokens[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x4a + } + } + if m.AutoDeletionOptions != nil { + { + size, err := m.AutoDeletionOptions.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + } + if m.RequireToDoesNotEqualInitiatedBy { + i-- + if m.RequireToDoesNotEqualInitiatedBy { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x38 + } + if m.RequireToEqualsInitiatedBy { + i-- + if m.RequireToEqualsInitiatedBy { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x30 + } + if len(m.CoinTransfers) > 0 { + for iNdEx := len(m.CoinTransfers) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CoinTransfers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + } + if m.MaxNumTransfers != nil { + { + size, err := m.MaxNumTransfers.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if m.ApprovalAmounts != nil { + { + size, err := m.ApprovalAmounts.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if m.PredeterminedBalances != nil { + { + size, err := m.PredeterminedBalances.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.MerkleChallenges) > 0 { + for iNdEx := len(m.MerkleChallenges) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.MerkleChallenges[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *IncomingApprovalCriteria) 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 *IncomingApprovalCriteria) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *IncomingApprovalCriteria) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.EvmQueryChallenges) > 0 { + for iNdEx := len(m.EvmQueryChallenges) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.EvmQueryChallenges[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x8a + } + } + if len(m.VotingChallenges) > 0 { + for iNdEx := len(m.VotingChallenges) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.VotingChallenges[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x82 + } + } + if m.MustPrioritize { + i-- + if m.MustPrioritize { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x78 + } + if m.AltTimeChecks != nil { + { + size, err := m.AltTimeChecks.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x72 + } + if m.InitiatorChecks != nil { + { + size, err := m.InitiatorChecks.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x6a + } + if m.SenderChecks != nil { + { + size, err := m.SenderChecks.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x62 + } + if len(m.EthSignatureChallenges) > 0 { + for iNdEx := len(m.EthSignatureChallenges) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.EthSignatureChallenges[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x5a + } + } + if len(m.DynamicStoreChallenges) > 0 { + for iNdEx := len(m.DynamicStoreChallenges) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.DynamicStoreChallenges[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x52 + } + } + if len(m.MustOwnTokens) > 0 { + for iNdEx := len(m.MustOwnTokens) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.MustOwnTokens[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x4a + } + } + if m.AutoDeletionOptions != nil { + { + size, err := m.AutoDeletionOptions.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + } + if m.RequireFromDoesNotEqualInitiatedBy { + i-- + if m.RequireFromDoesNotEqualInitiatedBy { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x38 + } + if m.RequireFromEqualsInitiatedBy { + i-- + if m.RequireFromEqualsInitiatedBy { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x30 + } + if len(m.CoinTransfers) > 0 { + for iNdEx := len(m.CoinTransfers) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CoinTransfers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + } + if m.MaxNumTransfers != nil { + { + size, err := m.MaxNumTransfers.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if m.ApprovalAmounts != nil { + { + size, err := m.ApprovalAmounts.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if m.PredeterminedBalances != nil { + { + size, err := m.PredeterminedBalances.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.MerkleChallenges) > 0 { + for iNdEx := len(m.MerkleChallenges) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.MerkleChallenges[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalCriteria(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func encodeVarintApprovalCriteria(dAtA []byte, offset int, v uint64) int { + offset -= sovApprovalCriteria(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *ApprovalCriteria) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.MerkleChallenges) > 0 { + for _, e := range m.MerkleChallenges { + l = e.Size() + n += 1 + l + sovApprovalCriteria(uint64(l)) + } + } + if m.PredeterminedBalances != nil { + l = m.PredeterminedBalances.Size() + n += 1 + l + sovApprovalCriteria(uint64(l)) + } + if m.ApprovalAmounts != nil { + l = m.ApprovalAmounts.Size() + n += 1 + l + sovApprovalCriteria(uint64(l)) + } + if m.MaxNumTransfers != nil { + l = m.MaxNumTransfers.Size() + n += 1 + l + sovApprovalCriteria(uint64(l)) + } + if len(m.CoinTransfers) > 0 { + for _, e := range m.CoinTransfers { + l = e.Size() + n += 1 + l + sovApprovalCriteria(uint64(l)) + } + } + if m.RequireToEqualsInitiatedBy { + n += 2 + } + if m.RequireFromEqualsInitiatedBy { + n += 2 + } + if m.RequireToDoesNotEqualInitiatedBy { + n += 2 + } + if m.RequireFromDoesNotEqualInitiatedBy { + n += 2 + } + if m.OverridesFromOutgoingApprovals { + n += 2 + } + if m.OverridesToIncomingApprovals { + n += 2 + } + if m.AutoDeletionOptions != nil { + l = m.AutoDeletionOptions.Size() + n += 1 + l + sovApprovalCriteria(uint64(l)) + } + if len(m.MustOwnTokens) > 0 { + for _, e := range m.MustOwnTokens { + l = e.Size() + n += 1 + l + sovApprovalCriteria(uint64(l)) + } + } + if len(m.DynamicStoreChallenges) > 0 { + for _, e := range m.DynamicStoreChallenges { + l = e.Size() + n += 1 + l + sovApprovalCriteria(uint64(l)) + } + } + if len(m.EthSignatureChallenges) > 0 { + for _, e := range m.EthSignatureChallenges { + l = e.Size() + n += 2 + l + sovApprovalCriteria(uint64(l)) + } + } + if m.SenderChecks != nil { + l = m.SenderChecks.Size() + n += 2 + l + sovApprovalCriteria(uint64(l)) + } + if m.RecipientChecks != nil { + l = m.RecipientChecks.Size() + n += 2 + l + sovApprovalCriteria(uint64(l)) + } + if m.InitiatorChecks != nil { + l = m.InitiatorChecks.Size() + n += 2 + l + sovApprovalCriteria(uint64(l)) + } + if m.AltTimeChecks != nil { + l = m.AltTimeChecks.Size() + n += 2 + l + sovApprovalCriteria(uint64(l)) + } + if m.MustPrioritize { + n += 3 + } + if len(m.VotingChallenges) > 0 { + for _, e := range m.VotingChallenges { + l = e.Size() + n += 2 + l + sovApprovalCriteria(uint64(l)) + } + } + if m.AllowBackedMinting { + n += 3 + } + if m.AllowSpecialWrapping { + n += 3 + } + if len(m.EvmQueryChallenges) > 0 { + for _, e := range m.EvmQueryChallenges { + l = e.Size() + n += 2 + l + sovApprovalCriteria(uint64(l)) + } + } + if m.UserApprovalSettings != nil { + l = m.UserApprovalSettings.Size() + n += 2 + l + sovApprovalCriteria(uint64(l)) + } + return n +} + +func (m *OutgoingApprovalCriteria) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.MerkleChallenges) > 0 { + for _, e := range m.MerkleChallenges { + l = e.Size() + n += 1 + l + sovApprovalCriteria(uint64(l)) + } + } + if m.PredeterminedBalances != nil { + l = m.PredeterminedBalances.Size() + n += 1 + l + sovApprovalCriteria(uint64(l)) + } + if m.ApprovalAmounts != nil { + l = m.ApprovalAmounts.Size() + n += 1 + l + sovApprovalCriteria(uint64(l)) + } + if m.MaxNumTransfers != nil { + l = m.MaxNumTransfers.Size() + n += 1 + l + sovApprovalCriteria(uint64(l)) + } + if len(m.CoinTransfers) > 0 { + for _, e := range m.CoinTransfers { + l = e.Size() + n += 1 + l + sovApprovalCriteria(uint64(l)) + } + } + if m.RequireToEqualsInitiatedBy { + n += 2 + } + if m.RequireToDoesNotEqualInitiatedBy { + n += 2 + } + if m.AutoDeletionOptions != nil { + l = m.AutoDeletionOptions.Size() + n += 1 + l + sovApprovalCriteria(uint64(l)) + } + if len(m.MustOwnTokens) > 0 { + for _, e := range m.MustOwnTokens { + l = e.Size() + n += 1 + l + sovApprovalCriteria(uint64(l)) + } + } + if len(m.DynamicStoreChallenges) > 0 { + for _, e := range m.DynamicStoreChallenges { + l = e.Size() + n += 1 + l + sovApprovalCriteria(uint64(l)) + } + } + if len(m.EthSignatureChallenges) > 0 { + for _, e := range m.EthSignatureChallenges { + l = e.Size() + n += 1 + l + sovApprovalCriteria(uint64(l)) + } + } + if m.RecipientChecks != nil { + l = m.RecipientChecks.Size() + n += 1 + l + sovApprovalCriteria(uint64(l)) + } + if m.InitiatorChecks != nil { + l = m.InitiatorChecks.Size() + n += 1 + l + sovApprovalCriteria(uint64(l)) + } + if m.AltTimeChecks != nil { + l = m.AltTimeChecks.Size() + n += 1 + l + sovApprovalCriteria(uint64(l)) + } + if m.MustPrioritize { + n += 2 + } + if len(m.VotingChallenges) > 0 { + for _, e := range m.VotingChallenges { + l = e.Size() + n += 2 + l + sovApprovalCriteria(uint64(l)) + } + } + if len(m.EvmQueryChallenges) > 0 { + for _, e := range m.EvmQueryChallenges { + l = e.Size() + n += 2 + l + sovApprovalCriteria(uint64(l)) + } + } + return n +} + +func (m *IncomingApprovalCriteria) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.MerkleChallenges) > 0 { + for _, e := range m.MerkleChallenges { + l = e.Size() + n += 1 + l + sovApprovalCriteria(uint64(l)) + } + } + if m.PredeterminedBalances != nil { + l = m.PredeterminedBalances.Size() + n += 1 + l + sovApprovalCriteria(uint64(l)) + } + if m.ApprovalAmounts != nil { + l = m.ApprovalAmounts.Size() + n += 1 + l + sovApprovalCriteria(uint64(l)) + } + if m.MaxNumTransfers != nil { + l = m.MaxNumTransfers.Size() + n += 1 + l + sovApprovalCriteria(uint64(l)) + } + if len(m.CoinTransfers) > 0 { + for _, e := range m.CoinTransfers { + l = e.Size() + n += 1 + l + sovApprovalCriteria(uint64(l)) + } + } + if m.RequireFromEqualsInitiatedBy { + n += 2 + } + if m.RequireFromDoesNotEqualInitiatedBy { + n += 2 + } + if m.AutoDeletionOptions != nil { + l = m.AutoDeletionOptions.Size() + n += 1 + l + sovApprovalCriteria(uint64(l)) + } + if len(m.MustOwnTokens) > 0 { + for _, e := range m.MustOwnTokens { + l = e.Size() + n += 1 + l + sovApprovalCriteria(uint64(l)) + } + } + if len(m.DynamicStoreChallenges) > 0 { + for _, e := range m.DynamicStoreChallenges { + l = e.Size() + n += 1 + l + sovApprovalCriteria(uint64(l)) + } + } + if len(m.EthSignatureChallenges) > 0 { + for _, e := range m.EthSignatureChallenges { + l = e.Size() + n += 1 + l + sovApprovalCriteria(uint64(l)) + } + } + if m.SenderChecks != nil { + l = m.SenderChecks.Size() + n += 1 + l + sovApprovalCriteria(uint64(l)) + } + if m.InitiatorChecks != nil { + l = m.InitiatorChecks.Size() + n += 1 + l + sovApprovalCriteria(uint64(l)) + } + if m.AltTimeChecks != nil { + l = m.AltTimeChecks.Size() + n += 1 + l + sovApprovalCriteria(uint64(l)) + } + if m.MustPrioritize { + n += 2 + } + if len(m.VotingChallenges) > 0 { + for _, e := range m.VotingChallenges { + l = e.Size() + n += 2 + l + sovApprovalCriteria(uint64(l)) + } + } + if len(m.EvmQueryChallenges) > 0 { + for _, e := range m.EvmQueryChallenges { + l = e.Size() + n += 2 + l + sovApprovalCriteria(uint64(l)) + } + } + return n +} + +func sovApprovalCriteria(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozApprovalCriteria(x uint64) (n int) { + return sovApprovalCriteria(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *ApprovalCriteria) 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 ErrIntOverflowApprovalCriteria + } + 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: ApprovalCriteria: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ApprovalCriteria: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MerkleChallenges", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MerkleChallenges = append(m.MerkleChallenges, &MerkleChallenge{}) + if err := m.MerkleChallenges[len(m.MerkleChallenges)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PredeterminedBalances", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.PredeterminedBalances == nil { + m.PredeterminedBalances = &PredeterminedBalances{} + } + if err := m.PredeterminedBalances.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalAmounts", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ApprovalAmounts == nil { + m.ApprovalAmounts = &ApprovalAmounts{} + } + if err := m.ApprovalAmounts.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxNumTransfers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.MaxNumTransfers == nil { + m.MaxNumTransfers = &MaxNumTransfers{} + } + if err := m.MaxNumTransfers.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CoinTransfers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CoinTransfers = append(m.CoinTransfers, &CoinTransfer{}) + if err := m.CoinTransfers[len(m.CoinTransfers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RequireToEqualsInitiatedBy", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.RequireToEqualsInitiatedBy = bool(v != 0) + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RequireFromEqualsInitiatedBy", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.RequireFromEqualsInitiatedBy = bool(v != 0) + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RequireToDoesNotEqualInitiatedBy", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.RequireToDoesNotEqualInitiatedBy = bool(v != 0) + case 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RequireFromDoesNotEqualInitiatedBy", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.RequireFromDoesNotEqualInitiatedBy = bool(v != 0) + case 10: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field OverridesFromOutgoingApprovals", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.OverridesFromOutgoingApprovals = bool(v != 0) + case 11: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field OverridesToIncomingApprovals", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.OverridesToIncomingApprovals = bool(v != 0) + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AutoDeletionOptions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AutoDeletionOptions == nil { + m.AutoDeletionOptions = &AutoDeletionOptions{} + } + if err := m.AutoDeletionOptions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MustOwnTokens", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MustOwnTokens = append(m.MustOwnTokens, &MustOwnTokens{}) + if err := m.MustOwnTokens[len(m.MustOwnTokens)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 15: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DynamicStoreChallenges", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DynamicStoreChallenges = append(m.DynamicStoreChallenges, &DynamicStoreChallenge{}) + if err := m.DynamicStoreChallenges[len(m.DynamicStoreChallenges)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 16: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EthSignatureChallenges", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.EthSignatureChallenges = append(m.EthSignatureChallenges, ÐSignatureChallenge{}) + if err := m.EthSignatureChallenges[len(m.EthSignatureChallenges)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 17: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SenderChecks", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SenderChecks == nil { + m.SenderChecks = &AddressChecks{} + } + if err := m.SenderChecks.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 18: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RecipientChecks", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.RecipientChecks == nil { + m.RecipientChecks = &AddressChecks{} + } + if err := m.RecipientChecks.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 19: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field InitiatorChecks", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.InitiatorChecks == nil { + m.InitiatorChecks = &AddressChecks{} + } + if err := m.InitiatorChecks.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 20: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AltTimeChecks", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AltTimeChecks == nil { + m.AltTimeChecks = &AltTimeChecks{} + } + if err := m.AltTimeChecks.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 21: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MustPrioritize", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.MustPrioritize = bool(v != 0) + case 22: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VotingChallenges", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VotingChallenges = append(m.VotingChallenges, &VotingChallenge{}) + if err := m.VotingChallenges[len(m.VotingChallenges)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 23: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AllowBackedMinting", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.AllowBackedMinting = bool(v != 0) + case 24: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AllowSpecialWrapping", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.AllowSpecialWrapping = bool(v != 0) + case 25: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EvmQueryChallenges", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.EvmQueryChallenges = append(m.EvmQueryChallenges, &EVMQueryChallenge{}) + if err := m.EvmQueryChallenges[len(m.EvmQueryChallenges)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 26: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UserApprovalSettings", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.UserApprovalSettings == nil { + m.UserApprovalSettings = &UserApprovalSettings{} + } + if err := m.UserApprovalSettings.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApprovalCriteria(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApprovalCriteria + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *OutgoingApprovalCriteria) 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 ErrIntOverflowApprovalCriteria + } + 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: OutgoingApprovalCriteria: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: OutgoingApprovalCriteria: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MerkleChallenges", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MerkleChallenges = append(m.MerkleChallenges, &MerkleChallenge{}) + if err := m.MerkleChallenges[len(m.MerkleChallenges)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PredeterminedBalances", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.PredeterminedBalances == nil { + m.PredeterminedBalances = &PredeterminedBalances{} + } + if err := m.PredeterminedBalances.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalAmounts", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ApprovalAmounts == nil { + m.ApprovalAmounts = &ApprovalAmounts{} + } + if err := m.ApprovalAmounts.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxNumTransfers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.MaxNumTransfers == nil { + m.MaxNumTransfers = &MaxNumTransfers{} + } + if err := m.MaxNumTransfers.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CoinTransfers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CoinTransfers = append(m.CoinTransfers, &CoinTransfer{}) + if err := m.CoinTransfers[len(m.CoinTransfers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RequireToEqualsInitiatedBy", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.RequireToEqualsInitiatedBy = bool(v != 0) + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RequireToDoesNotEqualInitiatedBy", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.RequireToDoesNotEqualInitiatedBy = bool(v != 0) + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AutoDeletionOptions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AutoDeletionOptions == nil { + m.AutoDeletionOptions = &AutoDeletionOptions{} + } + if err := m.AutoDeletionOptions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MustOwnTokens", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MustOwnTokens = append(m.MustOwnTokens, &MustOwnTokens{}) + if err := m.MustOwnTokens[len(m.MustOwnTokens)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DynamicStoreChallenges", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DynamicStoreChallenges = append(m.DynamicStoreChallenges, &DynamicStoreChallenge{}) + if err := m.DynamicStoreChallenges[len(m.DynamicStoreChallenges)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EthSignatureChallenges", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.EthSignatureChallenges = append(m.EthSignatureChallenges, ÐSignatureChallenge{}) + if err := m.EthSignatureChallenges[len(m.EthSignatureChallenges)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RecipientChecks", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.RecipientChecks == nil { + m.RecipientChecks = &AddressChecks{} + } + if err := m.RecipientChecks.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field InitiatorChecks", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.InitiatorChecks == nil { + m.InitiatorChecks = &AddressChecks{} + } + if err := m.InitiatorChecks.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AltTimeChecks", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AltTimeChecks == nil { + m.AltTimeChecks = &AltTimeChecks{} + } + if err := m.AltTimeChecks.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 15: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MustPrioritize", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.MustPrioritize = bool(v != 0) + case 16: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VotingChallenges", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VotingChallenges = append(m.VotingChallenges, &VotingChallenge{}) + if err := m.VotingChallenges[len(m.VotingChallenges)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 17: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EvmQueryChallenges", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.EvmQueryChallenges = append(m.EvmQueryChallenges, &EVMQueryChallenge{}) + if err := m.EvmQueryChallenges[len(m.EvmQueryChallenges)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApprovalCriteria(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApprovalCriteria + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *IncomingApprovalCriteria) 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 ErrIntOverflowApprovalCriteria + } + 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: IncomingApprovalCriteria: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: IncomingApprovalCriteria: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MerkleChallenges", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MerkleChallenges = append(m.MerkleChallenges, &MerkleChallenge{}) + if err := m.MerkleChallenges[len(m.MerkleChallenges)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PredeterminedBalances", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.PredeterminedBalances == nil { + m.PredeterminedBalances = &PredeterminedBalances{} + } + if err := m.PredeterminedBalances.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalAmounts", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ApprovalAmounts == nil { + m.ApprovalAmounts = &ApprovalAmounts{} + } + if err := m.ApprovalAmounts.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxNumTransfers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.MaxNumTransfers == nil { + m.MaxNumTransfers = &MaxNumTransfers{} + } + if err := m.MaxNumTransfers.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CoinTransfers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CoinTransfers = append(m.CoinTransfers, &CoinTransfer{}) + if err := m.CoinTransfers[len(m.CoinTransfers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RequireFromEqualsInitiatedBy", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.RequireFromEqualsInitiatedBy = bool(v != 0) + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field RequireFromDoesNotEqualInitiatedBy", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.RequireFromDoesNotEqualInitiatedBy = bool(v != 0) + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AutoDeletionOptions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AutoDeletionOptions == nil { + m.AutoDeletionOptions = &AutoDeletionOptions{} + } + if err := m.AutoDeletionOptions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MustOwnTokens", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MustOwnTokens = append(m.MustOwnTokens, &MustOwnTokens{}) + if err := m.MustOwnTokens[len(m.MustOwnTokens)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DynamicStoreChallenges", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DynamicStoreChallenges = append(m.DynamicStoreChallenges, &DynamicStoreChallenge{}) + if err := m.DynamicStoreChallenges[len(m.DynamicStoreChallenges)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EthSignatureChallenges", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.EthSignatureChallenges = append(m.EthSignatureChallenges, ÐSignatureChallenge{}) + if err := m.EthSignatureChallenges[len(m.EthSignatureChallenges)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SenderChecks", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SenderChecks == nil { + m.SenderChecks = &AddressChecks{} + } + if err := m.SenderChecks.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field InitiatorChecks", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.InitiatorChecks == nil { + m.InitiatorChecks = &AddressChecks{} + } + if err := m.InitiatorChecks.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AltTimeChecks", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AltTimeChecks == nil { + m.AltTimeChecks = &AltTimeChecks{} + } + if err := m.AltTimeChecks.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 15: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MustPrioritize", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.MustPrioritize = bool(v != 0) + case 16: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VotingChallenges", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.VotingChallenges = append(m.VotingChallenges, &VotingChallenge{}) + if err := m.VotingChallenges[len(m.VotingChallenges)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 17: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EvmQueryChallenges", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalCriteria + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalCriteria + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalCriteria + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.EvmQueryChallenges = append(m.EvmQueryChallenges, &EVMQueryChallenge{}) + if err := m.EvmQueryChallenges[len(m.EvmQueryChallenges)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApprovalCriteria(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApprovalCriteria + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipApprovalCriteria(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, ErrIntOverflowApprovalCriteria + } + 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, ErrIntOverflowApprovalCriteria + } + 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, ErrIntOverflowApprovalCriteria + } + 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, ErrInvalidLengthApprovalCriteria + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupApprovalCriteria + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthApprovalCriteria + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthApprovalCriteria = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowApprovalCriteria = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupApprovalCriteria = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/tokenization/types/v29/approval_tracking.pb.go b/x/tokenization/types/v29/approval_tracking.pb.go new file mode 100644 index 00000000..f3fbcd23 --- /dev/null +++ b/x/tokenization/types/v29/approval_tracking.pb.go @@ -0,0 +1,1816 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: tokenization/v29/approval_tracking.proto + +package v29 + +import ( + fmt "fmt" + _ "github.com/cosmos/gogoproto/gogoproto" + 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 + +// AutoDeletionOptions defines the options for auto-deletion of approvals. +type AutoDeletionOptions struct { + // After one use? + AfterOneUse bool `protobuf:"varint,1,opt,name=afterOneUse,proto3" json:"afterOneUse,omitempty"` + // After overall max number of uses threshold is met? + AfterOverallMaxNumTransfers bool `protobuf:"varint,2,opt,name=afterOverallMaxNumTransfers,proto3" json:"afterOverallMaxNumTransfers,omitempty"` + // Allow counterparty to purge this approval if they are the only initiator + AllowCounterpartyPurge bool `protobuf:"varint,3,opt,name=allowCounterpartyPurge,proto3" json:"allowCounterpartyPurge,omitempty"` + // Allow others to call PurgeApprovals on behalf of this approval owner + AllowPurgeIfExpired bool `protobuf:"varint,4,opt,name=allowPurgeIfExpired,proto3" json:"allowPurgeIfExpired,omitempty"` +} + +func (m *AutoDeletionOptions) Reset() { *m = AutoDeletionOptions{} } +func (m *AutoDeletionOptions) String() string { return proto.CompactTextString(m) } +func (*AutoDeletionOptions) ProtoMessage() {} +func (*AutoDeletionOptions) Descriptor() ([]byte, []int) { + return fileDescriptor_c110b45ecb3fc3c5, []int{0} +} +func (m *AutoDeletionOptions) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AutoDeletionOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AutoDeletionOptions.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 *AutoDeletionOptions) XXX_Merge(src proto.Message) { + xxx_messageInfo_AutoDeletionOptions.Merge(m, src) +} +func (m *AutoDeletionOptions) XXX_Size() int { + return m.Size() +} +func (m *AutoDeletionOptions) XXX_DiscardUnknown() { + xxx_messageInfo_AutoDeletionOptions.DiscardUnknown(m) +} + +var xxx_messageInfo_AutoDeletionOptions proto.InternalMessageInfo + +func (m *AutoDeletionOptions) GetAfterOneUse() bool { + if m != nil { + return m.AfterOneUse + } + return false +} + +func (m *AutoDeletionOptions) GetAfterOverallMaxNumTransfers() bool { + if m != nil { + return m.AfterOverallMaxNumTransfers + } + return false +} + +func (m *AutoDeletionOptions) GetAllowCounterpartyPurge() bool { + if m != nil { + return m.AllowCounterpartyPurge + } + return false +} + +func (m *AutoDeletionOptions) GetAllowPurgeIfExpired() bool { + if m != nil { + return m.AllowPurgeIfExpired + } + return false +} + +// Time intervals to reset the trackers at. +type ResetTimeIntervals struct { + // Original start time of the first interval. + StartTime Uint `protobuf:"bytes,1,opt,name=startTime,proto3,customtype=Uint" json:"startTime"` + // Interval length in unix milliseconds. + IntervalLength Uint `protobuf:"bytes,2,opt,name=intervalLength,proto3,customtype=Uint" json:"intervalLength"` +} + +func (m *ResetTimeIntervals) Reset() { *m = ResetTimeIntervals{} } +func (m *ResetTimeIntervals) String() string { return proto.CompactTextString(m) } +func (*ResetTimeIntervals) ProtoMessage() {} +func (*ResetTimeIntervals) Descriptor() ([]byte, []int) { + return fileDescriptor_c110b45ecb3fc3c5, []int{1} +} +func (m *ResetTimeIntervals) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ResetTimeIntervals) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ResetTimeIntervals.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 *ResetTimeIntervals) XXX_Merge(src proto.Message) { + xxx_messageInfo_ResetTimeIntervals.Merge(m, src) +} +func (m *ResetTimeIntervals) XXX_Size() int { + return m.Size() +} +func (m *ResetTimeIntervals) XXX_DiscardUnknown() { + xxx_messageInfo_ResetTimeIntervals.DiscardUnknown(m) +} + +var xxx_messageInfo_ResetTimeIntervals proto.InternalMessageInfo + +// ApprovalAmounts defines approval amounts per unique "from," "to," and/or "initiated by" address. +// If any of these are nil or "0", we assume unlimited approvals. +// If they are set to a value, then the running tally of the amounts transferred for the specified token IDs and ownership times +// must not exceed the corresponding value. +type ApprovalAmounts struct { + // Overall approval amount. + OverallApprovalAmount Uint `protobuf:"bytes,1,opt,name=overallApprovalAmount,proto3,customtype=Uint" json:"overallApprovalAmount"` + // Approval amount per "to" address. + PerToAddressApprovalAmount Uint `protobuf:"bytes,2,opt,name=perToAddressApprovalAmount,proto3,customtype=Uint" json:"perToAddressApprovalAmount"` + // Approval amount per "from" address. + PerFromAddressApprovalAmount Uint `protobuf:"bytes,3,opt,name=perFromAddressApprovalAmount,proto3,customtype=Uint" json:"perFromAddressApprovalAmount"` + // Approval amount per "initiated by" address. + PerInitiatedByAddressApprovalAmount Uint `protobuf:"bytes,4,opt,name=perInitiatedByAddressApprovalAmount,proto3,customtype=Uint" json:"perInitiatedByAddressApprovalAmount"` + // The ID of the amount tracker associated with this approval. + // We use this ID to track the number of transfers and amounts transferred. + AmountTrackerId string `protobuf:"bytes,6,opt,name=amountTrackerId,proto3" json:"amountTrackerId,omitempty"` + // Time intervals to reset the trackers at. + ResetTimeIntervals *ResetTimeIntervals `protobuf:"bytes,7,opt,name=resetTimeIntervals,proto3" json:"resetTimeIntervals,omitempty"` +} + +func (m *ApprovalAmounts) Reset() { *m = ApprovalAmounts{} } +func (m *ApprovalAmounts) String() string { return proto.CompactTextString(m) } +func (*ApprovalAmounts) ProtoMessage() {} +func (*ApprovalAmounts) Descriptor() ([]byte, []int) { + return fileDescriptor_c110b45ecb3fc3c5, []int{2} +} +func (m *ApprovalAmounts) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ApprovalAmounts) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ApprovalAmounts.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 *ApprovalAmounts) XXX_Merge(src proto.Message) { + xxx_messageInfo_ApprovalAmounts.Merge(m, src) +} +func (m *ApprovalAmounts) XXX_Size() int { + return m.Size() +} +func (m *ApprovalAmounts) XXX_DiscardUnknown() { + xxx_messageInfo_ApprovalAmounts.DiscardUnknown(m) +} + +var xxx_messageInfo_ApprovalAmounts proto.InternalMessageInfo + +func (m *ApprovalAmounts) GetAmountTrackerId() string { + if m != nil { + return m.AmountTrackerId + } + return "" +} + +func (m *ApprovalAmounts) GetResetTimeIntervals() *ResetTimeIntervals { + if m != nil { + return m.ResetTimeIntervals + } + return nil +} + +// MaxNumTransfers defines the maximum number of transfers per unique "from," "to," and/or "initiated by" address. +// If any of these are nil or "0", we assume unlimited approvals. +// If they are set to a value, then the running tally of the number of transfers for the specified token IDs and ownership times +// must not exceed the corresponding value. +type MaxNumTransfers struct { + // Overall maximum number of transfers. + OverallMaxNumTransfers Uint `protobuf:"bytes,1,opt,name=overallMaxNumTransfers,proto3,customtype=Uint" json:"overallMaxNumTransfers"` + // Maximum number of transfers per "to" address. + PerToAddressMaxNumTransfers Uint `protobuf:"bytes,2,opt,name=perToAddressMaxNumTransfers,proto3,customtype=Uint" json:"perToAddressMaxNumTransfers"` + // Maximum number of transfers per "from" address. + PerFromAddressMaxNumTransfers Uint `protobuf:"bytes,3,opt,name=perFromAddressMaxNumTransfers,proto3,customtype=Uint" json:"perFromAddressMaxNumTransfers"` + // Maximum number of transfers per "initiated by" address. + PerInitiatedByAddressMaxNumTransfers Uint `protobuf:"bytes,4,opt,name=perInitiatedByAddressMaxNumTransfers,proto3,customtype=Uint" json:"perInitiatedByAddressMaxNumTransfers"` + // The ID of the amount tracker associated with this approval. + // We use this ID to track the number of transfers and amounts transferred. + AmountTrackerId string `protobuf:"bytes,6,opt,name=amountTrackerId,proto3" json:"amountTrackerId,omitempty"` + // Time intervals to reset the trackers at. + ResetTimeIntervals *ResetTimeIntervals `protobuf:"bytes,7,opt,name=resetTimeIntervals,proto3" json:"resetTimeIntervals,omitempty"` +} + +func (m *MaxNumTransfers) Reset() { *m = MaxNumTransfers{} } +func (m *MaxNumTransfers) String() string { return proto.CompactTextString(m) } +func (*MaxNumTransfers) ProtoMessage() {} +func (*MaxNumTransfers) Descriptor() ([]byte, []int) { + return fileDescriptor_c110b45ecb3fc3c5, []int{3} +} +func (m *MaxNumTransfers) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MaxNumTransfers) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MaxNumTransfers.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 *MaxNumTransfers) XXX_Merge(src proto.Message) { + xxx_messageInfo_MaxNumTransfers.Merge(m, src) +} +func (m *MaxNumTransfers) XXX_Size() int { + return m.Size() +} +func (m *MaxNumTransfers) XXX_DiscardUnknown() { + xxx_messageInfo_MaxNumTransfers.DiscardUnknown(m) +} + +var xxx_messageInfo_MaxNumTransfers proto.InternalMessageInfo + +func (m *MaxNumTransfers) GetAmountTrackerId() string { + if m != nil { + return m.AmountTrackerId + } + return "" +} + +func (m *MaxNumTransfers) GetResetTimeIntervals() *ResetTimeIntervals { + if m != nil { + return m.ResetTimeIntervals + } + return nil +} + +// ApprovalTracker defines the tracker for approvals. This tracks the cumulative number of transfers and associated balances transferred. +type ApprovalTracker struct { + // The number of transfers that have been processed. + NumTransfers Uint `protobuf:"bytes,1,opt,name=numTransfers,proto3,customtype=Uint" json:"numTransfers"` + // Cumulative balances associated with the transfers that have been processed. + Amounts []*Balance `protobuf:"bytes,2,rep,name=amounts,proto3" json:"amounts,omitempty"` + // Last updated at time. + LastUpdatedAt Uint `protobuf:"bytes,3,opt,name=lastUpdatedAt,proto3,customtype=Uint" json:"lastUpdatedAt"` +} + +func (m *ApprovalTracker) Reset() { *m = ApprovalTracker{} } +func (m *ApprovalTracker) String() string { return proto.CompactTextString(m) } +func (*ApprovalTracker) ProtoMessage() {} +func (*ApprovalTracker) Descriptor() ([]byte, []int) { + return fileDescriptor_c110b45ecb3fc3c5, []int{4} +} +func (m *ApprovalTracker) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ApprovalTracker) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ApprovalTracker.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 *ApprovalTracker) XXX_Merge(src proto.Message) { + xxx_messageInfo_ApprovalTracker.Merge(m, src) +} +func (m *ApprovalTracker) XXX_Size() int { + return m.Size() +} +func (m *ApprovalTracker) XXX_DiscardUnknown() { + xxx_messageInfo_ApprovalTracker.DiscardUnknown(m) +} + +var xxx_messageInfo_ApprovalTracker proto.InternalMessageInfo + +func (m *ApprovalTracker) GetAmounts() []*Balance { + if m != nil { + return m.Amounts + } + return nil +} + +func init() { + proto.RegisterType((*AutoDeletionOptions)(nil), "tokenization.v29.AutoDeletionOptions") + proto.RegisterType((*ResetTimeIntervals)(nil), "tokenization.v29.ResetTimeIntervals") + proto.RegisterType((*ApprovalAmounts)(nil), "tokenization.v29.ApprovalAmounts") + proto.RegisterType((*MaxNumTransfers)(nil), "tokenization.v29.MaxNumTransfers") + proto.RegisterType((*ApprovalTracker)(nil), "tokenization.v29.ApprovalTracker") +} + +func init() { + proto.RegisterFile("tokenization/v29/approval_tracking.proto", fileDescriptor_c110b45ecb3fc3c5) +} + +var fileDescriptor_c110b45ecb3fc3c5 = []byte{ + // 605 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x55, 0x41, 0x4f, 0x13, 0x41, + 0x18, 0xed, 0x5a, 0x02, 0xf2, 0x81, 0x62, 0x06, 0x25, 0x2b, 0xe8, 0x42, 0x2a, 0x87, 0xc6, 0x43, + 0x97, 0x14, 0x63, 0x42, 0xe2, 0xc1, 0x56, 0x34, 0x69, 0x82, 0x40, 0x36, 0xc5, 0x83, 0x07, 0x75, + 0xda, 0xfd, 0x58, 0x26, 0x6c, 0x67, 0x36, 0x33, 0xd3, 0x15, 0xfc, 0x15, 0xfe, 0x10, 0x7f, 0x08, + 0x47, 0x2e, 0x26, 0xc6, 0x44, 0x62, 0xda, 0x3f, 0x62, 0x76, 0xb7, 0xa6, 0xed, 0x76, 0xa8, 0xdc, + 0xbc, 0x34, 0x33, 0xf3, 0xbd, 0xf7, 0xfa, 0xcd, 0xbc, 0x79, 0x3b, 0x50, 0xd6, 0xe2, 0x14, 0x39, + 0xfb, 0x42, 0x35, 0x13, 0xdc, 0x8d, 0xab, 0x3b, 0x2e, 0x8d, 0x22, 0x29, 0x62, 0x1a, 0x7e, 0xd4, + 0x92, 0xb6, 0x4f, 0x19, 0x0f, 0x2a, 0x91, 0x14, 0x5a, 0x90, 0x7b, 0xa3, 0xc8, 0x4a, 0x5c, 0xdd, + 0x59, 0xbd, 0x1f, 0x88, 0x40, 0xa4, 0x45, 0x37, 0x19, 0x65, 0xb8, 0xd5, 0xf5, 0x09, 0xc5, 0x16, + 0x0d, 0x29, 0x6f, 0xa3, 0xca, 0x00, 0xa5, 0xbe, 0x05, 0xcb, 0xb5, 0xae, 0x16, 0xbb, 0x18, 0x62, + 0x82, 0x39, 0x88, 0x92, 0x5f, 0x45, 0x36, 0x60, 0x81, 0x1e, 0x6b, 0x94, 0x07, 0x1c, 0x8f, 0x14, + 0xda, 0xd6, 0x86, 0x55, 0xbe, 0xed, 0x8d, 0x2e, 0x91, 0x97, 0xb0, 0x96, 0x4d, 0x63, 0x94, 0x34, + 0x0c, 0xdf, 0xd2, 0xb3, 0xfd, 0x6e, 0xa7, 0x29, 0x29, 0x57, 0xc7, 0x28, 0x95, 0x7d, 0x2b, 0x65, + 0x4c, 0x83, 0x90, 0xe7, 0xb0, 0x42, 0xc3, 0x50, 0x7c, 0x7e, 0x25, 0xba, 0x5c, 0xa3, 0x8c, 0xa8, + 0xd4, 0xe7, 0x87, 0x5d, 0x19, 0xa0, 0x5d, 0x4c, 0xc9, 0xd7, 0x54, 0xc9, 0x16, 0x2c, 0xa7, 0x95, + 0x74, 0xd6, 0x38, 0x7e, 0x7d, 0x16, 0x31, 0x89, 0xbe, 0x3d, 0x93, 0x92, 0x4c, 0xa5, 0x52, 0x0c, + 0xc4, 0x43, 0x85, 0xba, 0xc9, 0x3a, 0xd8, 0x48, 0xd4, 0x62, 0x1a, 0x2a, 0xf2, 0x14, 0xe6, 0x95, + 0xa6, 0x32, 0x5d, 0x4d, 0x77, 0x38, 0x5f, 0x5f, 0xbc, 0xb8, 0x5a, 0x2f, 0xfc, 0xbc, 0x5a, 0x9f, + 0x39, 0x62, 0x5c, 0x7b, 0xc3, 0x32, 0x79, 0x06, 0x77, 0xd9, 0x80, 0xb8, 0x87, 0x3c, 0xd0, 0x27, + 0xe9, 0x06, 0xf3, 0x84, 0x1c, 0xa6, 0xf4, 0xbd, 0x08, 0x4b, 0xb5, 0x81, 0x85, 0xb5, 0x4e, 0xb2, + 0x11, 0x45, 0xea, 0xf0, 0x40, 0x64, 0xe7, 0x31, 0x5e, 0x31, 0x76, 0x60, 0x86, 0x92, 0x3d, 0x58, + 0x8d, 0x50, 0x36, 0x45, 0xcd, 0xf7, 0x25, 0x2a, 0x95, 0x13, 0x32, 0x75, 0x36, 0x05, 0x4f, 0x0e, + 0xe1, 0x51, 0x84, 0xf2, 0x8d, 0x14, 0x1d, 0xb3, 0x5e, 0xd1, 0xa0, 0x37, 0x95, 0x41, 0x3e, 0xc0, + 0x93, 0x08, 0x65, 0x83, 0x33, 0xcd, 0xa8, 0x46, 0xbf, 0x7e, 0x6e, 0x16, 0x9e, 0x31, 0x08, 0xdf, + 0x84, 0x48, 0xca, 0xb0, 0x44, 0xd3, 0x51, 0x33, 0x89, 0x05, 0xca, 0x86, 0x6f, 0xcf, 0x26, 0x5a, + 0x5e, 0x7e, 0x99, 0x34, 0x81, 0xc8, 0x09, 0xe7, 0xed, 0xb9, 0x0d, 0xab, 0xbc, 0x50, 0xdd, 0xac, + 0xe4, 0x53, 0x54, 0x99, 0xbc, 0x25, 0x9e, 0x81, 0x5f, 0xfa, 0x55, 0x84, 0xa5, 0xfc, 0x6d, 0xde, + 0x85, 0x15, 0x61, 0x8e, 0x82, 0xc9, 0xd8, 0x6b, 0xb0, 0x64, 0x1f, 0xd6, 0x46, 0x9d, 0x32, 0xa5, + 0x2a, 0x2f, 0x35, 0x8d, 0x40, 0x3c, 0x78, 0x3c, 0xee, 0x54, 0x5e, 0xd1, 0x64, 0xee, 0x74, 0x0a, + 0xf9, 0x04, 0x9b, 0x46, 0x93, 0xf2, 0xd2, 0x26, 0x7b, 0x6f, 0xc4, 0xfc, 0xef, 0xfe, 0x7e, 0xb3, + 0x86, 0xb9, 0x1d, 0xfc, 0x17, 0xd9, 0x82, 0x45, 0xfe, 0x2f, 0x57, 0xc7, 0x10, 0x64, 0x1b, 0xe6, + 0xb2, 0x76, 0x13, 0xdf, 0x8a, 0xe5, 0x85, 0xea, 0xc3, 0xc9, 0x86, 0xea, 0xd9, 0xe7, 0xd8, 0xfb, + 0x8b, 0x24, 0x55, 0xb8, 0x13, 0x52, 0xa5, 0x8f, 0x22, 0x3f, 0x39, 0xa1, 0x9a, 0x39, 0x7d, 0xe3, + 0x90, 0xfa, 0xbb, 0x8b, 0x9e, 0x63, 0x5d, 0xf6, 0x1c, 0xeb, 0x77, 0xcf, 0xb1, 0xbe, 0xf6, 0x9d, + 0xc2, 0x65, 0xdf, 0x29, 0xfc, 0xe8, 0x3b, 0x85, 0xf7, 0x2f, 0x02, 0xa6, 0x4f, 0xba, 0xad, 0x4a, + 0x5b, 0x74, 0xdc, 0x16, 0xd3, 0x2d, 0xea, 0x07, 0xa8, 0x86, 0xa3, 0xf6, 0x09, 0x65, 0xdc, 0x3d, + 0x73, 0xc7, 0x5e, 0x09, 0x7d, 0x1e, 0xa1, 0x4a, 0xde, 0x8a, 0xd6, 0x6c, 0xfa, 0x46, 0x6c, 0xff, + 0x09, 0x00, 0x00, 0xff, 0xff, 0xd1, 0x67, 0xb5, 0xd8, 0x98, 0x06, 0x00, 0x00, +} + +func (m *AutoDeletionOptions) 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 *AutoDeletionOptions) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *AutoDeletionOptions) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.AllowPurgeIfExpired { + i-- + if m.AllowPurgeIfExpired { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x20 + } + if m.AllowCounterpartyPurge { + i-- + if m.AllowCounterpartyPurge { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } + if m.AfterOverallMaxNumTransfers { + i-- + if m.AfterOverallMaxNumTransfers { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 + } + if m.AfterOneUse { + i-- + if m.AfterOneUse { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *ResetTimeIntervals) 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 *ResetTimeIntervals) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ResetTimeIntervals) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.IntervalLength.Size() + i -= size + if _, err := m.IntervalLength.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintApprovalTracking(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + { + size := m.StartTime.Size() + i -= size + if _, err := m.StartTime.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintApprovalTracking(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *ApprovalAmounts) 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 *ApprovalAmounts) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ApprovalAmounts) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.ResetTimeIntervals != nil { + { + size, err := m.ResetTimeIntervals.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalTracking(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + if len(m.AmountTrackerId) > 0 { + i -= len(m.AmountTrackerId) + copy(dAtA[i:], m.AmountTrackerId) + i = encodeVarintApprovalTracking(dAtA, i, uint64(len(m.AmountTrackerId))) + i-- + dAtA[i] = 0x32 + } + { + size := m.PerInitiatedByAddressApprovalAmount.Size() + i -= size + if _, err := m.PerInitiatedByAddressApprovalAmount.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintApprovalTracking(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + { + size := m.PerFromAddressApprovalAmount.Size() + i -= size + if _, err := m.PerFromAddressApprovalAmount.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintApprovalTracking(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + { + size := m.PerToAddressApprovalAmount.Size() + i -= size + if _, err := m.PerToAddressApprovalAmount.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintApprovalTracking(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + { + size := m.OverallApprovalAmount.Size() + i -= size + if _, err := m.OverallApprovalAmount.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintApprovalTracking(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *MaxNumTransfers) 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 *MaxNumTransfers) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MaxNumTransfers) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.ResetTimeIntervals != nil { + { + size, err := m.ResetTimeIntervals.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalTracking(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + if len(m.AmountTrackerId) > 0 { + i -= len(m.AmountTrackerId) + copy(dAtA[i:], m.AmountTrackerId) + i = encodeVarintApprovalTracking(dAtA, i, uint64(len(m.AmountTrackerId))) + i-- + dAtA[i] = 0x32 + } + { + size := m.PerInitiatedByAddressMaxNumTransfers.Size() + i -= size + if _, err := m.PerInitiatedByAddressMaxNumTransfers.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintApprovalTracking(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + { + size := m.PerFromAddressMaxNumTransfers.Size() + i -= size + if _, err := m.PerFromAddressMaxNumTransfers.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintApprovalTracking(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + { + size := m.PerToAddressMaxNumTransfers.Size() + i -= size + if _, err := m.PerToAddressMaxNumTransfers.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintApprovalTracking(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + { + size := m.OverallMaxNumTransfers.Size() + i -= size + if _, err := m.OverallMaxNumTransfers.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintApprovalTracking(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *ApprovalTracker) 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 *ApprovalTracker) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ApprovalTracker) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.LastUpdatedAt.Size() + i -= size + if _, err := m.LastUpdatedAt.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintApprovalTracking(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + if len(m.Amounts) > 0 { + for iNdEx := len(m.Amounts) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Amounts[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovalTracking(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + { + size := m.NumTransfers.Size() + i -= size + if _, err := m.NumTransfers.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintApprovalTracking(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func encodeVarintApprovalTracking(dAtA []byte, offset int, v uint64) int { + offset -= sovApprovalTracking(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *AutoDeletionOptions) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.AfterOneUse { + n += 2 + } + if m.AfterOverallMaxNumTransfers { + n += 2 + } + if m.AllowCounterpartyPurge { + n += 2 + } + if m.AllowPurgeIfExpired { + n += 2 + } + return n +} + +func (m *ResetTimeIntervals) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.StartTime.Size() + n += 1 + l + sovApprovalTracking(uint64(l)) + l = m.IntervalLength.Size() + n += 1 + l + sovApprovalTracking(uint64(l)) + return n +} + +func (m *ApprovalAmounts) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.OverallApprovalAmount.Size() + n += 1 + l + sovApprovalTracking(uint64(l)) + l = m.PerToAddressApprovalAmount.Size() + n += 1 + l + sovApprovalTracking(uint64(l)) + l = m.PerFromAddressApprovalAmount.Size() + n += 1 + l + sovApprovalTracking(uint64(l)) + l = m.PerInitiatedByAddressApprovalAmount.Size() + n += 1 + l + sovApprovalTracking(uint64(l)) + l = len(m.AmountTrackerId) + if l > 0 { + n += 1 + l + sovApprovalTracking(uint64(l)) + } + if m.ResetTimeIntervals != nil { + l = m.ResetTimeIntervals.Size() + n += 1 + l + sovApprovalTracking(uint64(l)) + } + return n +} + +func (m *MaxNumTransfers) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.OverallMaxNumTransfers.Size() + n += 1 + l + sovApprovalTracking(uint64(l)) + l = m.PerToAddressMaxNumTransfers.Size() + n += 1 + l + sovApprovalTracking(uint64(l)) + l = m.PerFromAddressMaxNumTransfers.Size() + n += 1 + l + sovApprovalTracking(uint64(l)) + l = m.PerInitiatedByAddressMaxNumTransfers.Size() + n += 1 + l + sovApprovalTracking(uint64(l)) + l = len(m.AmountTrackerId) + if l > 0 { + n += 1 + l + sovApprovalTracking(uint64(l)) + } + if m.ResetTimeIntervals != nil { + l = m.ResetTimeIntervals.Size() + n += 1 + l + sovApprovalTracking(uint64(l)) + } + return n +} + +func (m *ApprovalTracker) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.NumTransfers.Size() + n += 1 + l + sovApprovalTracking(uint64(l)) + if len(m.Amounts) > 0 { + for _, e := range m.Amounts { + l = e.Size() + n += 1 + l + sovApprovalTracking(uint64(l)) + } + } + l = m.LastUpdatedAt.Size() + n += 1 + l + sovApprovalTracking(uint64(l)) + return n +} + +func sovApprovalTracking(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozApprovalTracking(x uint64) (n int) { + return sovApprovalTracking(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *AutoDeletionOptions) 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 ErrIntOverflowApprovalTracking + } + 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: AutoDeletionOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AutoDeletionOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AfterOneUse", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalTracking + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.AfterOneUse = bool(v != 0) + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AfterOverallMaxNumTransfers", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalTracking + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.AfterOverallMaxNumTransfers = bool(v != 0) + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AllowCounterpartyPurge", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalTracking + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.AllowCounterpartyPurge = bool(v != 0) + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AllowPurgeIfExpired", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalTracking + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.AllowPurgeIfExpired = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipApprovalTracking(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApprovalTracking + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ResetTimeIntervals) 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 ErrIntOverflowApprovalTracking + } + 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: ResetTimeIntervals: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ResetTimeIntervals: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StartTime", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalTracking + } + 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 ErrInvalidLengthApprovalTracking + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovalTracking + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.StartTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IntervalLength", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalTracking + } + 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 ErrInvalidLengthApprovalTracking + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovalTracking + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.IntervalLength.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApprovalTracking(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApprovalTracking + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ApprovalAmounts) 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 ErrIntOverflowApprovalTracking + } + 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: ApprovalAmounts: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ApprovalAmounts: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OverallApprovalAmount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalTracking + } + 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 ErrInvalidLengthApprovalTracking + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovalTracking + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.OverallApprovalAmount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PerToAddressApprovalAmount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalTracking + } + 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 ErrInvalidLengthApprovalTracking + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovalTracking + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.PerToAddressApprovalAmount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PerFromAddressApprovalAmount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalTracking + } + 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 ErrInvalidLengthApprovalTracking + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovalTracking + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.PerFromAddressApprovalAmount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PerInitiatedByAddressApprovalAmount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalTracking + } + 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 ErrInvalidLengthApprovalTracking + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovalTracking + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.PerInitiatedByAddressApprovalAmount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AmountTrackerId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalTracking + } + 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 ErrInvalidLengthApprovalTracking + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovalTracking + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AmountTrackerId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResetTimeIntervals", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalTracking + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalTracking + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalTracking + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ResetTimeIntervals == nil { + m.ResetTimeIntervals = &ResetTimeIntervals{} + } + if err := m.ResetTimeIntervals.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApprovalTracking(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApprovalTracking + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MaxNumTransfers) 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 ErrIntOverflowApprovalTracking + } + 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: MaxNumTransfers: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MaxNumTransfers: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OverallMaxNumTransfers", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalTracking + } + 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 ErrInvalidLengthApprovalTracking + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovalTracking + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.OverallMaxNumTransfers.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PerToAddressMaxNumTransfers", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalTracking + } + 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 ErrInvalidLengthApprovalTracking + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovalTracking + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.PerToAddressMaxNumTransfers.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PerFromAddressMaxNumTransfers", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalTracking + } + 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 ErrInvalidLengthApprovalTracking + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovalTracking + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.PerFromAddressMaxNumTransfers.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PerInitiatedByAddressMaxNumTransfers", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalTracking + } + 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 ErrInvalidLengthApprovalTracking + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovalTracking + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.PerInitiatedByAddressMaxNumTransfers.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AmountTrackerId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalTracking + } + 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 ErrInvalidLengthApprovalTracking + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovalTracking + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AmountTrackerId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ResetTimeIntervals", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalTracking + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalTracking + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalTracking + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ResetTimeIntervals == nil { + m.ResetTimeIntervals = &ResetTimeIntervals{} + } + if err := m.ResetTimeIntervals.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApprovalTracking(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApprovalTracking + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ApprovalTracker) 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 ErrIntOverflowApprovalTracking + } + 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: ApprovalTracker: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ApprovalTracker: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NumTransfers", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalTracking + } + 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 ErrInvalidLengthApprovalTracking + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovalTracking + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.NumTransfers.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Amounts", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalTracking + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovalTracking + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovalTracking + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Amounts = append(m.Amounts, &Balance{}) + if err := m.Amounts[len(m.Amounts)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LastUpdatedAt", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovalTracking + } + 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 ErrInvalidLengthApprovalTracking + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovalTracking + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LastUpdatedAt.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApprovalTracking(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApprovalTracking + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipApprovalTracking(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, ErrIntOverflowApprovalTracking + } + 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, ErrIntOverflowApprovalTracking + } + 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, ErrIntOverflowApprovalTracking + } + 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, ErrInvalidLengthApprovalTracking + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupApprovalTracking + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthApprovalTracking + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthApprovalTracking = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowApprovalTracking = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupApprovalTracking = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/tokenization/types/v29/approvals.pb.go b/x/tokenization/types/v29/approvals.pb.go new file mode 100644 index 00000000..3ce05c9d --- /dev/null +++ b/x/tokenization/types/v29/approvals.pb.go @@ -0,0 +1,2581 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: tokenization/v29/approvals.proto + +package v29 + +import ( + fmt "fmt" + _ "github.com/cosmos/gogoproto/gogoproto" + 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 + +// CollectionApproval defines the rules for the approval of a transfer on the collection level +type CollectionApproval struct { + // The list ID for the sender of the transfer. + FromListId string `protobuf:"bytes,1,opt,name=fromListId,proto3" json:"fromListId,omitempty"` + // The list ID for the recipient of the transfer. + ToListId string `protobuf:"bytes,2,opt,name=toListId,proto3" json:"toListId,omitempty"` + // The list ID for the user who initiated the transfer. + InitiatedByListId string `protobuf:"bytes,3,opt,name=initiatedByListId,proto3" json:"initiatedByListId,omitempty"` + // The allowed range of transfer times for approval. + TransferTimes []*UintRange `protobuf:"bytes,4,rep,name=transferTimes,proto3" json:"transferTimes,omitempty"` + // The allowed range of token IDs for approval. + TokenIds []*UintRange `protobuf:"bytes,5,rep,name=tokenIds,proto3" json:"tokenIds,omitempty"` + // The allowed range of ownership times for approval. + OwnershipTimes []*UintRange `protobuf:"bytes,6,rep,name=ownershipTimes,proto3" json:"ownershipTimes,omitempty"` + // The URI associated with this approval, optionally providing metadata about the approval. + Uri string `protobuf:"bytes,7,opt,name=uri,proto3" json:"uri,omitempty"` + // Arbitrary custom data associated with this approval. + CustomData string `protobuf:"bytes,8,opt,name=customData,proto3" json:"customData,omitempty"` + // The ID of this approval. Must be unique per level (i.e. collection, outgoing, incoming). + ApprovalId string `protobuf:"bytes,9,opt,name=approvalId,proto3" json:"approvalId,omitempty"` + // The criteria that must be met for this approval to be considered. + ApprovalCriteria *ApprovalCriteria `protobuf:"bytes,10,opt,name=approvalCriteria,proto3" json:"approvalCriteria,omitempty"` + // Version of the approval. Maintained internally. + Version Uint `protobuf:"bytes,11,opt,name=version,proto3,customtype=Uint" json:"version"` +} + +func (m *CollectionApproval) Reset() { *m = CollectionApproval{} } +func (m *CollectionApproval) String() string { return proto.CompactTextString(m) } +func (*CollectionApproval) ProtoMessage() {} +func (*CollectionApproval) Descriptor() ([]byte, []int) { + return fileDescriptor_fa19deec0bcff50d, []int{0} +} +func (m *CollectionApproval) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CollectionApproval) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CollectionApproval.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 *CollectionApproval) XXX_Merge(src proto.Message) { + xxx_messageInfo_CollectionApproval.Merge(m, src) +} +func (m *CollectionApproval) XXX_Size() int { + return m.Size() +} +func (m *CollectionApproval) XXX_DiscardUnknown() { + xxx_messageInfo_CollectionApproval.DiscardUnknown(m) +} + +var xxx_messageInfo_CollectionApproval proto.InternalMessageInfo + +func (m *CollectionApproval) GetFromListId() string { + if m != nil { + return m.FromListId + } + return "" +} + +func (m *CollectionApproval) GetToListId() string { + if m != nil { + return m.ToListId + } + return "" +} + +func (m *CollectionApproval) GetInitiatedByListId() string { + if m != nil { + return m.InitiatedByListId + } + return "" +} + +func (m *CollectionApproval) GetTransferTimes() []*UintRange { + if m != nil { + return m.TransferTimes + } + return nil +} + +func (m *CollectionApproval) GetTokenIds() []*UintRange { + if m != nil { + return m.TokenIds + } + return nil +} + +func (m *CollectionApproval) GetOwnershipTimes() []*UintRange { + if m != nil { + return m.OwnershipTimes + } + return nil +} + +func (m *CollectionApproval) GetUri() string { + if m != nil { + return m.Uri + } + return "" +} + +func (m *CollectionApproval) GetCustomData() string { + if m != nil { + return m.CustomData + } + return "" +} + +func (m *CollectionApproval) GetApprovalId() string { + if m != nil { + return m.ApprovalId + } + return "" +} + +func (m *CollectionApproval) GetApprovalCriteria() *ApprovalCriteria { + if m != nil { + return m.ApprovalCriteria + } + return nil +} + +// UserOutgoingApproval defines the rules for the approval of an outgoing transfer from a user. +type UserOutgoingApproval struct { + // The list ID for the recipient of the transfer. + ToListId string `protobuf:"bytes,1,opt,name=toListId,proto3" json:"toListId,omitempty"` + // The list ID for the user who initiated the transfer. + InitiatedByListId string `protobuf:"bytes,2,opt,name=initiatedByListId,proto3" json:"initiatedByListId,omitempty"` + // The allowed range of transfer times for approval. + TransferTimes []*UintRange `protobuf:"bytes,3,rep,name=transferTimes,proto3" json:"transferTimes,omitempty"` + // The allowed range of token IDs for approval. + TokenIds []*UintRange `protobuf:"bytes,4,rep,name=tokenIds,proto3" json:"tokenIds,omitempty"` + // The allowed range of ownership times for approval. + OwnershipTimes []*UintRange `protobuf:"bytes,5,rep,name=ownershipTimes,proto3" json:"ownershipTimes,omitempty"` + // The URI associated with this approval, optionally providing metadata about the approval. + Uri string `protobuf:"bytes,6,opt,name=uri,proto3" json:"uri,omitempty"` + // Arbitrary custom data associated with this approval. + CustomData string `protobuf:"bytes,7,opt,name=customData,proto3" json:"customData,omitempty"` + // The ID of this approval. Must be unique per level (i.e. collection, outgoing, incoming). + ApprovalId string `protobuf:"bytes,8,opt,name=approvalId,proto3" json:"approvalId,omitempty"` + // The criteria that must be met for this approval to be considered. + ApprovalCriteria *OutgoingApprovalCriteria `protobuf:"bytes,9,opt,name=approvalCriteria,proto3" json:"approvalCriteria,omitempty"` + // Version of the approval. Maintained internally. + Version Uint `protobuf:"bytes,10,opt,name=version,proto3,customtype=Uint" json:"version"` +} + +func (m *UserOutgoingApproval) Reset() { *m = UserOutgoingApproval{} } +func (m *UserOutgoingApproval) String() string { return proto.CompactTextString(m) } +func (*UserOutgoingApproval) ProtoMessage() {} +func (*UserOutgoingApproval) Descriptor() ([]byte, []int) { + return fileDescriptor_fa19deec0bcff50d, []int{1} +} +func (m *UserOutgoingApproval) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *UserOutgoingApproval) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_UserOutgoingApproval.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 *UserOutgoingApproval) XXX_Merge(src proto.Message) { + xxx_messageInfo_UserOutgoingApproval.Merge(m, src) +} +func (m *UserOutgoingApproval) XXX_Size() int { + return m.Size() +} +func (m *UserOutgoingApproval) XXX_DiscardUnknown() { + xxx_messageInfo_UserOutgoingApproval.DiscardUnknown(m) +} + +var xxx_messageInfo_UserOutgoingApproval proto.InternalMessageInfo + +func (m *UserOutgoingApproval) GetToListId() string { + if m != nil { + return m.ToListId + } + return "" +} + +func (m *UserOutgoingApproval) GetInitiatedByListId() string { + if m != nil { + return m.InitiatedByListId + } + return "" +} + +func (m *UserOutgoingApproval) GetTransferTimes() []*UintRange { + if m != nil { + return m.TransferTimes + } + return nil +} + +func (m *UserOutgoingApproval) GetTokenIds() []*UintRange { + if m != nil { + return m.TokenIds + } + return nil +} + +func (m *UserOutgoingApproval) GetOwnershipTimes() []*UintRange { + if m != nil { + return m.OwnershipTimes + } + return nil +} + +func (m *UserOutgoingApproval) GetUri() string { + if m != nil { + return m.Uri + } + return "" +} + +func (m *UserOutgoingApproval) GetCustomData() string { + if m != nil { + return m.CustomData + } + return "" +} + +func (m *UserOutgoingApproval) GetApprovalId() string { + if m != nil { + return m.ApprovalId + } + return "" +} + +func (m *UserOutgoingApproval) GetApprovalCriteria() *OutgoingApprovalCriteria { + if m != nil { + return m.ApprovalCriteria + } + return nil +} + +// UserIncomingApproval defines the rules for the approval of an incoming transfer to a user. +type UserIncomingApproval struct { + // The list ID for the sender of the transfer. + FromListId string `protobuf:"bytes,1,opt,name=fromListId,proto3" json:"fromListId,omitempty"` + // The list ID for the user who initiated the transfer. + InitiatedByListId string `protobuf:"bytes,2,opt,name=initiatedByListId,proto3" json:"initiatedByListId,omitempty"` + // The allowed range of transfer times for approval. + TransferTimes []*UintRange `protobuf:"bytes,3,rep,name=transferTimes,proto3" json:"transferTimes,omitempty"` + // The allowed range of token IDs for approval. + TokenIds []*UintRange `protobuf:"bytes,4,rep,name=tokenIds,proto3" json:"tokenIds,omitempty"` + // The allowed range of ownership times for approval. + OwnershipTimes []*UintRange `protobuf:"bytes,5,rep,name=ownershipTimes,proto3" json:"ownershipTimes,omitempty"` + // The URI associated with this approval, optionally providing metadata about the approval. + Uri string `protobuf:"bytes,6,opt,name=uri,proto3" json:"uri,omitempty"` + // Arbitrary custom data associated with this approval. + CustomData string `protobuf:"bytes,7,opt,name=customData,proto3" json:"customData,omitempty"` + // The ID of this approval. Must be unique per level (i.e. collection, outgoing, incoming). + ApprovalId string `protobuf:"bytes,8,opt,name=approvalId,proto3" json:"approvalId,omitempty"` + // The criteria that must be met for this approval to be considered. + ApprovalCriteria *IncomingApprovalCriteria `protobuf:"bytes,9,opt,name=approvalCriteria,proto3" json:"approvalCriteria,omitempty"` + // Version of the approval. Maintained internally. + Version Uint `protobuf:"bytes,10,opt,name=version,proto3,customtype=Uint" json:"version"` +} + +func (m *UserIncomingApproval) Reset() { *m = UserIncomingApproval{} } +func (m *UserIncomingApproval) String() string { return proto.CompactTextString(m) } +func (*UserIncomingApproval) ProtoMessage() {} +func (*UserIncomingApproval) Descriptor() ([]byte, []int) { + return fileDescriptor_fa19deec0bcff50d, []int{2} +} +func (m *UserIncomingApproval) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *UserIncomingApproval) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_UserIncomingApproval.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 *UserIncomingApproval) XXX_Merge(src proto.Message) { + xxx_messageInfo_UserIncomingApproval.Merge(m, src) +} +func (m *UserIncomingApproval) XXX_Size() int { + return m.Size() +} +func (m *UserIncomingApproval) XXX_DiscardUnknown() { + xxx_messageInfo_UserIncomingApproval.DiscardUnknown(m) +} + +var xxx_messageInfo_UserIncomingApproval proto.InternalMessageInfo + +func (m *UserIncomingApproval) GetFromListId() string { + if m != nil { + return m.FromListId + } + return "" +} + +func (m *UserIncomingApproval) GetInitiatedByListId() string { + if m != nil { + return m.InitiatedByListId + } + return "" +} + +func (m *UserIncomingApproval) GetTransferTimes() []*UintRange { + if m != nil { + return m.TransferTimes + } + return nil +} + +func (m *UserIncomingApproval) GetTokenIds() []*UintRange { + if m != nil { + return m.TokenIds + } + return nil +} + +func (m *UserIncomingApproval) GetOwnershipTimes() []*UintRange { + if m != nil { + return m.OwnershipTimes + } + return nil +} + +func (m *UserIncomingApproval) GetUri() string { + if m != nil { + return m.Uri + } + return "" +} + +func (m *UserIncomingApproval) GetCustomData() string { + if m != nil { + return m.CustomData + } + return "" +} + +func (m *UserIncomingApproval) GetApprovalId() string { + if m != nil { + return m.ApprovalId + } + return "" +} + +func (m *UserIncomingApproval) GetApprovalCriteria() *IncomingApprovalCriteria { + if m != nil { + return m.ApprovalCriteria + } + return nil +} + +// ApprovalIdentifierDetails defines the details to identify a specific approval. +type ApprovalIdentifierDetails struct { + // The ID of the approval. + ApprovalId string `protobuf:"bytes,1,opt,name=approvalId,proto3" json:"approvalId,omitempty"` + // The level of the approval. Can be "collection", "incoming", or "outgoing". + ApprovalLevel string `protobuf:"bytes,2,opt,name=approvalLevel,proto3" json:"approvalLevel,omitempty"` + // The address of the approver. Leave blank "" if approvalLevel == "collection". + ApproverAddress string `protobuf:"bytes,3,opt,name=approverAddress,proto3" json:"approverAddress,omitempty"` + // The version of the approval. + Version Uint `protobuf:"bytes,4,opt,name=version,proto3,customtype=Uint" json:"version"` +} + +func (m *ApprovalIdentifierDetails) Reset() { *m = ApprovalIdentifierDetails{} } +func (m *ApprovalIdentifierDetails) String() string { return proto.CompactTextString(m) } +func (*ApprovalIdentifierDetails) ProtoMessage() {} +func (*ApprovalIdentifierDetails) Descriptor() ([]byte, []int) { + return fileDescriptor_fa19deec0bcff50d, []int{3} +} +func (m *ApprovalIdentifierDetails) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ApprovalIdentifierDetails) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ApprovalIdentifierDetails.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 *ApprovalIdentifierDetails) XXX_Merge(src proto.Message) { + xxx_messageInfo_ApprovalIdentifierDetails.Merge(m, src) +} +func (m *ApprovalIdentifierDetails) XXX_Size() int { + return m.Size() +} +func (m *ApprovalIdentifierDetails) XXX_DiscardUnknown() { + xxx_messageInfo_ApprovalIdentifierDetails.DiscardUnknown(m) +} + +var xxx_messageInfo_ApprovalIdentifierDetails proto.InternalMessageInfo + +func (m *ApprovalIdentifierDetails) GetApprovalId() string { + if m != nil { + return m.ApprovalId + } + return "" +} + +func (m *ApprovalIdentifierDetails) GetApprovalLevel() string { + if m != nil { + return m.ApprovalLevel + } + return "" +} + +func (m *ApprovalIdentifierDetails) GetApproverAddress() string { + if m != nil { + return m.ApproverAddress + } + return "" +} + +func init() { + proto.RegisterType((*CollectionApproval)(nil), "tokenization.v29.CollectionApproval") + proto.RegisterType((*UserOutgoingApproval)(nil), "tokenization.v29.UserOutgoingApproval") + proto.RegisterType((*UserIncomingApproval)(nil), "tokenization.v29.UserIncomingApproval") + proto.RegisterType((*ApprovalIdentifierDetails)(nil), "tokenization.v29.ApprovalIdentifierDetails") +} + +func init() { proto.RegisterFile("tokenization/v29/approvals.proto", fileDescriptor_fa19deec0bcff50d) } + +var fileDescriptor_fa19deec0bcff50d = []byte{ + // 573 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x95, 0x4f, 0x6f, 0x12, 0x4f, + 0x18, 0xc7, 0xd9, 0x42, 0xf9, 0x33, 0xfc, 0xfa, 0x13, 0x27, 0x3d, 0xac, 0x98, 0x2c, 0x84, 0x18, + 0x43, 0x8c, 0x61, 0x13, 0x3c, 0x98, 0x26, 0x5e, 0x80, 0x5e, 0x48, 0x1a, 0x4d, 0x88, 0xed, 0xc1, + 0x8b, 0x19, 0x76, 0x1f, 0x96, 0x49, 0x97, 0x19, 0x32, 0x33, 0xac, 0xd6, 0x77, 0xe0, 0xcd, 0xf7, + 0xe2, 0x9b, 0xe8, 0xb1, 0x47, 0xe3, 0xa1, 0x31, 0xf0, 0x12, 0x3c, 0x78, 0x35, 0xfb, 0x07, 0x58, + 0x76, 0x6d, 0x21, 0xd6, 0x78, 0xf2, 0x36, 0xf3, 0x7c, 0xbf, 0xcf, 0xce, 0x77, 0xe6, 0x43, 0x78, + 0x50, 0x5d, 0xf1, 0x73, 0x60, 0xf4, 0x03, 0x51, 0x94, 0x33, 0xd3, 0x6b, 0x1f, 0x99, 0x64, 0x3a, + 0x15, 0xdc, 0x23, 0xae, 0x6c, 0x4d, 0x05, 0x57, 0x1c, 0x57, 0xe2, 0x8e, 0x96, 0xd7, 0x3e, 0xaa, + 0x1e, 0x3a, 0xdc, 0xe1, 0x81, 0x68, 0xfa, 0xab, 0xd0, 0x57, 0xad, 0xa5, 0xbe, 0x34, 0x24, 0x2e, + 0x61, 0x16, 0x44, 0x1f, 0xaa, 0x36, 0x6f, 0x3c, 0xea, 0xad, 0x25, 0xa8, 0x02, 0x41, 0x49, 0xe8, + 0x6c, 0x7c, 0xcc, 0x21, 0xdc, 0xe3, 0xae, 0x0b, 0x96, 0x6f, 0xed, 0x44, 0x2e, 0x6c, 0x20, 0x34, + 0x12, 0x7c, 0x72, 0x42, 0xa5, 0xea, 0xdb, 0xba, 0x56, 0xd7, 0x9a, 0xa5, 0x41, 0xac, 0x82, 0xab, + 0xa8, 0xa8, 0x78, 0xa4, 0xee, 0x05, 0xea, 0x6a, 0x8f, 0x9f, 0xa2, 0xfb, 0x94, 0x51, 0x45, 0x89, + 0x02, 0xbb, 0x7b, 0x11, 0x99, 0xb2, 0x81, 0x29, 0x2d, 0xe0, 0x0e, 0x3a, 0x50, 0x82, 0x30, 0x39, + 0x02, 0xf1, 0x9a, 0x4e, 0x40, 0xea, 0xb9, 0x7a, 0xb6, 0x59, 0x6e, 0x3f, 0x6c, 0x25, 0xdf, 0xa2, + 0x75, 0x4a, 0x99, 0x1a, 0x10, 0xe6, 0xc0, 0x60, 0xb3, 0x03, 0x3f, 0xf7, 0xc3, 0x9c, 0x03, 0xeb, + 0xdb, 0x52, 0xdf, 0xdf, 0xde, 0xbd, 0x32, 0xe3, 0x1e, 0xfa, 0x9f, 0xbf, 0x63, 0x20, 0xe4, 0x98, + 0x4e, 0xc3, 0xc3, 0xf3, 0xdb, 0xdb, 0x13, 0x2d, 0xb8, 0x82, 0xb2, 0x33, 0x41, 0xf5, 0x42, 0x70, + 0x41, 0x7f, 0xe9, 0x3f, 0x9e, 0x35, 0x93, 0x8a, 0x4f, 0x8e, 0x89, 0x22, 0x7a, 0x31, 0x7c, 0xbc, + 0x75, 0xc5, 0xd7, 0x97, 0x38, 0xfa, 0xb6, 0x5e, 0x0a, 0xf5, 0x75, 0x05, 0xbf, 0x44, 0x95, 0xe5, + 0xae, 0x17, 0xd1, 0xd2, 0x51, 0x5d, 0x6b, 0x96, 0xdb, 0x8d, 0x74, 0xb0, 0x4e, 0xc2, 0x39, 0x48, + 0xf5, 0xe2, 0xc7, 0xa8, 0xe0, 0x81, 0x90, 0x94, 0x33, 0xbd, 0xec, 0x1f, 0xd6, 0xfd, 0xef, 0xf2, + 0xba, 0x96, 0xf9, 0x7a, 0x5d, 0xcb, 0x05, 0xb7, 0x5a, 0x8a, 0x8d, 0xef, 0x59, 0x74, 0x78, 0x2a, + 0x41, 0xbc, 0x9a, 0x29, 0x87, 0x53, 0xe6, 0xac, 0x7e, 0x0d, 0x71, 0xda, 0xda, 0x2e, 0xb4, 0xf7, + 0x76, 0xa6, 0x9d, 0xbd, 0x13, 0xed, 0xdc, 0xdd, 0x68, 0xef, 0xff, 0x36, 0xed, 0xfc, 0x4d, 0xb4, + 0x0b, 0x5b, 0x68, 0x17, 0x53, 0xb4, 0xcf, 0x7e, 0x41, 0xbb, 0x14, 0xd0, 0x7e, 0x92, 0x0e, 0x96, + 0x44, 0xb3, 0x1b, 0x75, 0x74, 0x1b, 0xf5, 0x1f, 0x11, 0xf5, 0x3e, 0xb3, 0xf8, 0x24, 0x4e, 0x7d, + 0xdb, 0x7f, 0xc0, 0x3f, 0xf2, 0x7f, 0x93, 0x7c, 0x12, 0xcf, 0x1f, 0x20, 0xff, 0x59, 0x43, 0x0f, + 0x3a, 0xab, 0x38, 0xc0, 0x14, 0x1d, 0x51, 0x10, 0xc7, 0xa0, 0x08, 0x75, 0x65, 0x22, 0xbd, 0x96, + 0x4a, 0xff, 0x08, 0x1d, 0x2c, 0x77, 0x27, 0xe0, 0x81, 0x1b, 0xa1, 0xdf, 0x2c, 0xe2, 0x26, 0xba, + 0x17, 0x16, 0x40, 0x74, 0x6c, 0x5b, 0x80, 0x94, 0xd1, 0x28, 0x48, 0x96, 0xe3, 0xa9, 0x73, 0xb7, + 0xa4, 0xee, 0x9e, 0x5d, 0xce, 0x0d, 0xed, 0x6a, 0x6e, 0x68, 0xdf, 0xe6, 0x86, 0xf6, 0x69, 0x61, + 0x64, 0xae, 0x16, 0x46, 0xe6, 0xcb, 0xc2, 0xc8, 0xbc, 0x79, 0xe1, 0x50, 0x35, 0x9e, 0x0d, 0x5b, + 0x16, 0x9f, 0x98, 0x43, 0xaa, 0x86, 0xc4, 0x76, 0x40, 0xae, 0x57, 0xd6, 0x98, 0x50, 0x66, 0xbe, + 0x37, 0x37, 0x66, 0xa3, 0xba, 0x98, 0x82, 0xf4, 0x27, 0xe4, 0x30, 0x1f, 0x0c, 0xc4, 0x67, 0x3f, + 0x03, 0x00, 0x00, 0xff, 0xff, 0x14, 0xd3, 0xa4, 0x37, 0xa7, 0x07, 0x00, 0x00, +} + +func (m *CollectionApproval) 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 *CollectionApproval) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CollectionApproval) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.Version.Size() + i -= size + if _, err := m.Version.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintApprovals(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x5a + if m.ApprovalCriteria != nil { + { + size, err := m.ApprovalCriteria.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovals(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x52 + } + if len(m.ApprovalId) > 0 { + i -= len(m.ApprovalId) + copy(dAtA[i:], m.ApprovalId) + i = encodeVarintApprovals(dAtA, i, uint64(len(m.ApprovalId))) + i-- + dAtA[i] = 0x4a + } + if len(m.CustomData) > 0 { + i -= len(m.CustomData) + copy(dAtA[i:], m.CustomData) + i = encodeVarintApprovals(dAtA, i, uint64(len(m.CustomData))) + i-- + dAtA[i] = 0x42 + } + if len(m.Uri) > 0 { + i -= len(m.Uri) + copy(dAtA[i:], m.Uri) + i = encodeVarintApprovals(dAtA, i, uint64(len(m.Uri))) + i-- + dAtA[i] = 0x3a + } + if len(m.OwnershipTimes) > 0 { + for iNdEx := len(m.OwnershipTimes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.OwnershipTimes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovals(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + } + if len(m.TokenIds) > 0 { + for iNdEx := len(m.TokenIds) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TokenIds[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovals(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + } + if len(m.TransferTimes) > 0 { + for iNdEx := len(m.TransferTimes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TransferTimes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovals(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.InitiatedByListId) > 0 { + i -= len(m.InitiatedByListId) + copy(dAtA[i:], m.InitiatedByListId) + i = encodeVarintApprovals(dAtA, i, uint64(len(m.InitiatedByListId))) + i-- + dAtA[i] = 0x1a + } + if len(m.ToListId) > 0 { + i -= len(m.ToListId) + copy(dAtA[i:], m.ToListId) + i = encodeVarintApprovals(dAtA, i, uint64(len(m.ToListId))) + i-- + dAtA[i] = 0x12 + } + if len(m.FromListId) > 0 { + i -= len(m.FromListId) + copy(dAtA[i:], m.FromListId) + i = encodeVarintApprovals(dAtA, i, uint64(len(m.FromListId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *UserOutgoingApproval) 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 *UserOutgoingApproval) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *UserOutgoingApproval) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.Version.Size() + i -= size + if _, err := m.Version.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintApprovals(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x52 + if m.ApprovalCriteria != nil { + { + size, err := m.ApprovalCriteria.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovals(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x4a + } + if len(m.ApprovalId) > 0 { + i -= len(m.ApprovalId) + copy(dAtA[i:], m.ApprovalId) + i = encodeVarintApprovals(dAtA, i, uint64(len(m.ApprovalId))) + i-- + dAtA[i] = 0x42 + } + if len(m.CustomData) > 0 { + i -= len(m.CustomData) + copy(dAtA[i:], m.CustomData) + i = encodeVarintApprovals(dAtA, i, uint64(len(m.CustomData))) + i-- + dAtA[i] = 0x3a + } + if len(m.Uri) > 0 { + i -= len(m.Uri) + copy(dAtA[i:], m.Uri) + i = encodeVarintApprovals(dAtA, i, uint64(len(m.Uri))) + i-- + dAtA[i] = 0x32 + } + if len(m.OwnershipTimes) > 0 { + for iNdEx := len(m.OwnershipTimes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.OwnershipTimes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovals(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + } + if len(m.TokenIds) > 0 { + for iNdEx := len(m.TokenIds) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TokenIds[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovals(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.TransferTimes) > 0 { + for iNdEx := len(m.TransferTimes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TransferTimes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovals(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.InitiatedByListId) > 0 { + i -= len(m.InitiatedByListId) + copy(dAtA[i:], m.InitiatedByListId) + i = encodeVarintApprovals(dAtA, i, uint64(len(m.InitiatedByListId))) + i-- + dAtA[i] = 0x12 + } + if len(m.ToListId) > 0 { + i -= len(m.ToListId) + copy(dAtA[i:], m.ToListId) + i = encodeVarintApprovals(dAtA, i, uint64(len(m.ToListId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *UserIncomingApproval) 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 *UserIncomingApproval) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *UserIncomingApproval) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.Version.Size() + i -= size + if _, err := m.Version.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintApprovals(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x52 + if m.ApprovalCriteria != nil { + { + size, err := m.ApprovalCriteria.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovals(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x4a + } + if len(m.ApprovalId) > 0 { + i -= len(m.ApprovalId) + copy(dAtA[i:], m.ApprovalId) + i = encodeVarintApprovals(dAtA, i, uint64(len(m.ApprovalId))) + i-- + dAtA[i] = 0x42 + } + if len(m.CustomData) > 0 { + i -= len(m.CustomData) + copy(dAtA[i:], m.CustomData) + i = encodeVarintApprovals(dAtA, i, uint64(len(m.CustomData))) + i-- + dAtA[i] = 0x3a + } + if len(m.Uri) > 0 { + i -= len(m.Uri) + copy(dAtA[i:], m.Uri) + i = encodeVarintApprovals(dAtA, i, uint64(len(m.Uri))) + i-- + dAtA[i] = 0x32 + } + if len(m.OwnershipTimes) > 0 { + for iNdEx := len(m.OwnershipTimes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.OwnershipTimes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovals(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + } + if len(m.TokenIds) > 0 { + for iNdEx := len(m.TokenIds) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TokenIds[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovals(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.TransferTimes) > 0 { + for iNdEx := len(m.TransferTimes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TransferTimes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintApprovals(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.InitiatedByListId) > 0 { + i -= len(m.InitiatedByListId) + copy(dAtA[i:], m.InitiatedByListId) + i = encodeVarintApprovals(dAtA, i, uint64(len(m.InitiatedByListId))) + i-- + dAtA[i] = 0x12 + } + if len(m.FromListId) > 0 { + i -= len(m.FromListId) + copy(dAtA[i:], m.FromListId) + i = encodeVarintApprovals(dAtA, i, uint64(len(m.FromListId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ApprovalIdentifierDetails) 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 *ApprovalIdentifierDetails) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ApprovalIdentifierDetails) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.Version.Size() + i -= size + if _, err := m.Version.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintApprovals(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + if len(m.ApproverAddress) > 0 { + i -= len(m.ApproverAddress) + copy(dAtA[i:], m.ApproverAddress) + i = encodeVarintApprovals(dAtA, i, uint64(len(m.ApproverAddress))) + i-- + dAtA[i] = 0x1a + } + if len(m.ApprovalLevel) > 0 { + i -= len(m.ApprovalLevel) + copy(dAtA[i:], m.ApprovalLevel) + i = encodeVarintApprovals(dAtA, i, uint64(len(m.ApprovalLevel))) + i-- + dAtA[i] = 0x12 + } + if len(m.ApprovalId) > 0 { + i -= len(m.ApprovalId) + copy(dAtA[i:], m.ApprovalId) + i = encodeVarintApprovals(dAtA, i, uint64(len(m.ApprovalId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintApprovals(dAtA []byte, offset int, v uint64) int { + offset -= sovApprovals(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *CollectionApproval) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.FromListId) + if l > 0 { + n += 1 + l + sovApprovals(uint64(l)) + } + l = len(m.ToListId) + if l > 0 { + n += 1 + l + sovApprovals(uint64(l)) + } + l = len(m.InitiatedByListId) + if l > 0 { + n += 1 + l + sovApprovals(uint64(l)) + } + if len(m.TransferTimes) > 0 { + for _, e := range m.TransferTimes { + l = e.Size() + n += 1 + l + sovApprovals(uint64(l)) + } + } + if len(m.TokenIds) > 0 { + for _, e := range m.TokenIds { + l = e.Size() + n += 1 + l + sovApprovals(uint64(l)) + } + } + if len(m.OwnershipTimes) > 0 { + for _, e := range m.OwnershipTimes { + l = e.Size() + n += 1 + l + sovApprovals(uint64(l)) + } + } + l = len(m.Uri) + if l > 0 { + n += 1 + l + sovApprovals(uint64(l)) + } + l = len(m.CustomData) + if l > 0 { + n += 1 + l + sovApprovals(uint64(l)) + } + l = len(m.ApprovalId) + if l > 0 { + n += 1 + l + sovApprovals(uint64(l)) + } + if m.ApprovalCriteria != nil { + l = m.ApprovalCriteria.Size() + n += 1 + l + sovApprovals(uint64(l)) + } + l = m.Version.Size() + n += 1 + l + sovApprovals(uint64(l)) + return n +} + +func (m *UserOutgoingApproval) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ToListId) + if l > 0 { + n += 1 + l + sovApprovals(uint64(l)) + } + l = len(m.InitiatedByListId) + if l > 0 { + n += 1 + l + sovApprovals(uint64(l)) + } + if len(m.TransferTimes) > 0 { + for _, e := range m.TransferTimes { + l = e.Size() + n += 1 + l + sovApprovals(uint64(l)) + } + } + if len(m.TokenIds) > 0 { + for _, e := range m.TokenIds { + l = e.Size() + n += 1 + l + sovApprovals(uint64(l)) + } + } + if len(m.OwnershipTimes) > 0 { + for _, e := range m.OwnershipTimes { + l = e.Size() + n += 1 + l + sovApprovals(uint64(l)) + } + } + l = len(m.Uri) + if l > 0 { + n += 1 + l + sovApprovals(uint64(l)) + } + l = len(m.CustomData) + if l > 0 { + n += 1 + l + sovApprovals(uint64(l)) + } + l = len(m.ApprovalId) + if l > 0 { + n += 1 + l + sovApprovals(uint64(l)) + } + if m.ApprovalCriteria != nil { + l = m.ApprovalCriteria.Size() + n += 1 + l + sovApprovals(uint64(l)) + } + l = m.Version.Size() + n += 1 + l + sovApprovals(uint64(l)) + return n +} + +func (m *UserIncomingApproval) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.FromListId) + if l > 0 { + n += 1 + l + sovApprovals(uint64(l)) + } + l = len(m.InitiatedByListId) + if l > 0 { + n += 1 + l + sovApprovals(uint64(l)) + } + if len(m.TransferTimes) > 0 { + for _, e := range m.TransferTimes { + l = e.Size() + n += 1 + l + sovApprovals(uint64(l)) + } + } + if len(m.TokenIds) > 0 { + for _, e := range m.TokenIds { + l = e.Size() + n += 1 + l + sovApprovals(uint64(l)) + } + } + if len(m.OwnershipTimes) > 0 { + for _, e := range m.OwnershipTimes { + l = e.Size() + n += 1 + l + sovApprovals(uint64(l)) + } + } + l = len(m.Uri) + if l > 0 { + n += 1 + l + sovApprovals(uint64(l)) + } + l = len(m.CustomData) + if l > 0 { + n += 1 + l + sovApprovals(uint64(l)) + } + l = len(m.ApprovalId) + if l > 0 { + n += 1 + l + sovApprovals(uint64(l)) + } + if m.ApprovalCriteria != nil { + l = m.ApprovalCriteria.Size() + n += 1 + l + sovApprovals(uint64(l)) + } + l = m.Version.Size() + n += 1 + l + sovApprovals(uint64(l)) + return n +} + +func (m *ApprovalIdentifierDetails) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ApprovalId) + if l > 0 { + n += 1 + l + sovApprovals(uint64(l)) + } + l = len(m.ApprovalLevel) + if l > 0 { + n += 1 + l + sovApprovals(uint64(l)) + } + l = len(m.ApproverAddress) + if l > 0 { + n += 1 + l + sovApprovals(uint64(l)) + } + l = m.Version.Size() + n += 1 + l + sovApprovals(uint64(l)) + return n +} + +func sovApprovals(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozApprovals(x uint64) (n int) { + return sovApprovals(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *CollectionApproval) 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 ErrIntOverflowApprovals + } + 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: CollectionApproval: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CollectionApproval: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FromListId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + 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 ErrInvalidLengthApprovals + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FromListId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ToListId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + 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 ErrInvalidLengthApprovals + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ToListId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field InitiatedByListId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + 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 ErrInvalidLengthApprovals + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.InitiatedByListId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TransferTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovals + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TransferTimes = append(m.TransferTimes, &UintRange{}) + if err := m.TransferTimes[len(m.TransferTimes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TokenIds", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovals + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TokenIds = append(m.TokenIds, &UintRange{}) + if err := m.TokenIds[len(m.TokenIds)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OwnershipTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovals + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OwnershipTimes = append(m.OwnershipTimes, &UintRange{}) + if err := m.OwnershipTimes[len(m.OwnershipTimes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Uri", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + 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 ErrInvalidLengthApprovals + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Uri = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CustomData", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + 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 ErrInvalidLengthApprovals + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CustomData = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + 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 ErrInvalidLengthApprovals + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ApprovalId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalCriteria", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovals + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ApprovalCriteria == nil { + m.ApprovalCriteria = &ApprovalCriteria{} + } + if err := m.ApprovalCriteria.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + 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 ErrInvalidLengthApprovals + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Version.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApprovals(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApprovals + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *UserOutgoingApproval) 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 ErrIntOverflowApprovals + } + 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: UserOutgoingApproval: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: UserOutgoingApproval: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ToListId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + 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 ErrInvalidLengthApprovals + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ToListId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field InitiatedByListId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + 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 ErrInvalidLengthApprovals + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.InitiatedByListId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TransferTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovals + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TransferTimes = append(m.TransferTimes, &UintRange{}) + if err := m.TransferTimes[len(m.TransferTimes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TokenIds", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovals + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TokenIds = append(m.TokenIds, &UintRange{}) + if err := m.TokenIds[len(m.TokenIds)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OwnershipTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovals + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OwnershipTimes = append(m.OwnershipTimes, &UintRange{}) + if err := m.OwnershipTimes[len(m.OwnershipTimes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Uri", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + 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 ErrInvalidLengthApprovals + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Uri = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CustomData", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + 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 ErrInvalidLengthApprovals + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CustomData = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + 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 ErrInvalidLengthApprovals + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ApprovalId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalCriteria", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovals + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ApprovalCriteria == nil { + m.ApprovalCriteria = &OutgoingApprovalCriteria{} + } + if err := m.ApprovalCriteria.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + 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 ErrInvalidLengthApprovals + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Version.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApprovals(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApprovals + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *UserIncomingApproval) 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 ErrIntOverflowApprovals + } + 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: UserIncomingApproval: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: UserIncomingApproval: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FromListId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + 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 ErrInvalidLengthApprovals + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FromListId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field InitiatedByListId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + 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 ErrInvalidLengthApprovals + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.InitiatedByListId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TransferTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovals + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TransferTimes = append(m.TransferTimes, &UintRange{}) + if err := m.TransferTimes[len(m.TransferTimes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TokenIds", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovals + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TokenIds = append(m.TokenIds, &UintRange{}) + if err := m.TokenIds[len(m.TokenIds)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OwnershipTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovals + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OwnershipTimes = append(m.OwnershipTimes, &UintRange{}) + if err := m.OwnershipTimes[len(m.OwnershipTimes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Uri", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + 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 ErrInvalidLengthApprovals + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Uri = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CustomData", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + 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 ErrInvalidLengthApprovals + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CustomData = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + 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 ErrInvalidLengthApprovals + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ApprovalId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalCriteria", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthApprovals + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.ApprovalCriteria == nil { + m.ApprovalCriteria = &IncomingApprovalCriteria{} + } + if err := m.ApprovalCriteria.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + 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 ErrInvalidLengthApprovals + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Version.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApprovals(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApprovals + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ApprovalIdentifierDetails) 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 ErrIntOverflowApprovals + } + 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: ApprovalIdentifierDetails: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ApprovalIdentifierDetails: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + 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 ErrInvalidLengthApprovals + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ApprovalId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalLevel", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + 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 ErrInvalidLengthApprovals + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ApprovalLevel = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApproverAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + 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 ErrInvalidLengthApprovals + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ApproverAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowApprovals + } + 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 ErrInvalidLengthApprovals + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthApprovals + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Version.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipApprovals(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthApprovals + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipApprovals(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, ErrIntOverflowApprovals + } + 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, ErrIntOverflowApprovals + } + 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, ErrIntOverflowApprovals + } + 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, ErrInvalidLengthApprovals + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupApprovals + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthApprovals + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthApprovals = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowApprovals = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupApprovals = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/tokenization/types/v29/balances.pb.go b/x/tokenization/types/v29/balances.pb.go new file mode 100644 index 00000000..bdd1b676 --- /dev/null +++ b/x/tokenization/types/v29/balances.pb.go @@ -0,0 +1,958 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: tokenization/v29/balances.proto + +package v29 + +import ( + fmt "fmt" + _ "github.com/cosmos/gogoproto/gogoproto" + 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 + +// The UintRange is a range of IDs from some start to some end (inclusive). +// uintRanges are one of the core types used. +// +// They are used for everything from token IDs to time ranges to min/max balance amounts. +// +// See the BitBadges documentation for more information. +type UintRange struct { + // The starting value of the range (inclusive). + Start Uint `protobuf:"bytes,1,opt,name=start,proto3,customtype=Uint" json:"start"` + // The ending value of the range (inclusive). + End Uint `protobuf:"bytes,2,opt,name=end,proto3,customtype=Uint" json:"end"` +} + +func (m *UintRange) Reset() { *m = UintRange{} } +func (m *UintRange) String() string { return proto.CompactTextString(m) } +func (*UintRange) ProtoMessage() {} +func (*UintRange) Descriptor() ([]byte, []int) { + return fileDescriptor_46054e211e1e76c0, []int{0} +} +func (m *UintRange) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *UintRange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_UintRange.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 *UintRange) XXX_Merge(src proto.Message) { + xxx_messageInfo_UintRange.Merge(m, src) +} +func (m *UintRange) XXX_Size() int { + return m.Size() +} +func (m *UintRange) XXX_DiscardUnknown() { + xxx_messageInfo_UintRange.DiscardUnknown(m) +} + +var xxx_messageInfo_UintRange proto.InternalMessageInfo + +// Balance represents the balance of a token for a specific user. +// The user amounts xAmount of a token specified for the time ranges specified. +// +// Example: User A owns x10 of token IDs 1-10 from 1/1/2020 to 1/1/2021. +// +// If times or tokenIDs have len > 1, then the user owns all token IDs specified for all time ranges specified. +type Balance struct { + // The amount of the token owned by the user. + Amount Uint `protobuf:"bytes,1,opt,name=amount,proto3,customtype=Uint" json:"amount"` + // The time ranges during which the user owns the token. + OwnershipTimes []*UintRange `protobuf:"bytes,2,rep,name=ownershipTimes,proto3" json:"ownershipTimes,omitempty"` + // The token IDs for which the user owns the token. + TokenIds []*UintRange `protobuf:"bytes,3,rep,name=tokenIds,proto3" json:"tokenIds,omitempty"` +} + +func (m *Balance) Reset() { *m = Balance{} } +func (m *Balance) String() string { return proto.CompactTextString(m) } +func (*Balance) ProtoMessage() {} +func (*Balance) Descriptor() ([]byte, []int) { + return fileDescriptor_46054e211e1e76c0, []int{1} +} +func (m *Balance) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Balance) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Balance.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 *Balance) XXX_Merge(src proto.Message) { + xxx_messageInfo_Balance.Merge(m, src) +} +func (m *Balance) XXX_Size() int { + return m.Size() +} +func (m *Balance) XXX_DiscardUnknown() { + xxx_messageInfo_Balance.DiscardUnknown(m) +} + +var xxx_messageInfo_Balance proto.InternalMessageInfo + +func (m *Balance) GetOwnershipTimes() []*UintRange { + if m != nil { + return m.OwnershipTimes + } + return nil +} + +func (m *Balance) GetTokenIds() []*UintRange { + if m != nil { + return m.TokenIds + } + return nil +} + +// PrecalculationOptions defines the options for precalculating the balances. +type PrecalculationOptions struct { + // The timestamp to override with when calculating the balances. + OverrideTimestamp Uint `protobuf:"bytes,1,opt,name=overrideTimestamp,proto3,customtype=Uint" json:"overrideTimestamp"` + // The IDs to override for the transfer. Only applicable if using this option in precalculation. + TokenIdsOverride []*UintRange `protobuf:"bytes,2,rep,name=tokenIdsOverride,proto3" json:"tokenIdsOverride,omitempty"` + // When > 0 and allowAmountScaling is true on the approval, all precalculated balance amounts + // are multiplied by this value. Must be <= maxScalingMultiplier. 0 means no scaling (returns 1x base). + ScalingMultiplier Uint `protobuf:"bytes,3,opt,name=scalingMultiplier,proto3,customtype=Uint" json:"scalingMultiplier"` +} + +func (m *PrecalculationOptions) Reset() { *m = PrecalculationOptions{} } +func (m *PrecalculationOptions) String() string { return proto.CompactTextString(m) } +func (*PrecalculationOptions) ProtoMessage() {} +func (*PrecalculationOptions) Descriptor() ([]byte, []int) { + return fileDescriptor_46054e211e1e76c0, []int{2} +} +func (m *PrecalculationOptions) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PrecalculationOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PrecalculationOptions.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 *PrecalculationOptions) XXX_Merge(src proto.Message) { + xxx_messageInfo_PrecalculationOptions.Merge(m, src) +} +func (m *PrecalculationOptions) XXX_Size() int { + return m.Size() +} +func (m *PrecalculationOptions) XXX_DiscardUnknown() { + xxx_messageInfo_PrecalculationOptions.DiscardUnknown(m) +} + +var xxx_messageInfo_PrecalculationOptions proto.InternalMessageInfo + +func (m *PrecalculationOptions) GetTokenIdsOverride() []*UintRange { + if m != nil { + return m.TokenIdsOverride + } + return nil +} + +func init() { + proto.RegisterType((*UintRange)(nil), "tokenization.v29.UintRange") + proto.RegisterType((*Balance)(nil), "tokenization.v29.Balance") + proto.RegisterType((*PrecalculationOptions)(nil), "tokenization.v29.PrecalculationOptions") +} + +func init() { proto.RegisterFile("tokenization/v29/balances.proto", fileDescriptor_46054e211e1e76c0) } + +var fileDescriptor_46054e211e1e76c0 = []byte{ + // 367 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0x4f, 0x4b, 0xc3, 0x30, + 0x18, 0xc6, 0xdb, 0x55, 0xa7, 0x8b, 0x22, 0x33, 0x28, 0x94, 0x89, 0xdd, 0x28, 0x1e, 0x76, 0x6a, + 0x61, 0x1e, 0x64, 0xe2, 0x69, 0x1e, 0xc4, 0x83, 0x4c, 0x86, 0x7a, 0xf0, 0x96, 0xb6, 0xa1, 0x0b, + 0xb6, 0x49, 0x48, 0xd2, 0xf9, 0xe7, 0x53, 0xf8, 0x45, 0xfc, 0x1e, 0x3b, 0xee, 0x38, 0x3c, 0x0c, + 0xd9, 0xbe, 0x88, 0xb4, 0x9b, 0x53, 0xd7, 0x82, 0x5e, 0x42, 0xe0, 0xf9, 0xbd, 0xef, 0xfb, 0x3c, + 0xf0, 0x80, 0xba, 0x62, 0x0f, 0x98, 0x92, 0x17, 0xa4, 0x08, 0xa3, 0xee, 0xa0, 0xd5, 0x76, 0x3d, + 0x14, 0x21, 0xea, 0x63, 0xe9, 0x70, 0xc1, 0x14, 0x83, 0xd5, 0x9f, 0x80, 0x33, 0x68, 0xb5, 0x6b, + 0x7b, 0x21, 0x0b, 0x59, 0x26, 0xba, 0xe9, 0x6f, 0xce, 0xd5, 0x0e, 0x73, 0x8b, 0x38, 0x12, 0x28, + 0x5e, 0xac, 0xb1, 0xbb, 0xa0, 0x72, 0x4b, 0xa8, 0xea, 0x21, 0x1a, 0x62, 0x68, 0x83, 0x75, 0xa9, + 0x90, 0x50, 0xa6, 0xde, 0xd0, 0x9b, 0x95, 0xce, 0xf6, 0x70, 0x52, 0xd7, 0xde, 0x27, 0xf5, 0xb5, + 0x8c, 0x98, 0x4b, 0xd0, 0x02, 0x06, 0xa6, 0x81, 0x59, 0x2a, 0x20, 0x52, 0xc1, 0x7e, 0xd3, 0xc1, + 0x46, 0x67, 0x6e, 0x15, 0x1e, 0x81, 0x32, 0x8a, 0x59, 0x42, 0x8b, 0x17, 0x2e, 0x34, 0x78, 0x0e, + 0x76, 0xd8, 0x23, 0xc5, 0x42, 0xf6, 0x09, 0xbf, 0x21, 0x31, 0x96, 0x66, 0xa9, 0x61, 0x34, 0xb7, + 0x5a, 0x07, 0xce, 0x6a, 0x44, 0x67, 0x69, 0xb5, 0xb7, 0x32, 0x02, 0x4f, 0xc0, 0x66, 0x46, 0x5f, + 0x06, 0xd2, 0x34, 0xfe, 0x1e, 0x5f, 0xc2, 0xf6, 0x58, 0x07, 0xfb, 0xd7, 0x02, 0xfb, 0x28, 0xf2, + 0x93, 0x28, 0x43, 0xbb, 0x3c, 0x7d, 0x25, 0x3c, 0x05, 0xbb, 0x6c, 0x80, 0x85, 0x20, 0x01, 0xce, + 0x6e, 0x28, 0x14, 0xf3, 0xc2, 0x20, 0x79, 0x0c, 0x5e, 0x80, 0xea, 0xd7, 0x85, 0xee, 0x42, 0xfc, + 0x4f, 0xaa, 0xdc, 0x50, 0x6a, 0x42, 0xfa, 0x28, 0x22, 0x34, 0xbc, 0x4a, 0x22, 0x45, 0x78, 0x44, + 0xb0, 0x30, 0x8d, 0x22, 0x13, 0x39, 0xac, 0x73, 0x37, 0x9c, 0x5a, 0xfa, 0x68, 0x6a, 0xe9, 0x1f, + 0x53, 0x4b, 0x7f, 0x9d, 0x59, 0xda, 0x68, 0x66, 0x69, 0xe3, 0x99, 0xa5, 0xdd, 0x9f, 0x85, 0x44, + 0xf5, 0x13, 0xcf, 0xf1, 0x59, 0xec, 0x7a, 0x44, 0x79, 0x28, 0x08, 0xb1, 0xfc, 0xfe, 0xf9, 0x7d, + 0x44, 0xa8, 0xfb, 0xe4, 0xfe, 0xaa, 0x8e, 0x7a, 0xe6, 0x58, 0xa6, 0x05, 0xf2, 0xca, 0x59, 0x75, + 0x8e, 0x3f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x89, 0x35, 0xcf, 0x1f, 0xa4, 0x02, 0x00, 0x00, +} + +func (m *UintRange) 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 *UintRange) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *UintRange) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.End.Size() + i -= size + if _, err := m.End.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintBalances(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + { + size := m.Start.Size() + i -= size + if _, err := m.Start.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintBalances(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *Balance) 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 *Balance) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Balance) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.TokenIds) > 0 { + for iNdEx := len(m.TokenIds) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TokenIds[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintBalances(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.OwnershipTimes) > 0 { + for iNdEx := len(m.OwnershipTimes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.OwnershipTimes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintBalances(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + { + size := m.Amount.Size() + i -= size + if _, err := m.Amount.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintBalances(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *PrecalculationOptions) 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 *PrecalculationOptions) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PrecalculationOptions) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.ScalingMultiplier.Size() + i -= size + if _, err := m.ScalingMultiplier.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintBalances(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + if len(m.TokenIdsOverride) > 0 { + for iNdEx := len(m.TokenIdsOverride) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TokenIdsOverride[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintBalances(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + { + size := m.OverrideTimestamp.Size() + i -= size + if _, err := m.OverrideTimestamp.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintBalances(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func encodeVarintBalances(dAtA []byte, offset int, v uint64) int { + offset -= sovBalances(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *UintRange) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Start.Size() + n += 1 + l + sovBalances(uint64(l)) + l = m.End.Size() + n += 1 + l + sovBalances(uint64(l)) + return n +} + +func (m *Balance) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Amount.Size() + n += 1 + l + sovBalances(uint64(l)) + if len(m.OwnershipTimes) > 0 { + for _, e := range m.OwnershipTimes { + l = e.Size() + n += 1 + l + sovBalances(uint64(l)) + } + } + if len(m.TokenIds) > 0 { + for _, e := range m.TokenIds { + l = e.Size() + n += 1 + l + sovBalances(uint64(l)) + } + } + return n +} + +func (m *PrecalculationOptions) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.OverrideTimestamp.Size() + n += 1 + l + sovBalances(uint64(l)) + if len(m.TokenIdsOverride) > 0 { + for _, e := range m.TokenIdsOverride { + l = e.Size() + n += 1 + l + sovBalances(uint64(l)) + } + } + l = m.ScalingMultiplier.Size() + n += 1 + l + sovBalances(uint64(l)) + return n +} + +func sovBalances(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozBalances(x uint64) (n int) { + return sovBalances(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *UintRange) 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 ErrIntOverflowBalances + } + 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: UintRange: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: UintRange: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Start", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBalances + } + 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 ErrInvalidLengthBalances + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthBalances + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Start.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field End", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBalances + } + 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 ErrInvalidLengthBalances + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthBalances + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.End.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipBalances(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthBalances + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Balance) 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 ErrIntOverflowBalances + } + 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: Balance: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Balance: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBalances + } + 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 ErrInvalidLengthBalances + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthBalances + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OwnershipTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBalances + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthBalances + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthBalances + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OwnershipTimes = append(m.OwnershipTimes, &UintRange{}) + if err := m.OwnershipTimes[len(m.OwnershipTimes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TokenIds", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBalances + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthBalances + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthBalances + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TokenIds = append(m.TokenIds, &UintRange{}) + if err := m.TokenIds[len(m.TokenIds)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipBalances(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthBalances + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PrecalculationOptions) 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 ErrIntOverflowBalances + } + 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: PrecalculationOptions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PrecalculationOptions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OverrideTimestamp", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBalances + } + 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 ErrInvalidLengthBalances + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthBalances + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.OverrideTimestamp.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TokenIdsOverride", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBalances + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthBalances + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthBalances + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TokenIdsOverride = append(m.TokenIdsOverride, &UintRange{}) + if err := m.TokenIdsOverride[len(m.TokenIdsOverride)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ScalingMultiplier", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowBalances + } + 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 ErrInvalidLengthBalances + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthBalances + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ScalingMultiplier.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipBalances(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthBalances + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipBalances(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, ErrIntOverflowBalances + } + 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, ErrIntOverflowBalances + } + 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, ErrIntOverflowBalances + } + 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, ErrInvalidLengthBalances + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupBalances + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthBalances + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthBalances = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowBalances = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupBalances = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/tokenization/types/v29/challenges.pb.go b/x/tokenization/types/v29/challenges.pb.go new file mode 100644 index 00000000..b1b054d4 --- /dev/null +++ b/x/tokenization/types/v29/challenges.pb.go @@ -0,0 +1,3466 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: tokenization/v29/challenges.proto + +package v29 + +import ( + fmt "fmt" + _ "github.com/cosmos/gogoproto/gogoproto" + 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 + +// Challenges define a rule for the approval in the form of a Merkle challenge. +// +// A Merkle challenge is a challenge where the user must provide a Merkle proof to a Merkle tree. If they provide a valid proof, +// then the challenge is met. All challenges must be met with valid solutions for the transfer to be approved. +// +// IMPORTANT: Merkle challenges currently are limited to SHA256 hashes. See documentation for MerkleChallenge for more details and tutorials. +// +// IMPORTANT: We track the number of uses per leaf according to the challengeTrackerId specified by the parent approval of this challenge. +// If you update the challenge ID, then the used leaves tracker will reset and start a new tally. +// We recommend using a unique challenge ID for each challenge to prevent overlap and unexpected behavior. +type MerkleChallenge struct { + // The root hash of the Merkle tree to which the Merkle path must lead for verification. + Root string `protobuf:"bytes,1,opt,name=root,proto3" json:"root,omitempty"` + // The expected length of the Merkle path for verification. Used to prevent Merkle path truncation attacks. + ExpectedProofLength Uint `protobuf:"bytes,2,opt,name=expectedProofLength,proto3,customtype=Uint" json:"expectedProofLength"` + // If true, we will override the user's leaf for their proof with their creator address. Used for whitelist trees where all leaves are valid BitBadges addresses. + UseCreatorAddressAsLeaf bool `protobuf:"varint,3,opt,name=useCreatorAddressAsLeaf,proto3" json:"useCreatorAddressAsLeaf,omitempty"` + // The maximum number of times each leaf can be used. Must be 1 if useCreatorAddressAsLeaf is false to prevent replay attacks. + MaxUsesPerLeaf Uint `protobuf:"bytes,4,opt,name=maxUsesPerLeaf,proto3,customtype=Uint" json:"maxUsesPerLeaf"` + // The URI associated with this Merkle challenge, optionally providing metadata about the challenge. + Uri string `protobuf:"bytes,5,opt,name=uri,proto3" json:"uri,omitempty"` + // Arbitrary custom data associated with this Merkle challenge. + CustomData string `protobuf:"bytes,6,opt,name=customData,proto3" json:"customData,omitempty"` + // The ID of this Merkle challenge for tracking the number of uses per leaf. + ChallengeTrackerId string `protobuf:"bytes,7,opt,name=challengeTrackerId,proto3" json:"challengeTrackerId,omitempty"` + // Ethereum address that must sign the leaf. Used to protect against man-in-the-middle attacks. + // Signature scheme: sign(leaf + "-" + creatorAddress), verified using elliptic curve signature verification. + LeafSigner string `protobuf:"bytes,8,opt,name=leafSigner,proto3" json:"leafSigner,omitempty"` +} + +func (m *MerkleChallenge) Reset() { *m = MerkleChallenge{} } +func (m *MerkleChallenge) String() string { return proto.CompactTextString(m) } +func (*MerkleChallenge) ProtoMessage() {} +func (*MerkleChallenge) Descriptor() ([]byte, []int) { + return fileDescriptor_14389bbfc4dbefe1, []int{0} +} +func (m *MerkleChallenge) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MerkleChallenge) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MerkleChallenge.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 *MerkleChallenge) XXX_Merge(src proto.Message) { + xxx_messageInfo_MerkleChallenge.Merge(m, src) +} +func (m *MerkleChallenge) XXX_Size() int { + return m.Size() +} +func (m *MerkleChallenge) XXX_DiscardUnknown() { + xxx_messageInfo_MerkleChallenge.DiscardUnknown(m) +} + +var xxx_messageInfo_MerkleChallenge proto.InternalMessageInfo + +func (m *MerkleChallenge) GetRoot() string { + if m != nil { + return m.Root + } + return "" +} + +func (m *MerkleChallenge) GetUseCreatorAddressAsLeaf() bool { + if m != nil { + return m.UseCreatorAddressAsLeaf + } + return false +} + +func (m *MerkleChallenge) GetUri() string { + if m != nil { + return m.Uri + } + return "" +} + +func (m *MerkleChallenge) GetCustomData() string { + if m != nil { + return m.CustomData + } + return "" +} + +func (m *MerkleChallenge) GetChallengeTrackerId() string { + if m != nil { + return m.ChallengeTrackerId + } + return "" +} + +func (m *MerkleChallenge) GetLeafSigner() string { + if m != nil { + return m.LeafSigner + } + return "" +} + +// ETHSignatureChallenge defines a rule for the approval in the form of an Ethereum signature challenge. +// +// An ETH signature challenge is a challenge where the user must provide a valid Ethereum signature for a specific nonce. +// The signature scheme is ETHSign(nonce + "-" + initiatorAddress + "-" + collectionId + "-" + approverAddress + "-" + approvalLevel + "-" + approvalId + "-" + challengeId) and each signature can only be used once. +// All challenges must be met with valid solutions for the transfer to be approved. +// +// IMPORTANT: We track the usage of each signature to prevent replay attacks. Each signature can only be used once. +// If you update the challenge ID, then the used signatures tracker will reset and start a new tally. +// We recommend using a unique challenge ID for each challenge to prevent overlap and unexpected behavior. +type ETHSignatureChallenge struct { + // The Ethereum address that must sign the nonce for verification. + Signer string `protobuf:"bytes,1,opt,name=signer,proto3" json:"signer,omitempty"` + // The ID of this ETH signature challenge for tracking the number of uses per signature. + ChallengeTrackerId string `protobuf:"bytes,2,opt,name=challengeTrackerId,proto3" json:"challengeTrackerId,omitempty"` + // The URI associated with this ETH signature challenge, optionally providing metadata about the challenge. + Uri string `protobuf:"bytes,3,opt,name=uri,proto3" json:"uri,omitempty"` + // Arbitrary custom data associated with this ETH signature challenge. + CustomData string `protobuf:"bytes,4,opt,name=customData,proto3" json:"customData,omitempty"` +} + +func (m *ETHSignatureChallenge) Reset() { *m = ETHSignatureChallenge{} } +func (m *ETHSignatureChallenge) String() string { return proto.CompactTextString(m) } +func (*ETHSignatureChallenge) ProtoMessage() {} +func (*ETHSignatureChallenge) Descriptor() ([]byte, []int) { + return fileDescriptor_14389bbfc4dbefe1, []int{1} +} +func (m *ETHSignatureChallenge) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ETHSignatureChallenge) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ETHSignatureChallenge.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 *ETHSignatureChallenge) XXX_Merge(src proto.Message) { + xxx_messageInfo_ETHSignatureChallenge.Merge(m, src) +} +func (m *ETHSignatureChallenge) XXX_Size() int { + return m.Size() +} +func (m *ETHSignatureChallenge) XXX_DiscardUnknown() { + xxx_messageInfo_ETHSignatureChallenge.DiscardUnknown(m) +} + +var xxx_messageInfo_ETHSignatureChallenge proto.InternalMessageInfo + +func (m *ETHSignatureChallenge) GetSigner() string { + if m != nil { + return m.Signer + } + return "" +} + +func (m *ETHSignatureChallenge) GetChallengeTrackerId() string { + if m != nil { + return m.ChallengeTrackerId + } + return "" +} + +func (m *ETHSignatureChallenge) GetUri() string { + if m != nil { + return m.Uri + } + return "" +} + +func (m *ETHSignatureChallenge) GetCustomData() string { + if m != nil { + return m.CustomData + } + return "" +} + +// MerklePathItem represents an item in a Merkle path. +type MerklePathItem struct { + // The hash of the sibling node (aunt) in the Merkle path. + Aunt string `protobuf:"bytes,1,opt,name=aunt,proto3" json:"aunt,omitempty"` + // Indicates whether the aunt node is on the right side of the path. + OnRight bool `protobuf:"varint,2,opt,name=onRight,proto3" json:"onRight,omitempty"` +} + +func (m *MerklePathItem) Reset() { *m = MerklePathItem{} } +func (m *MerklePathItem) String() string { return proto.CompactTextString(m) } +func (*MerklePathItem) ProtoMessage() {} +func (*MerklePathItem) Descriptor() ([]byte, []int) { + return fileDescriptor_14389bbfc4dbefe1, []int{2} +} +func (m *MerklePathItem) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MerklePathItem) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MerklePathItem.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 *MerklePathItem) XXX_Merge(src proto.Message) { + xxx_messageInfo_MerklePathItem.Merge(m, src) +} +func (m *MerklePathItem) XXX_Size() int { + return m.Size() +} +func (m *MerklePathItem) XXX_DiscardUnknown() { + xxx_messageInfo_MerklePathItem.DiscardUnknown(m) +} + +var xxx_messageInfo_MerklePathItem proto.InternalMessageInfo + +func (m *MerklePathItem) GetAunt() string { + if m != nil { + return m.Aunt + } + return "" +} + +func (m *MerklePathItem) GetOnRight() bool { + if m != nil { + return m.OnRight + } + return false +} + +// MerkleProof represents a Merkle proof, consistent with Tendermint/Crypto Merkle tree. +type MerkleProof struct { + // The hash of the leaf node for which the proof is generated. + Leaf string `protobuf:"bytes,1,opt,name=leaf,proto3" json:"leaf,omitempty"` + // List of Merkle path items (aunts) that make up the proof. + Aunts []*MerklePathItem `protobuf:"bytes,2,rep,name=aunts,proto3" json:"aunts,omitempty"` + // The signature of the leaf node tying the address to the leaf node. + LeafSignature string `protobuf:"bytes,3,opt,name=leafSignature,proto3" json:"leafSignature,omitempty"` +} + +func (m *MerkleProof) Reset() { *m = MerkleProof{} } +func (m *MerkleProof) String() string { return proto.CompactTextString(m) } +func (*MerkleProof) ProtoMessage() {} +func (*MerkleProof) Descriptor() ([]byte, []int) { + return fileDescriptor_14389bbfc4dbefe1, []int{3} +} +func (m *MerkleProof) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MerkleProof) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MerkleProof.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 *MerkleProof) XXX_Merge(src proto.Message) { + xxx_messageInfo_MerkleProof.Merge(m, src) +} +func (m *MerkleProof) XXX_Size() int { + return m.Size() +} +func (m *MerkleProof) XXX_DiscardUnknown() { + xxx_messageInfo_MerkleProof.DiscardUnknown(m) +} + +var xxx_messageInfo_MerkleProof proto.InternalMessageInfo + +func (m *MerkleProof) GetLeaf() string { + if m != nil { + return m.Leaf + } + return "" +} + +func (m *MerkleProof) GetAunts() []*MerklePathItem { + if m != nil { + return m.Aunts + } + return nil +} + +func (m *MerkleProof) GetLeafSignature() string { + if m != nil { + return m.LeafSignature + } + return "" +} + +// ETHSignatureProof represents an Ethereum signature proof for a challenge. +type ETHSignatureProof struct { + // The nonce that was signed. The signature scheme is ETHSign(nonce + "-" + initiatorAddress + "-" + collectionId + "-" + approverAddress + "-" + approvalLevel + "-" + approvalId + "-" + challengeId). + Nonce string `protobuf:"bytes,1,opt,name=nonce,proto3" json:"nonce,omitempty"` + // The Ethereum signature of the nonce. + Signature string `protobuf:"bytes,2,opt,name=signature,proto3" json:"signature,omitempty"` +} + +func (m *ETHSignatureProof) Reset() { *m = ETHSignatureProof{} } +func (m *ETHSignatureProof) String() string { return proto.CompactTextString(m) } +func (*ETHSignatureProof) ProtoMessage() {} +func (*ETHSignatureProof) Descriptor() ([]byte, []int) { + return fileDescriptor_14389bbfc4dbefe1, []int{4} +} +func (m *ETHSignatureProof) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ETHSignatureProof) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ETHSignatureProof.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 *ETHSignatureProof) XXX_Merge(src proto.Message) { + xxx_messageInfo_ETHSignatureProof.Merge(m, src) +} +func (m *ETHSignatureProof) XXX_Size() int { + return m.Size() +} +func (m *ETHSignatureProof) XXX_DiscardUnknown() { + xxx_messageInfo_ETHSignatureProof.DiscardUnknown(m) +} + +var xxx_messageInfo_ETHSignatureProof proto.InternalMessageInfo + +func (m *ETHSignatureProof) GetNonce() string { + if m != nil { + return m.Nonce + } + return "" +} + +func (m *ETHSignatureProof) GetSignature() string { + if m != nil { + return m.Signature + } + return "" +} + +// VotingChallenge defines a rule for approval in the form of a voting/multi-sig challenge. +// Requires a weighted quorum threshold to be met through votes from specified voters. +// All challenges must be met with valid solutions for the transfer to be approved. +// +// IMPORTANT: Votes are stored separately and can be updated. The threshold is calculated as a percentage +// of total possible weight (all voters), not just voted weight. If you update the proposal ID, then the +// vote tracker will reset and start a new tally. We recommend using a unique proposal ID for each challenge +// to prevent overlap and unexpected behavior. +type VotingChallenge struct { + // The ID of this voting challenge for tracking votes (scoped like challengeTrackerId). + // Format: collectionId-approverAddress-approvalLevel-approvalId-challengeId + ProposalId string `protobuf:"bytes,1,opt,name=proposalId,proto3" json:"proposalId,omitempty"` + // The quorum threshold as a percentage (0-100) of total possible weight that must vote "yes". + // Example: 50 means 50% of total voter weight must vote yes for approval. + QuorumThreshold Uint `protobuf:"bytes,2,opt,name=quorumThreshold,proto3,customtype=Uint" json:"quorumThreshold"` + // List of voters with their weights. Each voter can cast a weighted vote. + Voters []*Voter `protobuf:"bytes,3,rep,name=voters,proto3" json:"voters,omitempty"` + // The URI associated with this voting challenge. + Uri string `protobuf:"bytes,4,opt,name=uri,proto3" json:"uri,omitempty"` + // Arbitrary custom data associated with this voting challenge. + CustomData string `protobuf:"bytes,5,opt,name=customData,proto3" json:"customData,omitempty"` + // If true, all votes for this challenge are cleared after a successful transfer execution. + // This makes the challenge reusable (e.g., for vault withdrawals that need fresh approval each time). + ResetAfterExecution bool `protobuf:"varint,6,opt,name=resetAfterExecution,proto3" json:"resetAfterExecution,omitempty"` + // Mandatory delay in milliseconds after quorum is reached before the transfer can execute. + // If set, the transfer will fail until: now >= quorumReachedTimestamp + delayAfterQuorum. + // During the delay, signers can remove their votes to cancel (quorum drops = delay resets). + DelayAfterQuorum Uint `protobuf:"bytes,7,opt,name=delayAfterQuorum,proto3,customtype=Uint" json:"delayAfterQuorum"` +} + +func (m *VotingChallenge) Reset() { *m = VotingChallenge{} } +func (m *VotingChallenge) String() string { return proto.CompactTextString(m) } +func (*VotingChallenge) ProtoMessage() {} +func (*VotingChallenge) Descriptor() ([]byte, []int) { + return fileDescriptor_14389bbfc4dbefe1, []int{5} +} +func (m *VotingChallenge) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *VotingChallenge) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_VotingChallenge.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 *VotingChallenge) XXX_Merge(src proto.Message) { + xxx_messageInfo_VotingChallenge.Merge(m, src) +} +func (m *VotingChallenge) XXX_Size() int { + return m.Size() +} +func (m *VotingChallenge) XXX_DiscardUnknown() { + xxx_messageInfo_VotingChallenge.DiscardUnknown(m) +} + +var xxx_messageInfo_VotingChallenge proto.InternalMessageInfo + +func (m *VotingChallenge) GetProposalId() string { + if m != nil { + return m.ProposalId + } + return "" +} + +func (m *VotingChallenge) GetVoters() []*Voter { + if m != nil { + return m.Voters + } + return nil +} + +func (m *VotingChallenge) GetUri() string { + if m != nil { + return m.Uri + } + return "" +} + +func (m *VotingChallenge) GetCustomData() string { + if m != nil { + return m.CustomData + } + return "" +} + +func (m *VotingChallenge) GetResetAfterExecution() bool { + if m != nil { + return m.ResetAfterExecution + } + return false +} + +// Voter defines a voter with their address and weight. +type Voter struct { + // The address of the voter. + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + // The weight of this voter's vote. + Weight Uint `protobuf:"bytes,2,opt,name=weight,proto3,customtype=Uint" json:"weight"` +} + +func (m *Voter) Reset() { *m = Voter{} } +func (m *Voter) String() string { return proto.CompactTextString(m) } +func (*Voter) ProtoMessage() {} +func (*Voter) Descriptor() ([]byte, []int) { + return fileDescriptor_14389bbfc4dbefe1, []int{6} +} +func (m *Voter) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Voter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Voter.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 *Voter) XXX_Merge(src proto.Message) { + xxx_messageInfo_Voter.Merge(m, src) +} +func (m *Voter) XXX_Size() int { + return m.Size() +} +func (m *Voter) XXX_DiscardUnknown() { + xxx_messageInfo_Voter.DiscardUnknown(m) +} + +var xxx_messageInfo_Voter proto.InternalMessageInfo + +func (m *Voter) GetAddress() string { + if m != nil { + return m.Address + } + return "" +} + +// VoteProof represents a vote cast for a voting challenge. +type VoteProof struct { + // The proposal ID this vote is for. + ProposalId string `protobuf:"bytes,1,opt,name=proposalId,proto3" json:"proposalId,omitempty"` + // The address of the voter casting the vote. + Voter string `protobuf:"bytes,2,opt,name=voter,proto3" json:"voter,omitempty"` + // The percentage weight (0-100) allocated to "yes" vote. + // The remaining percentage (100 - yesWeight) is allocated to "no" vote. + // Example: yesWeight=70 means 70% yes, 30% no. + YesWeight Uint `protobuf:"bytes,3,opt,name=yesWeight,proto3,customtype=Uint" json:"yesWeight"` + // Timestamp (unix ms) when this vote was cast. Set automatically by the chain. + VotedAt Uint `protobuf:"bytes,4,opt,name=votedAt,proto3,customtype=Uint" json:"votedAt"` +} + +func (m *VoteProof) Reset() { *m = VoteProof{} } +func (m *VoteProof) String() string { return proto.CompactTextString(m) } +func (*VoteProof) ProtoMessage() {} +func (*VoteProof) Descriptor() ([]byte, []int) { + return fileDescriptor_14389bbfc4dbefe1, []int{7} +} +func (m *VoteProof) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *VoteProof) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_VoteProof.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 *VoteProof) XXX_Merge(src proto.Message) { + xxx_messageInfo_VoteProof.Merge(m, src) +} +func (m *VoteProof) XXX_Size() int { + return m.Size() +} +func (m *VoteProof) XXX_DiscardUnknown() { + xxx_messageInfo_VoteProof.DiscardUnknown(m) +} + +var xxx_messageInfo_VoteProof proto.InternalMessageInfo + +func (m *VoteProof) GetProposalId() string { + if m != nil { + return m.ProposalId + } + return "" +} + +func (m *VoteProof) GetVoter() string { + if m != nil { + return m.Voter + } + return "" +} + +// VotingChallengeTracker tracks the quorum state for a voting challenge. +// Stored per (collectionId, approverAddress, approvalLevel, approvalId, proposalId). +type VotingChallengeTracker struct { + // Timestamp (unix ms) when quorum was first reached. Cleared when quorum drops or after reset. + QuorumReachedTimestamp Uint `protobuf:"bytes,1,opt,name=quorumReachedTimestamp,proto3,customtype=Uint" json:"quorumReachedTimestamp"` +} + +func (m *VotingChallengeTracker) Reset() { *m = VotingChallengeTracker{} } +func (m *VotingChallengeTracker) String() string { return proto.CompactTextString(m) } +func (*VotingChallengeTracker) ProtoMessage() {} +func (*VotingChallengeTracker) Descriptor() ([]byte, []int) { + return fileDescriptor_14389bbfc4dbefe1, []int{8} +} +func (m *VotingChallengeTracker) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *VotingChallengeTracker) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_VotingChallengeTracker.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 *VotingChallengeTracker) XXX_Merge(src proto.Message) { + xxx_messageInfo_VotingChallengeTracker.Merge(m, src) +} +func (m *VotingChallengeTracker) XXX_Size() int { + return m.Size() +} +func (m *VotingChallengeTracker) XXX_DiscardUnknown() { + xxx_messageInfo_VotingChallengeTracker.DiscardUnknown(m) +} + +var xxx_messageInfo_VotingChallengeTracker proto.InternalMessageInfo + +// EVMQueryChallenge defines a rule for approval via read-only EVM contract query. +// +// The challenge executes a staticcall to the specified contract with the given calldata. +// The result is compared against the expected result (if provided) or checked for non-zero return. +// +// IMPORTANT: This is read-only and cannot modify state. The query is executed with a gas limit +// to prevent DoS attacks. All results are deterministic since EVM state is consistent within a block. +type EVMQueryChallenge struct { + // The EVM contract address to query (0x format or bb1 format) + ContractAddress string `protobuf:"bytes,1,opt,name=contractAddress,proto3" json:"contractAddress,omitempty"` + // ABI-encoded function selector + arguments (hex string without 0x prefix) + // Example: "70a08231000000000000000000000000{address}" for balanceOf(address) + // Can use placeholders: $initiator, $sender, $recipient (replaced at runtime) + Calldata string `protobuf:"bytes,2,opt,name=calldata,proto3" json:"calldata,omitempty"` + // Expected return value (hex string without 0x prefix). If empty, any non-error result passes. + // For boolean checks, use "0000...0001" for true. + ExpectedResult string `protobuf:"bytes,3,opt,name=expectedResult,proto3" json:"expectedResult,omitempty"` + // Comparison operator: "eq" (equals), "ne" (not equals), "gt" (greater than), "gte", "lt", "lte" + // Only "eq" and "ne" work for non-numeric types. Default is "eq". + ComparisonOperator string `protobuf:"bytes,4,opt,name=comparisonOperator,proto3" json:"comparisonOperator,omitempty"` + // Gas limit for the query (default 100000, max 500000) + GasLimit Uint `protobuf:"bytes,5,opt,name=gasLimit,proto3,customtype=Uint" json:"gasLimit"` + // The URI associated with this challenge (metadata) + Uri string `protobuf:"bytes,6,opt,name=uri,proto3" json:"uri,omitempty"` + // Arbitrary custom data + CustomData string `protobuf:"bytes,7,opt,name=customData,proto3" json:"customData,omitempty"` +} + +func (m *EVMQueryChallenge) Reset() { *m = EVMQueryChallenge{} } +func (m *EVMQueryChallenge) String() string { return proto.CompactTextString(m) } +func (*EVMQueryChallenge) ProtoMessage() {} +func (*EVMQueryChallenge) Descriptor() ([]byte, []int) { + return fileDescriptor_14389bbfc4dbefe1, []int{9} +} +func (m *EVMQueryChallenge) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *EVMQueryChallenge) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_EVMQueryChallenge.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 *EVMQueryChallenge) XXX_Merge(src proto.Message) { + xxx_messageInfo_EVMQueryChallenge.Merge(m, src) +} +func (m *EVMQueryChallenge) XXX_Size() int { + return m.Size() +} +func (m *EVMQueryChallenge) XXX_DiscardUnknown() { + xxx_messageInfo_EVMQueryChallenge.DiscardUnknown(m) +} + +var xxx_messageInfo_EVMQueryChallenge proto.InternalMessageInfo + +func (m *EVMQueryChallenge) GetContractAddress() string { + if m != nil { + return m.ContractAddress + } + return "" +} + +func (m *EVMQueryChallenge) GetCalldata() string { + if m != nil { + return m.Calldata + } + return "" +} + +func (m *EVMQueryChallenge) GetExpectedResult() string { + if m != nil { + return m.ExpectedResult + } + return "" +} + +func (m *EVMQueryChallenge) GetComparisonOperator() string { + if m != nil { + return m.ComparisonOperator + } + return "" +} + +func (m *EVMQueryChallenge) GetUri() string { + if m != nil { + return m.Uri + } + return "" +} + +func (m *EVMQueryChallenge) GetCustomData() string { + if m != nil { + return m.CustomData + } + return "" +} + +func init() { + proto.RegisterType((*MerkleChallenge)(nil), "tokenization.v29.MerkleChallenge") + proto.RegisterType((*ETHSignatureChallenge)(nil), "tokenization.v29.ETHSignatureChallenge") + proto.RegisterType((*MerklePathItem)(nil), "tokenization.v29.MerklePathItem") + proto.RegisterType((*MerkleProof)(nil), "tokenization.v29.MerkleProof") + proto.RegisterType((*ETHSignatureProof)(nil), "tokenization.v29.ETHSignatureProof") + proto.RegisterType((*VotingChallenge)(nil), "tokenization.v29.VotingChallenge") + proto.RegisterType((*Voter)(nil), "tokenization.v29.Voter") + proto.RegisterType((*VoteProof)(nil), "tokenization.v29.VoteProof") + proto.RegisterType((*VotingChallengeTracker)(nil), "tokenization.v29.VotingChallengeTracker") + proto.RegisterType((*EVMQueryChallenge)(nil), "tokenization.v29.EVMQueryChallenge") +} + +func init() { proto.RegisterFile("tokenization/v29/challenges.proto", fileDescriptor_14389bbfc4dbefe1) } + +var fileDescriptor_14389bbfc4dbefe1 = []byte{ + // 822 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x55, 0x5f, 0x6b, 0xdc, 0x46, + 0x10, 0xb7, 0xee, 0x9f, 0xcf, 0x93, 0xd6, 0x76, 0x36, 0xae, 0x23, 0x42, 0x51, 0x5c, 0x11, 0xc2, + 0xd1, 0x87, 0xbb, 0xe2, 0x96, 0x90, 0x40, 0x09, 0x5c, 0x12, 0x93, 0x1a, 0x1c, 0xea, 0xa8, 0x8e, + 0x0b, 0x7d, 0x28, 0xac, 0xa5, 0xb1, 0x24, 0x2c, 0x69, 0xd5, 0xdd, 0x95, 0x7b, 0xd7, 0x97, 0x7e, + 0x82, 0x42, 0xfb, 0xd0, 0xef, 0xd2, 0x8f, 0x90, 0xc7, 0xbc, 0xb5, 0xf4, 0x21, 0x14, 0xfb, 0x8b, + 0x94, 0xdd, 0x95, 0xee, 0x8f, 0xac, 0x23, 0x6f, 0x3b, 0x33, 0xbf, 0x99, 0x9d, 0xf9, 0xcd, 0x4f, + 0x2b, 0xf8, 0x4c, 0xb2, 0x0b, 0xcc, 0xe2, 0x5f, 0xa8, 0x8c, 0x59, 0x36, 0xba, 0xdc, 0x7f, 0x32, + 0xf2, 0x23, 0x9a, 0x24, 0x98, 0x85, 0x28, 0x86, 0x39, 0x67, 0x92, 0x91, 0xed, 0x45, 0xc8, 0xf0, + 0x72, 0xff, 0xc9, 0xbd, 0x9d, 0x90, 0x85, 0x4c, 0x07, 0x47, 0xea, 0x64, 0x70, 0xee, 0xdf, 0x2d, + 0xd8, 0x7a, 0x85, 0xfc, 0x22, 0xc1, 0xe7, 0x55, 0x09, 0x42, 0xa0, 0xc3, 0x19, 0x93, 0xb6, 0xb5, + 0x67, 0x0d, 0x36, 0x3c, 0x7d, 0x26, 0x4f, 0xe1, 0x0e, 0x4e, 0x72, 0xf4, 0x25, 0x06, 0xc7, 0x9c, + 0xb1, 0xf3, 0x23, 0xcc, 0x42, 0x19, 0xd9, 0x2d, 0x05, 0x79, 0xf6, 0xd1, 0xdb, 0xf7, 0xf7, 0xd7, + 0xfe, 0x7d, 0x7f, 0xbf, 0xf3, 0x26, 0xce, 0xa4, 0xd7, 0x04, 0x24, 0x8f, 0xe1, 0x6e, 0x21, 0xf0, + 0x39, 0x47, 0x2a, 0x19, 0x1f, 0x07, 0x01, 0x47, 0x21, 0xc6, 0xe2, 0x08, 0xe9, 0xb9, 0xdd, 0xde, + 0xb3, 0x06, 0x7d, 0x6f, 0x55, 0x98, 0x7c, 0x05, 0x9b, 0x29, 0x9d, 0xbc, 0x11, 0x28, 0x8e, 0x91, + 0xeb, 0x84, 0x4e, 0xc3, 0xa5, 0x35, 0x0c, 0xd9, 0x86, 0x76, 0xc1, 0x63, 0xbb, 0xab, 0x47, 0x50, + 0x47, 0xe2, 0x00, 0xf8, 0x85, 0x90, 0x2c, 0x7d, 0x41, 0x25, 0xb5, 0x7b, 0x3a, 0xb0, 0xe0, 0x21, + 0x43, 0x20, 0x33, 0x16, 0x4f, 0x38, 0xf5, 0x2f, 0x90, 0x1f, 0x06, 0xf6, 0xba, 0xc6, 0x35, 0x44, + 0x54, 0xbd, 0x04, 0xe9, 0xf9, 0x77, 0x71, 0x98, 0x21, 0xb7, 0xfb, 0xa6, 0xde, 0xdc, 0xe3, 0xfe, + 0x61, 0xc1, 0x27, 0x07, 0x27, 0xdf, 0x28, 0x8b, 0xca, 0x82, 0x2f, 0xf0, 0xbb, 0x0b, 0x3d, 0x61, + 0xb2, 0x0c, 0xc3, 0xa5, 0xb5, 0xa2, 0x83, 0xd6, 0xca, 0x0e, 0xca, 0x19, 0xdb, 0xab, 0x66, 0xec, + 0xd4, 0x67, 0x74, 0x9f, 0xc2, 0xa6, 0x59, 0xf6, 0x31, 0x95, 0xd1, 0xa1, 0xc4, 0x54, 0xed, 0x9a, + 0x16, 0xd9, 0x6c, 0xd7, 0xea, 0x4c, 0x6c, 0x58, 0x67, 0x99, 0x17, 0x87, 0x91, 0xd4, 0x97, 0xf7, + 0xbd, 0xca, 0x74, 0x7f, 0x85, 0x5b, 0x65, 0xbe, 0x5a, 0xad, 0x4a, 0x56, 0x03, 0x57, 0xc9, 0xea, + 0x4c, 0x1e, 0x41, 0x57, 0x15, 0x11, 0x76, 0x6b, 0xaf, 0x3d, 0xb8, 0xb5, 0xbf, 0x37, 0xac, 0x0b, + 0x71, 0xb8, 0xdc, 0x81, 0x67, 0xe0, 0xe4, 0x01, 0x7c, 0x5c, 0x91, 0xa7, 0xe9, 0x2a, 0xc7, 0x5a, + 0x76, 0xba, 0x2f, 0xe1, 0xf6, 0x22, 0xa7, 0xa6, 0x8d, 0x1d, 0xe8, 0x66, 0x2c, 0xf3, 0xb1, 0xec, + 0xc3, 0x18, 0xe4, 0x53, 0xd8, 0x10, 0xb3, 0x62, 0x86, 0xc4, 0xb9, 0xc3, 0xfd, 0xab, 0x05, 0x5b, + 0xa7, 0x4c, 0xc6, 0x59, 0x38, 0xdf, 0x8b, 0x03, 0x90, 0x73, 0x96, 0x33, 0x41, 0x93, 0xc3, 0xa0, + 0x2c, 0xb6, 0xe0, 0x21, 0x8f, 0x60, 0xeb, 0xa7, 0x82, 0xf1, 0x22, 0x3d, 0x89, 0x38, 0x8a, 0x88, + 0x25, 0x41, 0xa3, 0xfe, 0xeb, 0x20, 0x32, 0x82, 0xde, 0x25, 0x93, 0xc8, 0x85, 0xdd, 0xd6, 0x9c, + 0xdc, 0xbd, 0xc9, 0xc9, 0xa9, 0x8a, 0x7b, 0x25, 0xac, 0x5a, 0x6c, 0x67, 0xd5, 0x62, 0xbb, 0x37, + 0xc4, 0xfb, 0x05, 0xdc, 0xe1, 0x28, 0x50, 0x8e, 0xcf, 0x25, 0xf2, 0x83, 0x09, 0xfa, 0x85, 0x2a, + 0xad, 0x55, 0xde, 0xf7, 0x9a, 0x42, 0xe4, 0x31, 0x6c, 0x07, 0x98, 0xd0, 0xa9, 0x76, 0xbf, 0xd6, + 0x1d, 0x1b, 0xb1, 0xd7, 0xa6, 0xb9, 0x81, 0x72, 0x5f, 0x42, 0x57, 0xb7, 0xab, 0x74, 0x42, 0xcd, + 0xa7, 0x5a, 0x92, 0x55, 0x99, 0xe4, 0x01, 0xf4, 0x7e, 0xc6, 0x99, 0x80, 0xea, 0x25, 0xcb, 0x98, + 0xfb, 0xa7, 0x05, 0x1b, 0xaa, 0x92, 0xd9, 0xe2, 0x87, 0xd8, 0xdf, 0x81, 0xae, 0xa6, 0xa7, 0xdc, + 0xa5, 0x31, 0xc8, 0xe7, 0xb0, 0x31, 0x45, 0xf1, 0xbd, 0xb9, 0xac, 0xdd, 0x70, 0xd9, 0x3c, 0x4c, + 0x1e, 0xc2, 0xba, 0x4a, 0x0a, 0xc6, 0xb2, 0xf1, 0x09, 0xa9, 0x82, 0xee, 0x8f, 0xb0, 0x5b, 0x93, + 0x46, 0xf9, 0xcd, 0x91, 0x17, 0xb0, 0x6b, 0x96, 0xeb, 0x21, 0xf5, 0x23, 0x0c, 0x4e, 0xe2, 0x14, + 0x85, 0xa4, 0x69, 0x6e, 0xfa, 0xad, 0x15, 0x5c, 0x81, 0x75, 0x7f, 0x6b, 0xc1, 0xed, 0x83, 0xd3, + 0x57, 0xaf, 0x0b, 0xe4, 0xd3, 0xb9, 0xfa, 0x06, 0xb0, 0xe5, 0xb3, 0x4c, 0x72, 0xea, 0xcb, 0xf1, + 0x12, 0xab, 0x75, 0x37, 0xb9, 0x07, 0x7d, 0x9f, 0x26, 0x49, 0xa0, 0xa4, 0x60, 0xc8, 0x98, 0xd9, + 0xe4, 0x21, 0x6c, 0x56, 0xcf, 0xaf, 0x87, 0xa2, 0x48, 0x4a, 0x52, 0xbc, 0x9a, 0x57, 0xbf, 0x35, + 0x2c, 0xcd, 0x29, 0x8f, 0x05, 0xcb, 0xbe, 0xcd, 0x91, 0xab, 0x87, 0xb7, 0x54, 0x5c, 0x43, 0x84, + 0x0c, 0xa0, 0x1f, 0x52, 0x71, 0x14, 0xa7, 0xb1, 0x34, 0xf2, 0xab, 0xcd, 0x3a, 0x8b, 0x56, 0xe2, + 0xed, 0xad, 0x12, 0xef, 0x7a, 0x5d, 0xbc, 0xcf, 0x4e, 0xdf, 0x5e, 0x39, 0xd6, 0xbb, 0x2b, 0xc7, + 0xfa, 0xef, 0xca, 0xb1, 0x7e, 0xbf, 0x76, 0xd6, 0xde, 0x5d, 0x3b, 0x6b, 0xff, 0x5c, 0x3b, 0x6b, + 0x3f, 0x7c, 0x1d, 0xc6, 0x32, 0x2a, 0xce, 0x86, 0x3e, 0x4b, 0x47, 0x67, 0xb1, 0x3c, 0xa3, 0x41, + 0x88, 0x62, 0x7e, 0xf2, 0x23, 0x1a, 0x67, 0xa3, 0xc9, 0x68, 0xe9, 0x77, 0x28, 0xa7, 0x39, 0x0a, + 0xf5, 0x53, 0x3c, 0xeb, 0xe9, 0x5f, 0xdc, 0x97, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x62, 0x0f, + 0xef, 0xbc, 0x2f, 0x07, 0x00, 0x00, +} + +func (m *MerkleChallenge) 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 *MerkleChallenge) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MerkleChallenge) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.LeafSigner) > 0 { + i -= len(m.LeafSigner) + copy(dAtA[i:], m.LeafSigner) + i = encodeVarintChallenges(dAtA, i, uint64(len(m.LeafSigner))) + i-- + dAtA[i] = 0x42 + } + if len(m.ChallengeTrackerId) > 0 { + i -= len(m.ChallengeTrackerId) + copy(dAtA[i:], m.ChallengeTrackerId) + i = encodeVarintChallenges(dAtA, i, uint64(len(m.ChallengeTrackerId))) + i-- + dAtA[i] = 0x3a + } + if len(m.CustomData) > 0 { + i -= len(m.CustomData) + copy(dAtA[i:], m.CustomData) + i = encodeVarintChallenges(dAtA, i, uint64(len(m.CustomData))) + i-- + dAtA[i] = 0x32 + } + if len(m.Uri) > 0 { + i -= len(m.Uri) + copy(dAtA[i:], m.Uri) + i = encodeVarintChallenges(dAtA, i, uint64(len(m.Uri))) + i-- + dAtA[i] = 0x2a + } + { + size := m.MaxUsesPerLeaf.Size() + i -= size + if _, err := m.MaxUsesPerLeaf.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintChallenges(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + if m.UseCreatorAddressAsLeaf { + i-- + if m.UseCreatorAddressAsLeaf { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } + { + size := m.ExpectedProofLength.Size() + i -= size + if _, err := m.ExpectedProofLength.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintChallenges(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Root) > 0 { + i -= len(m.Root) + copy(dAtA[i:], m.Root) + i = encodeVarintChallenges(dAtA, i, uint64(len(m.Root))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ETHSignatureChallenge) 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 *ETHSignatureChallenge) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ETHSignatureChallenge) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.CustomData) > 0 { + i -= len(m.CustomData) + copy(dAtA[i:], m.CustomData) + i = encodeVarintChallenges(dAtA, i, uint64(len(m.CustomData))) + i-- + dAtA[i] = 0x22 + } + if len(m.Uri) > 0 { + i -= len(m.Uri) + copy(dAtA[i:], m.Uri) + i = encodeVarintChallenges(dAtA, i, uint64(len(m.Uri))) + i-- + dAtA[i] = 0x1a + } + if len(m.ChallengeTrackerId) > 0 { + i -= len(m.ChallengeTrackerId) + copy(dAtA[i:], m.ChallengeTrackerId) + i = encodeVarintChallenges(dAtA, i, uint64(len(m.ChallengeTrackerId))) + i-- + dAtA[i] = 0x12 + } + if len(m.Signer) > 0 { + i -= len(m.Signer) + copy(dAtA[i:], m.Signer) + i = encodeVarintChallenges(dAtA, i, uint64(len(m.Signer))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MerklePathItem) 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 *MerklePathItem) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MerklePathItem) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.OnRight { + i-- + if m.OnRight { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 + } + if len(m.Aunt) > 0 { + i -= len(m.Aunt) + copy(dAtA[i:], m.Aunt) + i = encodeVarintChallenges(dAtA, i, uint64(len(m.Aunt))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MerkleProof) 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 *MerkleProof) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MerkleProof) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.LeafSignature) > 0 { + i -= len(m.LeafSignature) + copy(dAtA[i:], m.LeafSignature) + i = encodeVarintChallenges(dAtA, i, uint64(len(m.LeafSignature))) + i-- + dAtA[i] = 0x1a + } + if len(m.Aunts) > 0 { + for iNdEx := len(m.Aunts) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Aunts[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintChallenges(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.Leaf) > 0 { + i -= len(m.Leaf) + copy(dAtA[i:], m.Leaf) + i = encodeVarintChallenges(dAtA, i, uint64(len(m.Leaf))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ETHSignatureProof) 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 *ETHSignatureProof) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ETHSignatureProof) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Signature) > 0 { + i -= len(m.Signature) + copy(dAtA[i:], m.Signature) + i = encodeVarintChallenges(dAtA, i, uint64(len(m.Signature))) + i-- + dAtA[i] = 0x12 + } + if len(m.Nonce) > 0 { + i -= len(m.Nonce) + copy(dAtA[i:], m.Nonce) + i = encodeVarintChallenges(dAtA, i, uint64(len(m.Nonce))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *VotingChallenge) 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 *VotingChallenge) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *VotingChallenge) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.DelayAfterQuorum.Size() + i -= size + if _, err := m.DelayAfterQuorum.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintChallenges(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + if m.ResetAfterExecution { + i-- + if m.ResetAfterExecution { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x30 + } + if len(m.CustomData) > 0 { + i -= len(m.CustomData) + copy(dAtA[i:], m.CustomData) + i = encodeVarintChallenges(dAtA, i, uint64(len(m.CustomData))) + i-- + dAtA[i] = 0x2a + } + if len(m.Uri) > 0 { + i -= len(m.Uri) + copy(dAtA[i:], m.Uri) + i = encodeVarintChallenges(dAtA, i, uint64(len(m.Uri))) + i-- + dAtA[i] = 0x22 + } + if len(m.Voters) > 0 { + for iNdEx := len(m.Voters) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Voters[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintChallenges(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + { + size := m.QuorumThreshold.Size() + i -= size + if _, err := m.QuorumThreshold.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintChallenges(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.ProposalId) > 0 { + i -= len(m.ProposalId) + copy(dAtA[i:], m.ProposalId) + i = encodeVarintChallenges(dAtA, i, uint64(len(m.ProposalId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *Voter) 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 *Voter) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Voter) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.Weight.Size() + i -= size + if _, err := m.Weight.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintChallenges(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Address) > 0 { + i -= len(m.Address) + copy(dAtA[i:], m.Address) + i = encodeVarintChallenges(dAtA, i, uint64(len(m.Address))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *VoteProof) 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 *VoteProof) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *VoteProof) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.VotedAt.Size() + i -= size + if _, err := m.VotedAt.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintChallenges(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + { + size := m.YesWeight.Size() + i -= size + if _, err := m.YesWeight.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintChallenges(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + if len(m.Voter) > 0 { + i -= len(m.Voter) + copy(dAtA[i:], m.Voter) + i = encodeVarintChallenges(dAtA, i, uint64(len(m.Voter))) + i-- + dAtA[i] = 0x12 + } + if len(m.ProposalId) > 0 { + i -= len(m.ProposalId) + copy(dAtA[i:], m.ProposalId) + i = encodeVarintChallenges(dAtA, i, uint64(len(m.ProposalId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *VotingChallengeTracker) 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 *VotingChallengeTracker) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *VotingChallengeTracker) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.QuorumReachedTimestamp.Size() + i -= size + if _, err := m.QuorumReachedTimestamp.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintChallenges(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *EVMQueryChallenge) 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 *EVMQueryChallenge) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *EVMQueryChallenge) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.CustomData) > 0 { + i -= len(m.CustomData) + copy(dAtA[i:], m.CustomData) + i = encodeVarintChallenges(dAtA, i, uint64(len(m.CustomData))) + i-- + dAtA[i] = 0x3a + } + if len(m.Uri) > 0 { + i -= len(m.Uri) + copy(dAtA[i:], m.Uri) + i = encodeVarintChallenges(dAtA, i, uint64(len(m.Uri))) + i-- + dAtA[i] = 0x32 + } + { + size := m.GasLimit.Size() + i -= size + if _, err := m.GasLimit.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintChallenges(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + if len(m.ComparisonOperator) > 0 { + i -= len(m.ComparisonOperator) + copy(dAtA[i:], m.ComparisonOperator) + i = encodeVarintChallenges(dAtA, i, uint64(len(m.ComparisonOperator))) + i-- + dAtA[i] = 0x22 + } + if len(m.ExpectedResult) > 0 { + i -= len(m.ExpectedResult) + copy(dAtA[i:], m.ExpectedResult) + i = encodeVarintChallenges(dAtA, i, uint64(len(m.ExpectedResult))) + i-- + dAtA[i] = 0x1a + } + if len(m.Calldata) > 0 { + i -= len(m.Calldata) + copy(dAtA[i:], m.Calldata) + i = encodeVarintChallenges(dAtA, i, uint64(len(m.Calldata))) + i-- + dAtA[i] = 0x12 + } + if len(m.ContractAddress) > 0 { + i -= len(m.ContractAddress) + copy(dAtA[i:], m.ContractAddress) + i = encodeVarintChallenges(dAtA, i, uint64(len(m.ContractAddress))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintChallenges(dAtA []byte, offset int, v uint64) int { + offset -= sovChallenges(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *MerkleChallenge) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Root) + if l > 0 { + n += 1 + l + sovChallenges(uint64(l)) + } + l = m.ExpectedProofLength.Size() + n += 1 + l + sovChallenges(uint64(l)) + if m.UseCreatorAddressAsLeaf { + n += 2 + } + l = m.MaxUsesPerLeaf.Size() + n += 1 + l + sovChallenges(uint64(l)) + l = len(m.Uri) + if l > 0 { + n += 1 + l + sovChallenges(uint64(l)) + } + l = len(m.CustomData) + if l > 0 { + n += 1 + l + sovChallenges(uint64(l)) + } + l = len(m.ChallengeTrackerId) + if l > 0 { + n += 1 + l + sovChallenges(uint64(l)) + } + l = len(m.LeafSigner) + if l > 0 { + n += 1 + l + sovChallenges(uint64(l)) + } + return n +} + +func (m *ETHSignatureChallenge) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Signer) + if l > 0 { + n += 1 + l + sovChallenges(uint64(l)) + } + l = len(m.ChallengeTrackerId) + if l > 0 { + n += 1 + l + sovChallenges(uint64(l)) + } + l = len(m.Uri) + if l > 0 { + n += 1 + l + sovChallenges(uint64(l)) + } + l = len(m.CustomData) + if l > 0 { + n += 1 + l + sovChallenges(uint64(l)) + } + return n +} + +func (m *MerklePathItem) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Aunt) + if l > 0 { + n += 1 + l + sovChallenges(uint64(l)) + } + if m.OnRight { + n += 2 + } + return n +} + +func (m *MerkleProof) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Leaf) + if l > 0 { + n += 1 + l + sovChallenges(uint64(l)) + } + if len(m.Aunts) > 0 { + for _, e := range m.Aunts { + l = e.Size() + n += 1 + l + sovChallenges(uint64(l)) + } + } + l = len(m.LeafSignature) + if l > 0 { + n += 1 + l + sovChallenges(uint64(l)) + } + return n +} + +func (m *ETHSignatureProof) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Nonce) + if l > 0 { + n += 1 + l + sovChallenges(uint64(l)) + } + l = len(m.Signature) + if l > 0 { + n += 1 + l + sovChallenges(uint64(l)) + } + return n +} + +func (m *VotingChallenge) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ProposalId) + if l > 0 { + n += 1 + l + sovChallenges(uint64(l)) + } + l = m.QuorumThreshold.Size() + n += 1 + l + sovChallenges(uint64(l)) + if len(m.Voters) > 0 { + for _, e := range m.Voters { + l = e.Size() + n += 1 + l + sovChallenges(uint64(l)) + } + } + l = len(m.Uri) + if l > 0 { + n += 1 + l + sovChallenges(uint64(l)) + } + l = len(m.CustomData) + if l > 0 { + n += 1 + l + sovChallenges(uint64(l)) + } + if m.ResetAfterExecution { + n += 2 + } + l = m.DelayAfterQuorum.Size() + n += 1 + l + sovChallenges(uint64(l)) + return n +} + +func (m *Voter) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Address) + if l > 0 { + n += 1 + l + sovChallenges(uint64(l)) + } + l = m.Weight.Size() + n += 1 + l + sovChallenges(uint64(l)) + return n +} + +func (m *VoteProof) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ProposalId) + if l > 0 { + n += 1 + l + sovChallenges(uint64(l)) + } + l = len(m.Voter) + if l > 0 { + n += 1 + l + sovChallenges(uint64(l)) + } + l = m.YesWeight.Size() + n += 1 + l + sovChallenges(uint64(l)) + l = m.VotedAt.Size() + n += 1 + l + sovChallenges(uint64(l)) + return n +} + +func (m *VotingChallengeTracker) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.QuorumReachedTimestamp.Size() + n += 1 + l + sovChallenges(uint64(l)) + return n +} + +func (m *EVMQueryChallenge) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ContractAddress) + if l > 0 { + n += 1 + l + sovChallenges(uint64(l)) + } + l = len(m.Calldata) + if l > 0 { + n += 1 + l + sovChallenges(uint64(l)) + } + l = len(m.ExpectedResult) + if l > 0 { + n += 1 + l + sovChallenges(uint64(l)) + } + l = len(m.ComparisonOperator) + if l > 0 { + n += 1 + l + sovChallenges(uint64(l)) + } + l = m.GasLimit.Size() + n += 1 + l + sovChallenges(uint64(l)) + l = len(m.Uri) + if l > 0 { + n += 1 + l + sovChallenges(uint64(l)) + } + l = len(m.CustomData) + if l > 0 { + n += 1 + l + sovChallenges(uint64(l)) + } + return n +} + +func sovChallenges(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozChallenges(x uint64) (n int) { + return sovChallenges(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *MerkleChallenge) 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 ErrIntOverflowChallenges + } + 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: MerkleChallenge: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MerkleChallenge: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Root", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Root = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExpectedProofLength", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ExpectedProofLength.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UseCreatorAddressAsLeaf", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.UseCreatorAddressAsLeaf = bool(v != 0) + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxUsesPerLeaf", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.MaxUsesPerLeaf.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Uri", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Uri = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CustomData", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CustomData = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChallengeTrackerId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ChallengeTrackerId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LeafSigner", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.LeafSigner = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipChallenges(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthChallenges + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ETHSignatureChallenge) 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 ErrIntOverflowChallenges + } + 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: ETHSignatureChallenge: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ETHSignatureChallenge: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Signer", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Signer = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChallengeTrackerId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ChallengeTrackerId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Uri", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Uri = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CustomData", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CustomData = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipChallenges(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthChallenges + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MerklePathItem) 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 ErrIntOverflowChallenges + } + 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: MerklePathItem: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MerklePathItem: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Aunt", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Aunt = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field OnRight", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.OnRight = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipChallenges(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthChallenges + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *MerkleProof) 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 ErrIntOverflowChallenges + } + 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: MerkleProof: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MerkleProof: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Leaf", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Leaf = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Aunts", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthChallenges + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Aunts = append(m.Aunts, &MerklePathItem{}) + if err := m.Aunts[len(m.Aunts)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LeafSignature", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.LeafSignature = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipChallenges(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthChallenges + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ETHSignatureProof) 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 ErrIntOverflowChallenges + } + 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: ETHSignatureProof: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ETHSignatureProof: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Nonce", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Nonce = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Signature", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Signature = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipChallenges(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthChallenges + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *VotingChallenge) 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 ErrIntOverflowChallenges + } + 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: VotingChallenge: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: VotingChallenge: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ProposalId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ProposalId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field QuorumThreshold", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.QuorumThreshold.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Voters", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthChallenges + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Voters = append(m.Voters, &Voter{}) + if err := m.Voters[len(m.Voters)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Uri", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Uri = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CustomData", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CustomData = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ResetAfterExecution", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.ResetAfterExecution = bool(v != 0) + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DelayAfterQuorum", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.DelayAfterQuorum.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipChallenges(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthChallenges + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Voter) 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 ErrIntOverflowChallenges + } + 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: Voter: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Voter: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Weight", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Weight.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipChallenges(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthChallenges + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *VoteProof) 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 ErrIntOverflowChallenges + } + 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: VoteProof: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: VoteProof: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ProposalId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ProposalId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Voter", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Voter = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field YesWeight", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.YesWeight.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VotedAt", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.VotedAt.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipChallenges(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthChallenges + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *VotingChallengeTracker) 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 ErrIntOverflowChallenges + } + 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: VotingChallengeTracker: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: VotingChallengeTracker: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field QuorumReachedTimestamp", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.QuorumReachedTimestamp.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipChallenges(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthChallenges + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *EVMQueryChallenge) 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 ErrIntOverflowChallenges + } + 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: EVMQueryChallenge: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: EVMQueryChallenge: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ContractAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ContractAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Calldata", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Calldata = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExpectedResult", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ExpectedResult = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ComparisonOperator", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ComparisonOperator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GasLimit", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.GasLimit.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Uri", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Uri = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CustomData", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowChallenges + } + 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 ErrInvalidLengthChallenges + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthChallenges + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CustomData = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipChallenges(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthChallenges + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipChallenges(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, ErrIntOverflowChallenges + } + 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, ErrIntOverflowChallenges + } + 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, ErrIntOverflowChallenges + } + 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, ErrInvalidLengthChallenges + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupChallenges + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthChallenges + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthChallenges = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowChallenges = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupChallenges = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/tokenization/types/v29/collections.pb.go b/x/tokenization/types/v29/collections.pb.go new file mode 100644 index 00000000..0a5af003 --- /dev/null +++ b/x/tokenization/types/v29/collections.pb.go @@ -0,0 +1,4258 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: tokenization/v29/collections.proto + +package v29 + +import ( + fmt "fmt" + _ "github.com/cosmos/cosmos-sdk/codec/types" + _ "github.com/cosmos/gogoproto/gogoproto" + 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 + +// A TokenCollection is the top-level object for a collection of tokens. +// It defines everything about the collection, such as the manager, metadata, etc. +// +// All collections are identified by a collectionId assigned by the blockchain, which is a uint64 that increments (i.e. the first collection has ID 1). +// +// All collections can have a manager who is responsible for managing the collection and can be granted certain admin +// permissions, such as the ability to mint new tokens. +// +// Collections may have different balance types: standard vs. off-chain - indexed vs. inherited.vs off-chain - non-indexed vs non-public. +// +// See documentation for more details. +type TokenCollection struct { + // The unique identifier for this collection. This is assigned by the blockchain. First collection has ID 1. + CollectionId Uint `protobuf:"bytes,1,opt,name=collectionId,proto3,customtype=Uint" json:"collectionId"` + // The metadata for the collection itself. + CollectionMetadata *CollectionMetadata `protobuf:"bytes,2,opt,name=collectionMetadata,proto3" json:"collectionMetadata,omitempty"` + // The metadata for each token in the collection. + TokenMetadata []*TokenMetadata `protobuf:"bytes,3,rep,name=tokenMetadata,proto3" json:"tokenMetadata,omitempty"` + // An arbitrary field that can store any data. + CustomData string `protobuf:"bytes,4,opt,name=customData,proto3" json:"customData,omitempty"` + // The address of the manager of this collection. + Manager string `protobuf:"bytes,5,opt,name=manager,proto3" json:"manager,omitempty"` + // Permissions that define what the manager of the collection can do or not do. + CollectionPermissions *CollectionPermissions `protobuf:"bytes,6,opt,name=collectionPermissions,proto3" json:"collectionPermissions,omitempty"` + // Transferability of the collection for collections with standard balances, subject to changes over time. + // Overrides user approvals for a transfer if specified. + // Transfer must satisfy both user and collection-level approvals. + // Only applicable to on-chain balances. + CollectionApprovals []*CollectionApproval `protobuf:"bytes,7,rep,name=collectionApprovals,proto3" json:"collectionApprovals,omitempty"` + // Standards that define how to interpret the fields of the collection. + Standards []string `protobuf:"bytes,8,rep,name=standards,proto3" json:"standards,omitempty"` + // Whether the collection is archived or not. + // When archived, it becomes read-only, and no transactions can be processed until it is unarchived. + IsArchived bool `protobuf:"varint,9,opt,name=isArchived,proto3" json:"isArchived,omitempty"` + // The default store of a balance / approvals for a user, upon genesis. + DefaultBalances *UserBalanceStore `protobuf:"bytes,10,opt,name=defaultBalances,proto3" json:"defaultBalances,omitempty"` + // The user or entity who created the collection. + CreatedBy string `protobuf:"bytes,11,opt,name=createdBy,proto3" json:"createdBy,omitempty"` + // The valid token IDs for this collection. + ValidTokenIds []*UintRange `protobuf:"bytes,12,rep,name=validTokenIds,proto3" json:"validTokenIds,omitempty"` + //The generated address of the collection. Also used to escrow Mint balances. + MintEscrowAddress string `protobuf:"bytes,13,opt,name=mintEscrowAddress,proto3" json:"mintEscrowAddress,omitempty"` + // The IBC wrapper (sdk.coin) paths for the collection. + CosmosCoinWrapperPaths []*CosmosCoinWrapperPath `protobuf:"bytes,14,rep,name=cosmosCoinWrapperPaths,proto3" json:"cosmosCoinWrapperPaths,omitempty"` + // Collection-level invariants that cannot be broken. + // These are set upon genesis and cannot be modified. + Invariants *CollectionInvariants `protobuf:"bytes,15,opt,name=invariants,proto3" json:"invariants,omitempty"` + // The alias (non-wrapping) paths for the collection. + AliasPaths []*AliasPath `protobuf:"bytes,16,rep,name=aliasPaths,proto3" json:"aliasPaths,omitempty"` +} + +func (m *TokenCollection) Reset() { *m = TokenCollection{} } +func (m *TokenCollection) String() string { return proto.CompactTextString(m) } +func (*TokenCollection) ProtoMessage() {} +func (*TokenCollection) Descriptor() ([]byte, []int) { + return fileDescriptor_1bee0c48f49dbe62, []int{0} +} +func (m *TokenCollection) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *TokenCollection) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_TokenCollection.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 *TokenCollection) XXX_Merge(src proto.Message) { + xxx_messageInfo_TokenCollection.Merge(m, src) +} +func (m *TokenCollection) XXX_Size() int { + return m.Size() +} +func (m *TokenCollection) XXX_DiscardUnknown() { + xxx_messageInfo_TokenCollection.DiscardUnknown(m) +} + +var xxx_messageInfo_TokenCollection proto.InternalMessageInfo + +func (m *TokenCollection) GetCollectionMetadata() *CollectionMetadata { + if m != nil { + return m.CollectionMetadata + } + return nil +} + +func (m *TokenCollection) GetTokenMetadata() []*TokenMetadata { + if m != nil { + return m.TokenMetadata + } + return nil +} + +func (m *TokenCollection) GetCustomData() string { + if m != nil { + return m.CustomData + } + return "" +} + +func (m *TokenCollection) GetManager() string { + if m != nil { + return m.Manager + } + return "" +} + +func (m *TokenCollection) GetCollectionPermissions() *CollectionPermissions { + if m != nil { + return m.CollectionPermissions + } + return nil +} + +func (m *TokenCollection) GetCollectionApprovals() []*CollectionApproval { + if m != nil { + return m.CollectionApprovals + } + return nil +} + +func (m *TokenCollection) GetStandards() []string { + if m != nil { + return m.Standards + } + return nil +} + +func (m *TokenCollection) GetIsArchived() bool { + if m != nil { + return m.IsArchived + } + return false +} + +func (m *TokenCollection) GetDefaultBalances() *UserBalanceStore { + if m != nil { + return m.DefaultBalances + } + return nil +} + +func (m *TokenCollection) GetCreatedBy() string { + if m != nil { + return m.CreatedBy + } + return "" +} + +func (m *TokenCollection) GetValidTokenIds() []*UintRange { + if m != nil { + return m.ValidTokenIds + } + return nil +} + +func (m *TokenCollection) GetMintEscrowAddress() string { + if m != nil { + return m.MintEscrowAddress + } + return "" +} + +func (m *TokenCollection) GetCosmosCoinWrapperPaths() []*CosmosCoinWrapperPath { + if m != nil { + return m.CosmosCoinWrapperPaths + } + return nil +} + +func (m *TokenCollection) GetInvariants() *CollectionInvariants { + if m != nil { + return m.Invariants + } + return nil +} + +func (m *TokenCollection) GetAliasPaths() []*AliasPath { + if m != nil { + return m.AliasPaths + } + return nil +} + +// Conversion defines a bidirectional conversion between a cosmos coin (with denom) and token balances. +type Conversion struct { + // Side A: The cosmos coin side of the conversion (amount + denom). + SideA *ConversionSideAWithDenom `protobuf:"bytes,1,opt,name=sideA,proto3" json:"sideA,omitempty"` + // Side B: The token balances side of the conversion. + SideB []*Balance `protobuf:"bytes,2,rep,name=sideB,proto3" json:"sideB,omitempty"` +} + +func (m *Conversion) Reset() { *m = Conversion{} } +func (m *Conversion) String() string { return proto.CompactTextString(m) } +func (*Conversion) ProtoMessage() {} +func (*Conversion) Descriptor() ([]byte, []int) { + return fileDescriptor_1bee0c48f49dbe62, []int{1} +} +func (m *Conversion) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Conversion) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Conversion.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 *Conversion) XXX_Merge(src proto.Message) { + xxx_messageInfo_Conversion.Merge(m, src) +} +func (m *Conversion) XXX_Size() int { + return m.Size() +} +func (m *Conversion) XXX_DiscardUnknown() { + xxx_messageInfo_Conversion.DiscardUnknown(m) +} + +var xxx_messageInfo_Conversion proto.InternalMessageInfo + +func (m *Conversion) GetSideA() *ConversionSideAWithDenom { + if m != nil { + return m.SideA + } + return nil +} + +func (m *Conversion) GetSideB() []*Balance { + if m != nil { + return m.SideB + } + return nil +} + +// ConversionSideAWithDenom represents the cosmos coin side of a conversion with denomination. +type ConversionSideAWithDenom struct { + // The amount of the cosmos coin (0 decimals). + Amount Uint `protobuf:"bytes,1,opt,name=amount,proto3,customtype=Uint" json:"amount"` + // The denomination of the cosmos coin. + Denom string `protobuf:"bytes,2,opt,name=denom,proto3" json:"denom,omitempty"` +} + +func (m *ConversionSideAWithDenom) Reset() { *m = ConversionSideAWithDenom{} } +func (m *ConversionSideAWithDenom) String() string { return proto.CompactTextString(m) } +func (*ConversionSideAWithDenom) ProtoMessage() {} +func (*ConversionSideAWithDenom) Descriptor() ([]byte, []int) { + return fileDescriptor_1bee0c48f49dbe62, []int{2} +} +func (m *ConversionSideAWithDenom) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ConversionSideAWithDenom) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ConversionSideAWithDenom.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 *ConversionSideAWithDenom) XXX_Merge(src proto.Message) { + xxx_messageInfo_ConversionSideAWithDenom.Merge(m, src) +} +func (m *ConversionSideAWithDenom) XXX_Size() int { + return m.Size() +} +func (m *ConversionSideAWithDenom) XXX_DiscardUnknown() { + xxx_messageInfo_ConversionSideAWithDenom.DiscardUnknown(m) +} + +var xxx_messageInfo_ConversionSideAWithDenom proto.InternalMessageInfo + +func (m *ConversionSideAWithDenom) GetDenom() string { + if m != nil { + return m.Denom + } + return "" +} + +// ConversionWithoutDenom defines a bidirectional conversion between a cosmos coin amount (without denom) and token balances. +// The denom is stored at the base level (e.g., in AliasPath or CosmosCoinWrapperPath). +type ConversionWithoutDenom struct { + // Side A: The cosmos coin amount side of the conversion (amount only, denom stored separately). + SideA *ConversionSideA `protobuf:"bytes,1,opt,name=sideA,proto3" json:"sideA,omitempty"` + // Side B: The token balances side of the conversion. + SideB []*Balance `protobuf:"bytes,2,rep,name=sideB,proto3" json:"sideB,omitempty"` +} + +func (m *ConversionWithoutDenom) Reset() { *m = ConversionWithoutDenom{} } +func (m *ConversionWithoutDenom) String() string { return proto.CompactTextString(m) } +func (*ConversionWithoutDenom) ProtoMessage() {} +func (*ConversionWithoutDenom) Descriptor() ([]byte, []int) { + return fileDescriptor_1bee0c48f49dbe62, []int{3} +} +func (m *ConversionWithoutDenom) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ConversionWithoutDenom) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ConversionWithoutDenom.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 *ConversionWithoutDenom) XXX_Merge(src proto.Message) { + xxx_messageInfo_ConversionWithoutDenom.Merge(m, src) +} +func (m *ConversionWithoutDenom) XXX_Size() int { + return m.Size() +} +func (m *ConversionWithoutDenom) XXX_DiscardUnknown() { + xxx_messageInfo_ConversionWithoutDenom.DiscardUnknown(m) +} + +var xxx_messageInfo_ConversionWithoutDenom proto.InternalMessageInfo + +func (m *ConversionWithoutDenom) GetSideA() *ConversionSideA { + if m != nil { + return m.SideA + } + return nil +} + +func (m *ConversionWithoutDenom) GetSideB() []*Balance { + if m != nil { + return m.SideB + } + return nil +} + +// ConversionSideA represents the cosmos coin amount side of a conversion without denomination. +type ConversionSideA struct { + // The amount of the cosmos coin (0 decimals). + Amount Uint `protobuf:"bytes,1,opt,name=amount,proto3,customtype=Uint" json:"amount"` +} + +func (m *ConversionSideA) Reset() { *m = ConversionSideA{} } +func (m *ConversionSideA) String() string { return proto.CompactTextString(m) } +func (*ConversionSideA) ProtoMessage() {} +func (*ConversionSideA) Descriptor() ([]byte, []int) { + return fileDescriptor_1bee0c48f49dbe62, []int{4} +} +func (m *ConversionSideA) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ConversionSideA) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ConversionSideA.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 *ConversionSideA) XXX_Merge(src proto.Message) { + xxx_messageInfo_ConversionSideA.Merge(m, src) +} +func (m *ConversionSideA) XXX_Size() int { + return m.Size() +} +func (m *ConversionSideA) XXX_DiscardUnknown() { + xxx_messageInfo_ConversionSideA.DiscardUnknown(m) +} + +var xxx_messageInfo_ConversionSideA proto.InternalMessageInfo + +type CosmosCoinWrapperPath struct { + // The BitBadges address associated with this wrapper path. Used for routing and identifying the wrapper. + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + // The denomination (denom) to be used for the wrapped coin or the alias denom. + Denom string `protobuf:"bytes,2,opt,name=denom,proto3" json:"denom,omitempty"` + // The conversion between cosmos coin and token balances. + Conversion *ConversionWithoutDenom `protobuf:"bytes,3,opt,name=conversion,proto3" json:"conversion,omitempty"` + // The symbol for the wrapped coin (e.g., "BADGE", "NFT"). Used for display purposes. Note that this may not be the default. + Symbol string `protobuf:"bytes,4,opt,name=symbol,proto3" json:"symbol,omitempty"` + // Denomination units for the wrapped coin. Defines how the coin can be displayed with different + // decimal places and symbols (e.g., base unit, display unit). You can specify which is the default display unit (base level or one of these). + DenomUnits []*DenomUnit `protobuf:"bytes,5,rep,name=denomUnits,proto3" json:"denomUnits,omitempty"` + // If true, allows this wrapper path to be used with any valid token ID in the collection via an {id} placeholder. + AllowOverrideWithAnyValidToken bool `protobuf:"varint,6,opt,name=allowOverrideWithAnyValidToken,proto3" json:"allowOverrideWithAnyValidToken,omitempty"` + // The metadata for this wrapper path. + Metadata *PathMetadata `protobuf:"bytes,7,opt,name=metadata,proto3" json:"metadata,omitempty"` +} + +func (m *CosmosCoinWrapperPath) Reset() { *m = CosmosCoinWrapperPath{} } +func (m *CosmosCoinWrapperPath) String() string { return proto.CompactTextString(m) } +func (*CosmosCoinWrapperPath) ProtoMessage() {} +func (*CosmosCoinWrapperPath) Descriptor() ([]byte, []int) { + return fileDescriptor_1bee0c48f49dbe62, []int{5} +} +func (m *CosmosCoinWrapperPath) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CosmosCoinWrapperPath) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CosmosCoinWrapperPath.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 *CosmosCoinWrapperPath) XXX_Merge(src proto.Message) { + xxx_messageInfo_CosmosCoinWrapperPath.Merge(m, src) +} +func (m *CosmosCoinWrapperPath) XXX_Size() int { + return m.Size() +} +func (m *CosmosCoinWrapperPath) XXX_DiscardUnknown() { + xxx_messageInfo_CosmosCoinWrapperPath.DiscardUnknown(m) +} + +var xxx_messageInfo_CosmosCoinWrapperPath proto.InternalMessageInfo + +func (m *CosmosCoinWrapperPath) GetAddress() string { + if m != nil { + return m.Address + } + return "" +} + +func (m *CosmosCoinWrapperPath) GetDenom() string { + if m != nil { + return m.Denom + } + return "" +} + +func (m *CosmosCoinWrapperPath) GetConversion() *ConversionWithoutDenom { + if m != nil { + return m.Conversion + } + return nil +} + +func (m *CosmosCoinWrapperPath) GetSymbol() string { + if m != nil { + return m.Symbol + } + return "" +} + +func (m *CosmosCoinWrapperPath) GetDenomUnits() []*DenomUnit { + if m != nil { + return m.DenomUnits + } + return nil +} + +func (m *CosmosCoinWrapperPath) GetAllowOverrideWithAnyValidToken() bool { + if m != nil { + return m.AllowOverrideWithAnyValidToken + } + return false +} + +func (m *CosmosCoinWrapperPath) GetMetadata() *PathMetadata { + if m != nil { + return m.Metadata + } + return nil +} + +type AliasPath struct { + // The denomination (denom) to be used for the alias. + Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` + // The conversion between cosmos coin and token balances. + Conversion *ConversionWithoutDenom `protobuf:"bytes,2,opt,name=conversion,proto3" json:"conversion,omitempty"` + // The symbol for the alias (e.g., "BADGE", "NFT"). Used for display purposes. Note that this may not be the default. + Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` + // Denomination units for the alias. Defines how the coin can be displayed with different decimal places and symbols. + DenomUnits []*DenomUnit `protobuf:"bytes,4,rep,name=denomUnits,proto3" json:"denomUnits,omitempty"` + // The metadata for this alias path. + Metadata *PathMetadata `protobuf:"bytes,5,opt,name=metadata,proto3" json:"metadata,omitempty"` +} + +func (m *AliasPath) Reset() { *m = AliasPath{} } +func (m *AliasPath) String() string { return proto.CompactTextString(m) } +func (*AliasPath) ProtoMessage() {} +func (*AliasPath) Descriptor() ([]byte, []int) { + return fileDescriptor_1bee0c48f49dbe62, []int{6} +} +func (m *AliasPath) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AliasPath) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AliasPath.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 *AliasPath) XXX_Merge(src proto.Message) { + xxx_messageInfo_AliasPath.Merge(m, src) +} +func (m *AliasPath) XXX_Size() int { + return m.Size() +} +func (m *AliasPath) XXX_DiscardUnknown() { + xxx_messageInfo_AliasPath.DiscardUnknown(m) +} + +var xxx_messageInfo_AliasPath proto.InternalMessageInfo + +func (m *AliasPath) GetDenom() string { + if m != nil { + return m.Denom + } + return "" +} + +func (m *AliasPath) GetConversion() *ConversionWithoutDenom { + if m != nil { + return m.Conversion + } + return nil +} + +func (m *AliasPath) GetSymbol() string { + if m != nil { + return m.Symbol + } + return "" +} + +func (m *AliasPath) GetDenomUnits() []*DenomUnit { + if m != nil { + return m.DenomUnits + } + return nil +} + +func (m *AliasPath) GetMetadata() *PathMetadata { + if m != nil { + return m.Metadata + } + return nil +} + +type CosmosCoinBackedPath struct { + // The address associated with this backed path. Used for routing and escrowing IBC tokens. + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` + // The conversion between IBC cosmos coin and token balances. + Conversion *Conversion `protobuf:"bytes,2,opt,name=conversion,proto3" json:"conversion,omitempty"` +} + +func (m *CosmosCoinBackedPath) Reset() { *m = CosmosCoinBackedPath{} } +func (m *CosmosCoinBackedPath) String() string { return proto.CompactTextString(m) } +func (*CosmosCoinBackedPath) ProtoMessage() {} +func (*CosmosCoinBackedPath) Descriptor() ([]byte, []int) { + return fileDescriptor_1bee0c48f49dbe62, []int{7} +} +func (m *CosmosCoinBackedPath) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CosmosCoinBackedPath) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CosmosCoinBackedPath.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 *CosmosCoinBackedPath) XXX_Merge(src proto.Message) { + xxx_messageInfo_CosmosCoinBackedPath.Merge(m, src) +} +func (m *CosmosCoinBackedPath) XXX_Size() int { + return m.Size() +} +func (m *CosmosCoinBackedPath) XXX_DiscardUnknown() { + xxx_messageInfo_CosmosCoinBackedPath.DiscardUnknown(m) +} + +var xxx_messageInfo_CosmosCoinBackedPath proto.InternalMessageInfo + +func (m *CosmosCoinBackedPath) GetAddress() string { + if m != nil { + return m.Address + } + return "" +} + +func (m *CosmosCoinBackedPath) GetConversion() *Conversion { + if m != nil { + return m.Conversion + } + return nil +} + +type DenomUnit struct { + // The number of decimal places for this unit. Defines the precision of the unit. + Decimals Uint `protobuf:"bytes,1,opt,name=decimals,proto3,customtype=Uint" json:"decimals"` + // The symbol for this unit (e.g., "BADGE", "nBADGE"). Used for display purposes. + Symbol string `protobuf:"bytes,2,opt,name=symbol,proto3" json:"symbol,omitempty"` + // If true, this is the default display unit. Only one unit should be marked as the default display unit. + // This unit will be used by default when displaying the coin amount. If none are marked default, we use the base level. + IsDefaultDisplay bool `protobuf:"varint,3,opt,name=isDefaultDisplay,proto3" json:"isDefaultDisplay,omitempty"` + // The metadata for this denomination unit. + Metadata *PathMetadata `protobuf:"bytes,4,opt,name=metadata,proto3" json:"metadata,omitempty"` +} + +func (m *DenomUnit) Reset() { *m = DenomUnit{} } +func (m *DenomUnit) String() string { return proto.CompactTextString(m) } +func (*DenomUnit) ProtoMessage() {} +func (*DenomUnit) Descriptor() ([]byte, []int) { + return fileDescriptor_1bee0c48f49dbe62, []int{8} +} +func (m *DenomUnit) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *DenomUnit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_DenomUnit.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 *DenomUnit) XXX_Merge(src proto.Message) { + xxx_messageInfo_DenomUnit.Merge(m, src) +} +func (m *DenomUnit) XXX_Size() int { + return m.Size() +} +func (m *DenomUnit) XXX_DiscardUnknown() { + xxx_messageInfo_DenomUnit.DiscardUnknown(m) +} + +var xxx_messageInfo_DenomUnit proto.InternalMessageInfo + +func (m *DenomUnit) GetSymbol() string { + if m != nil { + return m.Symbol + } + return "" +} + +func (m *DenomUnit) GetIsDefaultDisplay() bool { + if m != nil { + return m.IsDefaultDisplay + } + return false +} + +func (m *DenomUnit) GetMetadata() *PathMetadata { + if m != nil { + return m.Metadata + } + return nil +} + +// CollectionInvariants defines the invariants that apply to a collection. +type CollectionInvariants struct { + // If true, all ownership times must be full ranges [{ start: 1, end: GoMaxUInt64 }]. + // This prevents time-based restrictions on token ownership. + NoCustomOwnershipTimes bool `protobuf:"varint,1,opt,name=noCustomOwnershipTimes,proto3" json:"noCustomOwnershipTimes,omitempty"` + // Maximum supply per token ID. Checked against Total address balances after transfers complete. + // A value of 0 means no limit (unlimited). + MaxSupplyPerId Uint `protobuf:"bytes,2,opt,name=maxSupplyPerId,proto3,customtype=Uint" json:"maxSupplyPerId"` + // The IBC backed (sdk.coin) path for the collection. Only one path is allowed. + CosmosCoinBackedPath *CosmosCoinBackedPath `protobuf:"bytes,3,opt,name=cosmosCoinBackedPath,proto3" json:"cosmosCoinBackedPath,omitempty"` + // If true, disallows any collection approvals that have overridesFromOutgoingApprovals or overridesToIncomingApprovals set to true. + // This prevents forceful transfers that bypass user-level approvals. + // This only applies to transfers where the from address does not equal "Mint". + NoForcefulPostMintTransfers bool `protobuf:"varint,4,opt,name=noForcefulPostMintTransfers,proto3" json:"noForcefulPostMintTransfers,omitempty"` + // If true, disallows pool creation with this collection's assets. + // When true, any attempt to create a pool with tokenization assets from this collection will fail. + DisablePoolCreation bool `protobuf:"varint,5,opt,name=disablePoolCreation,proto3" json:"disablePoolCreation,omitempty"` + // EVM query invariants that must pass after all transfers complete. + // These are checked once per message after all balance updates, with access to ALL recipient addresses. + // Placeholders: $sender, $recipients (comma-separated), $initiator, $collectionId, $recipient + EvmQueryChallenges []*EVMQueryChallenge `protobuf:"bytes,6,rep,name=evmQueryChallenges,proto3" json:"evmQueryChallenges,omitempty"` +} + +func (m *CollectionInvariants) Reset() { *m = CollectionInvariants{} } +func (m *CollectionInvariants) String() string { return proto.CompactTextString(m) } +func (*CollectionInvariants) ProtoMessage() {} +func (*CollectionInvariants) Descriptor() ([]byte, []int) { + return fileDescriptor_1bee0c48f49dbe62, []int{9} +} +func (m *CollectionInvariants) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CollectionInvariants) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CollectionInvariants.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 *CollectionInvariants) XXX_Merge(src proto.Message) { + xxx_messageInfo_CollectionInvariants.Merge(m, src) +} +func (m *CollectionInvariants) XXX_Size() int { + return m.Size() +} +func (m *CollectionInvariants) XXX_DiscardUnknown() { + xxx_messageInfo_CollectionInvariants.DiscardUnknown(m) +} + +var xxx_messageInfo_CollectionInvariants proto.InternalMessageInfo + +func (m *CollectionInvariants) GetNoCustomOwnershipTimes() bool { + if m != nil { + return m.NoCustomOwnershipTimes + } + return false +} + +func (m *CollectionInvariants) GetCosmosCoinBackedPath() *CosmosCoinBackedPath { + if m != nil { + return m.CosmosCoinBackedPath + } + return nil +} + +func (m *CollectionInvariants) GetNoForcefulPostMintTransfers() bool { + if m != nil { + return m.NoForcefulPostMintTransfers + } + return false +} + +func (m *CollectionInvariants) GetDisablePoolCreation() bool { + if m != nil { + return m.DisablePoolCreation + } + return false +} + +func (m *CollectionInvariants) GetEvmQueryChallenges() []*EVMQueryChallenge { + if m != nil { + return m.EvmQueryChallenges + } + return nil +} + +// CollectionStats tracks aggregated statistics for a collection. +type CollectionStats struct { + HolderCount Uint `protobuf:"bytes,1,opt,name=holderCount,proto3,customtype=Uint" json:"holderCount"` + // Tracks circulating supply as Balance[] for proper range handling + Balances []*Balance `protobuf:"bytes,2,rep,name=balances,proto3" json:"balances,omitempty"` +} + +func (m *CollectionStats) Reset() { *m = CollectionStats{} } +func (m *CollectionStats) String() string { return proto.CompactTextString(m) } +func (*CollectionStats) ProtoMessage() {} +func (*CollectionStats) Descriptor() ([]byte, []int) { + return fileDescriptor_1bee0c48f49dbe62, []int{10} +} +func (m *CollectionStats) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CollectionStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CollectionStats.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 *CollectionStats) XXX_Merge(src proto.Message) { + xxx_messageInfo_CollectionStats.Merge(m, src) +} +func (m *CollectionStats) XXX_Size() int { + return m.Size() +} +func (m *CollectionStats) XXX_DiscardUnknown() { + xxx_messageInfo_CollectionStats.DiscardUnknown(m) +} + +var xxx_messageInfo_CollectionStats proto.InternalMessageInfo + +func (m *CollectionStats) GetBalances() []*Balance { + if m != nil { + return m.Balances + } + return nil +} + +func init() { + proto.RegisterType((*TokenCollection)(nil), "tokenization.v29.TokenCollection") + proto.RegisterType((*Conversion)(nil), "tokenization.v29.Conversion") + proto.RegisterType((*ConversionSideAWithDenom)(nil), "tokenization.v29.ConversionSideAWithDenom") + proto.RegisterType((*ConversionWithoutDenom)(nil), "tokenization.v29.ConversionWithoutDenom") + proto.RegisterType((*ConversionSideA)(nil), "tokenization.v29.ConversionSideA") + proto.RegisterType((*CosmosCoinWrapperPath)(nil), "tokenization.v29.CosmosCoinWrapperPath") + proto.RegisterType((*AliasPath)(nil), "tokenization.v29.AliasPath") + proto.RegisterType((*CosmosCoinBackedPath)(nil), "tokenization.v29.CosmosCoinBackedPath") + proto.RegisterType((*DenomUnit)(nil), "tokenization.v29.DenomUnit") + proto.RegisterType((*CollectionInvariants)(nil), "tokenization.v29.CollectionInvariants") + proto.RegisterType((*CollectionStats)(nil), "tokenization.v29.CollectionStats") +} + +func init() { + proto.RegisterFile("tokenization/v29/collections.proto", fileDescriptor_1bee0c48f49dbe62) +} + +var fileDescriptor_1bee0c48f49dbe62 = []byte{ + // 1150 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xcb, 0x6e, 0x1b, 0x37, + 0x17, 0xf6, 0x58, 0x96, 0x2d, 0x1d, 0x27, 0x71, 0x7e, 0xc6, 0x31, 0x26, 0x17, 0xc8, 0x8a, 0xfe, + 0x20, 0x55, 0x83, 0x42, 0x0a, 0xdc, 0x4b, 0x90, 0x36, 0x8b, 0x48, 0x72, 0x8c, 0x1a, 0xa8, 0x11, + 0x77, 0x7c, 0x09, 0x10, 0xa0, 0x30, 0xa8, 0x19, 0x5a, 0x22, 0x32, 0x43, 0x0a, 0x24, 0x25, 0x5b, + 0xdd, 0x14, 0xe8, 0x13, 0xf4, 0x35, 0xfa, 0x00, 0x7d, 0x87, 0x2c, 0x83, 0xae, 0x8a, 0x2e, 0x82, + 0xc2, 0xde, 0xf5, 0x19, 0xba, 0x28, 0x86, 0x73, 0x95, 0x67, 0x24, 0xd7, 0x45, 0x77, 0x43, 0xf2, + 0x3b, 0xdf, 0x9c, 0xef, 0xe3, 0xe1, 0x21, 0xa1, 0xa6, 0xf8, 0x5b, 0xc2, 0xe8, 0xf7, 0x58, 0x51, + 0xce, 0x9a, 0xa3, 0x8d, 0x67, 0x4d, 0x9b, 0xbb, 0x2e, 0xb1, 0xfd, 0xa1, 0x6c, 0x0c, 0x04, 0x57, + 0x1c, 0xdd, 0x4c, 0x63, 0x1a, 0xa3, 0x8d, 0x67, 0x77, 0xef, 0xf4, 0x38, 0xef, 0xb9, 0xa4, 0xa9, + 0xd7, 0xbb, 0xc3, 0xe3, 0x26, 0x66, 0xe3, 0x00, 0x7c, 0xb7, 0x9a, 0x21, 0x54, 0x02, 0x33, 0x79, + 0x4c, 0x44, 0x48, 0x77, 0x77, 0x3d, 0x83, 0xe8, 0x62, 0x17, 0x33, 0x9b, 0x44, 0x80, 0x6c, 0x4e, + 0x03, 0x22, 0x3c, 0x2a, 0x65, 0x92, 0x53, 0x0e, 0x89, 0x47, 0x14, 0x76, 0xb0, 0xc2, 0x53, 0xf3, + 0xc0, 0x83, 0x81, 0xe0, 0x23, 0xec, 0x46, 0x14, 0x1f, 0x67, 0x10, 0x43, 0x49, 0xc4, 0x51, 0x98, + 0xcc, 0x91, 0x54, 0x5c, 0x90, 0x10, 0xfa, 0x20, 0xeb, 0x52, 0x1f, 0xbb, 0x2e, 0x61, 0xbd, 0x38, + 0xe9, 0xd5, 0x1e, 0xef, 0x71, 0xfd, 0xd9, 0xf4, 0xbf, 0x82, 0xd9, 0xda, 0xaf, 0x4b, 0xb0, 0xb2, + 0xef, 0xc7, 0x76, 0x62, 0x57, 0xd1, 0x13, 0xb8, 0x96, 0x78, 0xbc, 0xed, 0x98, 0x46, 0xd5, 0xa8, + 0x97, 0xdb, 0xd7, 0xde, 0x7d, 0x58, 0x9f, 0xfb, 0xfd, 0xc3, 0xfa, 0xc2, 0x01, 0x65, 0xca, 0x9a, + 0x40, 0xa0, 0x7d, 0x40, 0xc9, 0x78, 0x27, 0xd4, 0x69, 0xce, 0x57, 0x8d, 0xfa, 0xf2, 0xc6, 0xc3, + 0xc6, 0xc5, 0xdd, 0x69, 0x74, 0x32, 0x58, 0x2b, 0x27, 0x1e, 0xbd, 0x84, 0xeb, 0x3a, 0x34, 0x26, + 0x2c, 0x54, 0x0b, 0xf5, 0xe5, 0x8d, 0xf5, 0x2c, 0xe1, 0x7e, 0x1a, 0x66, 0x4d, 0x46, 0xa1, 0x0a, + 0x80, 0x3d, 0x94, 0x8a, 0x7b, 0x9b, 0x3e, 0xc7, 0x82, 0x2f, 0xc6, 0x4a, 0xcd, 0x20, 0x13, 0x96, + 0x3c, 0xcc, 0x70, 0x8f, 0x08, 0xb3, 0xa8, 0x17, 0xa3, 0x21, 0xfa, 0x0e, 0x6e, 0x27, 0x69, 0xed, + 0x26, 0x5b, 0x6c, 0x2e, 0x6a, 0x65, 0x1f, 0xcd, 0x52, 0x96, 0x82, 0x5b, 0xf9, 0x2c, 0xe8, 0x10, + 0x6e, 0x25, 0x0b, 0xad, 0x68, 0xf3, 0xcd, 0x25, 0xad, 0x72, 0xa6, 0x6d, 0x11, 0xd8, 0xca, 0x23, + 0x40, 0xf7, 0xa1, 0x2c, 0x15, 0x66, 0x0e, 0x16, 0x8e, 0x34, 0x4b, 0xd5, 0x42, 0xbd, 0x6c, 0x25, + 0x13, 0xbe, 0x1d, 0x54, 0xb6, 0x84, 0xdd, 0xa7, 0x23, 0xe2, 0x98, 0xe5, 0xaa, 0x51, 0x2f, 0x59, + 0xa9, 0x19, 0xf4, 0x0d, 0xac, 0x38, 0xe4, 0x18, 0x0f, 0x5d, 0xd5, 0x0e, 0xab, 0xde, 0x04, 0x2d, + 0xb7, 0x96, 0xcd, 0xe8, 0x40, 0x12, 0x11, 0xa2, 0xf6, 0xfc, 0x6a, 0xb4, 0x2e, 0x86, 0xfa, 0xb9, + 0xd8, 0x82, 0x60, 0x45, 0x9c, 0xf6, 0xd8, 0x5c, 0xd6, 0xf6, 0x26, 0x13, 0xa8, 0x05, 0xd7, 0x47, + 0xd8, 0xa5, 0x8e, 0xde, 0xbf, 0x6d, 0x47, 0x9a, 0xd7, 0xb4, 0xf6, 0x7b, 0x39, 0x7f, 0xf2, 0x8b, + 0x0e, 0xb3, 0x1e, 0xb1, 0x26, 0x23, 0xd0, 0x27, 0xf0, 0x3f, 0x8f, 0x32, 0xf5, 0x52, 0xda, 0x82, + 0x9f, 0xb4, 0x1c, 0x47, 0x10, 0x29, 0xcd, 0xeb, 0xfa, 0x47, 0xd9, 0x05, 0x74, 0x04, 0x6b, 0x36, + 0x97, 0x1e, 0x97, 0x1d, 0x4e, 0xd9, 0x6b, 0x81, 0x07, 0x03, 0x22, 0x76, 0xb1, 0xea, 0x4b, 0xf3, + 0x86, 0xfe, 0x73, 0xee, 0x96, 0xe6, 0xe0, 0xad, 0x29, 0x34, 0x68, 0x0b, 0x80, 0xb2, 0x11, 0x16, + 0x14, 0x33, 0x25, 0xcd, 0x15, 0x6d, 0xdc, 0xa3, 0x59, 0x5b, 0xb9, 0x1d, 0xa3, 0xad, 0x54, 0x24, + 0xfa, 0x0a, 0x00, 0xbb, 0x14, 0xcb, 0x20, 0xb9, 0x9b, 0xd3, 0x6c, 0x69, 0x45, 0x18, 0x2b, 0x05, + 0xaf, 0xfd, 0x00, 0xd0, 0xe1, 0x6c, 0x44, 0x84, 0x5f, 0x67, 0xe8, 0x05, 0x14, 0x25, 0x75, 0x48, + 0x4b, 0x9f, 0xe3, 0xe5, 0x8d, 0xc7, 0x79, 0xd9, 0x44, 0xe0, 0x3d, 0x1f, 0xf8, 0x9a, 0xaa, 0xfe, + 0x26, 0x61, 0xdc, 0xb3, 0x82, 0x40, 0xd4, 0x0c, 0x18, 0xda, 0xe6, 0xbc, 0xce, 0xe3, 0x4e, 0x96, + 0x21, 0xdc, 0xef, 0x20, 0xa0, 0x5d, 0x3b, 0x04, 0x73, 0x1a, 0x27, 0x7a, 0x08, 0x8b, 0xd8, 0xe3, + 0x43, 0xa6, 0x72, 0xfb, 0x4a, 0xb8, 0x86, 0x56, 0xa1, 0xe8, 0xf8, 0x70, 0xdd, 0x44, 0xca, 0x56, + 0x30, 0xa8, 0xfd, 0x68, 0xc0, 0x5a, 0x42, 0xec, 0x73, 0xf2, 0xa1, 0x0a, 0x68, 0x9f, 0x4e, 0xaa, + 0x7c, 0x70, 0xa9, 0xca, 0x7f, 0x2d, 0xee, 0x29, 0xac, 0x5c, 0xa0, 0xfa, 0x67, 0x9a, 0x6a, 0x7f, + 0xce, 0xc3, 0xed, 0xdc, 0x6a, 0xf2, 0x5b, 0x10, 0x0e, 0x4b, 0xd7, 0x08, 0x5a, 0x50, 0x38, 0xcc, + 0xf7, 0x01, 0x7d, 0x0d, 0x60, 0xc7, 0x29, 0x98, 0x05, 0xad, 0xb8, 0x3e, 0x4b, 0x71, 0xda, 0x2a, + 0x2b, 0x15, 0x8b, 0xd6, 0x60, 0x51, 0x8e, 0xbd, 0x2e, 0x77, 0xc3, 0xc6, 0x18, 0x8e, 0xfc, 0xfa, + 0xd3, 0xbf, 0x3a, 0x60, 0x54, 0x49, 0xb3, 0x38, 0xad, 0xfe, 0x36, 0x23, 0x8c, 0x95, 0x82, 0xa3, + 0x2d, 0xa8, 0x60, 0xd7, 0xe5, 0x27, 0xaf, 0x46, 0x44, 0x08, 0xea, 0x10, 0xff, 0xef, 0x2d, 0x36, + 0x3e, 0x8c, 0x0f, 0xae, 0x6e, 0xa0, 0x25, 0xeb, 0x12, 0x14, 0xfa, 0x12, 0x4a, 0xd1, 0xa5, 0x69, + 0x2e, 0x69, 0x91, 0x95, 0x6c, 0x0a, 0xbe, 0x81, 0x71, 0xeb, 0x8f, 0xf1, 0xb5, 0xbf, 0x0c, 0x28, + 0xc7, 0xa7, 0x23, 0xb1, 0xd1, 0x98, 0x6e, 0xe3, 0xfc, 0x7f, 0x62, 0x63, 0x61, 0x86, 0x8d, 0x0b, + 0x57, 0xb3, 0x31, 0x2d, 0xbf, 0x78, 0x45, 0xf9, 0x0c, 0x56, 0x93, 0x52, 0x6b, 0x63, 0xfb, 0x2d, + 0x71, 0x2e, 0xa9, 0xb4, 0xe7, 0x39, 0x66, 0xdc, 0x9f, 0x65, 0x46, 0xda, 0x80, 0xda, 0x2f, 0x06, + 0x94, 0x63, 0x15, 0xa8, 0x0e, 0x25, 0x87, 0xd8, 0xd4, 0xf3, 0xaf, 0xb3, 0xbc, 0x13, 0x11, 0xaf, + 0xa6, 0x8c, 0x9b, 0x9f, 0x30, 0xee, 0x31, 0xdc, 0xa4, 0x72, 0x33, 0xb8, 0x4c, 0x36, 0xa9, 0x1c, + 0xb8, 0x78, 0xac, 0xad, 0x2d, 0x59, 0x99, 0xf9, 0x09, 0x9f, 0x16, 0xae, 0xe8, 0xd3, 0xcf, 0x05, + 0xdf, 0xa8, 0x6c, 0x33, 0x46, 0x5f, 0xc0, 0x1a, 0xe3, 0x1d, 0xfd, 0x4a, 0x78, 0x75, 0xc2, 0x88, + 0x90, 0x7d, 0x3a, 0xd8, 0xa7, 0x1e, 0x09, 0x04, 0x95, 0xac, 0x29, 0xab, 0xe8, 0x33, 0xb8, 0xe1, + 0xe1, 0xd3, 0xbd, 0xe1, 0x60, 0xe0, 0x8e, 0x77, 0x89, 0xd8, 0x76, 0x02, 0x61, 0x17, 0x0c, 0xb8, + 0x80, 0x41, 0x6f, 0x60, 0xd5, 0xce, 0xd9, 0xae, 0xf0, 0x68, 0x3f, 0x9a, 0x75, 0x2b, 0x25, 0x68, + 0x2b, 0x97, 0x03, 0xbd, 0x80, 0x7b, 0x8c, 0x6f, 0x71, 0x61, 0x93, 0xe3, 0xa1, 0xbb, 0xcb, 0xa5, + 0xda, 0xa1, 0x4c, 0xed, 0x47, 0x6f, 0x5e, 0xed, 0x58, 0xc9, 0x9a, 0x05, 0x41, 0x4f, 0xe0, 0x96, + 0x43, 0x25, 0xee, 0xba, 0x64, 0x97, 0x73, 0xb7, 0xe3, 0x5f, 0xdf, 0x7e, 0x8d, 0x14, 0x75, 0x64, + 0xde, 0x12, 0xda, 0x03, 0x44, 0x46, 0xde, 0xb7, 0x43, 0x22, 0xc6, 0x9d, 0xf8, 0x21, 0x6a, 0x2e, + 0xea, 0xfa, 0xff, 0x7f, 0x56, 0xcd, 0xcb, 0xc3, 0x9d, 0x49, 0xac, 0x95, 0x13, 0x5e, 0x3b, 0xf5, + 0x1b, 0x6f, 0xb4, 0x55, 0x7b, 0x0a, 0x2b, 0x89, 0x1a, 0xb0, 0xdc, 0xe7, 0xae, 0x43, 0x44, 0x67, + 0x6a, 0xf7, 0x4d, 0x03, 0xd0, 0xe7, 0x50, 0x8a, 0xde, 0xf2, 0x97, 0xf7, 0xfb, 0x18, 0xda, 0x3e, + 0x7c, 0x77, 0x56, 0x31, 0xde, 0x9f, 0x55, 0x8c, 0x3f, 0xce, 0x2a, 0xc6, 0x4f, 0xe7, 0x95, 0xb9, + 0xf7, 0xe7, 0x95, 0xb9, 0xdf, 0xce, 0x2b, 0x73, 0x6f, 0x9e, 0xf7, 0xa8, 0xea, 0x0f, 0xbb, 0x0d, + 0x9b, 0x7b, 0xcd, 0x2e, 0x55, 0x5d, 0xec, 0xf4, 0x88, 0x4c, 0xbe, 0xec, 0x3e, 0xa6, 0xac, 0x79, + 0xda, 0x9c, 0x78, 0x9e, 0xab, 0xf1, 0x80, 0x48, 0xff, 0x91, 0xde, 0x5d, 0xd4, 0x8f, 0xf0, 0x4f, + 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x45, 0xd6, 0x7a, 0xd1, 0xe5, 0x0c, 0x00, 0x00, +} + +func (m *TokenCollection) 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 *TokenCollection) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *TokenCollection) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.AliasPaths) > 0 { + for iNdEx := len(m.AliasPaths) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.AliasPaths[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCollections(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x82 + } + } + if m.Invariants != nil { + { + size, err := m.Invariants.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCollections(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x7a + } + if len(m.CosmosCoinWrapperPaths) > 0 { + for iNdEx := len(m.CosmosCoinWrapperPaths) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CosmosCoinWrapperPaths[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCollections(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x72 + } + } + if len(m.MintEscrowAddress) > 0 { + i -= len(m.MintEscrowAddress) + copy(dAtA[i:], m.MintEscrowAddress) + i = encodeVarintCollections(dAtA, i, uint64(len(m.MintEscrowAddress))) + i-- + dAtA[i] = 0x6a + } + if len(m.ValidTokenIds) > 0 { + for iNdEx := len(m.ValidTokenIds) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.ValidTokenIds[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCollections(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x62 + } + } + if len(m.CreatedBy) > 0 { + i -= len(m.CreatedBy) + copy(dAtA[i:], m.CreatedBy) + i = encodeVarintCollections(dAtA, i, uint64(len(m.CreatedBy))) + i-- + dAtA[i] = 0x5a + } + if m.DefaultBalances != nil { + { + size, err := m.DefaultBalances.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCollections(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x52 + } + if m.IsArchived { + i-- + if m.IsArchived { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x48 + } + if len(m.Standards) > 0 { + for iNdEx := len(m.Standards) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Standards[iNdEx]) + copy(dAtA[i:], m.Standards[iNdEx]) + i = encodeVarintCollections(dAtA, i, uint64(len(m.Standards[iNdEx]))) + i-- + dAtA[i] = 0x42 + } + } + if len(m.CollectionApprovals) > 0 { + for iNdEx := len(m.CollectionApprovals) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CollectionApprovals[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCollections(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + } + if m.CollectionPermissions != nil { + { + size, err := m.CollectionPermissions.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCollections(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + if len(m.Manager) > 0 { + i -= len(m.Manager) + copy(dAtA[i:], m.Manager) + i = encodeVarintCollections(dAtA, i, uint64(len(m.Manager))) + i-- + dAtA[i] = 0x2a + } + if len(m.CustomData) > 0 { + i -= len(m.CustomData) + copy(dAtA[i:], m.CustomData) + i = encodeVarintCollections(dAtA, i, uint64(len(m.CustomData))) + i-- + dAtA[i] = 0x22 + } + if len(m.TokenMetadata) > 0 { + for iNdEx := len(m.TokenMetadata) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TokenMetadata[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCollections(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if m.CollectionMetadata != nil { + { + size, err := m.CollectionMetadata.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCollections(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + { + size := m.CollectionId.Size() + i -= size + if _, err := m.CollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintCollections(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *Conversion) 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 *Conversion) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Conversion) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.SideB) > 0 { + for iNdEx := len(m.SideB) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.SideB[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCollections(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if m.SideA != nil { + { + size, err := m.SideA.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCollections(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ConversionSideAWithDenom) 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 *ConversionSideAWithDenom) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ConversionSideAWithDenom) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintCollections(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0x12 + } + { + size := m.Amount.Size() + i -= size + if _, err := m.Amount.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintCollections(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *ConversionWithoutDenom) 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 *ConversionWithoutDenom) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ConversionWithoutDenom) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.SideB) > 0 { + for iNdEx := len(m.SideB) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.SideB[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCollections(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if m.SideA != nil { + { + size, err := m.SideA.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCollections(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ConversionSideA) 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 *ConversionSideA) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ConversionSideA) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.Amount.Size() + i -= size + if _, err := m.Amount.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintCollections(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *CosmosCoinWrapperPath) 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 *CosmosCoinWrapperPath) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CosmosCoinWrapperPath) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Metadata != nil { + { + size, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCollections(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + if m.AllowOverrideWithAnyValidToken { + i-- + if m.AllowOverrideWithAnyValidToken { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x30 + } + if len(m.DenomUnits) > 0 { + for iNdEx := len(m.DenomUnits) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.DenomUnits[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCollections(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + } + if len(m.Symbol) > 0 { + i -= len(m.Symbol) + copy(dAtA[i:], m.Symbol) + i = encodeVarintCollections(dAtA, i, uint64(len(m.Symbol))) + i-- + dAtA[i] = 0x22 + } + if m.Conversion != nil { + { + size, err := m.Conversion.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCollections(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintCollections(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0x12 + } + if len(m.Address) > 0 { + i -= len(m.Address) + copy(dAtA[i:], m.Address) + i = encodeVarintCollections(dAtA, i, uint64(len(m.Address))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *AliasPath) 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 *AliasPath) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *AliasPath) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Metadata != nil { + { + size, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCollections(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + if len(m.DenomUnits) > 0 { + for iNdEx := len(m.DenomUnits) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.DenomUnits[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCollections(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.Symbol) > 0 { + i -= len(m.Symbol) + copy(dAtA[i:], m.Symbol) + i = encodeVarintCollections(dAtA, i, uint64(len(m.Symbol))) + i-- + dAtA[i] = 0x1a + } + if m.Conversion != nil { + { + size, err := m.Conversion.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCollections(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintCollections(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *CosmosCoinBackedPath) 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 *CosmosCoinBackedPath) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CosmosCoinBackedPath) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Conversion != nil { + { + size, err := m.Conversion.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCollections(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.Address) > 0 { + i -= len(m.Address) + copy(dAtA[i:], m.Address) + i = encodeVarintCollections(dAtA, i, uint64(len(m.Address))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *DenomUnit) 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 *DenomUnit) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *DenomUnit) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Metadata != nil { + { + size, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCollections(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if m.IsDefaultDisplay { + i-- + if m.IsDefaultDisplay { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } + if len(m.Symbol) > 0 { + i -= len(m.Symbol) + copy(dAtA[i:], m.Symbol) + i = encodeVarintCollections(dAtA, i, uint64(len(m.Symbol))) + i-- + dAtA[i] = 0x12 + } + { + size := m.Decimals.Size() + i -= size + if _, err := m.Decimals.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintCollections(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *CollectionInvariants) 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 *CollectionInvariants) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CollectionInvariants) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.EvmQueryChallenges) > 0 { + for iNdEx := len(m.EvmQueryChallenges) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.EvmQueryChallenges[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCollections(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + } + if m.DisablePoolCreation { + i-- + if m.DisablePoolCreation { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x28 + } + if m.NoForcefulPostMintTransfers { + i-- + if m.NoForcefulPostMintTransfers { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x20 + } + if m.CosmosCoinBackedPath != nil { + { + size, err := m.CosmosCoinBackedPath.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCollections(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + { + size := m.MaxSupplyPerId.Size() + i -= size + if _, err := m.MaxSupplyPerId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintCollections(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if m.NoCustomOwnershipTimes { + i-- + if m.NoCustomOwnershipTimes { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *CollectionStats) 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 *CollectionStats) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CollectionStats) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Balances) > 0 { + for iNdEx := len(m.Balances) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Balances[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintCollections(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + { + size := m.HolderCount.Size() + i -= size + if _, err := m.HolderCount.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintCollections(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func encodeVarintCollections(dAtA []byte, offset int, v uint64) int { + offset -= sovCollections(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *TokenCollection) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.CollectionId.Size() + n += 1 + l + sovCollections(uint64(l)) + if m.CollectionMetadata != nil { + l = m.CollectionMetadata.Size() + n += 1 + l + sovCollections(uint64(l)) + } + if len(m.TokenMetadata) > 0 { + for _, e := range m.TokenMetadata { + l = e.Size() + n += 1 + l + sovCollections(uint64(l)) + } + } + l = len(m.CustomData) + if l > 0 { + n += 1 + l + sovCollections(uint64(l)) + } + l = len(m.Manager) + if l > 0 { + n += 1 + l + sovCollections(uint64(l)) + } + if m.CollectionPermissions != nil { + l = m.CollectionPermissions.Size() + n += 1 + l + sovCollections(uint64(l)) + } + if len(m.CollectionApprovals) > 0 { + for _, e := range m.CollectionApprovals { + l = e.Size() + n += 1 + l + sovCollections(uint64(l)) + } + } + if len(m.Standards) > 0 { + for _, s := range m.Standards { + l = len(s) + n += 1 + l + sovCollections(uint64(l)) + } + } + if m.IsArchived { + n += 2 + } + if m.DefaultBalances != nil { + l = m.DefaultBalances.Size() + n += 1 + l + sovCollections(uint64(l)) + } + l = len(m.CreatedBy) + if l > 0 { + n += 1 + l + sovCollections(uint64(l)) + } + if len(m.ValidTokenIds) > 0 { + for _, e := range m.ValidTokenIds { + l = e.Size() + n += 1 + l + sovCollections(uint64(l)) + } + } + l = len(m.MintEscrowAddress) + if l > 0 { + n += 1 + l + sovCollections(uint64(l)) + } + if len(m.CosmosCoinWrapperPaths) > 0 { + for _, e := range m.CosmosCoinWrapperPaths { + l = e.Size() + n += 1 + l + sovCollections(uint64(l)) + } + } + if m.Invariants != nil { + l = m.Invariants.Size() + n += 1 + l + sovCollections(uint64(l)) + } + if len(m.AliasPaths) > 0 { + for _, e := range m.AliasPaths { + l = e.Size() + n += 2 + l + sovCollections(uint64(l)) + } + } + return n +} + +func (m *Conversion) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.SideA != nil { + l = m.SideA.Size() + n += 1 + l + sovCollections(uint64(l)) + } + if len(m.SideB) > 0 { + for _, e := range m.SideB { + l = e.Size() + n += 1 + l + sovCollections(uint64(l)) + } + } + return n +} + +func (m *ConversionSideAWithDenom) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Amount.Size() + n += 1 + l + sovCollections(uint64(l)) + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovCollections(uint64(l)) + } + return n +} + +func (m *ConversionWithoutDenom) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.SideA != nil { + l = m.SideA.Size() + n += 1 + l + sovCollections(uint64(l)) + } + if len(m.SideB) > 0 { + for _, e := range m.SideB { + l = e.Size() + n += 1 + l + sovCollections(uint64(l)) + } + } + return n +} + +func (m *ConversionSideA) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Amount.Size() + n += 1 + l + sovCollections(uint64(l)) + return n +} + +func (m *CosmosCoinWrapperPath) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Address) + if l > 0 { + n += 1 + l + sovCollections(uint64(l)) + } + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovCollections(uint64(l)) + } + if m.Conversion != nil { + l = m.Conversion.Size() + n += 1 + l + sovCollections(uint64(l)) + } + l = len(m.Symbol) + if l > 0 { + n += 1 + l + sovCollections(uint64(l)) + } + if len(m.DenomUnits) > 0 { + for _, e := range m.DenomUnits { + l = e.Size() + n += 1 + l + sovCollections(uint64(l)) + } + } + if m.AllowOverrideWithAnyValidToken { + n += 2 + } + if m.Metadata != nil { + l = m.Metadata.Size() + n += 1 + l + sovCollections(uint64(l)) + } + return n +} + +func (m *AliasPath) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovCollections(uint64(l)) + } + if m.Conversion != nil { + l = m.Conversion.Size() + n += 1 + l + sovCollections(uint64(l)) + } + l = len(m.Symbol) + if l > 0 { + n += 1 + l + sovCollections(uint64(l)) + } + if len(m.DenomUnits) > 0 { + for _, e := range m.DenomUnits { + l = e.Size() + n += 1 + l + sovCollections(uint64(l)) + } + } + if m.Metadata != nil { + l = m.Metadata.Size() + n += 1 + l + sovCollections(uint64(l)) + } + return n +} + +func (m *CosmosCoinBackedPath) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Address) + if l > 0 { + n += 1 + l + sovCollections(uint64(l)) + } + if m.Conversion != nil { + l = m.Conversion.Size() + n += 1 + l + sovCollections(uint64(l)) + } + return n +} + +func (m *DenomUnit) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.Decimals.Size() + n += 1 + l + sovCollections(uint64(l)) + l = len(m.Symbol) + if l > 0 { + n += 1 + l + sovCollections(uint64(l)) + } + if m.IsDefaultDisplay { + n += 2 + } + if m.Metadata != nil { + l = m.Metadata.Size() + n += 1 + l + sovCollections(uint64(l)) + } + return n +} + +func (m *CollectionInvariants) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.NoCustomOwnershipTimes { + n += 2 + } + l = m.MaxSupplyPerId.Size() + n += 1 + l + sovCollections(uint64(l)) + if m.CosmosCoinBackedPath != nil { + l = m.CosmosCoinBackedPath.Size() + n += 1 + l + sovCollections(uint64(l)) + } + if m.NoForcefulPostMintTransfers { + n += 2 + } + if m.DisablePoolCreation { + n += 2 + } + if len(m.EvmQueryChallenges) > 0 { + for _, e := range m.EvmQueryChallenges { + l = e.Size() + n += 1 + l + sovCollections(uint64(l)) + } + } + return n +} + +func (m *CollectionStats) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.HolderCount.Size() + n += 1 + l + sovCollections(uint64(l)) + if len(m.Balances) > 0 { + for _, e := range m.Balances { + l = e.Size() + n += 1 + l + sovCollections(uint64(l)) + } + } + return n +} + +func sovCollections(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozCollections(x uint64) (n int) { + return sovCollections(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *TokenCollection) 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 ErrIntOverflowCollections + } + 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: TokenCollection: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TokenCollection: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + 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 ErrInvalidLengthCollections + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.CollectionId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionMetadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCollections + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.CollectionMetadata == nil { + m.CollectionMetadata = &CollectionMetadata{} + } + if err := m.CollectionMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TokenMetadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCollections + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TokenMetadata = append(m.TokenMetadata, &TokenMetadata{}) + if err := m.TokenMetadata[len(m.TokenMetadata)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CustomData", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + 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 ErrInvalidLengthCollections + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CustomData = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Manager", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + 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 ErrInvalidLengthCollections + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Manager = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionPermissions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCollections + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.CollectionPermissions == nil { + m.CollectionPermissions = &CollectionPermissions{} + } + if err := m.CollectionPermissions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionApprovals", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCollections + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CollectionApprovals = append(m.CollectionApprovals, &CollectionApproval{}) + if err := m.CollectionApprovals[len(m.CollectionApprovals)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Standards", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + 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 ErrInvalidLengthCollections + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Standards = append(m.Standards, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IsArchived", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.IsArchived = bool(v != 0) + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DefaultBalances", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCollections + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.DefaultBalances == nil { + m.DefaultBalances = &UserBalanceStore{} + } + if err := m.DefaultBalances.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CreatedBy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + 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 ErrInvalidLengthCollections + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CreatedBy = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValidTokenIds", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCollections + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ValidTokenIds = append(m.ValidTokenIds, &UintRange{}) + if err := m.ValidTokenIds[len(m.ValidTokenIds)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MintEscrowAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + 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 ErrInvalidLengthCollections + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MintEscrowAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CosmosCoinWrapperPaths", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCollections + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CosmosCoinWrapperPaths = append(m.CosmosCoinWrapperPaths, &CosmosCoinWrapperPath{}) + if err := m.CosmosCoinWrapperPaths[len(m.CosmosCoinWrapperPaths)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 15: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Invariants", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCollections + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Invariants == nil { + m.Invariants = &CollectionInvariants{} + } + if err := m.Invariants.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 16: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AliasPaths", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCollections + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AliasPaths = append(m.AliasPaths, &AliasPath{}) + if err := m.AliasPaths[len(m.AliasPaths)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCollections(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCollections + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Conversion) 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 ErrIntOverflowCollections + } + 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: Conversion: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Conversion: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SideA", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCollections + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SideA == nil { + m.SideA = &ConversionSideAWithDenom{} + } + if err := m.SideA.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SideB", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCollections + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SideB = append(m.SideB, &Balance{}) + if err := m.SideB[len(m.SideB)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCollections(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCollections + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ConversionSideAWithDenom) 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 ErrIntOverflowCollections + } + 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: ConversionSideAWithDenom: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ConversionSideAWithDenom: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + 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 ErrInvalidLengthCollections + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + 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 ErrInvalidLengthCollections + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCollections(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCollections + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ConversionWithoutDenom) 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 ErrIntOverflowCollections + } + 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: ConversionWithoutDenom: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ConversionWithoutDenom: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SideA", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCollections + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.SideA == nil { + m.SideA = &ConversionSideA{} + } + if err := m.SideA.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SideB", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCollections + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SideB = append(m.SideB, &Balance{}) + if err := m.SideB[len(m.SideB)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCollections(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCollections + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ConversionSideA) 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 ErrIntOverflowCollections + } + 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: ConversionSideA: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ConversionSideA: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Amount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + 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 ErrInvalidLengthCollections + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Amount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCollections(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCollections + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CosmosCoinWrapperPath) 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 ErrIntOverflowCollections + } + 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: CosmosCoinWrapperPath: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CosmosCoinWrapperPath: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + 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 ErrInvalidLengthCollections + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + 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 ErrInvalidLengthCollections + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Conversion", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCollections + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Conversion == nil { + m.Conversion = &ConversionWithoutDenom{} + } + if err := m.Conversion.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Symbol", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + 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 ErrInvalidLengthCollections + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Symbol = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DenomUnits", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCollections + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DenomUnits = append(m.DenomUnits, &DenomUnit{}) + if err := m.DenomUnits[len(m.DenomUnits)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AllowOverrideWithAnyValidToken", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.AllowOverrideWithAnyValidToken = bool(v != 0) + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCollections + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Metadata == nil { + m.Metadata = &PathMetadata{} + } + if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCollections(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCollections + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *AliasPath) 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 ErrIntOverflowCollections + } + 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: AliasPath: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AliasPath: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denom", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + 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 ErrInvalidLengthCollections + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Conversion", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCollections + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Conversion == nil { + m.Conversion = &ConversionWithoutDenom{} + } + if err := m.Conversion.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Symbol", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + 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 ErrInvalidLengthCollections + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Symbol = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DenomUnits", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCollections + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DenomUnits = append(m.DenomUnits, &DenomUnit{}) + if err := m.DenomUnits[len(m.DenomUnits)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCollections + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Metadata == nil { + m.Metadata = &PathMetadata{} + } + if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCollections(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCollections + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CosmosCoinBackedPath) 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 ErrIntOverflowCollections + } + 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: CosmosCoinBackedPath: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CosmosCoinBackedPath: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + 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 ErrInvalidLengthCollections + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Conversion", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCollections + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Conversion == nil { + m.Conversion = &Conversion{} + } + if err := m.Conversion.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCollections(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCollections + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DenomUnit) 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 ErrIntOverflowCollections + } + 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: DenomUnit: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DenomUnit: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Decimals", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + 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 ErrInvalidLengthCollections + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Decimals.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Symbol", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + 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 ErrInvalidLengthCollections + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Symbol = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IsDefaultDisplay", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.IsDefaultDisplay = bool(v != 0) + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCollections + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Metadata == nil { + m.Metadata = &PathMetadata{} + } + if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCollections(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCollections + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CollectionInvariants) 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 ErrIntOverflowCollections + } + 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: CollectionInvariants: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CollectionInvariants: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NoCustomOwnershipTimes", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.NoCustomOwnershipTimes = bool(v != 0) + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxSupplyPerId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + 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 ErrInvalidLengthCollections + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.MaxSupplyPerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CosmosCoinBackedPath", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCollections + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.CosmosCoinBackedPath == nil { + m.CosmosCoinBackedPath = &CosmosCoinBackedPath{} + } + if err := m.CosmosCoinBackedPath.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NoForcefulPostMintTransfers", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.NoForcefulPostMintTransfers = bool(v != 0) + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DisablePoolCreation", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.DisablePoolCreation = bool(v != 0) + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EvmQueryChallenges", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCollections + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.EvmQueryChallenges = append(m.EvmQueryChallenges, &EVMQueryChallenge{}) + if err := m.EvmQueryChallenges[len(m.EvmQueryChallenges)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCollections(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCollections + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CollectionStats) 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 ErrIntOverflowCollections + } + 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: CollectionStats: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CollectionStats: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field HolderCount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + 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 ErrInvalidLengthCollections + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.HolderCount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Balances", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollections + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthCollections + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthCollections + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Balances = append(m.Balances, &Balance{}) + if err := m.Balances[len(m.Balances)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipCollections(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthCollections + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipCollections(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, ErrIntOverflowCollections + } + 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, ErrIntOverflowCollections + } + 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, ErrIntOverflowCollections + } + 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, ErrInvalidLengthCollections + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupCollections + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthCollections + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthCollections = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowCollections = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupCollections = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/tokenization/types/v29/dynamic_stores.pb.go b/x/tokenization/types/v29/dynamic_stores.pb.go new file mode 100644 index 00000000..1731a5fb --- /dev/null +++ b/x/tokenization/types/v29/dynamic_stores.pb.go @@ -0,0 +1,833 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: tokenization/v29/dynamic_stores.proto + +package v29 + +import ( + fmt "fmt" + _ "github.com/cosmos/gogoproto/gogoproto" + 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 + +// A DynamicStore is a flexible storage object that can store arbitrary data. +// It is identified by a unique ID assigned by the blockchain, which is a uint64 that increments. +// Dynamic stores are created by users and can only be updated or deleted by their creator. +// They provide a way to store custom data on-chain with proper access control. +type DynamicStore struct { + // The unique identifier for this dynamic store. This is assigned by the blockchain. + StoreId Uint `protobuf:"bytes,1,opt,name=storeId,proto3,customtype=Uint" json:"storeId"` + // The address of the creator of this dynamic store. + CreatedBy string `protobuf:"bytes,2,opt,name=createdBy,proto3" json:"createdBy,omitempty"` + // The default value for uninitialized addresses (true/false). + DefaultValue bool `protobuf:"varint,3,opt,name=defaultValue,proto3" json:"defaultValue,omitempty"` + // Global kill switch state (defaults to true on creation, can be toggled via UpdateDynamicStore). + // When false, all approvals using this store via DynamicStoreChallenge will fail immediately. + GlobalEnabled bool `protobuf:"varint,4,opt,name=globalEnabled,proto3" json:"globalEnabled,omitempty"` + // URI for additional metadata or resources associated with this dynamic store. + Uri string `protobuf:"bytes,5,opt,name=uri,proto3" json:"uri,omitempty"` + // Custom data field for storing arbitrary data associated with this dynamic store. + CustomData string `protobuf:"bytes,6,opt,name=customData,proto3" json:"customData,omitempty"` +} + +func (m *DynamicStore) Reset() { *m = DynamicStore{} } +func (m *DynamicStore) String() string { return proto.CompactTextString(m) } +func (*DynamicStore) ProtoMessage() {} +func (*DynamicStore) Descriptor() ([]byte, []int) { + return fileDescriptor_859ff0dd33306846, []int{0} +} +func (m *DynamicStore) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *DynamicStore) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_DynamicStore.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 *DynamicStore) XXX_Merge(src proto.Message) { + xxx_messageInfo_DynamicStore.Merge(m, src) +} +func (m *DynamicStore) XXX_Size() int { + return m.Size() +} +func (m *DynamicStore) XXX_DiscardUnknown() { + xxx_messageInfo_DynamicStore.DiscardUnknown(m) +} + +var xxx_messageInfo_DynamicStore proto.InternalMessageInfo + +func (m *DynamicStore) GetCreatedBy() string { + if m != nil { + return m.CreatedBy + } + return "" +} + +func (m *DynamicStore) GetDefaultValue() bool { + if m != nil { + return m.DefaultValue + } + return false +} + +func (m *DynamicStore) GetGlobalEnabled() bool { + if m != nil { + return m.GlobalEnabled + } + return false +} + +func (m *DynamicStore) GetUri() string { + if m != nil { + return m.Uri + } + return "" +} + +func (m *DynamicStore) GetCustomData() string { + if m != nil { + return m.CustomData + } + return "" +} + +// A DynamicStoreValue stores a boolean value for a specific address in a dynamic store. +// This allows the creator to set true/false values per address that can be checked during approval. +type DynamicStoreValue struct { + // The unique identifier for this dynamic store. + StoreId Uint `protobuf:"bytes,1,opt,name=storeId,proto3,customtype=Uint" json:"storeId"` + // The address for which this value is stored. + Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` + // The boolean value (true/false). + Value bool `protobuf:"varint,3,opt,name=value,proto3" json:"value,omitempty"` +} + +func (m *DynamicStoreValue) Reset() { *m = DynamicStoreValue{} } +func (m *DynamicStoreValue) String() string { return proto.CompactTextString(m) } +func (*DynamicStoreValue) ProtoMessage() {} +func (*DynamicStoreValue) Descriptor() ([]byte, []int) { + return fileDescriptor_859ff0dd33306846, []int{1} +} +func (m *DynamicStoreValue) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *DynamicStoreValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_DynamicStoreValue.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 *DynamicStoreValue) XXX_Merge(src proto.Message) { + xxx_messageInfo_DynamicStoreValue.Merge(m, src) +} +func (m *DynamicStoreValue) XXX_Size() int { + return m.Size() +} +func (m *DynamicStoreValue) XXX_DiscardUnknown() { + xxx_messageInfo_DynamicStoreValue.DiscardUnknown(m) +} + +var xxx_messageInfo_DynamicStoreValue proto.InternalMessageInfo + +func (m *DynamicStoreValue) GetAddress() string { + if m != nil { + return m.Address + } + return "" +} + +func (m *DynamicStoreValue) GetValue() bool { + if m != nil { + return m.Value + } + return false +} + +func init() { + proto.RegisterType((*DynamicStore)(nil), "tokenization.v29.DynamicStore") + proto.RegisterType((*DynamicStoreValue)(nil), "tokenization.v29.DynamicStoreValue") +} + +func init() { + proto.RegisterFile("tokenization/v29/dynamic_stores.proto", fileDescriptor_859ff0dd33306846) +} + +var fileDescriptor_859ff0dd33306846 = []byte{ + // 328 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x51, 0x3f, 0x6b, 0x3a, 0x41, + 0x14, 0xbc, 0xfd, 0xf9, 0xef, 0xe7, 0x62, 0xc0, 0x2c, 0x16, 0x4b, 0x08, 0xab, 0x48, 0x12, 0xac, + 0x3c, 0x30, 0x95, 0x90, 0x4a, 0x4c, 0x91, 0xd6, 0x10, 0x8b, 0x34, 0x61, 0xef, 0x76, 0x73, 0x2e, + 0x9e, 0xb7, 0x72, 0xfb, 0x4e, 0x62, 0x3e, 0x45, 0x3e, 0x96, 0xa5, 0x65, 0x48, 0x21, 0x41, 0xbf, + 0x48, 0xb8, 0xbd, 0x88, 0x77, 0x5d, 0xba, 0x79, 0x33, 0xf3, 0xde, 0x63, 0x18, 0x7c, 0x0d, 0x7a, + 0x2e, 0x23, 0xf5, 0xce, 0x41, 0xe9, 0xc8, 0x5d, 0x0d, 0x86, 0xae, 0x58, 0x47, 0x7c, 0xa1, 0xfc, + 0x17, 0x03, 0x3a, 0x96, 0xa6, 0xbf, 0x8c, 0x35, 0x68, 0xd2, 0xcc, 0xdb, 0xfa, 0xab, 0xc1, 0xf0, + 0xa2, 0x15, 0xe8, 0x40, 0x5b, 0xd1, 0x4d, 0x51, 0xe6, 0xeb, 0x6e, 0x11, 0x6e, 0x8c, 0xb3, 0x03, + 0x8f, 0xe9, 0x3e, 0xb9, 0xc1, 0x35, 0x7b, 0xe8, 0x41, 0x50, 0xd4, 0x41, 0xbd, 0xfa, 0xa8, 0xb1, + 0xd9, 0xb5, 0x9d, 0xaf, 0x5d, 0xbb, 0xfc, 0xa4, 0x22, 0x98, 0x1c, 0x45, 0x72, 0x89, 0xeb, 0x7e, + 0x2c, 0x39, 0x48, 0x31, 0x5a, 0xd3, 0x7f, 0xa9, 0x73, 0x72, 0x22, 0x48, 0x17, 0x37, 0x84, 0x7c, + 0xe5, 0x49, 0x08, 0x53, 0x1e, 0x26, 0x92, 0x96, 0x3a, 0xa8, 0xf7, 0x7f, 0x52, 0xe0, 0xc8, 0x15, + 0x3e, 0x0b, 0x42, 0xed, 0xf1, 0xf0, 0x3e, 0xe2, 0x5e, 0x28, 0x05, 0x2d, 0x5b, 0x53, 0x91, 0x24, + 0x4d, 0x5c, 0x4a, 0x62, 0x45, 0x2b, 0xf6, 0x43, 0x0a, 0x09, 0xc3, 0xd8, 0x4f, 0x0c, 0xe8, 0xc5, + 0x98, 0x03, 0xa7, 0x55, 0x2b, 0xe4, 0x98, 0xee, 0x1c, 0x9f, 0xe7, 0x13, 0x65, 0xcf, 0xfe, 0x1a, + 0x8b, 0xe2, 0x1a, 0x17, 0x22, 0x96, 0xc6, 0xfc, 0x86, 0x3a, 0x8e, 0xa4, 0x85, 0x2b, 0xab, 0x5c, + 0x96, 0x6c, 0x18, 0x4d, 0x37, 0x7b, 0x86, 0xb6, 0x7b, 0x86, 0xbe, 0xf7, 0x0c, 0x7d, 0x1c, 0x98, + 0xb3, 0x3d, 0x30, 0xe7, 0xf3, 0xc0, 0x9c, 0xe7, 0xbb, 0x40, 0xc1, 0x2c, 0xf1, 0xfa, 0xbe, 0x5e, + 0xb8, 0x9e, 0x02, 0x8f, 0x8b, 0x40, 0x9a, 0x13, 0xf2, 0x67, 0x5c, 0x45, 0xee, 0x9b, 0x5b, 0xa8, + 0x13, 0xd6, 0x4b, 0x69, 0xd2, 0x52, 0xbd, 0xaa, 0xad, 0xe7, 0xf6, 0x27, 0x00, 0x00, 0xff, 0xff, + 0xd0, 0x5b, 0xd5, 0x1a, 0xef, 0x01, 0x00, 0x00, +} + +func (m *DynamicStore) 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 *DynamicStore) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *DynamicStore) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.CustomData) > 0 { + i -= len(m.CustomData) + copy(dAtA[i:], m.CustomData) + i = encodeVarintDynamicStores(dAtA, i, uint64(len(m.CustomData))) + i-- + dAtA[i] = 0x32 + } + if len(m.Uri) > 0 { + i -= len(m.Uri) + copy(dAtA[i:], m.Uri) + i = encodeVarintDynamicStores(dAtA, i, uint64(len(m.Uri))) + i-- + dAtA[i] = 0x2a + } + if m.GlobalEnabled { + i-- + if m.GlobalEnabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x20 + } + if m.DefaultValue { + i-- + if m.DefaultValue { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } + if len(m.CreatedBy) > 0 { + i -= len(m.CreatedBy) + copy(dAtA[i:], m.CreatedBy) + i = encodeVarintDynamicStores(dAtA, i, uint64(len(m.CreatedBy))) + i-- + dAtA[i] = 0x12 + } + { + size := m.StoreId.Size() + i -= size + if _, err := m.StoreId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintDynamicStores(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *DynamicStoreValue) 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 *DynamicStoreValue) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *DynamicStoreValue) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Value { + i-- + if m.Value { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } + if len(m.Address) > 0 { + i -= len(m.Address) + copy(dAtA[i:], m.Address) + i = encodeVarintDynamicStores(dAtA, i, uint64(len(m.Address))) + i-- + dAtA[i] = 0x12 + } + { + size := m.StoreId.Size() + i -= size + if _, err := m.StoreId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintDynamicStores(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func encodeVarintDynamicStores(dAtA []byte, offset int, v uint64) int { + offset -= sovDynamicStores(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *DynamicStore) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.StoreId.Size() + n += 1 + l + sovDynamicStores(uint64(l)) + l = len(m.CreatedBy) + if l > 0 { + n += 1 + l + sovDynamicStores(uint64(l)) + } + if m.DefaultValue { + n += 2 + } + if m.GlobalEnabled { + n += 2 + } + l = len(m.Uri) + if l > 0 { + n += 1 + l + sovDynamicStores(uint64(l)) + } + l = len(m.CustomData) + if l > 0 { + n += 1 + l + sovDynamicStores(uint64(l)) + } + return n +} + +func (m *DynamicStoreValue) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.StoreId.Size() + n += 1 + l + sovDynamicStores(uint64(l)) + l = len(m.Address) + if l > 0 { + n += 1 + l + sovDynamicStores(uint64(l)) + } + if m.Value { + n += 2 + } + return n +} + +func sovDynamicStores(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozDynamicStores(x uint64) (n int) { + return sovDynamicStores(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *DynamicStore) 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 ErrIntOverflowDynamicStores + } + 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: DynamicStore: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DynamicStore: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StoreId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDynamicStores + } + 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 ErrInvalidLengthDynamicStores + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthDynamicStores + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.StoreId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CreatedBy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDynamicStores + } + 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 ErrInvalidLengthDynamicStores + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthDynamicStores + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CreatedBy = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DefaultValue", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDynamicStores + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.DefaultValue = bool(v != 0) + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field GlobalEnabled", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDynamicStores + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.GlobalEnabled = bool(v != 0) + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Uri", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDynamicStores + } + 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 ErrInvalidLengthDynamicStores + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthDynamicStores + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Uri = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CustomData", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDynamicStores + } + 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 ErrInvalidLengthDynamicStores + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthDynamicStores + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CustomData = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipDynamicStores(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthDynamicStores + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *DynamicStoreValue) 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 ErrIntOverflowDynamicStores + } + 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: DynamicStoreValue: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: DynamicStoreValue: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StoreId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDynamicStores + } + 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 ErrInvalidLengthDynamicStores + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthDynamicStores + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.StoreId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDynamicStores + } + 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 ErrInvalidLengthDynamicStores + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthDynamicStores + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowDynamicStores + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Value = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipDynamicStores(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthDynamicStores + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipDynamicStores(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, ErrIntOverflowDynamicStores + } + 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, ErrIntOverflowDynamicStores + } + 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, ErrIntOverflowDynamicStores + } + 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, ErrInvalidLengthDynamicStores + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupDynamicStores + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthDynamicStores + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthDynamicStores = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowDynamicStores = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupDynamicStores = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/tokenization/types/v29/genesis.pb.go b/x/tokenization/types/v29/genesis.pb.go new file mode 100644 index 00000000..d7a08c1b --- /dev/null +++ b/x/tokenization/types/v29/genesis.pb.go @@ -0,0 +1,1797 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: tokenization/v29/genesis.proto + +package v29 + +import ( + fmt "fmt" + _ "github.com/cosmos/gogoproto/gogoproto" + 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 + +// GenesisState defines the tokens module's genesis state. +type GenesisState struct { + Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` + PortId string `protobuf:"bytes,2,opt,name=port_id,json=portId,proto3" json:"port_id,omitempty"` + Collections []*TokenCollection `protobuf:"bytes,3,rep,name=collections,proto3" json:"collections,omitempty"` + NextCollectionId Uint `protobuf:"bytes,4,opt,name=nextCollectionId,proto3,customtype=Uint" json:"nextCollectionId"` + Balances []*UserBalanceStore `protobuf:"bytes,5,rep,name=balances,proto3" json:"balances,omitempty"` + BalanceStoreKeys []string `protobuf:"bytes,6,rep,name=balanceStoreKeys,proto3" json:"balanceStoreKeys,omitempty"` + ChallengeTrackers []Uint `protobuf:"bytes,7,rep,name=challengeTrackers,proto3,customtype=Uint" json:"challengeTrackers"` + ChallengeTrackerStoreKeys []string `protobuf:"bytes,8,rep,name=challengeTrackerStoreKeys,proto3" json:"challengeTrackerStoreKeys,omitempty"` + AddressLists []*AddressList `protobuf:"bytes,9,rep,name=addressLists,proto3" json:"addressLists,omitempty"` + ApprovalTrackers []*ApprovalTracker `protobuf:"bytes,10,rep,name=approvalTrackers,proto3" json:"approvalTrackers,omitempty"` + ApprovalTrackerStoreKeys []string `protobuf:"bytes,11,rep,name=approvalTrackerStoreKeys,proto3" json:"approvalTrackerStoreKeys,omitempty"` + ApprovalTrackerVersions []Uint `protobuf:"bytes,12,rep,name=approvalTrackerVersions,proto3,customtype=Uint" json:"approvalTrackerVersions"` + ApprovalTrackerVersionsStoreKeys []string `protobuf:"bytes,13,rep,name=approvalTrackerVersionsStoreKeys,proto3" json:"approvalTrackerVersionsStoreKeys,omitempty"` + DynamicStores []*DynamicStore `protobuf:"bytes,14,rep,name=dynamicStores,proto3" json:"dynamicStores,omitempty"` + NextDynamicStoreId Uint `protobuf:"bytes,15,opt,name=nextDynamicStoreId,proto3,customtype=Uint" json:"nextDynamicStoreId"` + DynamicStoreValues []*DynamicStoreValue `protobuf:"bytes,16,rep,name=dynamicStoreValues,proto3" json:"dynamicStoreValues,omitempty"` + EthSignatureTrackers []Uint `protobuf:"bytes,17,rep,name=ethSignatureTrackers,proto3,customtype=Uint" json:"ethSignatureTrackers"` + EthSignatureTrackerStoreKeys []string `protobuf:"bytes,18,rep,name=ethSignatureTrackerStoreKeys,proto3" json:"ethSignatureTrackerStoreKeys,omitempty"` + VotingTrackers []*VoteProof `protobuf:"bytes,19,rep,name=votingTrackers,proto3" json:"votingTrackers,omitempty"` + VotingTrackerStoreKeys []string `protobuf:"bytes,20,rep,name=votingTrackerStoreKeys,proto3" json:"votingTrackerStoreKeys,omitempty"` + CollectionStats []*CollectionStats `protobuf:"bytes,21,rep,name=collectionStats,proto3" json:"collectionStats,omitempty"` + CollectionStatsIds []Uint `protobuf:"bytes,22,rep,name=collectionStatsIds,proto3,customtype=Uint" json:"collectionStatsIds"` + VotingChallengeTrackers []*VotingChallengeTracker `protobuf:"bytes,23,rep,name=votingChallengeTrackers,proto3" json:"votingChallengeTrackers,omitempty"` + VotingChallengeTrackerStoreKeys []string `protobuf:"bytes,24,rep,name=votingChallengeTrackerStoreKeys,proto3" json:"votingChallengeTrackerStoreKeys,omitempty"` + NextAddressListCounter Uint `protobuf:"bytes,25,opt,name=nextAddressListCounter,proto3,customtype=Uint" json:"nextAddressListCounter"` + ReservedProtocolAddresses []string `protobuf:"bytes,26,rep,name=reservedProtocolAddresses,proto3" json:"reservedProtocolAddresses,omitempty"` +} + +func (m *GenesisState) Reset() { *m = GenesisState{} } +func (m *GenesisState) String() string { return proto.CompactTextString(m) } +func (*GenesisState) ProtoMessage() {} +func (*GenesisState) Descriptor() ([]byte, []int) { + return fileDescriptor_d952e2ff2bcf6c9a, []int{0} +} +func (m *GenesisState) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *GenesisState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_GenesisState.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 *GenesisState) XXX_Merge(src proto.Message) { + xxx_messageInfo_GenesisState.Merge(m, src) +} +func (m *GenesisState) XXX_Size() int { + return m.Size() +} +func (m *GenesisState) XXX_DiscardUnknown() { + xxx_messageInfo_GenesisState.DiscardUnknown(m) +} + +var xxx_messageInfo_GenesisState proto.InternalMessageInfo + +func (m *GenesisState) GetParams() Params { + if m != nil { + return m.Params + } + return Params{} +} + +func (m *GenesisState) GetPortId() string { + if m != nil { + return m.PortId + } + return "" +} + +func (m *GenesisState) GetCollections() []*TokenCollection { + if m != nil { + return m.Collections + } + return nil +} + +func (m *GenesisState) GetBalances() []*UserBalanceStore { + if m != nil { + return m.Balances + } + return nil +} + +func (m *GenesisState) GetBalanceStoreKeys() []string { + if m != nil { + return m.BalanceStoreKeys + } + return nil +} + +func (m *GenesisState) GetChallengeTrackerStoreKeys() []string { + if m != nil { + return m.ChallengeTrackerStoreKeys + } + return nil +} + +func (m *GenesisState) GetAddressLists() []*AddressList { + if m != nil { + return m.AddressLists + } + return nil +} + +func (m *GenesisState) GetApprovalTrackers() []*ApprovalTracker { + if m != nil { + return m.ApprovalTrackers + } + return nil +} + +func (m *GenesisState) GetApprovalTrackerStoreKeys() []string { + if m != nil { + return m.ApprovalTrackerStoreKeys + } + return nil +} + +func (m *GenesisState) GetApprovalTrackerVersionsStoreKeys() []string { + if m != nil { + return m.ApprovalTrackerVersionsStoreKeys + } + return nil +} + +func (m *GenesisState) GetDynamicStores() []*DynamicStore { + if m != nil { + return m.DynamicStores + } + return nil +} + +func (m *GenesisState) GetDynamicStoreValues() []*DynamicStoreValue { + if m != nil { + return m.DynamicStoreValues + } + return nil +} + +func (m *GenesisState) GetEthSignatureTrackerStoreKeys() []string { + if m != nil { + return m.EthSignatureTrackerStoreKeys + } + return nil +} + +func (m *GenesisState) GetVotingTrackers() []*VoteProof { + if m != nil { + return m.VotingTrackers + } + return nil +} + +func (m *GenesisState) GetVotingTrackerStoreKeys() []string { + if m != nil { + return m.VotingTrackerStoreKeys + } + return nil +} + +func (m *GenesisState) GetCollectionStats() []*CollectionStats { + if m != nil { + return m.CollectionStats + } + return nil +} + +func (m *GenesisState) GetVotingChallengeTrackers() []*VotingChallengeTracker { + if m != nil { + return m.VotingChallengeTrackers + } + return nil +} + +func (m *GenesisState) GetVotingChallengeTrackerStoreKeys() []string { + if m != nil { + return m.VotingChallengeTrackerStoreKeys + } + return nil +} + +func (m *GenesisState) GetReservedProtocolAddresses() []string { + if m != nil { + return m.ReservedProtocolAddresses + } + return nil +} + +func init() { + proto.RegisterType((*GenesisState)(nil), "tokenization.v29.GenesisState") +} + +func init() { proto.RegisterFile("tokenization/v29/genesis.proto", fileDescriptor_d952e2ff2bcf6c9a) } + +var fileDescriptor_d952e2ff2bcf6c9a = []byte{ + // 784 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x95, 0x51, 0x4f, 0xeb, 0x36, + 0x14, 0xc7, 0xdb, 0xc1, 0x0a, 0xb8, 0x05, 0x8a, 0xc7, 0xa8, 0xe9, 0x46, 0x5a, 0xd8, 0x26, 0x75, + 0x7b, 0x68, 0xa5, 0x4e, 0x42, 0x03, 0xa1, 0x69, 0xb4, 0x68, 0x5b, 0xc7, 0x26, 0xa1, 0x14, 0xfa, + 0xb0, 0x97, 0xca, 0x4d, 0x4c, 0x1a, 0x11, 0xe2, 0xca, 0x76, 0x2b, 0xb8, 0x9f, 0xe2, 0x7e, 0xa3, + 0xfb, 0xca, 0x23, 0x8f, 0x57, 0xf7, 0x01, 0x5d, 0xc1, 0x17, 0xb9, 0xb2, 0x9b, 0x36, 0x69, 0x9c, + 0xc0, 0x5b, 0x73, 0xce, 0xef, 0xf8, 0xfc, 0xfd, 0xf7, 0xa9, 0x0d, 0x0c, 0x41, 0x6f, 0x88, 0xef, + 0xbe, 0xc3, 0xc2, 0xa5, 0x7e, 0x63, 0xd2, 0x3c, 0x6a, 0x38, 0xc4, 0x27, 0xdc, 0xe5, 0xf5, 0x11, + 0xa3, 0x82, 0xc2, 0x62, 0x34, 0x5f, 0x9f, 0x34, 0x8f, 0xca, 0xdb, 0x0e, 0x75, 0xa8, 0x4a, 0x36, + 0xe4, 0xaf, 0x29, 0x57, 0xde, 0xd3, 0xd6, 0x19, 0x61, 0x86, 0x6f, 0x83, 0x65, 0xca, 0x07, 0x5a, + 0xda, 0xa2, 0x9e, 0x47, 0x2c, 0xf9, 0x39, 0x63, 0x2a, 0x1a, 0x33, 0xc0, 0x1e, 0xf6, 0x2d, 0x32, + 0x03, 0xaa, 0x1a, 0x20, 0x18, 0xf6, 0xf9, 0x35, 0x61, 0x33, 0xe2, 0x47, 0x8d, 0xc0, 0xb6, 0xcd, + 0x08, 0xe7, 0x7d, 0xcf, 0xe5, 0x62, 0x46, 0xfd, 0xa4, 0x51, 0xf6, 0xbd, 0x8f, 0x6f, 0x5d, 0xab, + 0xcf, 0x05, 0x65, 0xf3, 0x76, 0x3f, 0x6b, 0xd8, 0x98, 0x13, 0xd6, 0x0f, 0x44, 0x4d, 0xd9, 0x00, + 0xad, 0xe9, 0x7d, 0x47, 0x23, 0x46, 0x27, 0xd8, 0xeb, 0x0b, 0x86, 0xad, 0x1b, 0xd7, 0x77, 0x02, + 0x72, 0x5f, 0x37, 0x62, 0x88, 0x3d, 0x8f, 0xf8, 0xce, 0xac, 0xef, 0xc1, 0x87, 0x75, 0x50, 0xf8, + 0x6b, 0x7a, 0x08, 0x5d, 0x81, 0x05, 0x81, 0x87, 0x20, 0x37, 0x35, 0x13, 0x65, 0xab, 0xd9, 0x5a, + 0xbe, 0x89, 0xea, 0xf1, 0x43, 0xa9, 0x5f, 0xa8, 0x7c, 0x6b, 0xf9, 0xe1, 0xa9, 0x92, 0x31, 0x03, + 0x1a, 0x96, 0xc0, 0xca, 0x88, 0x32, 0xd1, 0x77, 0x6d, 0xf4, 0x55, 0x35, 0x5b, 0x5b, 0x33, 0x73, + 0xf2, 0xb3, 0x63, 0xc3, 0x36, 0xc8, 0x47, 0xec, 0x47, 0x4b, 0xd5, 0xa5, 0x5a, 0xbe, 0xb9, 0xaf, + 0xaf, 0x7a, 0x29, 0x03, 0xed, 0x39, 0x69, 0x46, 0xab, 0xe0, 0x6f, 0xa0, 0xe8, 0x93, 0x3b, 0x11, + 0xa6, 0x3b, 0x36, 0x5a, 0x96, 0x6d, 0x5a, 0x05, 0xa9, 0xe2, 0xd3, 0x53, 0x65, 0xf9, 0xca, 0xf5, + 0x85, 0xa9, 0x51, 0xf0, 0x77, 0xb0, 0x3a, 0x3b, 0x59, 0xf4, 0xb5, 0xea, 0x7d, 0xa0, 0xf7, 0xbe, + 0xe2, 0x84, 0xb5, 0xa6, 0x54, 0x57, 0x3a, 0x6d, 0xce, 0x6b, 0xe0, 0x2f, 0xa0, 0x38, 0x88, 0x64, + 0xce, 0xc9, 0x3d, 0x47, 0xb9, 0xea, 0x52, 0x6d, 0xcd, 0xd4, 0xe2, 0xf0, 0x18, 0x6c, 0xcd, 0x0d, + 0xbe, 0x94, 0x47, 0x41, 0x18, 0x47, 0x2b, 0x12, 0x8e, 0xc9, 0xd4, 0x31, 0x78, 0x02, 0x76, 0xe3, + 0xc1, 0xb0, 0xe1, 0xaa, 0x6a, 0x98, 0x0e, 0xc0, 0x53, 0x50, 0x08, 0x86, 0xef, 0x5f, 0x39, 0x7b, + 0x68, 0x4d, 0xed, 0x74, 0x4f, 0xdf, 0xe9, 0x69, 0x48, 0x99, 0x0b, 0x25, 0xf0, 0x3f, 0x50, 0x9c, + 0xcd, 0xd1, 0x5c, 0x3b, 0x48, 0x3b, 0xac, 0xd3, 0x45, 0xd2, 0xd4, 0x4a, 0xe1, 0x31, 0x40, 0xb1, + 0x58, 0xb8, 0x9d, 0xbc, 0xda, 0x4e, 0x6a, 0x1e, 0xfe, 0x09, 0x4a, 0xb1, 0x5c, 0x8f, 0x30, 0xae, + 0xc6, 0xa7, 0x90, 0xe0, 0x66, 0x1a, 0x0c, 0xff, 0x01, 0xd5, 0x94, 0x54, 0xa8, 0x65, 0x5d, 0x69, + 0x79, 0x93, 0x83, 0x67, 0x60, 0x3d, 0xf8, 0xe3, 0xaa, 0x18, 0x47, 0x1b, 0xca, 0x1b, 0x43, 0xf7, + 0xe6, 0x2c, 0x82, 0x99, 0x8b, 0x45, 0xf0, 0x04, 0x40, 0x39, 0xa1, 0x51, 0xa4, 0x63, 0xa3, 0xcd, + 0x84, 0x49, 0x4e, 0xe0, 0x60, 0x17, 0xc0, 0xe8, 0x72, 0x3d, 0xec, 0x8d, 0x09, 0x47, 0x45, 0x25, + 0xe4, 0x87, 0xd7, 0x85, 0x28, 0xd6, 0x4c, 0x28, 0x87, 0x7f, 0x80, 0x6d, 0x22, 0x86, 0x5d, 0xd7, + 0xf1, 0xb1, 0x18, 0xb3, 0x70, 0x6e, 0xb7, 0x12, 0x9c, 0x4e, 0x24, 0x61, 0x0b, 0x7c, 0x9f, 0x10, + 0x0f, 0x2d, 0x86, 0xca, 0xe2, 0x57, 0x19, 0xd8, 0x06, 0x1b, 0x13, 0x2a, 0x5c, 0xdf, 0x99, 0xf7, + 0xff, 0x46, 0x6d, 0xeb, 0x3b, 0x7d, 0x5b, 0x3d, 0x2a, 0xc8, 0x05, 0xa3, 0xf4, 0xda, 0x8c, 0x95, + 0xc0, 0x43, 0xb0, 0xb3, 0x10, 0x09, 0x25, 0x6c, 0x2b, 0x09, 0x29, 0x59, 0x78, 0x0e, 0x36, 0xc3, + 0xcb, 0x46, 0x5e, 0x83, 0x1c, 0x7d, 0x9b, 0x36, 0xf9, 0xed, 0x45, 0xd0, 0x8c, 0x57, 0xca, 0x23, + 0x8e, 0x85, 0x3a, 0x36, 0x47, 0x3b, 0x09, 0x6e, 0x26, 0x70, 0x70, 0x00, 0x4a, 0x53, 0x91, 0x6d, + 0xed, 0x22, 0x29, 0x29, 0x49, 0xb5, 0x44, 0x43, 0x12, 0x0a, 0xcc, 0xb4, 0x85, 0xe0, 0xdf, 0xa0, + 0x92, 0x9c, 0x0a, 0xfd, 0x42, 0xca, 0xaf, 0xb7, 0x30, 0x78, 0x06, 0x76, 0xe4, 0x98, 0x46, 0x2e, + 0x95, 0x36, 0x1d, 0xfb, 0x82, 0x30, 0xb4, 0x9b, 0x30, 0xd2, 0x29, 0xac, 0xbc, 0xfa, 0x18, 0xe1, + 0x84, 0x4d, 0x88, 0x7d, 0x21, 0x1f, 0x25, 0x8b, 0x7a, 0x01, 0x45, 0x38, 0x2a, 0x4f, 0xaf, 0xbe, + 0x54, 0xa0, 0xd5, 0x7b, 0x78, 0x36, 0xb2, 0x8f, 0xcf, 0x46, 0xf6, 0xf3, 0xb3, 0x91, 0x7d, 0xff, + 0x62, 0x64, 0x1e, 0x5f, 0x8c, 0xcc, 0xc7, 0x17, 0x23, 0xf3, 0xff, 0x89, 0xe3, 0x8a, 0xe1, 0x78, + 0x50, 0xb7, 0xe8, 0x6d, 0x63, 0xe0, 0x8a, 0x01, 0xb6, 0x1d, 0xc2, 0xc3, 0x5f, 0xd6, 0x10, 0xbb, + 0x7e, 0xe3, 0xae, 0xb1, 0xf0, 0x48, 0x8a, 0xfb, 0x11, 0xe1, 0xf2, 0xa9, 0x1c, 0xe4, 0xd4, 0x03, + 0xf9, 0xeb, 0x97, 0x00, 0x00, 0x00, 0xff, 0xff, 0xcf, 0xdc, 0xa9, 0xdb, 0xb5, 0x08, 0x00, 0x00, +} + +func (m *GenesisState) 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 *GenesisState) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ReservedProtocolAddresses) > 0 { + for iNdEx := len(m.ReservedProtocolAddresses) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.ReservedProtocolAddresses[iNdEx]) + copy(dAtA[i:], m.ReservedProtocolAddresses[iNdEx]) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.ReservedProtocolAddresses[iNdEx]))) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xd2 + } + } + { + size := m.NextAddressListCounter.Size() + i -= size + if _, err := m.NextAddressListCounter.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xca + if len(m.VotingChallengeTrackerStoreKeys) > 0 { + for iNdEx := len(m.VotingChallengeTrackerStoreKeys) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.VotingChallengeTrackerStoreKeys[iNdEx]) + copy(dAtA[i:], m.VotingChallengeTrackerStoreKeys[iNdEx]) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.VotingChallengeTrackerStoreKeys[iNdEx]))) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xc2 + } + } + if len(m.VotingChallengeTrackers) > 0 { + for iNdEx := len(m.VotingChallengeTrackers) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.VotingChallengeTrackers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xba + } + } + if len(m.CollectionStatsIds) > 0 { + for iNdEx := len(m.CollectionStatsIds) - 1; iNdEx >= 0; iNdEx-- { + { + size := m.CollectionStatsIds[iNdEx].Size() + i -= size + if _, err := m.CollectionStatsIds[iNdEx].MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xb2 + } + } + if len(m.CollectionStats) > 0 { + for iNdEx := len(m.CollectionStats) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CollectionStats[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xaa + } + } + if len(m.VotingTrackerStoreKeys) > 0 { + for iNdEx := len(m.VotingTrackerStoreKeys) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.VotingTrackerStoreKeys[iNdEx]) + copy(dAtA[i:], m.VotingTrackerStoreKeys[iNdEx]) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.VotingTrackerStoreKeys[iNdEx]))) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xa2 + } + } + if len(m.VotingTrackers) > 0 { + for iNdEx := len(m.VotingTrackers) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.VotingTrackers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x9a + } + } + if len(m.EthSignatureTrackerStoreKeys) > 0 { + for iNdEx := len(m.EthSignatureTrackerStoreKeys) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.EthSignatureTrackerStoreKeys[iNdEx]) + copy(dAtA[i:], m.EthSignatureTrackerStoreKeys[iNdEx]) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.EthSignatureTrackerStoreKeys[iNdEx]))) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x92 + } + } + if len(m.EthSignatureTrackers) > 0 { + for iNdEx := len(m.EthSignatureTrackers) - 1; iNdEx >= 0; iNdEx-- { + { + size := m.EthSignatureTrackers[iNdEx].Size() + i -= size + if _, err := m.EthSignatureTrackers[iNdEx].MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x8a + } + } + if len(m.DynamicStoreValues) > 0 { + for iNdEx := len(m.DynamicStoreValues) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.DynamicStoreValues[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x82 + } + } + { + size := m.NextDynamicStoreId.Size() + i -= size + if _, err := m.NextDynamicStoreId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x7a + if len(m.DynamicStores) > 0 { + for iNdEx := len(m.DynamicStores) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.DynamicStores[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x72 + } + } + if len(m.ApprovalTrackerVersionsStoreKeys) > 0 { + for iNdEx := len(m.ApprovalTrackerVersionsStoreKeys) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.ApprovalTrackerVersionsStoreKeys[iNdEx]) + copy(dAtA[i:], m.ApprovalTrackerVersionsStoreKeys[iNdEx]) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.ApprovalTrackerVersionsStoreKeys[iNdEx]))) + i-- + dAtA[i] = 0x6a + } + } + if len(m.ApprovalTrackerVersions) > 0 { + for iNdEx := len(m.ApprovalTrackerVersions) - 1; iNdEx >= 0; iNdEx-- { + { + size := m.ApprovalTrackerVersions[iNdEx].Size() + i -= size + if _, err := m.ApprovalTrackerVersions[iNdEx].MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x62 + } + } + if len(m.ApprovalTrackerStoreKeys) > 0 { + for iNdEx := len(m.ApprovalTrackerStoreKeys) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.ApprovalTrackerStoreKeys[iNdEx]) + copy(dAtA[i:], m.ApprovalTrackerStoreKeys[iNdEx]) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.ApprovalTrackerStoreKeys[iNdEx]))) + i-- + dAtA[i] = 0x5a + } + } + if len(m.ApprovalTrackers) > 0 { + for iNdEx := len(m.ApprovalTrackers) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.ApprovalTrackers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x52 + } + } + if len(m.AddressLists) > 0 { + for iNdEx := len(m.AddressLists) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.AddressLists[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x4a + } + } + if len(m.ChallengeTrackerStoreKeys) > 0 { + for iNdEx := len(m.ChallengeTrackerStoreKeys) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.ChallengeTrackerStoreKeys[iNdEx]) + copy(dAtA[i:], m.ChallengeTrackerStoreKeys[iNdEx]) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.ChallengeTrackerStoreKeys[iNdEx]))) + i-- + dAtA[i] = 0x42 + } + } + if len(m.ChallengeTrackers) > 0 { + for iNdEx := len(m.ChallengeTrackers) - 1; iNdEx >= 0; iNdEx-- { + { + size := m.ChallengeTrackers[iNdEx].Size() + i -= size + if _, err := m.ChallengeTrackers[iNdEx].MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + } + if len(m.BalanceStoreKeys) > 0 { + for iNdEx := len(m.BalanceStoreKeys) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.BalanceStoreKeys[iNdEx]) + copy(dAtA[i:], m.BalanceStoreKeys[iNdEx]) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.BalanceStoreKeys[iNdEx]))) + i-- + dAtA[i] = 0x32 + } + } + if len(m.Balances) > 0 { + for iNdEx := len(m.Balances) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Balances[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + } + { + size := m.NextCollectionId.Size() + i -= size + if _, err := m.NextCollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + if len(m.Collections) > 0 { + for iNdEx := len(m.Collections) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Collections[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.PortId) > 0 { + i -= len(m.PortId) + copy(dAtA[i:], m.PortId) + i = encodeVarintGenesis(dAtA, i, uint64(len(m.PortId))) + i-- + dAtA[i] = 0x12 + } + { + size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + 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)) + l = len(m.PortId) + if l > 0 { + n += 1 + l + sovGenesis(uint64(l)) + } + if len(m.Collections) > 0 { + for _, e := range m.Collections { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + l = m.NextCollectionId.Size() + n += 1 + l + sovGenesis(uint64(l)) + if len(m.Balances) > 0 { + for _, e := range m.Balances { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.BalanceStoreKeys) > 0 { + for _, s := range m.BalanceStoreKeys { + l = len(s) + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.ChallengeTrackers) > 0 { + for _, e := range m.ChallengeTrackers { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.ChallengeTrackerStoreKeys) > 0 { + for _, s := range m.ChallengeTrackerStoreKeys { + l = len(s) + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.AddressLists) > 0 { + for _, e := range m.AddressLists { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.ApprovalTrackers) > 0 { + for _, e := range m.ApprovalTrackers { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.ApprovalTrackerStoreKeys) > 0 { + for _, s := range m.ApprovalTrackerStoreKeys { + l = len(s) + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.ApprovalTrackerVersions) > 0 { + for _, e := range m.ApprovalTrackerVersions { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.ApprovalTrackerVersionsStoreKeys) > 0 { + for _, s := range m.ApprovalTrackerVersionsStoreKeys { + l = len(s) + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.DynamicStores) > 0 { + for _, e := range m.DynamicStores { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + l = m.NextDynamicStoreId.Size() + n += 1 + l + sovGenesis(uint64(l)) + if len(m.DynamicStoreValues) > 0 { + for _, e := range m.DynamicStoreValues { + l = e.Size() + n += 2 + l + sovGenesis(uint64(l)) + } + } + if len(m.EthSignatureTrackers) > 0 { + for _, e := range m.EthSignatureTrackers { + l = e.Size() + n += 2 + l + sovGenesis(uint64(l)) + } + } + if len(m.EthSignatureTrackerStoreKeys) > 0 { + for _, s := range m.EthSignatureTrackerStoreKeys { + l = len(s) + n += 2 + l + sovGenesis(uint64(l)) + } + } + if len(m.VotingTrackers) > 0 { + for _, e := range m.VotingTrackers { + l = e.Size() + n += 2 + l + sovGenesis(uint64(l)) + } + } + if len(m.VotingTrackerStoreKeys) > 0 { + for _, s := range m.VotingTrackerStoreKeys { + l = len(s) + n += 2 + l + sovGenesis(uint64(l)) + } + } + if len(m.CollectionStats) > 0 { + for _, e := range m.CollectionStats { + l = e.Size() + n += 2 + l + sovGenesis(uint64(l)) + } + } + if len(m.CollectionStatsIds) > 0 { + for _, e := range m.CollectionStatsIds { + l = e.Size() + n += 2 + l + sovGenesis(uint64(l)) + } + } + if len(m.VotingChallengeTrackers) > 0 { + for _, e := range m.VotingChallengeTrackers { + l = e.Size() + n += 2 + l + sovGenesis(uint64(l)) + } + } + if len(m.VotingChallengeTrackerStoreKeys) > 0 { + for _, s := range m.VotingChallengeTrackerStoreKeys { + l = len(s) + n += 2 + l + sovGenesis(uint64(l)) + } + } + l = m.NextAddressListCounter.Size() + n += 2 + l + sovGenesis(uint64(l)) + if len(m.ReservedProtocolAddresses) > 0 { + for _, s := range m.ReservedProtocolAddresses { + l = len(s) + n += 2 + 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 + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PortId", 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.PortId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Collections", 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 + } + m.Collections = append(m.Collections, &TokenCollection{}) + if err := m.Collections[len(m.Collections)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NextCollectionId", 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 + } + if err := m.NextCollectionId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Balances", 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 + } + m.Balances = append(m.Balances, &UserBalanceStore{}) + if err := m.Balances[len(m.Balances)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BalanceStoreKeys", 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.BalanceStoreKeys = append(m.BalanceStoreKeys, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChallengeTrackers", 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 + } + var v Uint + m.ChallengeTrackers = append(m.ChallengeTrackers, v) + if err := m.ChallengeTrackers[len(m.ChallengeTrackers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChallengeTrackerStoreKeys", 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.ChallengeTrackerStoreKeys = append(m.ChallengeTrackerStoreKeys, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AddressLists", 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 + } + m.AddressLists = append(m.AddressLists, &AddressList{}) + if err := m.AddressLists[len(m.AddressLists)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalTrackers", 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 + } + m.ApprovalTrackers = append(m.ApprovalTrackers, &ApprovalTracker{}) + if err := m.ApprovalTrackers[len(m.ApprovalTrackers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalTrackerStoreKeys", 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.ApprovalTrackerStoreKeys = append(m.ApprovalTrackerStoreKeys, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalTrackerVersions", 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 + } + var v Uint + m.ApprovalTrackerVersions = append(m.ApprovalTrackerVersions, v) + if err := m.ApprovalTrackerVersions[len(m.ApprovalTrackerVersions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalTrackerVersionsStoreKeys", 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.ApprovalTrackerVersionsStoreKeys = append(m.ApprovalTrackerVersionsStoreKeys, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DynamicStores", 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 + } + m.DynamicStores = append(m.DynamicStores, &DynamicStore{}) + if err := m.DynamicStores[len(m.DynamicStores)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 15: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NextDynamicStoreId", 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 + } + if err := m.NextDynamicStoreId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 16: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DynamicStoreValues", 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 + } + m.DynamicStoreValues = append(m.DynamicStoreValues, &DynamicStoreValue{}) + if err := m.DynamicStoreValues[len(m.DynamicStoreValues)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 17: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EthSignatureTrackers", 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 + } + var v Uint + m.EthSignatureTrackers = append(m.EthSignatureTrackers, v) + if err := m.EthSignatureTrackers[len(m.EthSignatureTrackers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 18: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EthSignatureTrackerStoreKeys", 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.EthSignatureTrackerStoreKeys = append(m.EthSignatureTrackerStoreKeys, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 19: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VotingTrackers", 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 + } + m.VotingTrackers = append(m.VotingTrackers, &VoteProof{}) + if err := m.VotingTrackers[len(m.VotingTrackers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 20: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VotingTrackerStoreKeys", 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.VotingTrackerStoreKeys = append(m.VotingTrackerStoreKeys, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 21: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionStats", 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 + } + m.CollectionStats = append(m.CollectionStats, &CollectionStats{}) + if err := m.CollectionStats[len(m.CollectionStats)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 22: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionStatsIds", 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 + } + var v Uint + m.CollectionStatsIds = append(m.CollectionStatsIds, v) + if err := m.CollectionStatsIds[len(m.CollectionStatsIds)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 23: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VotingChallengeTrackers", 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 + } + m.VotingChallengeTrackers = append(m.VotingChallengeTrackers, &VotingChallengeTracker{}) + if err := m.VotingChallengeTrackers[len(m.VotingChallengeTrackers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 24: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VotingChallengeTrackerStoreKeys", 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.VotingChallengeTrackerStoreKeys = append(m.VotingChallengeTrackerStoreKeys, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 25: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NextAddressListCounter", 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 + } + if err := m.NextAddressListCounter.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 26: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ReservedProtocolAddresses", 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.ReservedProtocolAddresses = append(m.ReservedProtocolAddresses, 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/tokenization/types/v29/icq.pb.go b/x/tokenization/types/v29/icq.pb.go new file mode 100644 index 00000000..1b26ec94 --- /dev/null +++ b/x/tokenization/types/v29/icq.pb.go @@ -0,0 +1,1964 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: tokenization/v29/icq.proto + +package v29 + +import ( + fmt "fmt" + _ "github.com/cosmos/gogoproto/gogoproto" + 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 + +// OwnershipQueryPacket is sent from a querying chain to BitBadges to verify token ownership. +// The querying chain provides the address and token criteria, and BitBadges responds with +// ownership status and optional cryptographic proof. +type OwnershipQueryPacket struct { + // Unique identifier for correlating request and response + QueryId string `protobuf:"bytes,1,opt,name=query_id,json=queryId,proto3" json:"query_id,omitempty"` + // Address to check ownership for (bech32 or EVM hex format) + Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` + // Collection ID to query (uint as string for cross-chain compatibility) + CollectionId string `protobuf:"bytes,3,opt,name=collection_id,json=collectionId,proto3" json:"collection_id,omitempty"` + // Token ID to check ownership for (uint as string) + TokenId string `protobuf:"bytes,4,opt,name=token_id,json=tokenId,proto3" json:"token_id,omitempty"` + // Ownership time to check (uint as string, typically current time in milliseconds) + OwnershipTime string `protobuf:"bytes,5,opt,name=ownership_time,json=ownershipTime,proto3" json:"ownership_time,omitempty"` +} + +func (m *OwnershipQueryPacket) Reset() { *m = OwnershipQueryPacket{} } +func (m *OwnershipQueryPacket) String() string { return proto.CompactTextString(m) } +func (*OwnershipQueryPacket) ProtoMessage() {} +func (*OwnershipQueryPacket) Descriptor() ([]byte, []int) { + return fileDescriptor_c6b2025a94a2ba3a, []int{0} +} +func (m *OwnershipQueryPacket) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *OwnershipQueryPacket) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_OwnershipQueryPacket.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 *OwnershipQueryPacket) XXX_Merge(src proto.Message) { + xxx_messageInfo_OwnershipQueryPacket.Merge(m, src) +} +func (m *OwnershipQueryPacket) XXX_Size() int { + return m.Size() +} +func (m *OwnershipQueryPacket) XXX_DiscardUnknown() { + xxx_messageInfo_OwnershipQueryPacket.DiscardUnknown(m) +} + +var xxx_messageInfo_OwnershipQueryPacket proto.InternalMessageInfo + +func (m *OwnershipQueryPacket) GetQueryId() string { + if m != nil { + return m.QueryId + } + return "" +} + +func (m *OwnershipQueryPacket) GetAddress() string { + if m != nil { + return m.Address + } + return "" +} + +func (m *OwnershipQueryPacket) GetCollectionId() string { + if m != nil { + return m.CollectionId + } + return "" +} + +func (m *OwnershipQueryPacket) GetTokenId() string { + if m != nil { + return m.TokenId + } + return "" +} + +func (m *OwnershipQueryPacket) GetOwnershipTime() string { + if m != nil { + return m.OwnershipTime + } + return "" +} + +// OwnershipQueryResponsePacket is sent from BitBadges back to the querying chain +// with the ownership verification result. +type OwnershipQueryResponsePacket struct { + // Correlation ID from the original request + QueryId string `protobuf:"bytes,1,opt,name=query_id,json=queryId,proto3" json:"query_id,omitempty"` + // True if the address owns any of the specified tokens (total_amount > 0) + OwnsTokens bool `protobuf:"varint,2,opt,name=owns_tokens,json=ownsTokens,proto3" json:"owns_tokens,omitempty"` + // Total amount owned for the specified token IDs and ownership times + TotalAmount Uint `protobuf:"bytes,3,opt,name=total_amount,json=totalAmount,proto3,customtype=Uint" json:"total_amount"` + // Block height at which the response was generated + ProofHeight uint64 `protobuf:"varint,4,opt,name=proof_height,json=proofHeight,proto3" json:"proof_height,omitempty"` + // Error message if the query failed (empty on success) + Error string `protobuf:"bytes,5,opt,name=error,proto3" json:"error,omitempty"` +} + +func (m *OwnershipQueryResponsePacket) Reset() { *m = OwnershipQueryResponsePacket{} } +func (m *OwnershipQueryResponsePacket) String() string { return proto.CompactTextString(m) } +func (*OwnershipQueryResponsePacket) ProtoMessage() {} +func (*OwnershipQueryResponsePacket) Descriptor() ([]byte, []int) { + return fileDescriptor_c6b2025a94a2ba3a, []int{1} +} +func (m *OwnershipQueryResponsePacket) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *OwnershipQueryResponsePacket) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_OwnershipQueryResponsePacket.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 *OwnershipQueryResponsePacket) XXX_Merge(src proto.Message) { + xxx_messageInfo_OwnershipQueryResponsePacket.Merge(m, src) +} +func (m *OwnershipQueryResponsePacket) XXX_Size() int { + return m.Size() +} +func (m *OwnershipQueryResponsePacket) XXX_DiscardUnknown() { + xxx_messageInfo_OwnershipQueryResponsePacket.DiscardUnknown(m) +} + +var xxx_messageInfo_OwnershipQueryResponsePacket proto.InternalMessageInfo + +func (m *OwnershipQueryResponsePacket) GetQueryId() string { + if m != nil { + return m.QueryId + } + return "" +} + +func (m *OwnershipQueryResponsePacket) GetOwnsTokens() bool { + if m != nil { + return m.OwnsTokens + } + return false +} + +func (m *OwnershipQueryResponsePacket) GetProofHeight() uint64 { + if m != nil { + return m.ProofHeight + } + return 0 +} + +func (m *OwnershipQueryResponsePacket) GetError() string { + if m != nil { + return m.Error + } + return "" +} + +// BulkOwnershipQueryPacket allows querying multiple addresses/collections in a single IBC packet. +// This is more efficient than sending multiple individual queries. +type BulkOwnershipQueryPacket struct { + // Unique identifier for the bulk query + QueryId string `protobuf:"bytes,1,opt,name=query_id,json=queryId,proto3" json:"query_id,omitempty"` + // Individual queries to process (max 100 recommended) + Queries []*OwnershipQueryPacket `protobuf:"bytes,2,rep,name=queries,proto3" json:"queries,omitempty"` +} + +func (m *BulkOwnershipQueryPacket) Reset() { *m = BulkOwnershipQueryPacket{} } +func (m *BulkOwnershipQueryPacket) String() string { return proto.CompactTextString(m) } +func (*BulkOwnershipQueryPacket) ProtoMessage() {} +func (*BulkOwnershipQueryPacket) Descriptor() ([]byte, []int) { + return fileDescriptor_c6b2025a94a2ba3a, []int{2} +} +func (m *BulkOwnershipQueryPacket) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *BulkOwnershipQueryPacket) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_BulkOwnershipQueryPacket.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 *BulkOwnershipQueryPacket) XXX_Merge(src proto.Message) { + xxx_messageInfo_BulkOwnershipQueryPacket.Merge(m, src) +} +func (m *BulkOwnershipQueryPacket) XXX_Size() int { + return m.Size() +} +func (m *BulkOwnershipQueryPacket) XXX_DiscardUnknown() { + xxx_messageInfo_BulkOwnershipQueryPacket.DiscardUnknown(m) +} + +var xxx_messageInfo_BulkOwnershipQueryPacket proto.InternalMessageInfo + +func (m *BulkOwnershipQueryPacket) GetQueryId() string { + if m != nil { + return m.QueryId + } + return "" +} + +func (m *BulkOwnershipQueryPacket) GetQueries() []*OwnershipQueryPacket { + if m != nil { + return m.Queries + } + return nil +} + +// BulkOwnershipQueryResponsePacket contains responses for all queries in a bulk request. +type BulkOwnershipQueryResponsePacket struct { + // Correlation ID from the original bulk request + QueryId string `protobuf:"bytes,1,opt,name=query_id,json=queryId,proto3" json:"query_id,omitempty"` + // Responses in the same order as the original queries + Responses []*OwnershipQueryResponsePacket `protobuf:"bytes,2,rep,name=responses,proto3" json:"responses,omitempty"` +} + +func (m *BulkOwnershipQueryResponsePacket) Reset() { *m = BulkOwnershipQueryResponsePacket{} } +func (m *BulkOwnershipQueryResponsePacket) String() string { return proto.CompactTextString(m) } +func (*BulkOwnershipQueryResponsePacket) ProtoMessage() {} +func (*BulkOwnershipQueryResponsePacket) Descriptor() ([]byte, []int) { + return fileDescriptor_c6b2025a94a2ba3a, []int{3} +} +func (m *BulkOwnershipQueryResponsePacket) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *BulkOwnershipQueryResponsePacket) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_BulkOwnershipQueryResponsePacket.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 *BulkOwnershipQueryResponsePacket) XXX_Merge(src proto.Message) { + xxx_messageInfo_BulkOwnershipQueryResponsePacket.Merge(m, src) +} +func (m *BulkOwnershipQueryResponsePacket) XXX_Size() int { + return m.Size() +} +func (m *BulkOwnershipQueryResponsePacket) XXX_DiscardUnknown() { + xxx_messageInfo_BulkOwnershipQueryResponsePacket.DiscardUnknown(m) +} + +var xxx_messageInfo_BulkOwnershipQueryResponsePacket proto.InternalMessageInfo + +func (m *BulkOwnershipQueryResponsePacket) GetQueryId() string { + if m != nil { + return m.QueryId + } + return "" +} + +func (m *BulkOwnershipQueryResponsePacket) GetResponses() []*OwnershipQueryResponsePacket { + if m != nil { + return m.Responses + } + return nil +} + +// FullBalanceQueryPacket is sent from a querying chain to BitBadges to retrieve +// the complete balance store for a user (balances, approvals, permissions). +type FullBalanceQueryPacket struct { + // Unique identifier for correlating request and response + QueryId string `protobuf:"bytes,1,opt,name=query_id,json=queryId,proto3" json:"query_id,omitempty"` + // Address to get balance for (bech32 or EVM hex format) + Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` + // Collection ID to query (uint as string for cross-chain compatibility) + CollectionId string `protobuf:"bytes,3,opt,name=collection_id,json=collectionId,proto3" json:"collection_id,omitempty"` +} + +func (m *FullBalanceQueryPacket) Reset() { *m = FullBalanceQueryPacket{} } +func (m *FullBalanceQueryPacket) String() string { return proto.CompactTextString(m) } +func (*FullBalanceQueryPacket) ProtoMessage() {} +func (*FullBalanceQueryPacket) Descriptor() ([]byte, []int) { + return fileDescriptor_c6b2025a94a2ba3a, []int{4} +} +func (m *FullBalanceQueryPacket) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *FullBalanceQueryPacket) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_FullBalanceQueryPacket.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 *FullBalanceQueryPacket) XXX_Merge(src proto.Message) { + xxx_messageInfo_FullBalanceQueryPacket.Merge(m, src) +} +func (m *FullBalanceQueryPacket) XXX_Size() int { + return m.Size() +} +func (m *FullBalanceQueryPacket) XXX_DiscardUnknown() { + xxx_messageInfo_FullBalanceQueryPacket.DiscardUnknown(m) +} + +var xxx_messageInfo_FullBalanceQueryPacket proto.InternalMessageInfo + +func (m *FullBalanceQueryPacket) GetQueryId() string { + if m != nil { + return m.QueryId + } + return "" +} + +func (m *FullBalanceQueryPacket) GetAddress() string { + if m != nil { + return m.Address + } + return "" +} + +func (m *FullBalanceQueryPacket) GetCollectionId() string { + if m != nil { + return m.CollectionId + } + return "" +} + +// FullBalanceQueryResponsePacket is sent from BitBadges back to the querying chain +// with the complete balance store (serialized as bytes for cross-chain compatibility). +type FullBalanceQueryResponsePacket struct { + // Correlation ID from the original request + QueryId string `protobuf:"bytes,1,opt,name=query_id,json=queryId,proto3" json:"query_id,omitempty"` + // The serialized UserBalanceStore (protobuf bytes) + // Contains balances, incoming/outgoing approvals, auto-approve settings, and permissions + BalanceStore []byte `protobuf:"bytes,2,opt,name=balance_store,json=balanceStore,proto3" json:"balance_store,omitempty"` + // Block height at which the response was generated + ProofHeight uint64 `protobuf:"varint,3,opt,name=proof_height,json=proofHeight,proto3" json:"proof_height,omitempty"` + // Error message if the query failed (empty on success) + Error string `protobuf:"bytes,4,opt,name=error,proto3" json:"error,omitempty"` +} + +func (m *FullBalanceQueryResponsePacket) Reset() { *m = FullBalanceQueryResponsePacket{} } +func (m *FullBalanceQueryResponsePacket) String() string { return proto.CompactTextString(m) } +func (*FullBalanceQueryResponsePacket) ProtoMessage() {} +func (*FullBalanceQueryResponsePacket) Descriptor() ([]byte, []int) { + return fileDescriptor_c6b2025a94a2ba3a, []int{5} +} +func (m *FullBalanceQueryResponsePacket) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *FullBalanceQueryResponsePacket) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_FullBalanceQueryResponsePacket.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 *FullBalanceQueryResponsePacket) XXX_Merge(src proto.Message) { + xxx_messageInfo_FullBalanceQueryResponsePacket.Merge(m, src) +} +func (m *FullBalanceQueryResponsePacket) XXX_Size() int { + return m.Size() +} +func (m *FullBalanceQueryResponsePacket) XXX_DiscardUnknown() { + xxx_messageInfo_FullBalanceQueryResponsePacket.DiscardUnknown(m) +} + +var xxx_messageInfo_FullBalanceQueryResponsePacket proto.InternalMessageInfo + +func (m *FullBalanceQueryResponsePacket) GetQueryId() string { + if m != nil { + return m.QueryId + } + return "" +} + +func (m *FullBalanceQueryResponsePacket) GetBalanceStore() []byte { + if m != nil { + return m.BalanceStore + } + return nil +} + +func (m *FullBalanceQueryResponsePacket) GetProofHeight() uint64 { + if m != nil { + return m.ProofHeight + } + return 0 +} + +func (m *FullBalanceQueryResponsePacket) GetError() string { + if m != nil { + return m.Error + } + return "" +} + +func init() { + proto.RegisterType((*OwnershipQueryPacket)(nil), "tokenization.v29.OwnershipQueryPacket") + proto.RegisterType((*OwnershipQueryResponsePacket)(nil), "tokenization.v29.OwnershipQueryResponsePacket") + proto.RegisterType((*BulkOwnershipQueryPacket)(nil), "tokenization.v29.BulkOwnershipQueryPacket") + proto.RegisterType((*BulkOwnershipQueryResponsePacket)(nil), "tokenization.v29.BulkOwnershipQueryResponsePacket") + proto.RegisterType((*FullBalanceQueryPacket)(nil), "tokenization.v29.FullBalanceQueryPacket") + proto.RegisterType((*FullBalanceQueryResponsePacket)(nil), "tokenization.v29.FullBalanceQueryResponsePacket") +} + +func init() { proto.RegisterFile("tokenization/v29/icq.proto", fileDescriptor_c6b2025a94a2ba3a) } + +var fileDescriptor_c6b2025a94a2ba3a = []byte{ + // 500 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x53, 0xc1, 0x6e, 0xd3, 0x40, + 0x10, 0x8d, 0x49, 0x4a, 0xdb, 0x89, 0x83, 0x90, 0x15, 0x21, 0x13, 0x21, 0xa7, 0xb8, 0x02, 0xf5, + 0x64, 0x4b, 0xe1, 0x54, 0x89, 0x03, 0xe4, 0x80, 0x88, 0x84, 0x04, 0x98, 0xc2, 0x81, 0x8b, 0xb5, + 0xb6, 0x17, 0x7b, 0x15, 0x67, 0xd7, 0xdd, 0x5d, 0x37, 0x94, 0x5f, 0xe0, 0xc2, 0x95, 0xdf, 0xe0, + 0x1b, 0x38, 0xf4, 0xd8, 0x23, 0xe2, 0x50, 0xa1, 0xe4, 0x47, 0xd0, 0xae, 0x1d, 0xd2, 0x34, 0x88, + 0x96, 0x4b, 0x6f, 0x3b, 0x6f, 0xde, 0xcc, 0xbc, 0x59, 0xbd, 0x81, 0x9e, 0x64, 0x63, 0x4c, 0xc9, + 0x27, 0x24, 0x09, 0xa3, 0xfe, 0xd1, 0x60, 0xdf, 0x27, 0xf1, 0xa1, 0x57, 0x70, 0x26, 0x99, 0x75, + 0xfb, 0x7c, 0xce, 0x3b, 0x1a, 0xec, 0xf7, 0xba, 0x29, 0x4b, 0x99, 0x4e, 0xfa, 0xea, 0x55, 0xf1, + 0x7a, 0xfd, 0xb5, 0x1e, 0x11, 0xca, 0x11, 0x8d, 0xb1, 0xa8, 0x08, 0xee, 0x37, 0x03, 0xba, 0x2f, + 0xa7, 0x14, 0x73, 0x91, 0x91, 0xe2, 0x75, 0x89, 0xf9, 0xf1, 0x2b, 0x14, 0x8f, 0xb1, 0xb4, 0xee, + 0xc2, 0xd6, 0xa1, 0x0a, 0x43, 0x92, 0xd8, 0xc6, 0x8e, 0xb1, 0xb7, 0x1d, 0x6c, 0xea, 0x78, 0x94, + 0x58, 0x36, 0x6c, 0xa2, 0x24, 0xe1, 0x58, 0x08, 0xfb, 0x46, 0x95, 0xa9, 0x43, 0x6b, 0x17, 0x3a, + 0x31, 0xcb, 0x73, 0x1c, 0xab, 0x71, 0xaa, 0xb2, 0xa9, 0xf3, 0xe6, 0x12, 0x1c, 0x25, 0xaa, 0xb3, + 0x56, 0xa5, 0xf2, 0xad, 0xaa, 0x5e, 0xc7, 0xa3, 0xc4, 0x7a, 0x00, 0xb7, 0xd8, 0x42, 0x4c, 0x28, + 0xc9, 0x04, 0xdb, 0x1b, 0x9a, 0xd0, 0xf9, 0x83, 0x1e, 0x90, 0x09, 0x76, 0xbf, 0x1b, 0x70, 0x6f, + 0x55, 0x74, 0x80, 0x45, 0xc1, 0xa8, 0xc0, 0x97, 0x8b, 0xef, 0x43, 0x9b, 0x4d, 0xa9, 0x08, 0xf5, + 0xc8, 0x6a, 0x81, 0xad, 0x00, 0x14, 0x74, 0xa0, 0x11, 0xcb, 0x07, 0x53, 0x32, 0x89, 0xf2, 0x10, + 0x4d, 0x58, 0x49, 0x65, 0xb5, 0xc2, 0xd0, 0x3c, 0x39, 0xeb, 0x37, 0x7e, 0x9e, 0xf5, 0x5b, 0x6f, + 0x09, 0x95, 0x41, 0x5b, 0x33, 0x9e, 0x6a, 0x82, 0x75, 0x1f, 0xcc, 0x82, 0x33, 0xf6, 0x21, 0xcc, + 0x30, 0x49, 0x33, 0xa9, 0x77, 0x6a, 0x05, 0x6d, 0x8d, 0x3d, 0xd7, 0x90, 0xd5, 0x85, 0x0d, 0xcc, + 0x39, 0xe3, 0xf5, 0x3a, 0x55, 0xe0, 0x4e, 0xc1, 0x1e, 0x96, 0xf9, 0xf8, 0x7f, 0xbf, 0xff, 0x09, + 0xe8, 0x27, 0xc1, 0x4a, 0x7d, 0x73, 0xaf, 0x3d, 0x78, 0xe8, 0x5d, 0x74, 0x83, 0xf7, 0xb7, 0x9e, + 0xc1, 0xa2, 0xcc, 0xfd, 0x6c, 0xc0, 0xce, 0xfa, 0xe4, 0xab, 0xff, 0xe1, 0x0b, 0xd8, 0xe6, 0x35, + 0x79, 0xa1, 0xc1, 0xbb, 0x4c, 0xc3, 0x6a, 0xf7, 0x60, 0xd9, 0xc0, 0xe5, 0x70, 0xe7, 0x59, 0x99, + 0xe7, 0xc3, 0xca, 0x98, 0xd7, 0xe2, 0x41, 0xf7, 0xab, 0x01, 0xce, 0xc5, 0xa1, 0x57, 0xdf, 0x7f, + 0x17, 0x3a, 0xf5, 0x19, 0x85, 0x42, 0x32, 0x8e, 0xb5, 0x04, 0x33, 0x30, 0x6b, 0xf0, 0x8d, 0xc2, + 0xd6, 0x6c, 0xd1, 0xfc, 0x87, 0x2d, 0x5a, 0xe7, 0x6c, 0x31, 0x7c, 0x77, 0x32, 0x73, 0x8c, 0xd3, + 0x99, 0x63, 0xfc, 0x9a, 0x39, 0xc6, 0x97, 0xb9, 0xd3, 0x38, 0x9d, 0x3b, 0x8d, 0x1f, 0x73, 0xa7, + 0xf1, 0xfe, 0x71, 0x4a, 0x64, 0x56, 0x46, 0x5e, 0xcc, 0x26, 0x7e, 0x44, 0x64, 0x84, 0x92, 0x14, + 0x8b, 0xe5, 0x2b, 0xce, 0x10, 0xa1, 0xfe, 0x47, 0x7f, 0xe5, 0xe6, 0xe5, 0x71, 0x81, 0x85, 0xba, + 0xfc, 0xe8, 0xa6, 0xbe, 0xf8, 0x47, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0xa6, 0xb4, 0xae, 0x02, + 0x58, 0x04, 0x00, 0x00, +} + +func (m *OwnershipQueryPacket) 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 *OwnershipQueryPacket) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *OwnershipQueryPacket) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.OwnershipTime) > 0 { + i -= len(m.OwnershipTime) + copy(dAtA[i:], m.OwnershipTime) + i = encodeVarintIcq(dAtA, i, uint64(len(m.OwnershipTime))) + i-- + dAtA[i] = 0x2a + } + if len(m.TokenId) > 0 { + i -= len(m.TokenId) + copy(dAtA[i:], m.TokenId) + i = encodeVarintIcq(dAtA, i, uint64(len(m.TokenId))) + i-- + dAtA[i] = 0x22 + } + if len(m.CollectionId) > 0 { + i -= len(m.CollectionId) + copy(dAtA[i:], m.CollectionId) + i = encodeVarintIcq(dAtA, i, uint64(len(m.CollectionId))) + i-- + dAtA[i] = 0x1a + } + if len(m.Address) > 0 { + i -= len(m.Address) + copy(dAtA[i:], m.Address) + i = encodeVarintIcq(dAtA, i, uint64(len(m.Address))) + i-- + dAtA[i] = 0x12 + } + if len(m.QueryId) > 0 { + i -= len(m.QueryId) + copy(dAtA[i:], m.QueryId) + i = encodeVarintIcq(dAtA, i, uint64(len(m.QueryId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *OwnershipQueryResponsePacket) 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 *OwnershipQueryResponsePacket) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *OwnershipQueryResponsePacket) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Error) > 0 { + i -= len(m.Error) + copy(dAtA[i:], m.Error) + i = encodeVarintIcq(dAtA, i, uint64(len(m.Error))) + i-- + dAtA[i] = 0x2a + } + if m.ProofHeight != 0 { + i = encodeVarintIcq(dAtA, i, uint64(m.ProofHeight)) + i-- + dAtA[i] = 0x20 + } + { + size := m.TotalAmount.Size() + i -= size + if _, err := m.TotalAmount.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintIcq(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + if m.OwnsTokens { + i-- + if m.OwnsTokens { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 + } + if len(m.QueryId) > 0 { + i -= len(m.QueryId) + copy(dAtA[i:], m.QueryId) + i = encodeVarintIcq(dAtA, i, uint64(len(m.QueryId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *BulkOwnershipQueryPacket) 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 *BulkOwnershipQueryPacket) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *BulkOwnershipQueryPacket) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Queries) > 0 { + for iNdEx := len(m.Queries) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Queries[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintIcq(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.QueryId) > 0 { + i -= len(m.QueryId) + copy(dAtA[i:], m.QueryId) + i = encodeVarintIcq(dAtA, i, uint64(len(m.QueryId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *BulkOwnershipQueryResponsePacket) 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 *BulkOwnershipQueryResponsePacket) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *BulkOwnershipQueryResponsePacket) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Responses) > 0 { + for iNdEx := len(m.Responses) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Responses[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintIcq(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.QueryId) > 0 { + i -= len(m.QueryId) + copy(dAtA[i:], m.QueryId) + i = encodeVarintIcq(dAtA, i, uint64(len(m.QueryId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *FullBalanceQueryPacket) 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 *FullBalanceQueryPacket) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *FullBalanceQueryPacket) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.CollectionId) > 0 { + i -= len(m.CollectionId) + copy(dAtA[i:], m.CollectionId) + i = encodeVarintIcq(dAtA, i, uint64(len(m.CollectionId))) + i-- + dAtA[i] = 0x1a + } + if len(m.Address) > 0 { + i -= len(m.Address) + copy(dAtA[i:], m.Address) + i = encodeVarintIcq(dAtA, i, uint64(len(m.Address))) + i-- + dAtA[i] = 0x12 + } + if len(m.QueryId) > 0 { + i -= len(m.QueryId) + copy(dAtA[i:], m.QueryId) + i = encodeVarintIcq(dAtA, i, uint64(len(m.QueryId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *FullBalanceQueryResponsePacket) 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 *FullBalanceQueryResponsePacket) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *FullBalanceQueryResponsePacket) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Error) > 0 { + i -= len(m.Error) + copy(dAtA[i:], m.Error) + i = encodeVarintIcq(dAtA, i, uint64(len(m.Error))) + i-- + dAtA[i] = 0x22 + } + if m.ProofHeight != 0 { + i = encodeVarintIcq(dAtA, i, uint64(m.ProofHeight)) + i-- + dAtA[i] = 0x18 + } + if len(m.BalanceStore) > 0 { + i -= len(m.BalanceStore) + copy(dAtA[i:], m.BalanceStore) + i = encodeVarintIcq(dAtA, i, uint64(len(m.BalanceStore))) + i-- + dAtA[i] = 0x12 + } + if len(m.QueryId) > 0 { + i -= len(m.QueryId) + copy(dAtA[i:], m.QueryId) + i = encodeVarintIcq(dAtA, i, uint64(len(m.QueryId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintIcq(dAtA []byte, offset int, v uint64) int { + offset -= sovIcq(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *OwnershipQueryPacket) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.QueryId) + if l > 0 { + n += 1 + l + sovIcq(uint64(l)) + } + l = len(m.Address) + if l > 0 { + n += 1 + l + sovIcq(uint64(l)) + } + l = len(m.CollectionId) + if l > 0 { + n += 1 + l + sovIcq(uint64(l)) + } + l = len(m.TokenId) + if l > 0 { + n += 1 + l + sovIcq(uint64(l)) + } + l = len(m.OwnershipTime) + if l > 0 { + n += 1 + l + sovIcq(uint64(l)) + } + return n +} + +func (m *OwnershipQueryResponsePacket) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.QueryId) + if l > 0 { + n += 1 + l + sovIcq(uint64(l)) + } + if m.OwnsTokens { + n += 2 + } + l = m.TotalAmount.Size() + n += 1 + l + sovIcq(uint64(l)) + if m.ProofHeight != 0 { + n += 1 + sovIcq(uint64(m.ProofHeight)) + } + l = len(m.Error) + if l > 0 { + n += 1 + l + sovIcq(uint64(l)) + } + return n +} + +func (m *BulkOwnershipQueryPacket) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.QueryId) + if l > 0 { + n += 1 + l + sovIcq(uint64(l)) + } + if len(m.Queries) > 0 { + for _, e := range m.Queries { + l = e.Size() + n += 1 + l + sovIcq(uint64(l)) + } + } + return n +} + +func (m *BulkOwnershipQueryResponsePacket) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.QueryId) + if l > 0 { + n += 1 + l + sovIcq(uint64(l)) + } + if len(m.Responses) > 0 { + for _, e := range m.Responses { + l = e.Size() + n += 1 + l + sovIcq(uint64(l)) + } + } + return n +} + +func (m *FullBalanceQueryPacket) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.QueryId) + if l > 0 { + n += 1 + l + sovIcq(uint64(l)) + } + l = len(m.Address) + if l > 0 { + n += 1 + l + sovIcq(uint64(l)) + } + l = len(m.CollectionId) + if l > 0 { + n += 1 + l + sovIcq(uint64(l)) + } + return n +} + +func (m *FullBalanceQueryResponsePacket) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.QueryId) + if l > 0 { + n += 1 + l + sovIcq(uint64(l)) + } + l = len(m.BalanceStore) + if l > 0 { + n += 1 + l + sovIcq(uint64(l)) + } + if m.ProofHeight != 0 { + n += 1 + sovIcq(uint64(m.ProofHeight)) + } + l = len(m.Error) + if l > 0 { + n += 1 + l + sovIcq(uint64(l)) + } + return n +} + +func sovIcq(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozIcq(x uint64) (n int) { + return sovIcq(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *OwnershipQueryPacket) 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 ErrIntOverflowIcq + } + 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: OwnershipQueryPacket: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: OwnershipQueryPacket: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field QueryId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcq + } + 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 ErrInvalidLengthIcq + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthIcq + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.QueryId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcq + } + 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 ErrInvalidLengthIcq + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthIcq + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcq + } + 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 ErrInvalidLengthIcq + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthIcq + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CollectionId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TokenId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcq + } + 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 ErrInvalidLengthIcq + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthIcq + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TokenId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OwnershipTime", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcq + } + 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 ErrInvalidLengthIcq + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthIcq + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OwnershipTime = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipIcq(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthIcq + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *OwnershipQueryResponsePacket) 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 ErrIntOverflowIcq + } + 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: OwnershipQueryResponsePacket: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: OwnershipQueryResponsePacket: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field QueryId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcq + } + 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 ErrInvalidLengthIcq + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthIcq + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.QueryId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field OwnsTokens", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcq + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.OwnsTokens = bool(v != 0) + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TotalAmount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcq + } + 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 ErrInvalidLengthIcq + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthIcq + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.TotalAmount.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ProofHeight", wireType) + } + m.ProofHeight = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcq + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ProofHeight |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcq + } + 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 ErrInvalidLengthIcq + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthIcq + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Error = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipIcq(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthIcq + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *BulkOwnershipQueryPacket) 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 ErrIntOverflowIcq + } + 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: BulkOwnershipQueryPacket: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: BulkOwnershipQueryPacket: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field QueryId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcq + } + 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 ErrInvalidLengthIcq + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthIcq + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.QueryId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Queries", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcq + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthIcq + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthIcq + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Queries = append(m.Queries, &OwnershipQueryPacket{}) + if err := m.Queries[len(m.Queries)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipIcq(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthIcq + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *BulkOwnershipQueryResponsePacket) 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 ErrIntOverflowIcq + } + 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: BulkOwnershipQueryResponsePacket: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: BulkOwnershipQueryResponsePacket: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field QueryId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcq + } + 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 ErrInvalidLengthIcq + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthIcq + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.QueryId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Responses", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcq + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthIcq + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthIcq + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Responses = append(m.Responses, &OwnershipQueryResponsePacket{}) + if err := m.Responses[len(m.Responses)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipIcq(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthIcq + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *FullBalanceQueryPacket) 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 ErrIntOverflowIcq + } + 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: FullBalanceQueryPacket: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: FullBalanceQueryPacket: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field QueryId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcq + } + 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 ErrInvalidLengthIcq + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthIcq + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.QueryId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcq + } + 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 ErrInvalidLengthIcq + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthIcq + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcq + } + 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 ErrInvalidLengthIcq + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthIcq + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CollectionId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipIcq(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthIcq + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *FullBalanceQueryResponsePacket) 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 ErrIntOverflowIcq + } + 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: FullBalanceQueryResponsePacket: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: FullBalanceQueryResponsePacket: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field QueryId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcq + } + 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 ErrInvalidLengthIcq + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthIcq + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.QueryId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BalanceStore", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcq + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthIcq + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthIcq + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BalanceStore = append(m.BalanceStore[:0], dAtA[iNdEx:postIndex]...) + if m.BalanceStore == nil { + m.BalanceStore = []byte{} + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ProofHeight", wireType) + } + m.ProofHeight = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcq + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ProofHeight |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowIcq + } + 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 ErrInvalidLengthIcq + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthIcq + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Error = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipIcq(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthIcq + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipIcq(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, ErrIntOverflowIcq + } + 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, ErrIntOverflowIcq + } + 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, ErrIntOverflowIcq + } + 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, ErrInvalidLengthIcq + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupIcq + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthIcq + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthIcq = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowIcq = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupIcq = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/tokenization/types/v29/math.go b/x/tokenization/types/v29/math.go new file mode 100644 index 00000000..58434f03 --- /dev/null +++ b/x/tokenization/types/v29/math.go @@ -0,0 +1,37 @@ +package v29 + +import ( + sdkmath "cosmossdk.io/math" +) + +//Needed for custom gogoproto types + +type ( + Int = sdkmath.Int + Uint = sdkmath.Uint +) + +var ( + NewInt = sdkmath.NewInt + ZeroInt = sdkmath.ZeroInt + NewUint = sdkmath.NewUint + NewUintFromString = func(s string) Uint { + if s == "" { + return sdkmath.NewUint(0) + } + + val := sdkmath.NewUintFromString(s) + return val + } +) + +type ( + Dec = sdkmath.LegacyDec +) + +var ( + NewDecWithPrec = sdkmath.LegacyNewDecWithPrec + NewDecFromInt = sdkmath.LegacyNewDecFromInt + NewDecFromStr = sdkmath.LegacyNewDecFromStr + MustNewDecFromStr = sdkmath.LegacyMustNewDecFromStr +) diff --git a/x/tokenization/types/v29/metadata.pb.go b/x/tokenization/types/v29/metadata.pb.go new file mode 100644 index 00000000..c136db8b --- /dev/null +++ b/x/tokenization/types/v29/metadata.pb.go @@ -0,0 +1,893 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: tokenization/v29/metadata.proto + +package v29 + +import ( + fmt "fmt" + _ "github.com/cosmos/cosmos-sdk/codec/types" + _ "github.com/cosmos/gogoproto/gogoproto" + 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 + +// This message defines the metadata for specific token IDs. +// The interpretation of this metadata should follow the collection standard. +type TokenMetadata struct { + // The URI (Uniform Resource Identifier) associated with the token metadata. + Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"` + // Custom data or additional information related to the token metadata. + CustomData string `protobuf:"bytes,2,opt,name=customData,proto3" json:"customData,omitempty"` + // The token IDs to which this metadata applies. + TokenIds []*UintRange `protobuf:"bytes,3,rep,name=tokenIds,proto3" json:"tokenIds,omitempty"` +} + +func (m *TokenMetadata) Reset() { *m = TokenMetadata{} } +func (m *TokenMetadata) String() string { return proto.CompactTextString(m) } +func (*TokenMetadata) ProtoMessage() {} +func (*TokenMetadata) Descriptor() ([]byte, []int) { + return fileDescriptor_9a93fbe0f62d4a6e, []int{0} +} +func (m *TokenMetadata) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *TokenMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_TokenMetadata.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 *TokenMetadata) XXX_Merge(src proto.Message) { + xxx_messageInfo_TokenMetadata.Merge(m, src) +} +func (m *TokenMetadata) XXX_Size() int { + return m.Size() +} +func (m *TokenMetadata) XXX_DiscardUnknown() { + xxx_messageInfo_TokenMetadata.DiscardUnknown(m) +} + +var xxx_messageInfo_TokenMetadata proto.InternalMessageInfo + +func (m *TokenMetadata) GetUri() string { + if m != nil { + return m.Uri + } + return "" +} + +func (m *TokenMetadata) GetCustomData() string { + if m != nil { + return m.CustomData + } + return "" +} + +func (m *TokenMetadata) GetTokenIds() []*UintRange { + if m != nil { + return m.TokenIds + } + return nil +} + +// This message defines the metadata for the collection. +// The interpretation of this metadata should follow the collection standard. +type CollectionMetadata struct { + // The URI (Uniform Resource Identifier) associated with the collection metadata. + Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"` + // Custom data or additional information related to the collection metadata. + CustomData string `protobuf:"bytes,2,opt,name=customData,proto3" json:"customData,omitempty"` +} + +func (m *CollectionMetadata) Reset() { *m = CollectionMetadata{} } +func (m *CollectionMetadata) String() string { return proto.CompactTextString(m) } +func (*CollectionMetadata) ProtoMessage() {} +func (*CollectionMetadata) Descriptor() ([]byte, []int) { + return fileDescriptor_9a93fbe0f62d4a6e, []int{1} +} +func (m *CollectionMetadata) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CollectionMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CollectionMetadata.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 *CollectionMetadata) XXX_Merge(src proto.Message) { + xxx_messageInfo_CollectionMetadata.Merge(m, src) +} +func (m *CollectionMetadata) XXX_Size() int { + return m.Size() +} +func (m *CollectionMetadata) XXX_DiscardUnknown() { + xxx_messageInfo_CollectionMetadata.DiscardUnknown(m) +} + +var xxx_messageInfo_CollectionMetadata proto.InternalMessageInfo + +func (m *CollectionMetadata) GetUri() string { + if m != nil { + return m.Uri + } + return "" +} + +func (m *CollectionMetadata) GetCustomData() string { + if m != nil { + return m.CustomData + } + return "" +} + +// This message defines the metadata for paths (alias paths and cosmos coin wrapper paths). +// The interpretation of this metadata should follow the collection standard. +type PathMetadata struct { + // The URI (Uniform Resource Identifier) associated with the path metadata. + Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"` + // Custom data or additional information related to the path metadata. + CustomData string `protobuf:"bytes,2,opt,name=customData,proto3" json:"customData,omitempty"` +} + +func (m *PathMetadata) Reset() { *m = PathMetadata{} } +func (m *PathMetadata) String() string { return proto.CompactTextString(m) } +func (*PathMetadata) ProtoMessage() {} +func (*PathMetadata) Descriptor() ([]byte, []int) { + return fileDescriptor_9a93fbe0f62d4a6e, []int{2} +} +func (m *PathMetadata) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PathMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PathMetadata.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 *PathMetadata) XXX_Merge(src proto.Message) { + xxx_messageInfo_PathMetadata.Merge(m, src) +} +func (m *PathMetadata) XXX_Size() int { + return m.Size() +} +func (m *PathMetadata) XXX_DiscardUnknown() { + xxx_messageInfo_PathMetadata.DiscardUnknown(m) +} + +var xxx_messageInfo_PathMetadata proto.InternalMessageInfo + +func (m *PathMetadata) GetUri() string { + if m != nil { + return m.Uri + } + return "" +} + +func (m *PathMetadata) GetCustomData() string { + if m != nil { + return m.CustomData + } + return "" +} + +func init() { + proto.RegisterType((*TokenMetadata)(nil), "tokenization.v29.TokenMetadata") + proto.RegisterType((*CollectionMetadata)(nil), "tokenization.v29.CollectionMetadata") + proto.RegisterType((*PathMetadata)(nil), "tokenization.v29.PathMetadata") +} + +func init() { proto.RegisterFile("tokenization/v29/metadata.proto", fileDescriptor_9a93fbe0f62d4a6e) } + +var fileDescriptor_9a93fbe0f62d4a6e = []byte{ + // 289 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2f, 0xc9, 0xcf, 0x4e, + 0xcd, 0xcb, 0xac, 0x4a, 0x2c, 0xc9, 0xcc, 0xcf, 0xd3, 0x2f, 0x33, 0xb2, 0xd4, 0xcf, 0x4d, 0x2d, + 0x49, 0x4c, 0x49, 0x2c, 0x49, 0xd4, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x40, 0x56, 0xa0, + 0x57, 0x66, 0x64, 0x29, 0x25, 0x99, 0x9e, 0x9f, 0x9f, 0x9e, 0x93, 0xaa, 0x0f, 0x96, 0x4f, 0x2a, + 0x4d, 0xd3, 0x4f, 0xcc, 0xab, 0x84, 0x28, 0x96, 0xc2, 0x34, 0x2d, 0x29, 0x31, 0x27, 0x31, 0x2f, + 0x39, 0xb5, 0x18, 0xaa, 0x40, 0x24, 0x3d, 0x3f, 0x3d, 0x1f, 0xcc, 0xd4, 0x07, 0xb1, 0x20, 0xa2, + 0x4a, 0x55, 0x5c, 0xbc, 0x21, 0x20, 0x8d, 0xbe, 0x50, 0xab, 0x85, 0x04, 0xb8, 0x98, 0x4b, 0x8b, + 0x32, 0x25, 0x18, 0x15, 0x18, 0x35, 0x38, 0x83, 0x40, 0x4c, 0x21, 0x39, 0x2e, 0xae, 0xe4, 0xd2, + 0xe2, 0x92, 0xfc, 0x5c, 0x97, 0xc4, 0x92, 0x44, 0x09, 0x26, 0xb0, 0x04, 0x92, 0x88, 0x90, 0x39, + 0x17, 0x07, 0xd8, 0x6e, 0xcf, 0x94, 0x62, 0x09, 0x66, 0x05, 0x66, 0x0d, 0x6e, 0x23, 0x69, 0x3d, + 0x74, 0x97, 0xeb, 0x85, 0x66, 0xe6, 0x95, 0x04, 0x25, 0xe6, 0xa5, 0xa7, 0x06, 0xc1, 0x15, 0x2b, + 0xb9, 0x71, 0x09, 0x39, 0xe7, 0xe7, 0xe4, 0xa4, 0x26, 0x83, 0x54, 0x91, 0xef, 0x00, 0x25, 0x07, + 0x2e, 0x9e, 0x80, 0xc4, 0x92, 0x0c, 0xf2, 0x4d, 0x70, 0x0a, 0x3b, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, + 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, + 0xc6, 0x63, 0x39, 0x86, 0x28, 0x9b, 0xf4, 0xcc, 0x92, 0x8c, 0xd2, 0x24, 0xbd, 0xe4, 0xfc, 0x5c, + 0xfd, 0xa4, 0xcc, 0x92, 0xa4, 0xc4, 0x94, 0xf4, 0xd4, 0x62, 0x04, 0x2b, 0x39, 0x23, 0x31, 0x33, + 0x4f, 0xbf, 0x42, 0x1f, 0x25, 0xf0, 0x4b, 0x2a, 0x0b, 0x52, 0x8b, 0x41, 0x51, 0x90, 0xc4, 0x06, + 0x0e, 0x64, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0x63, 0x9a, 0x14, 0x84, 0xeb, 0x01, 0x00, + 0x00, +} + +func (m *TokenMetadata) 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 *TokenMetadata) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *TokenMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.TokenIds) > 0 { + for iNdEx := len(m.TokenIds) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TokenIds[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintMetadata(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.CustomData) > 0 { + i -= len(m.CustomData) + copy(dAtA[i:], m.CustomData) + i = encodeVarintMetadata(dAtA, i, uint64(len(m.CustomData))) + i-- + dAtA[i] = 0x12 + } + if len(m.Uri) > 0 { + i -= len(m.Uri) + copy(dAtA[i:], m.Uri) + i = encodeVarintMetadata(dAtA, i, uint64(len(m.Uri))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *CollectionMetadata) 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 *CollectionMetadata) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CollectionMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.CustomData) > 0 { + i -= len(m.CustomData) + copy(dAtA[i:], m.CustomData) + i = encodeVarintMetadata(dAtA, i, uint64(len(m.CustomData))) + i-- + dAtA[i] = 0x12 + } + if len(m.Uri) > 0 { + i -= len(m.Uri) + copy(dAtA[i:], m.Uri) + i = encodeVarintMetadata(dAtA, i, uint64(len(m.Uri))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *PathMetadata) 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 *PathMetadata) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PathMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.CustomData) > 0 { + i -= len(m.CustomData) + copy(dAtA[i:], m.CustomData) + i = encodeVarintMetadata(dAtA, i, uint64(len(m.CustomData))) + i-- + dAtA[i] = 0x12 + } + if len(m.Uri) > 0 { + i -= len(m.Uri) + copy(dAtA[i:], m.Uri) + i = encodeVarintMetadata(dAtA, i, uint64(len(m.Uri))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintMetadata(dAtA []byte, offset int, v uint64) int { + offset -= sovMetadata(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *TokenMetadata) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Uri) + if l > 0 { + n += 1 + l + sovMetadata(uint64(l)) + } + l = len(m.CustomData) + if l > 0 { + n += 1 + l + sovMetadata(uint64(l)) + } + if len(m.TokenIds) > 0 { + for _, e := range m.TokenIds { + l = e.Size() + n += 1 + l + sovMetadata(uint64(l)) + } + } + return n +} + +func (m *CollectionMetadata) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Uri) + if l > 0 { + n += 1 + l + sovMetadata(uint64(l)) + } + l = len(m.CustomData) + if l > 0 { + n += 1 + l + sovMetadata(uint64(l)) + } + return n +} + +func (m *PathMetadata) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Uri) + if l > 0 { + n += 1 + l + sovMetadata(uint64(l)) + } + l = len(m.CustomData) + if l > 0 { + n += 1 + l + sovMetadata(uint64(l)) + } + return n +} + +func sovMetadata(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozMetadata(x uint64) (n int) { + return sovMetadata(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *TokenMetadata) 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 ErrIntOverflowMetadata + } + 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: TokenMetadata: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TokenMetadata: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Uri", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowMetadata + } + 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 ErrInvalidLengthMetadata + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthMetadata + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Uri = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CustomData", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowMetadata + } + 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 ErrInvalidLengthMetadata + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthMetadata + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CustomData = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TokenIds", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowMetadata + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthMetadata + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthMetadata + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TokenIds = append(m.TokenIds, &UintRange{}) + if err := m.TokenIds[len(m.TokenIds)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipMetadata(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthMetadata + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CollectionMetadata) 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 ErrIntOverflowMetadata + } + 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: CollectionMetadata: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CollectionMetadata: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Uri", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowMetadata + } + 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 ErrInvalidLengthMetadata + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthMetadata + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Uri = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CustomData", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowMetadata + } + 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 ErrInvalidLengthMetadata + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthMetadata + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CustomData = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipMetadata(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthMetadata + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PathMetadata) 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 ErrIntOverflowMetadata + } + 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: PathMetadata: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PathMetadata: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Uri", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowMetadata + } + 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 ErrInvalidLengthMetadata + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthMetadata + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Uri = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CustomData", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowMetadata + } + 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 ErrInvalidLengthMetadata + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthMetadata + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CustomData = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipMetadata(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthMetadata + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipMetadata(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, ErrIntOverflowMetadata + } + 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, ErrIntOverflowMetadata + } + 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, ErrIntOverflowMetadata + } + 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, ErrInvalidLengthMetadata + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupMetadata + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthMetadata + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthMetadata = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowMetadata = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupMetadata = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/tokenization/types/v29/packet.pb.go b/x/tokenization/types/v29/packet.pb.go new file mode 100644 index 00000000..d09d9a03 --- /dev/null +++ b/x/tokenization/types/v29/packet.pb.go @@ -0,0 +1,1000 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: tokenization/v29/packet.proto + +package v29 + +import ( + 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 + +// TokenizationPacketData defines the packet data for the tokenization module. +// It uses a oneof to support multiple packet types over the same IBC channel. +type TokenizationPacketData struct { + // Types that are valid to be assigned to Packet: + // *TokenizationPacketData_NoData + // *TokenizationPacketData_OwnershipQuery + // *TokenizationPacketData_OwnershipQueryResponse + // *TokenizationPacketData_BulkOwnershipQuery + // *TokenizationPacketData_BulkOwnershipQueryResponse + // *TokenizationPacketData_FullBalanceQuery + // *TokenizationPacketData_FullBalanceQueryResponse + Packet isTokenizationPacketData_Packet `protobuf_oneof:"packet"` +} + +func (m *TokenizationPacketData) Reset() { *m = TokenizationPacketData{} } +func (m *TokenizationPacketData) String() string { return proto.CompactTextString(m) } +func (*TokenizationPacketData) ProtoMessage() {} +func (*TokenizationPacketData) Descriptor() ([]byte, []int) { + return fileDescriptor_5528b8095908a001, []int{0} +} +func (m *TokenizationPacketData) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *TokenizationPacketData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_TokenizationPacketData.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 *TokenizationPacketData) XXX_Merge(src proto.Message) { + xxx_messageInfo_TokenizationPacketData.Merge(m, src) +} +func (m *TokenizationPacketData) XXX_Size() int { + return m.Size() +} +func (m *TokenizationPacketData) XXX_DiscardUnknown() { + xxx_messageInfo_TokenizationPacketData.DiscardUnknown(m) +} + +var xxx_messageInfo_TokenizationPacketData proto.InternalMessageInfo + +type isTokenizationPacketData_Packet interface { + isTokenizationPacketData_Packet() + MarshalTo([]byte) (int, error) + Size() int +} + +type TokenizationPacketData_NoData struct { + NoData *NoData `protobuf:"bytes,1,opt,name=noData,proto3,oneof" json:"noData,omitempty"` +} +type TokenizationPacketData_OwnershipQuery struct { + OwnershipQuery *OwnershipQueryPacket `protobuf:"bytes,2,opt,name=ownershipQuery,proto3,oneof" json:"ownershipQuery,omitempty"` +} +type TokenizationPacketData_OwnershipQueryResponse struct { + OwnershipQueryResponse *OwnershipQueryResponsePacket `protobuf:"bytes,3,opt,name=ownershipQueryResponse,proto3,oneof" json:"ownershipQueryResponse,omitempty"` +} +type TokenizationPacketData_BulkOwnershipQuery struct { + BulkOwnershipQuery *BulkOwnershipQueryPacket `protobuf:"bytes,4,opt,name=bulkOwnershipQuery,proto3,oneof" json:"bulkOwnershipQuery,omitempty"` +} +type TokenizationPacketData_BulkOwnershipQueryResponse struct { + BulkOwnershipQueryResponse *BulkOwnershipQueryResponsePacket `protobuf:"bytes,5,opt,name=bulkOwnershipQueryResponse,proto3,oneof" json:"bulkOwnershipQueryResponse,omitempty"` +} +type TokenizationPacketData_FullBalanceQuery struct { + FullBalanceQuery *FullBalanceQueryPacket `protobuf:"bytes,6,opt,name=fullBalanceQuery,proto3,oneof" json:"fullBalanceQuery,omitempty"` +} +type TokenizationPacketData_FullBalanceQueryResponse struct { + FullBalanceQueryResponse *FullBalanceQueryResponsePacket `protobuf:"bytes,7,opt,name=fullBalanceQueryResponse,proto3,oneof" json:"fullBalanceQueryResponse,omitempty"` +} + +func (*TokenizationPacketData_NoData) isTokenizationPacketData_Packet() {} +func (*TokenizationPacketData_OwnershipQuery) isTokenizationPacketData_Packet() {} +func (*TokenizationPacketData_OwnershipQueryResponse) isTokenizationPacketData_Packet() {} +func (*TokenizationPacketData_BulkOwnershipQuery) isTokenizationPacketData_Packet() {} +func (*TokenizationPacketData_BulkOwnershipQueryResponse) isTokenizationPacketData_Packet() {} +func (*TokenizationPacketData_FullBalanceQuery) isTokenizationPacketData_Packet() {} +func (*TokenizationPacketData_FullBalanceQueryResponse) isTokenizationPacketData_Packet() {} + +func (m *TokenizationPacketData) GetPacket() isTokenizationPacketData_Packet { + if m != nil { + return m.Packet + } + return nil +} + +func (m *TokenizationPacketData) GetNoData() *NoData { + if x, ok := m.GetPacket().(*TokenizationPacketData_NoData); ok { + return x.NoData + } + return nil +} + +func (m *TokenizationPacketData) GetOwnershipQuery() *OwnershipQueryPacket { + if x, ok := m.GetPacket().(*TokenizationPacketData_OwnershipQuery); ok { + return x.OwnershipQuery + } + return nil +} + +func (m *TokenizationPacketData) GetOwnershipQueryResponse() *OwnershipQueryResponsePacket { + if x, ok := m.GetPacket().(*TokenizationPacketData_OwnershipQueryResponse); ok { + return x.OwnershipQueryResponse + } + return nil +} + +func (m *TokenizationPacketData) GetBulkOwnershipQuery() *BulkOwnershipQueryPacket { + if x, ok := m.GetPacket().(*TokenizationPacketData_BulkOwnershipQuery); ok { + return x.BulkOwnershipQuery + } + return nil +} + +func (m *TokenizationPacketData) GetBulkOwnershipQueryResponse() *BulkOwnershipQueryResponsePacket { + if x, ok := m.GetPacket().(*TokenizationPacketData_BulkOwnershipQueryResponse); ok { + return x.BulkOwnershipQueryResponse + } + return nil +} + +func (m *TokenizationPacketData) GetFullBalanceQuery() *FullBalanceQueryPacket { + if x, ok := m.GetPacket().(*TokenizationPacketData_FullBalanceQuery); ok { + return x.FullBalanceQuery + } + return nil +} + +func (m *TokenizationPacketData) GetFullBalanceQueryResponse() *FullBalanceQueryResponsePacket { + if x, ok := m.GetPacket().(*TokenizationPacketData_FullBalanceQueryResponse); ok { + return x.FullBalanceQueryResponse + } + return nil +} + +// XXX_OneofWrappers is for the internal use of the proto package. +func (*TokenizationPacketData) XXX_OneofWrappers() []interface{} { + return []interface{}{ + (*TokenizationPacketData_NoData)(nil), + (*TokenizationPacketData_OwnershipQuery)(nil), + (*TokenizationPacketData_OwnershipQueryResponse)(nil), + (*TokenizationPacketData_BulkOwnershipQuery)(nil), + (*TokenizationPacketData_BulkOwnershipQueryResponse)(nil), + (*TokenizationPacketData_FullBalanceQuery)(nil), + (*TokenizationPacketData_FullBalanceQueryResponse)(nil), + } +} + +// NoData is a placeholder packet type (legacy scaffold). +type NoData struct { +} + +func (m *NoData) Reset() { *m = NoData{} } +func (m *NoData) String() string { return proto.CompactTextString(m) } +func (*NoData) ProtoMessage() {} +func (*NoData) Descriptor() ([]byte, []int) { + return fileDescriptor_5528b8095908a001, []int{1} +} +func (m *NoData) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *NoData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_NoData.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 *NoData) XXX_Merge(src proto.Message) { + xxx_messageInfo_NoData.Merge(m, src) +} +func (m *NoData) XXX_Size() int { + return m.Size() +} +func (m *NoData) XXX_DiscardUnknown() { + xxx_messageInfo_NoData.DiscardUnknown(m) +} + +var xxx_messageInfo_NoData proto.InternalMessageInfo + +func init() { + proto.RegisterType((*TokenizationPacketData)(nil), "tokenization.v29.TokenizationPacketData") + proto.RegisterType((*NoData)(nil), "tokenization.v29.NoData") +} + +func init() { proto.RegisterFile("tokenization/v29/packet.proto", fileDescriptor_5528b8095908a001) } + +var fileDescriptor_5528b8095908a001 = []byte{ + // 359 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0x41, 0x4b, 0xc3, 0x30, + 0x14, 0xc7, 0x5b, 0x75, 0x75, 0x44, 0x90, 0x91, 0xc3, 0x28, 0x03, 0x83, 0xec, 0x20, 0xc3, 0x43, + 0x2a, 0xf5, 0x34, 0xf0, 0x54, 0x44, 0x76, 0xd2, 0x39, 0x64, 0x07, 0xf1, 0x92, 0xd6, 0xb8, 0x86, + 0xd5, 0xa4, 0xae, 0xe9, 0x74, 0x7e, 0x0a, 0x3f, 0x89, 0x9f, 0xc3, 0xe3, 0x8e, 0x1e, 0x65, 0xfb, + 0x22, 0xb2, 0x54, 0xeb, 0xda, 0x38, 0xe7, 0x2d, 0xbc, 0xf7, 0x7f, 0xbf, 0x1f, 0x0f, 0xf2, 0xc0, + 0x9e, 0x14, 0x43, 0xca, 0xd9, 0x33, 0x91, 0x4c, 0x70, 0x67, 0xec, 0xb6, 0x9d, 0x98, 0x04, 0x43, + 0x2a, 0x71, 0x3c, 0x12, 0x52, 0xc0, 0xda, 0x72, 0x1b, 0x8f, 0xdd, 0x76, 0xa3, 0xa1, 0x0d, 0xb0, + 0xe0, 0x21, 0x4b, 0x37, 0x5f, 0x2b, 0xa0, 0x7e, 0xb5, 0xd4, 0xee, 0x2a, 0xd4, 0x29, 0x91, 0x04, + 0xba, 0xc0, 0xe2, 0x62, 0xf1, 0xb2, 0xcd, 0x7d, 0xb3, 0xb5, 0xe3, 0xda, 0xb8, 0x4c, 0xc6, 0xe7, + 0xaa, 0xdf, 0x31, 0x7a, 0x5f, 0x49, 0xd8, 0x05, 0xbb, 0xe2, 0x91, 0xd3, 0x51, 0x12, 0xb2, 0xf8, + 0x32, 0xa5, 0xa3, 0x89, 0xbd, 0xa1, 0x66, 0x0f, 0xf4, 0xd9, 0x8b, 0x42, 0x2e, 0xf3, 0x76, 0x8c, + 0x5e, 0x69, 0x1e, 0x86, 0xa0, 0x5e, 0xac, 0xf4, 0x68, 0x12, 0x0b, 0x9e, 0x50, 0x7b, 0x53, 0x91, + 0xf1, 0x3a, 0xf2, 0x77, 0x3e, 0x37, 0xac, 0xe0, 0xc1, 0x1b, 0x00, 0xfd, 0x34, 0x1a, 0x16, 0xa7, + 0xed, 0x2d, 0x65, 0x39, 0xd4, 0x2d, 0x9e, 0x96, 0xcd, 0x0d, 0xbf, 0x70, 0xa0, 0x04, 0x0d, 0xbd, + 0x9a, 0xef, 0x52, 0x51, 0x16, 0xf7, 0x3f, 0x16, 0x6d, 0x9f, 0x3f, 0xb8, 0xb0, 0x0f, 0x6a, 0x77, + 0x69, 0x14, 0x79, 0x24, 0x22, 0x3c, 0xa0, 0xd9, 0x46, 0x96, 0x72, 0xb5, 0x74, 0xd7, 0x59, 0x29, + 0x99, 0x1b, 0x34, 0x06, 0xe4, 0xc0, 0x2e, 0xd7, 0xf2, 0x5d, 0xb6, 0x15, 0xff, 0x68, 0x3d, 0x5f, + 0xdb, 0x64, 0x25, 0xd3, 0xab, 0x02, 0x2b, 0xfb, 0xe4, 0xcd, 0x2a, 0xb0, 0xb2, 0x5f, 0xe7, 0xf5, + 0xdf, 0x66, 0xc8, 0x9c, 0xce, 0x90, 0xf9, 0x31, 0x43, 0xe6, 0xcb, 0x1c, 0x19, 0xd3, 0x39, 0x32, + 0xde, 0xe7, 0xc8, 0xb8, 0x3e, 0x19, 0x30, 0x19, 0xa6, 0x3e, 0x0e, 0xc4, 0xbd, 0xe3, 0x33, 0xe9, + 0x93, 0xdb, 0x01, 0x4d, 0x7e, 0x5e, 0x41, 0x48, 0x18, 0x77, 0x9e, 0x9c, 0xc2, 0x59, 0xc8, 0x49, + 0x4c, 0x93, 0xc5, 0x71, 0xf8, 0x96, 0xba, 0x8c, 0xe3, 0xcf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x06, + 0x9f, 0xd3, 0x47, 0x68, 0x03, 0x00, 0x00, +} + +func (m *TokenizationPacketData) 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 *TokenizationPacketData) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *TokenizationPacketData) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Packet != nil { + { + size := m.Packet.Size() + i -= size + if _, err := m.Packet.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + } + } + return len(dAtA) - i, nil +} + +func (m *TokenizationPacketData_NoData) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *TokenizationPacketData_NoData) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.NoData != nil { + { + size, err := m.NoData.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPacket(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} +func (m *TokenizationPacketData_OwnershipQuery) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *TokenizationPacketData_OwnershipQuery) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.OwnershipQuery != nil { + { + size, err := m.OwnershipQuery.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPacket(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + return len(dAtA) - i, nil +} +func (m *TokenizationPacketData_OwnershipQueryResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *TokenizationPacketData_OwnershipQueryResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.OwnershipQueryResponse != nil { + { + size, err := m.OwnershipQueryResponse.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPacket(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + return len(dAtA) - i, nil +} +func (m *TokenizationPacketData_BulkOwnershipQuery) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *TokenizationPacketData_BulkOwnershipQuery) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.BulkOwnershipQuery != nil { + { + size, err := m.BulkOwnershipQuery.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPacket(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + return len(dAtA) - i, nil +} +func (m *TokenizationPacketData_BulkOwnershipQueryResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *TokenizationPacketData_BulkOwnershipQueryResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.BulkOwnershipQueryResponse != nil { + { + size, err := m.BulkOwnershipQueryResponse.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPacket(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + return len(dAtA) - i, nil +} +func (m *TokenizationPacketData_FullBalanceQuery) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *TokenizationPacketData_FullBalanceQuery) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.FullBalanceQuery != nil { + { + size, err := m.FullBalanceQuery.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPacket(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + return len(dAtA) - i, nil +} +func (m *TokenizationPacketData_FullBalanceQueryResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *TokenizationPacketData_FullBalanceQueryResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + if m.FullBalanceQueryResponse != nil { + { + size, err := m.FullBalanceQueryResponse.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPacket(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + return len(dAtA) - i, nil +} +func (m *NoData) 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 *NoData) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *NoData) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func encodeVarintPacket(dAtA []byte, offset int, v uint64) int { + offset -= sovPacket(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *TokenizationPacketData) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Packet != nil { + n += m.Packet.Size() + } + return n +} + +func (m *TokenizationPacketData_NoData) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.NoData != nil { + l = m.NoData.Size() + n += 1 + l + sovPacket(uint64(l)) + } + return n +} +func (m *TokenizationPacketData_OwnershipQuery) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.OwnershipQuery != nil { + l = m.OwnershipQuery.Size() + n += 1 + l + sovPacket(uint64(l)) + } + return n +} +func (m *TokenizationPacketData_OwnershipQueryResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.OwnershipQueryResponse != nil { + l = m.OwnershipQueryResponse.Size() + n += 1 + l + sovPacket(uint64(l)) + } + return n +} +func (m *TokenizationPacketData_BulkOwnershipQuery) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.BulkOwnershipQuery != nil { + l = m.BulkOwnershipQuery.Size() + n += 1 + l + sovPacket(uint64(l)) + } + return n +} +func (m *TokenizationPacketData_BulkOwnershipQueryResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.BulkOwnershipQueryResponse != nil { + l = m.BulkOwnershipQueryResponse.Size() + n += 1 + l + sovPacket(uint64(l)) + } + return n +} +func (m *TokenizationPacketData_FullBalanceQuery) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.FullBalanceQuery != nil { + l = m.FullBalanceQuery.Size() + n += 1 + l + sovPacket(uint64(l)) + } + return n +} +func (m *TokenizationPacketData_FullBalanceQueryResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.FullBalanceQueryResponse != nil { + l = m.FullBalanceQueryResponse.Size() + n += 1 + l + sovPacket(uint64(l)) + } + return n +} +func (m *NoData) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func sovPacket(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozPacket(x uint64) (n int) { + return sovPacket(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *TokenizationPacketData) 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 ErrIntOverflowPacket + } + 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: TokenizationPacketData: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TokenizationPacketData: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NoData", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPacket + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPacket + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPacket + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &NoData{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Packet = &TokenizationPacketData_NoData{v} + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OwnershipQuery", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPacket + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPacket + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPacket + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &OwnershipQueryPacket{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Packet = &TokenizationPacketData_OwnershipQuery{v} + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OwnershipQueryResponse", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPacket + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPacket + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPacket + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &OwnershipQueryResponsePacket{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Packet = &TokenizationPacketData_OwnershipQueryResponse{v} + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BulkOwnershipQuery", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPacket + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPacket + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPacket + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &BulkOwnershipQueryPacket{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Packet = &TokenizationPacketData_BulkOwnershipQuery{v} + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BulkOwnershipQueryResponse", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPacket + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPacket + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPacket + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &BulkOwnershipQueryResponsePacket{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Packet = &TokenizationPacketData_BulkOwnershipQueryResponse{v} + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FullBalanceQuery", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPacket + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPacket + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPacket + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &FullBalanceQueryPacket{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Packet = &TokenizationPacketData_FullBalanceQuery{v} + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FullBalanceQueryResponse", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPacket + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPacket + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPacket + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + v := &FullBalanceQueryResponsePacket{} + if err := v.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Packet = &TokenizationPacketData_FullBalanceQueryResponse{v} + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipPacket(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPacket + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *NoData) 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 ErrIntOverflowPacket + } + 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: NoData: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: NoData: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipPacket(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPacket + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipPacket(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, ErrIntOverflowPacket + } + 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, ErrIntOverflowPacket + } + 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, ErrIntOverflowPacket + } + 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, ErrInvalidLengthPacket + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupPacket + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthPacket + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthPacket = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowPacket = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupPacket = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/tokenization/types/v29/params.pb.go b/x/tokenization/types/v29/params.pb.go new file mode 100644 index 00000000..1ab7e7a0 --- /dev/null +++ b/x/tokenization/types/v29/params.pb.go @@ -0,0 +1,409 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: tokenization/v29/params.proto + +package v29 + +import ( + fmt "fmt" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + _ "github.com/cosmos/gogoproto/gogoproto" + 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 + +// Params defines the parameters for the module. +type Params struct { + // allowed_denoms defines the list of denoms that are allowed to be used in coin_transfers + AllowedDenoms []string `protobuf:"bytes,1,rep,name=allowed_denoms,json=allowedDenoms,proto3" json:"allowed_denoms,omitempty"` + // affiliate_percentage defines the percentage of the transfer amount that goes to the affiliate + AffiliatePercentage Uint `protobuf:"bytes,2,opt,name=affiliate_percentage,json=affiliatePercentage,proto3,customtype=Uint" json:"affiliate_percentage"` +} + +func (m *Params) Reset() { *m = Params{} } +func (m *Params) String() string { return proto.CompactTextString(m) } +func (*Params) ProtoMessage() {} +func (*Params) Descriptor() ([]byte, []int) { + return fileDescriptor_03f2c38239fdd4eb, []int{0} +} +func (m *Params) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Params) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Params.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 *Params) XXX_Merge(src proto.Message) { + xxx_messageInfo_Params.Merge(m, src) +} +func (m *Params) XXX_Size() int { + return m.Size() +} +func (m *Params) XXX_DiscardUnknown() { + xxx_messageInfo_Params.DiscardUnknown(m) +} + +var xxx_messageInfo_Params proto.InternalMessageInfo + +func (m *Params) GetAllowedDenoms() []string { + if m != nil { + return m.AllowedDenoms + } + return nil +} + +func init() { + proto.RegisterType((*Params)(nil), "tokenization.v29.Params") +} + +func init() { proto.RegisterFile("tokenization/v29/params.proto", fileDescriptor_03f2c38239fdd4eb) } + +var fileDescriptor_03f2c38239fdd4eb = []byte{ + // 268 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x2d, 0xc9, 0xcf, 0x4e, + 0xcd, 0xcb, 0xac, 0x4a, 0x2c, 0xc9, 0xcc, 0xcf, 0xd3, 0x2f, 0x33, 0xb2, 0xd4, 0x2f, 0x48, 0x2c, + 0x4a, 0xcc, 0x2d, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x40, 0x96, 0xd6, 0x2b, 0x33, + 0xb2, 0x94, 0x12, 0x4c, 0xcc, 0xcd, 0xcc, 0xcb, 0xd7, 0x07, 0x93, 0x10, 0x45, 0x52, 0x22, 0xe9, + 0xf9, 0xe9, 0xf9, 0x60, 0xa6, 0x3e, 0x88, 0x05, 0x11, 0x55, 0xda, 0xc2, 0xc8, 0xc5, 0x16, 0x00, + 0x36, 0x4b, 0x48, 0x95, 0x8b, 0x2f, 0x31, 0x27, 0x27, 0xbf, 0x3c, 0x35, 0x25, 0x3e, 0x25, 0x35, + 0x2f, 0x3f, 0xb7, 0x58, 0x82, 0x51, 0x81, 0x59, 0x83, 0x33, 0x88, 0x17, 0x2a, 0xea, 0x02, 0x16, + 0x14, 0xb2, 0xe7, 0x12, 0x49, 0x4c, 0x4b, 0xcb, 0xcc, 0xc9, 0x4c, 0x2c, 0x49, 0x8d, 0x2f, 0x48, + 0x2d, 0x4a, 0x4e, 0xcd, 0x2b, 0x49, 0x4c, 0x4f, 0x95, 0x60, 0x52, 0x60, 0xd4, 0xe0, 0x74, 0xe2, + 0x39, 0x71, 0x4f, 0x9e, 0xe1, 0xd6, 0x3d, 0x79, 0x96, 0xd0, 0xcc, 0xbc, 0x92, 0x20, 0x61, 0xb8, + 0xca, 0x00, 0xb8, 0x42, 0x2b, 0xa7, 0x17, 0x0b, 0xe4, 0x19, 0xbb, 0x9e, 0x6f, 0xd0, 0xb2, 0x4c, + 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0xd2, 0x4b, 0xce, 0xcf, 0xd5, 0x4f, 0xca, 0x2c, 0x49, 0x4a, 0x4c, + 0x49, 0x4f, 0x2d, 0x46, 0xb0, 0x92, 0x33, 0x12, 0x33, 0xf3, 0xf4, 0x2b, 0xf4, 0x51, 0xfc, 0x0e, + 0x71, 0xab, 0x53, 0xd8, 0x89, 0x47, 0x72, 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, + 0x38, 0xe1, 0xb1, 0x1c, 0xc3, 0x85, 0xc7, 0x72, 0x0c, 0x37, 0x1e, 0xcb, 0x31, 0x44, 0xd9, 0x90, + 0x61, 0x68, 0x49, 0x65, 0x41, 0x6a, 0x31, 0x28, 0x58, 0x93, 0xd8, 0xc0, 0xa1, 0x62, 0x0c, 0x08, + 0x00, 0x00, 0xff, 0xff, 0x6e, 0x8b, 0xb3, 0x7d, 0x71, 0x01, 0x00, 0x00, +} + +func (this *Params) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*Params) + if !ok { + that2, ok := that.(Params) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if len(this.AllowedDenoms) != len(that1.AllowedDenoms) { + return false + } + for i := range this.AllowedDenoms { + if this.AllowedDenoms[i] != that1.AllowedDenoms[i] { + return false + } + } + if !this.AffiliatePercentage.Equal(that1.AffiliatePercentage) { + return false + } + return true +} +func (m *Params) 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 *Params) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.AffiliatePercentage.Size() + i -= size + if _, err := m.AffiliatePercentage.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintParams(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.AllowedDenoms) > 0 { + for iNdEx := len(m.AllowedDenoms) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.AllowedDenoms[iNdEx]) + copy(dAtA[i:], m.AllowedDenoms[iNdEx]) + i = encodeVarintParams(dAtA, i, uint64(len(m.AllowedDenoms[iNdEx]))) + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func encodeVarintParams(dAtA []byte, offset int, v uint64) int { + offset -= sovParams(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *Params) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.AllowedDenoms) > 0 { + for _, s := range m.AllowedDenoms { + l = len(s) + n += 1 + l + sovParams(uint64(l)) + } + } + l = m.AffiliatePercentage.Size() + n += 1 + l + sovParams(uint64(l)) + return n +} + +func sovParams(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozParams(x uint64) (n int) { + return sovParams(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +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 ErrIntOverflowParams + } + 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 != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AllowedDenoms", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowParams + } + 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 ErrInvalidLengthParams + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthParams + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AllowedDenoms = append(m.AllowedDenoms, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AffiliatePercentage", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowParams + } + 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 ErrInvalidLengthParams + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthParams + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.AffiliatePercentage.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipParams(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthParams + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipParams(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, ErrIntOverflowParams + } + 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, ErrIntOverflowParams + } + 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, ErrIntOverflowParams + } + 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, ErrInvalidLengthParams + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupParams + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthParams + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthParams = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowParams = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupParams = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/tokenization/types/v29/permissions.pb.go b/x/tokenization/types/v29/permissions.pb.go new file mode 100644 index 00000000..254a1059 --- /dev/null +++ b/x/tokenization/types/v29/permissions.pb.go @@ -0,0 +1,3874 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: tokenization/v29/permissions.proto + +package v29 + +import ( + fmt "fmt" + _ "github.com/cosmos/cosmos-sdk/codec/types" + _ "github.com/cosmos/gogoproto/gogoproto" + 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 + +// CollectionPermissions defines the permissions for the collection (i.e., what the manager can and cannot do). +// +// There are three types of permissions for a collection: ActionPermission, TokenIdsActionPermission, and CollectionApprovalPermission. +// +// The permission type allows fine-grained access control for each action. +// - ActionPermission: defines when the manager can perform an action or update a field. +// - TokenIdsActionPermission: defines when the manager can perform an action for specific tokens +// - CollectionApprovalPermission: defines when the manager can update the transferability of the collection and what transfers can be updated vs. locked. +// +// Note there are a few different times here which could get confusing: +// - permanentlyPermitted/ForbiddenTimes - the times that a permission can be performed +// - transferTimes - the times that a transfer occurs +// - ownershipTimes - the times when a token is owned by a user +// +// The permitted/permanentlyForbiddenTimes are used to determine when a permission can be executed. +// Once a time is set to be permitted or forbidden, it is PERMANENT and cannot be changed. +// If a time is not set to be permitted or forbidden, it is considered NEUTRAL and can be updated but is ALLOWED by default. +// +// IMPORTANT: We take first-match only for the permissions. This means that if you forbid time T in array index 0 and permit time T in index 1, +// we will only check the first permission (forbid time T) and not the second permission (permit time T). +type CollectionPermissions struct { + // Permissions related to deleting the collection. + CanDeleteCollection []*ActionPermission `protobuf:"bytes,1,rep,name=canDeleteCollection,proto3" json:"canDeleteCollection,omitempty"` + // Permissions related to archiving the collection. + CanArchiveCollection []*ActionPermission `protobuf:"bytes,2,rep,name=canArchiveCollection,proto3" json:"canArchiveCollection,omitempty"` + // Permissions related to updating standards for the collection. + CanUpdateStandards []*ActionPermission `protobuf:"bytes,3,rep,name=canUpdateStandards,proto3" json:"canUpdateStandards,omitempty"` + // Permissions related to updating custom data for the collection. + CanUpdateCustomData []*ActionPermission `protobuf:"bytes,4,rep,name=canUpdateCustomData,proto3" json:"canUpdateCustomData,omitempty"` + // Permissions related to updating the collection's manager. + CanUpdateManager []*ActionPermission `protobuf:"bytes,5,rep,name=canUpdateManager,proto3" json:"canUpdateManager,omitempty"` + // Permissions related to updating the metadata of the collection. + CanUpdateCollectionMetadata []*ActionPermission `protobuf:"bytes,6,rep,name=canUpdateCollectionMetadata,proto3" json:"canUpdateCollectionMetadata,omitempty"` + // Permissions related to creating more tokens for the collection. + CanUpdateValidTokenIds []*TokenIdsActionPermission `protobuf:"bytes,7,rep,name=canUpdateValidTokenIds,proto3" json:"canUpdateValidTokenIds,omitempty"` + // Permissions related to updating token metadata for specific tokens. + CanUpdateTokenMetadata []*TokenIdsActionPermission `protobuf:"bytes,8,rep,name=canUpdateTokenMetadata,proto3" json:"canUpdateTokenMetadata,omitempty"` + // Permissions related to updating collection approvals. + CanUpdateCollectionApprovals []*CollectionApprovalPermission `protobuf:"bytes,9,rep,name=canUpdateCollectionApprovals,proto3" json:"canUpdateCollectionApprovals,omitempty"` + // Permissions related to adding more alias paths to the collection. + CanAddMoreAliasPaths []*ActionPermission `protobuf:"bytes,10,rep,name=canAddMoreAliasPaths,proto3" json:"canAddMoreAliasPaths,omitempty"` + // Permissions related to adding more cosmos coin wrapper paths to the collection. + CanAddMoreCosmosCoinWrapperPaths []*ActionPermission `protobuf:"bytes,11,rep,name=canAddMoreCosmosCoinWrapperPaths,proto3" json:"canAddMoreCosmosCoinWrapperPaths,omitempty"` +} + +func (m *CollectionPermissions) Reset() { *m = CollectionPermissions{} } +func (m *CollectionPermissions) String() string { return proto.CompactTextString(m) } +func (*CollectionPermissions) ProtoMessage() {} +func (*CollectionPermissions) Descriptor() ([]byte, []int) { + return fileDescriptor_5423cbeefe93fa74, []int{0} +} +func (m *CollectionPermissions) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CollectionPermissions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CollectionPermissions.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 *CollectionPermissions) XXX_Merge(src proto.Message) { + xxx_messageInfo_CollectionPermissions.Merge(m, src) +} +func (m *CollectionPermissions) XXX_Size() int { + return m.Size() +} +func (m *CollectionPermissions) XXX_DiscardUnknown() { + xxx_messageInfo_CollectionPermissions.DiscardUnknown(m) +} + +var xxx_messageInfo_CollectionPermissions proto.InternalMessageInfo + +func (m *CollectionPermissions) GetCanDeleteCollection() []*ActionPermission { + if m != nil { + return m.CanDeleteCollection + } + return nil +} + +func (m *CollectionPermissions) GetCanArchiveCollection() []*ActionPermission { + if m != nil { + return m.CanArchiveCollection + } + return nil +} + +func (m *CollectionPermissions) GetCanUpdateStandards() []*ActionPermission { + if m != nil { + return m.CanUpdateStandards + } + return nil +} + +func (m *CollectionPermissions) GetCanUpdateCustomData() []*ActionPermission { + if m != nil { + return m.CanUpdateCustomData + } + return nil +} + +func (m *CollectionPermissions) GetCanUpdateManager() []*ActionPermission { + if m != nil { + return m.CanUpdateManager + } + return nil +} + +func (m *CollectionPermissions) GetCanUpdateCollectionMetadata() []*ActionPermission { + if m != nil { + return m.CanUpdateCollectionMetadata + } + return nil +} + +func (m *CollectionPermissions) GetCanUpdateValidTokenIds() []*TokenIdsActionPermission { + if m != nil { + return m.CanUpdateValidTokenIds + } + return nil +} + +func (m *CollectionPermissions) GetCanUpdateTokenMetadata() []*TokenIdsActionPermission { + if m != nil { + return m.CanUpdateTokenMetadata + } + return nil +} + +func (m *CollectionPermissions) GetCanUpdateCollectionApprovals() []*CollectionApprovalPermission { + if m != nil { + return m.CanUpdateCollectionApprovals + } + return nil +} + +func (m *CollectionPermissions) GetCanAddMoreAliasPaths() []*ActionPermission { + if m != nil { + return m.CanAddMoreAliasPaths + } + return nil +} + +func (m *CollectionPermissions) GetCanAddMoreCosmosCoinWrapperPaths() []*ActionPermission { + if m != nil { + return m.CanAddMoreCosmosCoinWrapperPaths + } + return nil +} + +// UserPermissions defines the permissions for the user about their approvals (i.e., what the user can and cannot do). +// +// See CollectionPermissions for more details on the different types of permissions. +// +// canUpdateOutgoingApprovals and canUpdateOutgoingApprovals follow the same as the canUpdateCollectionApprovals in CollectionPermissions, +// but certain fields are removed because they are not relevant to the user. +type UserPermissions struct { + // Permissions related to updating the user's approved outgoing transfers. + CanUpdateOutgoingApprovals []*UserOutgoingApprovalPermission `protobuf:"bytes,1,rep,name=canUpdateOutgoingApprovals,proto3" json:"canUpdateOutgoingApprovals,omitempty"` + // Permissions related to updating the user's approved incoming transfers. + CanUpdateIncomingApprovals []*UserIncomingApprovalPermission `protobuf:"bytes,2,rep,name=canUpdateIncomingApprovals,proto3" json:"canUpdateIncomingApprovals,omitempty"` + // Permissions related to updating auto-approval settings for self-initiated outgoing transfers (whether they are allowed by default). + CanUpdateAutoApproveSelfInitiatedOutgoingTransfers []*ActionPermission `protobuf:"bytes,3,rep,name=canUpdateAutoApproveSelfInitiatedOutgoingTransfers,proto3" json:"canUpdateAutoApproveSelfInitiatedOutgoingTransfers,omitempty"` + // Permissions related to updating auto-approval settings for self-initiated incoming transfers (whether they are allowed by default). + CanUpdateAutoApproveSelfInitiatedIncomingTransfers []*ActionPermission `protobuf:"bytes,4,rep,name=canUpdateAutoApproveSelfInitiatedIncomingTransfers,proto3" json:"canUpdateAutoApproveSelfInitiatedIncomingTransfers,omitempty"` + // Permissions related to updating auto-approval settings for all incoming transfers (whether they are allowed by default). + CanUpdateAutoApproveAllIncomingTransfers []*ActionPermission `protobuf:"bytes,5,rep,name=canUpdateAutoApproveAllIncomingTransfers,proto3" json:"canUpdateAutoApproveAllIncomingTransfers,omitempty"` +} + +func (m *UserPermissions) Reset() { *m = UserPermissions{} } +func (m *UserPermissions) String() string { return proto.CompactTextString(m) } +func (*UserPermissions) ProtoMessage() {} +func (*UserPermissions) Descriptor() ([]byte, []int) { + return fileDescriptor_5423cbeefe93fa74, []int{1} +} +func (m *UserPermissions) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *UserPermissions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_UserPermissions.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 *UserPermissions) XXX_Merge(src proto.Message) { + xxx_messageInfo_UserPermissions.Merge(m, src) +} +func (m *UserPermissions) XXX_Size() int { + return m.Size() +} +func (m *UserPermissions) XXX_DiscardUnknown() { + xxx_messageInfo_UserPermissions.DiscardUnknown(m) +} + +var xxx_messageInfo_UserPermissions proto.InternalMessageInfo + +func (m *UserPermissions) GetCanUpdateOutgoingApprovals() []*UserOutgoingApprovalPermission { + if m != nil { + return m.CanUpdateOutgoingApprovals + } + return nil +} + +func (m *UserPermissions) GetCanUpdateIncomingApprovals() []*UserIncomingApprovalPermission { + if m != nil { + return m.CanUpdateIncomingApprovals + } + return nil +} + +func (m *UserPermissions) GetCanUpdateAutoApproveSelfInitiatedOutgoingTransfers() []*ActionPermission { + if m != nil { + return m.CanUpdateAutoApproveSelfInitiatedOutgoingTransfers + } + return nil +} + +func (m *UserPermissions) GetCanUpdateAutoApproveSelfInitiatedIncomingTransfers() []*ActionPermission { + if m != nil { + return m.CanUpdateAutoApproveSelfInitiatedIncomingTransfers + } + return nil +} + +func (m *UserPermissions) GetCanUpdateAutoApproveAllIncomingTransfers() []*ActionPermission { + if m != nil { + return m.CanUpdateAutoApproveAllIncomingTransfers + } + return nil +} + +// CollectionApprovalPermission defines what collection approved transfers can be updated vs. are locked. +// +// Each transfer is broken down to a (from, to, initiatedBy, transferTime, tokenId) tuple. +// For a transfer to match, we need to match ALL of the fields in the combination. +// These are determined by the fromListId, toListId, initiatedByListId, transferTimes, tokenIds fields. +// AddressLists are used for (from, to, initiatedBy) which are a permanent list of addresses identified by an ID (see AddressLists). +// +// permanentlyPermitted/ForbiddenTimes: when can the manager execute this permission? +// +// Ex: Let's say we are updating the transferability for the transfer tuple ("AllWithoutMint", "AllWithoutMint", "AllWithoutMint", 10, 1000). +// We would check to find the FIRST CollectionApprovalPermission that matches this combination. +// If we find a match, we would check the permitted/forbidden times to see if we can execute this permission (default is ALLOWED). +// +// Ex: So if you wanted to freeze the transferability to enforce that token ID 1 will always be transferable, you could set +// the combination ("AllWithoutMint", "AllWithoutMint", "AllWithoutMint", "All Transfer Times", 1) to always be forbidden. +type CollectionApprovalPermission struct { + // Identifier for the sender list. + FromListId string `protobuf:"bytes,1,opt,name=fromListId,proto3" json:"fromListId,omitempty"` + // Identifier for the recipient list. + ToListId string `protobuf:"bytes,2,opt,name=toListId,proto3" json:"toListId,omitempty"` + // Identifier for the initiator list (who is approved?). + InitiatedByListId string `protobuf:"bytes,3,opt,name=initiatedByListId,proto3" json:"initiatedByListId,omitempty"` + // Specifies the times when the transfer can occur. + TransferTimes []*UintRange `protobuf:"bytes,4,rep,name=transferTimes,proto3" json:"transferTimes,omitempty"` + // Specifies the token IDs involved in the transfer. + TokenIds []*UintRange `protobuf:"bytes,5,rep,name=tokenIds,proto3" json:"tokenIds,omitempty"` + // Specifies the ownership times for the tokens in the transfer. + OwnershipTimes []*UintRange `protobuf:"bytes,6,rep,name=ownershipTimes,proto3" json:"ownershipTimes,omitempty"` + // Identifier for the approvalId. You can use "All" or "!approvalId" for shorthand. + // If you use "All", this approval will match to all approvalIds. + // If you use "!approvalId", this approval will match to all approvalIds except for approvalId. + // If you use "approvalId", this approval will match to only the specified approvalId and fail on all others. + ApprovalId string `protobuf:"bytes,7,opt,name=approvalId,proto3" json:"approvalId,omitempty"` + // Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes. + PermanentlyPermittedTimes []*UintRange `protobuf:"bytes,8,rep,name=permanentlyPermittedTimes,proto3" json:"permanentlyPermittedTimes,omitempty"` + // Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes. + PermanentlyForbiddenTimes []*UintRange `protobuf:"bytes,9,rep,name=permanentlyForbiddenTimes,proto3" json:"permanentlyForbiddenTimes,omitempty"` +} + +func (m *CollectionApprovalPermission) Reset() { *m = CollectionApprovalPermission{} } +func (m *CollectionApprovalPermission) String() string { return proto.CompactTextString(m) } +func (*CollectionApprovalPermission) ProtoMessage() {} +func (*CollectionApprovalPermission) Descriptor() ([]byte, []int) { + return fileDescriptor_5423cbeefe93fa74, []int{2} +} +func (m *CollectionApprovalPermission) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CollectionApprovalPermission) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CollectionApprovalPermission.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 *CollectionApprovalPermission) XXX_Merge(src proto.Message) { + xxx_messageInfo_CollectionApprovalPermission.Merge(m, src) +} +func (m *CollectionApprovalPermission) XXX_Size() int { + return m.Size() +} +func (m *CollectionApprovalPermission) XXX_DiscardUnknown() { + xxx_messageInfo_CollectionApprovalPermission.DiscardUnknown(m) +} + +var xxx_messageInfo_CollectionApprovalPermission proto.InternalMessageInfo + +func (m *CollectionApprovalPermission) GetFromListId() string { + if m != nil { + return m.FromListId + } + return "" +} + +func (m *CollectionApprovalPermission) GetToListId() string { + if m != nil { + return m.ToListId + } + return "" +} + +func (m *CollectionApprovalPermission) GetInitiatedByListId() string { + if m != nil { + return m.InitiatedByListId + } + return "" +} + +func (m *CollectionApprovalPermission) GetTransferTimes() []*UintRange { + if m != nil { + return m.TransferTimes + } + return nil +} + +func (m *CollectionApprovalPermission) GetTokenIds() []*UintRange { + if m != nil { + return m.TokenIds + } + return nil +} + +func (m *CollectionApprovalPermission) GetOwnershipTimes() []*UintRange { + if m != nil { + return m.OwnershipTimes + } + return nil +} + +func (m *CollectionApprovalPermission) GetApprovalId() string { + if m != nil { + return m.ApprovalId + } + return "" +} + +func (m *CollectionApprovalPermission) GetPermanentlyPermittedTimes() []*UintRange { + if m != nil { + return m.PermanentlyPermittedTimes + } + return nil +} + +func (m *CollectionApprovalPermission) GetPermanentlyForbiddenTimes() []*UintRange { + if m != nil { + return m.PermanentlyForbiddenTimes + } + return nil +} + +// UserOutgoingApprovalPermission defines the permissions for updating the user's approved outgoing transfers. +type UserOutgoingApprovalPermission struct { + // Identifier for the recipient list. + ToListId string `protobuf:"bytes,1,opt,name=toListId,proto3" json:"toListId,omitempty"` + // Identifier for the initiator list (who is approved?). + InitiatedByListId string `protobuf:"bytes,2,opt,name=initiatedByListId,proto3" json:"initiatedByListId,omitempty"` + // Specifies the times when the transfer can occur. + TransferTimes []*UintRange `protobuf:"bytes,3,rep,name=transferTimes,proto3" json:"transferTimes,omitempty"` + // Specifies the token IDs involved in the transfer. + TokenIds []*UintRange `protobuf:"bytes,4,rep,name=tokenIds,proto3" json:"tokenIds,omitempty"` + // Specifies the ownership times for the tokens in the transfer. + OwnershipTimes []*UintRange `protobuf:"bytes,5,rep,name=ownershipTimes,proto3" json:"ownershipTimes,omitempty"` + // Identifier for the approvalId. You can use "All" or "!approvalId" for shorthand. + // If you use "All", this approval will match to all approvalIds. + // If you use "!approvalId", this approval will match to all approvalIds except for approvalId. + // If you use "approvalId", this approval will match to only the specified approvalId and fail on all others. + ApprovalId string `protobuf:"bytes,6,opt,name=approvalId,proto3" json:"approvalId,omitempty"` + // Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes. + PermanentlyPermittedTimes []*UintRange `protobuf:"bytes,7,rep,name=permanentlyPermittedTimes,proto3" json:"permanentlyPermittedTimes,omitempty"` + // Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes. + PermanentlyForbiddenTimes []*UintRange `protobuf:"bytes,8,rep,name=permanentlyForbiddenTimes,proto3" json:"permanentlyForbiddenTimes,omitempty"` +} + +func (m *UserOutgoingApprovalPermission) Reset() { *m = UserOutgoingApprovalPermission{} } +func (m *UserOutgoingApprovalPermission) String() string { return proto.CompactTextString(m) } +func (*UserOutgoingApprovalPermission) ProtoMessage() {} +func (*UserOutgoingApprovalPermission) Descriptor() ([]byte, []int) { + return fileDescriptor_5423cbeefe93fa74, []int{3} +} +func (m *UserOutgoingApprovalPermission) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *UserOutgoingApprovalPermission) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_UserOutgoingApprovalPermission.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 *UserOutgoingApprovalPermission) XXX_Merge(src proto.Message) { + xxx_messageInfo_UserOutgoingApprovalPermission.Merge(m, src) +} +func (m *UserOutgoingApprovalPermission) XXX_Size() int { + return m.Size() +} +func (m *UserOutgoingApprovalPermission) XXX_DiscardUnknown() { + xxx_messageInfo_UserOutgoingApprovalPermission.DiscardUnknown(m) +} + +var xxx_messageInfo_UserOutgoingApprovalPermission proto.InternalMessageInfo + +func (m *UserOutgoingApprovalPermission) GetToListId() string { + if m != nil { + return m.ToListId + } + return "" +} + +func (m *UserOutgoingApprovalPermission) GetInitiatedByListId() string { + if m != nil { + return m.InitiatedByListId + } + return "" +} + +func (m *UserOutgoingApprovalPermission) GetTransferTimes() []*UintRange { + if m != nil { + return m.TransferTimes + } + return nil +} + +func (m *UserOutgoingApprovalPermission) GetTokenIds() []*UintRange { + if m != nil { + return m.TokenIds + } + return nil +} + +func (m *UserOutgoingApprovalPermission) GetOwnershipTimes() []*UintRange { + if m != nil { + return m.OwnershipTimes + } + return nil +} + +func (m *UserOutgoingApprovalPermission) GetApprovalId() string { + if m != nil { + return m.ApprovalId + } + return "" +} + +func (m *UserOutgoingApprovalPermission) GetPermanentlyPermittedTimes() []*UintRange { + if m != nil { + return m.PermanentlyPermittedTimes + } + return nil +} + +func (m *UserOutgoingApprovalPermission) GetPermanentlyForbiddenTimes() []*UintRange { + if m != nil { + return m.PermanentlyForbiddenTimes + } + return nil +} + +// UserIncomingApprovalPermission defines the permissions for updating the user's approved incoming transfers. +// +// See CollectionApprovalPermission for more details. This is equivalent without the toListId field because that is always the user. +type UserIncomingApprovalPermission struct { + // Identifier for the sender list. + FromListId string `protobuf:"bytes,1,opt,name=fromListId,proto3" json:"fromListId,omitempty"` + // Identifier for the initiator list (who is approved?). + InitiatedByListId string `protobuf:"bytes,2,opt,name=initiatedByListId,proto3" json:"initiatedByListId,omitempty"` + // Specifies the times when the transfer can occur. + TransferTimes []*UintRange `protobuf:"bytes,3,rep,name=transferTimes,proto3" json:"transferTimes,omitempty"` + // Specifies the token IDs involved in the transfer. + TokenIds []*UintRange `protobuf:"bytes,4,rep,name=tokenIds,proto3" json:"tokenIds,omitempty"` + // Specifies the ownership times for the tokens in the transfer. + OwnershipTimes []*UintRange `protobuf:"bytes,5,rep,name=ownershipTimes,proto3" json:"ownershipTimes,omitempty"` + // Identifier for the approvalId. You can use "All" or "!approvalId" for shorthand. + // If you use "All", this approval will match to all approvalIds. + // If you use "!approvalId", this approval will match to all approvalIds except for approvalId. + // If you use "approvalId", this approval will match to only the specified approvalId and fail on all others. + ApprovalId string `protobuf:"bytes,6,opt,name=approvalId,proto3" json:"approvalId,omitempty"` + // Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes. + PermanentlyPermittedTimes []*UintRange `protobuf:"bytes,7,rep,name=permanentlyPermittedTimes,proto3" json:"permanentlyPermittedTimes,omitempty"` + // Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes. + PermanentlyForbiddenTimes []*UintRange `protobuf:"bytes,8,rep,name=permanentlyForbiddenTimes,proto3" json:"permanentlyForbiddenTimes,omitempty"` +} + +func (m *UserIncomingApprovalPermission) Reset() { *m = UserIncomingApprovalPermission{} } +func (m *UserIncomingApprovalPermission) String() string { return proto.CompactTextString(m) } +func (*UserIncomingApprovalPermission) ProtoMessage() {} +func (*UserIncomingApprovalPermission) Descriptor() ([]byte, []int) { + return fileDescriptor_5423cbeefe93fa74, []int{4} +} +func (m *UserIncomingApprovalPermission) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *UserIncomingApprovalPermission) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_UserIncomingApprovalPermission.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 *UserIncomingApprovalPermission) XXX_Merge(src proto.Message) { + xxx_messageInfo_UserIncomingApprovalPermission.Merge(m, src) +} +func (m *UserIncomingApprovalPermission) XXX_Size() int { + return m.Size() +} +func (m *UserIncomingApprovalPermission) XXX_DiscardUnknown() { + xxx_messageInfo_UserIncomingApprovalPermission.DiscardUnknown(m) +} + +var xxx_messageInfo_UserIncomingApprovalPermission proto.InternalMessageInfo + +func (m *UserIncomingApprovalPermission) GetFromListId() string { + if m != nil { + return m.FromListId + } + return "" +} + +func (m *UserIncomingApprovalPermission) GetInitiatedByListId() string { + if m != nil { + return m.InitiatedByListId + } + return "" +} + +func (m *UserIncomingApprovalPermission) GetTransferTimes() []*UintRange { + if m != nil { + return m.TransferTimes + } + return nil +} + +func (m *UserIncomingApprovalPermission) GetTokenIds() []*UintRange { + if m != nil { + return m.TokenIds + } + return nil +} + +func (m *UserIncomingApprovalPermission) GetOwnershipTimes() []*UintRange { + if m != nil { + return m.OwnershipTimes + } + return nil +} + +func (m *UserIncomingApprovalPermission) GetApprovalId() string { + if m != nil { + return m.ApprovalId + } + return "" +} + +func (m *UserIncomingApprovalPermission) GetPermanentlyPermittedTimes() []*UintRange { + if m != nil { + return m.PermanentlyPermittedTimes + } + return nil +} + +func (m *UserIncomingApprovalPermission) GetPermanentlyForbiddenTimes() []*UintRange { + if m != nil { + return m.PermanentlyForbiddenTimes + } + return nil +} + +// TokenIdsActionPermission defines the permissions for performing an action for specific tokens. +// Currently, this is only used for creating new tokens. +// +// Ex: If you want to lock the ability to create new tokens for tokenIds [1,2] at ownershipTimes 1/1/2020 - 1/1/2021, +// you could set the combination (tokenIds: [1,2], ownershipTimes: [1/1/2020 - 1/1/2021]) to always be forbidden. +type TokenIdsActionPermission struct { + // Specifies the token IDs involved in the transfer. + TokenIds []*UintRange `protobuf:"bytes,1,rep,name=tokenIds,proto3" json:"tokenIds,omitempty"` + // Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes. + PermanentlyPermittedTimes []*UintRange `protobuf:"bytes,2,rep,name=permanentlyPermittedTimes,proto3" json:"permanentlyPermittedTimes,omitempty"` + // Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes. + PermanentlyForbiddenTimes []*UintRange `protobuf:"bytes,3,rep,name=permanentlyForbiddenTimes,proto3" json:"permanentlyForbiddenTimes,omitempty"` +} + +func (m *TokenIdsActionPermission) Reset() { *m = TokenIdsActionPermission{} } +func (m *TokenIdsActionPermission) String() string { return proto.CompactTextString(m) } +func (*TokenIdsActionPermission) ProtoMessage() {} +func (*TokenIdsActionPermission) Descriptor() ([]byte, []int) { + return fileDescriptor_5423cbeefe93fa74, []int{5} +} +func (m *TokenIdsActionPermission) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *TokenIdsActionPermission) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_TokenIdsActionPermission.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 *TokenIdsActionPermission) XXX_Merge(src proto.Message) { + xxx_messageInfo_TokenIdsActionPermission.Merge(m, src) +} +func (m *TokenIdsActionPermission) XXX_Size() int { + return m.Size() +} +func (m *TokenIdsActionPermission) XXX_DiscardUnknown() { + xxx_messageInfo_TokenIdsActionPermission.DiscardUnknown(m) +} + +var xxx_messageInfo_TokenIdsActionPermission proto.InternalMessageInfo + +func (m *TokenIdsActionPermission) GetTokenIds() []*UintRange { + if m != nil { + return m.TokenIds + } + return nil +} + +func (m *TokenIdsActionPermission) GetPermanentlyPermittedTimes() []*UintRange { + if m != nil { + return m.PermanentlyPermittedTimes + } + return nil +} + +func (m *TokenIdsActionPermission) GetPermanentlyForbiddenTimes() []*UintRange { + if m != nil { + return m.PermanentlyForbiddenTimes + } + return nil +} + +// ActionPermission defines the permissions for performing an action. +// +// This is simple and straightforward as the only thing we need to check is the permitted/forbidden times. +type ActionPermission struct { + // Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes. + PermanentlyPermittedTimes []*UintRange `protobuf:"bytes,1,rep,name=permanentlyPermittedTimes,proto3" json:"permanentlyPermittedTimes,omitempty"` + // Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes. + PermanentlyForbiddenTimes []*UintRange `protobuf:"bytes,2,rep,name=permanentlyForbiddenTimes,proto3" json:"permanentlyForbiddenTimes,omitempty"` +} + +func (m *ActionPermission) Reset() { *m = ActionPermission{} } +func (m *ActionPermission) String() string { return proto.CompactTextString(m) } +func (*ActionPermission) ProtoMessage() {} +func (*ActionPermission) Descriptor() ([]byte, []int) { + return fileDescriptor_5423cbeefe93fa74, []int{6} +} +func (m *ActionPermission) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ActionPermission) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ActionPermission.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 *ActionPermission) XXX_Merge(src proto.Message) { + xxx_messageInfo_ActionPermission.Merge(m, src) +} +func (m *ActionPermission) XXX_Size() int { + return m.Size() +} +func (m *ActionPermission) XXX_DiscardUnknown() { + xxx_messageInfo_ActionPermission.DiscardUnknown(m) +} + +var xxx_messageInfo_ActionPermission proto.InternalMessageInfo + +func (m *ActionPermission) GetPermanentlyPermittedTimes() []*UintRange { + if m != nil { + return m.PermanentlyPermittedTimes + } + return nil +} + +func (m *ActionPermission) GetPermanentlyForbiddenTimes() []*UintRange { + if m != nil { + return m.PermanentlyForbiddenTimes + } + return nil +} + +func init() { + proto.RegisterType((*CollectionPermissions)(nil), "tokenization.v29.CollectionPermissions") + proto.RegisterType((*UserPermissions)(nil), "tokenization.v29.UserPermissions") + proto.RegisterType((*CollectionApprovalPermission)(nil), "tokenization.v29.CollectionApprovalPermission") + proto.RegisterType((*UserOutgoingApprovalPermission)(nil), "tokenization.v29.UserOutgoingApprovalPermission") + proto.RegisterType((*UserIncomingApprovalPermission)(nil), "tokenization.v29.UserIncomingApprovalPermission") + proto.RegisterType((*TokenIdsActionPermission)(nil), "tokenization.v29.TokenIdsActionPermission") + proto.RegisterType((*ActionPermission)(nil), "tokenization.v29.ActionPermission") +} + +func init() { + proto.RegisterFile("tokenization/v29/permissions.proto", fileDescriptor_5423cbeefe93fa74) +} + +var fileDescriptor_5423cbeefe93fa74 = []byte{ + // 845 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x57, 0x4d, 0x6f, 0xeb, 0x44, + 0x14, 0xad, 0xf3, 0xd5, 0x74, 0x9e, 0x80, 0x32, 0x3c, 0x90, 0x5f, 0xde, 0x93, 0xa9, 0x22, 0x16, + 0x15, 0x42, 0x31, 0x0a, 0x0b, 0xf4, 0x24, 0x36, 0x79, 0xa9, 0x90, 0x22, 0x51, 0xa8, 0xd2, 0xb4, + 0x08, 0x36, 0x68, 0xec, 0x99, 0x38, 0x23, 0x9c, 0x19, 0x6b, 0x66, 0x12, 0x08, 0x0b, 0x24, 0x16, + 0x2c, 0xd8, 0x21, 0xfe, 0x40, 0xd7, 0xfc, 0x93, 0x2e, 0xbb, 0x64, 0x89, 0xda, 0x3f, 0x82, 0xfc, + 0x11, 0x3b, 0xb6, 0x13, 0xc7, 0x21, 0x74, 0x83, 0xde, 0xce, 0x9d, 0xb9, 0xe7, 0x9c, 0x7b, 0x8f, + 0x4e, 0x6f, 0x6c, 0xd0, 0x56, 0xfc, 0x7b, 0xc2, 0xe8, 0x4f, 0x48, 0x51, 0xce, 0xcc, 0x79, 0xf7, + 0xa5, 0xe9, 0x11, 0x31, 0xa5, 0x52, 0x52, 0xce, 0x64, 0xc7, 0x13, 0x5c, 0x71, 0x78, 0xbc, 0x5a, + 0xd3, 0x99, 0x77, 0x5f, 0xb6, 0x9e, 0x39, 0x9c, 0x3b, 0x2e, 0x31, 0x83, 0x7b, 0x6b, 0x36, 0x36, + 0x11, 0x5b, 0x84, 0xc5, 0xad, 0xf7, 0x73, 0x84, 0x16, 0x72, 0x11, 0xb3, 0x49, 0xc4, 0xd6, 0xfa, + 0x20, 0x57, 0x80, 0x30, 0x16, 0x44, 0xca, 0xef, 0x5c, 0x2a, 0xd5, 0xb2, 0xea, 0xa9, 0xc3, 0x1d, + 0x1e, 0x3c, 0x9a, 0xfe, 0x53, 0x78, 0xda, 0xfe, 0xb3, 0x09, 0xde, 0xed, 0x73, 0xd7, 0x25, 0xb6, + 0x0f, 0xbe, 0x48, 0x3a, 0x85, 0x23, 0xf0, 0x8e, 0x8d, 0xd8, 0x19, 0x71, 0x89, 0x22, 0x49, 0x85, + 0xae, 0x9d, 0x54, 0x4f, 0x9f, 0x74, 0xdb, 0x9d, 0xec, 0x04, 0x9d, 0x5e, 0x86, 0x61, 0xb8, 0x0e, + 0x0e, 0xaf, 0xc1, 0x53, 0x1b, 0xb1, 0x9e, 0xb0, 0x27, 0x74, 0xbe, 0x4a, 0x5b, 0x29, 0x4d, 0xbb, + 0x16, 0x0f, 0x87, 0x00, 0xda, 0x88, 0x5d, 0x79, 0x18, 0x29, 0x72, 0xa9, 0x10, 0xc3, 0x48, 0x60, + 0xa9, 0x57, 0x4b, 0xb3, 0xae, 0x41, 0x47, 0x0e, 0x84, 0xa7, 0xfd, 0x99, 0x54, 0x7c, 0x7a, 0x86, + 0x14, 0xd2, 0x6b, 0x3b, 0x39, 0x90, 0x85, 0xc3, 0x2f, 0xc1, 0x71, 0x7c, 0x7c, 0x8e, 0x18, 0x72, + 0x88, 0xd0, 0xeb, 0xa5, 0x29, 0x73, 0x58, 0x88, 0xc1, 0xf3, 0x44, 0x26, 0x36, 0xe4, 0x9c, 0x28, + 0x84, 0xfd, 0x6e, 0x1b, 0xa5, 0xa9, 0x8b, 0x68, 0xa0, 0x05, 0xde, 0x8b, 0xaf, 0xaf, 0x91, 0x4b, + 0xf1, 0xc8, 0xe7, 0x1b, 0x60, 0xa9, 0x1f, 0x06, 0x02, 0x1f, 0xe6, 0x05, 0x96, 0x15, 0x39, 0xa1, + 0x0d, 0x4c, 0x29, 0x8d, 0xe0, 0x30, 0x1e, 0xa2, 0xb9, 0x87, 0x46, 0x8a, 0x09, 0x0a, 0xf0, 0x62, + 0xcd, 0x98, 0x3d, 0xcf, 0x13, 0x7c, 0x8e, 0x5c, 0xa9, 0x1f, 0x05, 0x4a, 0x9d, 0xbc, 0x52, 0xbe, + 0x78, 0x45, 0xad, 0x90, 0x73, 0x99, 0x79, 0x8c, 0xcf, 0xb9, 0x20, 0x3d, 0x97, 0x22, 0x79, 0x81, + 0xd4, 0x44, 0xea, 0x60, 0xb7, 0xcc, 0x67, 0xf1, 0x90, 0x81, 0x93, 0xe4, 0xbc, 0xcf, 0xe5, 0x94, + 0xcb, 0x3e, 0xa7, 0xec, 0x6b, 0x81, 0x3c, 0x8f, 0x88, 0x50, 0xe3, 0x49, 0x69, 0x8d, 0xad, 0x5c, + 0xed, 0x9b, 0x3a, 0x78, 0xeb, 0x4a, 0x12, 0xb1, 0xba, 0x25, 0x3c, 0xd0, 0x8a, 0x67, 0xff, 0x6a, + 0xa6, 0x1c, 0x4e, 0x99, 0x93, 0xb8, 0x19, 0x2e, 0x8b, 0x8f, 0xf3, 0xea, 0x3e, 0x4d, 0xb6, 0x7c, + 0xa5, 0x97, 0x02, 0xce, 0x94, 0xe2, 0x80, 0xd9, 0x7c, 0x9a, 0x52, 0xac, 0x14, 0x29, 0x66, 0xcb, + 0xd7, 0x2a, 0xe6, 0x38, 0xe1, 0x1f, 0x1a, 0xe8, 0xc6, 0xd7, 0xbd, 0x99, 0xe2, 0xe1, 0x15, 0xb9, + 0x24, 0xee, 0x78, 0xc0, 0xa8, 0xa2, 0x48, 0x11, 0xbc, 0x6c, 0x74, 0x24, 0x10, 0x93, 0x63, 0x22, + 0x76, 0x59, 0x3e, 0xff, 0x82, 0xbd, 0x5c, 0x53, 0xcb, 0x59, 0x92, 0xa6, 0x6a, 0xff, 0x61, 0x53, + 0x39, 0x76, 0xf8, 0x33, 0x38, 0x5d, 0x87, 0xea, 0xb9, 0x6e, 0xbe, 0x93, 0xf2, 0x3b, 0xaf, 0x34, + 0x67, 0xfb, 0xa6, 0x06, 0x5e, 0x14, 0xfd, 0xa3, 0x42, 0x03, 0x80, 0xb1, 0xe0, 0xd3, 0x2f, 0xa8, + 0x54, 0x03, 0xac, 0x6b, 0x27, 0xda, 0xe9, 0xd1, 0x70, 0xe5, 0x04, 0xb6, 0x40, 0x53, 0xf1, 0xe8, + 0xb6, 0x12, 0xdc, 0xc6, 0x7f, 0xc3, 0x8f, 0xc0, 0xdb, 0x74, 0x39, 0xfa, 0xab, 0x45, 0x54, 0x54, + 0x0d, 0x8a, 0xf2, 0x17, 0xb0, 0x07, 0xde, 0x50, 0x51, 0x5f, 0x23, 0x3a, 0x25, 0x4b, 0xe7, 0x9f, + 0xaf, 0x49, 0x26, 0x65, 0x6a, 0x88, 0x98, 0x43, 0x86, 0x69, 0x04, 0xfc, 0xd4, 0x6f, 0x26, 0xda, + 0xb2, 0xf5, 0xed, 0xe8, 0xb8, 0x18, 0xf6, 0xc1, 0x9b, 0xfc, 0x07, 0x46, 0x84, 0x9c, 0x50, 0x2f, + 0x14, 0x6f, 0x6c, 0x87, 0x67, 0x20, 0xbe, 0x55, 0x28, 0x32, 0x70, 0x80, 0xf5, 0xc3, 0xd0, 0xaa, + 0xe4, 0x04, 0x7e, 0x03, 0x9e, 0xf9, 0x2f, 0x36, 0x88, 0x11, 0xa6, 0xdc, 0x45, 0xe0, 0xb1, 0x52, + 0x04, 0x87, 0x7a, 0xcd, 0xed, 0x7a, 0x9b, 0xd1, 0x19, 0xea, 0xcf, 0xb9, 0xb0, 0x28, 0xc6, 0x84, + 0x85, 0xd4, 0x47, 0xbb, 0x51, 0xa7, 0xd1, 0xed, 0x5f, 0x6a, 0xc0, 0x28, 0x5e, 0x3e, 0xa9, 0x0c, + 0x68, 0x65, 0x32, 0x50, 0x29, 0x9d, 0x81, 0xea, 0x5e, 0x19, 0xa8, 0xed, 0x97, 0x81, 0xfa, 0xbe, + 0x19, 0x68, 0xec, 0x96, 0x81, 0xc3, 0xc7, 0xcb, 0x40, 0x73, 0xaf, 0x0c, 0xfc, 0x1a, 0x65, 0x60, + 0xf3, 0xcf, 0xc1, 0xd6, 0x3d, 0xf1, 0x3a, 0x07, 0xff, 0x83, 0x1c, 0xfc, 0x56, 0x01, 0xfa, 0xa6, + 0x17, 0xc8, 0x94, 0xe1, 0xda, 0x2e, 0x86, 0x17, 0x7a, 0x51, 0x79, 0x3c, 0x2f, 0xaa, 0x7b, 0x79, + 0x71, 0xab, 0x81, 0xe3, 0x9c, 0x07, 0x85, 0xa3, 0x68, 0x8f, 0x37, 0x4a, 0x65, 0x9f, 0x51, 0x5e, + 0x5d, 0xdf, 0xde, 0x1b, 0xda, 0xdd, 0xbd, 0xa1, 0xfd, 0x7d, 0x6f, 0x68, 0xbf, 0x3f, 0x18, 0x07, + 0x77, 0x0f, 0xc6, 0xc1, 0x5f, 0x0f, 0xc6, 0xc1, 0xb7, 0x9f, 0x39, 0x54, 0x4d, 0x66, 0x56, 0xc7, + 0xe6, 0x53, 0xd3, 0xa2, 0xca, 0x42, 0xd8, 0x21, 0x32, 0x79, 0xb2, 0x27, 0x88, 0x32, 0xf3, 0x47, + 0x33, 0xf5, 0x39, 0xad, 0x16, 0x1e, 0x91, 0xfe, 0x47, 0xb5, 0xd5, 0x08, 0xbe, 0x98, 0x3f, 0xf9, + 0x27, 0x00, 0x00, 0xff, 0xff, 0x87, 0xec, 0x73, 0xb5, 0xe1, 0x0f, 0x00, 0x00, +} + +func (m *CollectionPermissions) 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 *CollectionPermissions) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CollectionPermissions) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.CanAddMoreCosmosCoinWrapperPaths) > 0 { + for iNdEx := len(m.CanAddMoreCosmosCoinWrapperPaths) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CanAddMoreCosmosCoinWrapperPaths[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x5a + } + } + if len(m.CanAddMoreAliasPaths) > 0 { + for iNdEx := len(m.CanAddMoreAliasPaths) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CanAddMoreAliasPaths[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x52 + } + } + if len(m.CanUpdateCollectionApprovals) > 0 { + for iNdEx := len(m.CanUpdateCollectionApprovals) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CanUpdateCollectionApprovals[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x4a + } + } + if len(m.CanUpdateTokenMetadata) > 0 { + for iNdEx := len(m.CanUpdateTokenMetadata) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CanUpdateTokenMetadata[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + } + } + if len(m.CanUpdateValidTokenIds) > 0 { + for iNdEx := len(m.CanUpdateValidTokenIds) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CanUpdateValidTokenIds[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + } + if len(m.CanUpdateCollectionMetadata) > 0 { + for iNdEx := len(m.CanUpdateCollectionMetadata) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CanUpdateCollectionMetadata[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + } + if len(m.CanUpdateManager) > 0 { + for iNdEx := len(m.CanUpdateManager) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CanUpdateManager[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + } + if len(m.CanUpdateCustomData) > 0 { + for iNdEx := len(m.CanUpdateCustomData) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CanUpdateCustomData[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.CanUpdateStandards) > 0 { + for iNdEx := len(m.CanUpdateStandards) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CanUpdateStandards[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.CanArchiveCollection) > 0 { + for iNdEx := len(m.CanArchiveCollection) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CanArchiveCollection[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.CanDeleteCollection) > 0 { + for iNdEx := len(m.CanDeleteCollection) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CanDeleteCollection[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *UserPermissions) 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 *UserPermissions) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *UserPermissions) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.CanUpdateAutoApproveAllIncomingTransfers) > 0 { + for iNdEx := len(m.CanUpdateAutoApproveAllIncomingTransfers) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CanUpdateAutoApproveAllIncomingTransfers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + } + if len(m.CanUpdateAutoApproveSelfInitiatedIncomingTransfers) > 0 { + for iNdEx := len(m.CanUpdateAutoApproveSelfInitiatedIncomingTransfers) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CanUpdateAutoApproveSelfInitiatedIncomingTransfers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.CanUpdateAutoApproveSelfInitiatedOutgoingTransfers) > 0 { + for iNdEx := len(m.CanUpdateAutoApproveSelfInitiatedOutgoingTransfers) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CanUpdateAutoApproveSelfInitiatedOutgoingTransfers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.CanUpdateIncomingApprovals) > 0 { + for iNdEx := len(m.CanUpdateIncomingApprovals) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CanUpdateIncomingApprovals[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.CanUpdateOutgoingApprovals) > 0 { + for iNdEx := len(m.CanUpdateOutgoingApprovals) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CanUpdateOutgoingApprovals[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *CollectionApprovalPermission) 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 *CollectionApprovalPermission) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CollectionApprovalPermission) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.PermanentlyForbiddenTimes) > 0 { + for iNdEx := len(m.PermanentlyForbiddenTimes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.PermanentlyForbiddenTimes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x4a + } + } + if len(m.PermanentlyPermittedTimes) > 0 { + for iNdEx := len(m.PermanentlyPermittedTimes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.PermanentlyPermittedTimes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + } + } + if len(m.ApprovalId) > 0 { + i -= len(m.ApprovalId) + copy(dAtA[i:], m.ApprovalId) + i = encodeVarintPermissions(dAtA, i, uint64(len(m.ApprovalId))) + i-- + dAtA[i] = 0x3a + } + if len(m.OwnershipTimes) > 0 { + for iNdEx := len(m.OwnershipTimes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.OwnershipTimes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + } + if len(m.TokenIds) > 0 { + for iNdEx := len(m.TokenIds) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TokenIds[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + } + if len(m.TransferTimes) > 0 { + for iNdEx := len(m.TransferTimes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TransferTimes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.InitiatedByListId) > 0 { + i -= len(m.InitiatedByListId) + copy(dAtA[i:], m.InitiatedByListId) + i = encodeVarintPermissions(dAtA, i, uint64(len(m.InitiatedByListId))) + i-- + dAtA[i] = 0x1a + } + if len(m.ToListId) > 0 { + i -= len(m.ToListId) + copy(dAtA[i:], m.ToListId) + i = encodeVarintPermissions(dAtA, i, uint64(len(m.ToListId))) + i-- + dAtA[i] = 0x12 + } + if len(m.FromListId) > 0 { + i -= len(m.FromListId) + copy(dAtA[i:], m.FromListId) + i = encodeVarintPermissions(dAtA, i, uint64(len(m.FromListId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *UserOutgoingApprovalPermission) 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 *UserOutgoingApprovalPermission) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *UserOutgoingApprovalPermission) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.PermanentlyForbiddenTimes) > 0 { + for iNdEx := len(m.PermanentlyForbiddenTimes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.PermanentlyForbiddenTimes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + } + } + if len(m.PermanentlyPermittedTimes) > 0 { + for iNdEx := len(m.PermanentlyPermittedTimes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.PermanentlyPermittedTimes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + } + if len(m.ApprovalId) > 0 { + i -= len(m.ApprovalId) + copy(dAtA[i:], m.ApprovalId) + i = encodeVarintPermissions(dAtA, i, uint64(len(m.ApprovalId))) + i-- + dAtA[i] = 0x32 + } + if len(m.OwnershipTimes) > 0 { + for iNdEx := len(m.OwnershipTimes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.OwnershipTimes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + } + if len(m.TokenIds) > 0 { + for iNdEx := len(m.TokenIds) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TokenIds[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.TransferTimes) > 0 { + for iNdEx := len(m.TransferTimes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TransferTimes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.InitiatedByListId) > 0 { + i -= len(m.InitiatedByListId) + copy(dAtA[i:], m.InitiatedByListId) + i = encodeVarintPermissions(dAtA, i, uint64(len(m.InitiatedByListId))) + i-- + dAtA[i] = 0x12 + } + if len(m.ToListId) > 0 { + i -= len(m.ToListId) + copy(dAtA[i:], m.ToListId) + i = encodeVarintPermissions(dAtA, i, uint64(len(m.ToListId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *UserIncomingApprovalPermission) 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 *UserIncomingApprovalPermission) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *UserIncomingApprovalPermission) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.PermanentlyForbiddenTimes) > 0 { + for iNdEx := len(m.PermanentlyForbiddenTimes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.PermanentlyForbiddenTimes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + } + } + if len(m.PermanentlyPermittedTimes) > 0 { + for iNdEx := len(m.PermanentlyPermittedTimes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.PermanentlyPermittedTimes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + } + if len(m.ApprovalId) > 0 { + i -= len(m.ApprovalId) + copy(dAtA[i:], m.ApprovalId) + i = encodeVarintPermissions(dAtA, i, uint64(len(m.ApprovalId))) + i-- + dAtA[i] = 0x32 + } + if len(m.OwnershipTimes) > 0 { + for iNdEx := len(m.OwnershipTimes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.OwnershipTimes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + } + if len(m.TokenIds) > 0 { + for iNdEx := len(m.TokenIds) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TokenIds[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.TransferTimes) > 0 { + for iNdEx := len(m.TransferTimes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TransferTimes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.InitiatedByListId) > 0 { + i -= len(m.InitiatedByListId) + copy(dAtA[i:], m.InitiatedByListId) + i = encodeVarintPermissions(dAtA, i, uint64(len(m.InitiatedByListId))) + i-- + dAtA[i] = 0x12 + } + if len(m.FromListId) > 0 { + i -= len(m.FromListId) + copy(dAtA[i:], m.FromListId) + i = encodeVarintPermissions(dAtA, i, uint64(len(m.FromListId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *TokenIdsActionPermission) 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 *TokenIdsActionPermission) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *TokenIdsActionPermission) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.PermanentlyForbiddenTimes) > 0 { + for iNdEx := len(m.PermanentlyForbiddenTimes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.PermanentlyForbiddenTimes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.PermanentlyPermittedTimes) > 0 { + for iNdEx := len(m.PermanentlyPermittedTimes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.PermanentlyPermittedTimes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.TokenIds) > 0 { + for iNdEx := len(m.TokenIds) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TokenIds[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *ActionPermission) 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 *ActionPermission) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ActionPermission) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.PermanentlyForbiddenTimes) > 0 { + for iNdEx := len(m.PermanentlyForbiddenTimes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.PermanentlyForbiddenTimes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.PermanentlyPermittedTimes) > 0 { + for iNdEx := len(m.PermanentlyPermittedTimes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.PermanentlyPermittedTimes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPermissions(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func encodeVarintPermissions(dAtA []byte, offset int, v uint64) int { + offset -= sovPermissions(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *CollectionPermissions) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.CanDeleteCollection) > 0 { + for _, e := range m.CanDeleteCollection { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + if len(m.CanArchiveCollection) > 0 { + for _, e := range m.CanArchiveCollection { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + if len(m.CanUpdateStandards) > 0 { + for _, e := range m.CanUpdateStandards { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + if len(m.CanUpdateCustomData) > 0 { + for _, e := range m.CanUpdateCustomData { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + if len(m.CanUpdateManager) > 0 { + for _, e := range m.CanUpdateManager { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + if len(m.CanUpdateCollectionMetadata) > 0 { + for _, e := range m.CanUpdateCollectionMetadata { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + if len(m.CanUpdateValidTokenIds) > 0 { + for _, e := range m.CanUpdateValidTokenIds { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + if len(m.CanUpdateTokenMetadata) > 0 { + for _, e := range m.CanUpdateTokenMetadata { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + if len(m.CanUpdateCollectionApprovals) > 0 { + for _, e := range m.CanUpdateCollectionApprovals { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + if len(m.CanAddMoreAliasPaths) > 0 { + for _, e := range m.CanAddMoreAliasPaths { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + if len(m.CanAddMoreCosmosCoinWrapperPaths) > 0 { + for _, e := range m.CanAddMoreCosmosCoinWrapperPaths { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + return n +} + +func (m *UserPermissions) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.CanUpdateOutgoingApprovals) > 0 { + for _, e := range m.CanUpdateOutgoingApprovals { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + if len(m.CanUpdateIncomingApprovals) > 0 { + for _, e := range m.CanUpdateIncomingApprovals { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + if len(m.CanUpdateAutoApproveSelfInitiatedOutgoingTransfers) > 0 { + for _, e := range m.CanUpdateAutoApproveSelfInitiatedOutgoingTransfers { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + if len(m.CanUpdateAutoApproveSelfInitiatedIncomingTransfers) > 0 { + for _, e := range m.CanUpdateAutoApproveSelfInitiatedIncomingTransfers { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + if len(m.CanUpdateAutoApproveAllIncomingTransfers) > 0 { + for _, e := range m.CanUpdateAutoApproveAllIncomingTransfers { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + return n +} + +func (m *CollectionApprovalPermission) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.FromListId) + if l > 0 { + n += 1 + l + sovPermissions(uint64(l)) + } + l = len(m.ToListId) + if l > 0 { + n += 1 + l + sovPermissions(uint64(l)) + } + l = len(m.InitiatedByListId) + if l > 0 { + n += 1 + l + sovPermissions(uint64(l)) + } + if len(m.TransferTimes) > 0 { + for _, e := range m.TransferTimes { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + if len(m.TokenIds) > 0 { + for _, e := range m.TokenIds { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + if len(m.OwnershipTimes) > 0 { + for _, e := range m.OwnershipTimes { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + l = len(m.ApprovalId) + if l > 0 { + n += 1 + l + sovPermissions(uint64(l)) + } + if len(m.PermanentlyPermittedTimes) > 0 { + for _, e := range m.PermanentlyPermittedTimes { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + if len(m.PermanentlyForbiddenTimes) > 0 { + for _, e := range m.PermanentlyForbiddenTimes { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + return n +} + +func (m *UserOutgoingApprovalPermission) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ToListId) + if l > 0 { + n += 1 + l + sovPermissions(uint64(l)) + } + l = len(m.InitiatedByListId) + if l > 0 { + n += 1 + l + sovPermissions(uint64(l)) + } + if len(m.TransferTimes) > 0 { + for _, e := range m.TransferTimes { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + if len(m.TokenIds) > 0 { + for _, e := range m.TokenIds { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + if len(m.OwnershipTimes) > 0 { + for _, e := range m.OwnershipTimes { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + l = len(m.ApprovalId) + if l > 0 { + n += 1 + l + sovPermissions(uint64(l)) + } + if len(m.PermanentlyPermittedTimes) > 0 { + for _, e := range m.PermanentlyPermittedTimes { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + if len(m.PermanentlyForbiddenTimes) > 0 { + for _, e := range m.PermanentlyForbiddenTimes { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + return n +} + +func (m *UserIncomingApprovalPermission) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.FromListId) + if l > 0 { + n += 1 + l + sovPermissions(uint64(l)) + } + l = len(m.InitiatedByListId) + if l > 0 { + n += 1 + l + sovPermissions(uint64(l)) + } + if len(m.TransferTimes) > 0 { + for _, e := range m.TransferTimes { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + if len(m.TokenIds) > 0 { + for _, e := range m.TokenIds { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + if len(m.OwnershipTimes) > 0 { + for _, e := range m.OwnershipTimes { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + l = len(m.ApprovalId) + if l > 0 { + n += 1 + l + sovPermissions(uint64(l)) + } + if len(m.PermanentlyPermittedTimes) > 0 { + for _, e := range m.PermanentlyPermittedTimes { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + if len(m.PermanentlyForbiddenTimes) > 0 { + for _, e := range m.PermanentlyForbiddenTimes { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + return n +} + +func (m *TokenIdsActionPermission) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.TokenIds) > 0 { + for _, e := range m.TokenIds { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + if len(m.PermanentlyPermittedTimes) > 0 { + for _, e := range m.PermanentlyPermittedTimes { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + if len(m.PermanentlyForbiddenTimes) > 0 { + for _, e := range m.PermanentlyForbiddenTimes { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + return n +} + +func (m *ActionPermission) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.PermanentlyPermittedTimes) > 0 { + for _, e := range m.PermanentlyPermittedTimes { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + if len(m.PermanentlyForbiddenTimes) > 0 { + for _, e := range m.PermanentlyForbiddenTimes { + l = e.Size() + n += 1 + l + sovPermissions(uint64(l)) + } + } + return n +} + +func sovPermissions(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozPermissions(x uint64) (n int) { + return sovPermissions(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *CollectionPermissions) 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 ErrIntOverflowPermissions + } + 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: CollectionPermissions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CollectionPermissions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CanDeleteCollection", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CanDeleteCollection = append(m.CanDeleteCollection, &ActionPermission{}) + if err := m.CanDeleteCollection[len(m.CanDeleteCollection)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CanArchiveCollection", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CanArchiveCollection = append(m.CanArchiveCollection, &ActionPermission{}) + if err := m.CanArchiveCollection[len(m.CanArchiveCollection)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CanUpdateStandards", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CanUpdateStandards = append(m.CanUpdateStandards, &ActionPermission{}) + if err := m.CanUpdateStandards[len(m.CanUpdateStandards)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CanUpdateCustomData", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CanUpdateCustomData = append(m.CanUpdateCustomData, &ActionPermission{}) + if err := m.CanUpdateCustomData[len(m.CanUpdateCustomData)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CanUpdateManager", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CanUpdateManager = append(m.CanUpdateManager, &ActionPermission{}) + if err := m.CanUpdateManager[len(m.CanUpdateManager)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CanUpdateCollectionMetadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CanUpdateCollectionMetadata = append(m.CanUpdateCollectionMetadata, &ActionPermission{}) + if err := m.CanUpdateCollectionMetadata[len(m.CanUpdateCollectionMetadata)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CanUpdateValidTokenIds", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CanUpdateValidTokenIds = append(m.CanUpdateValidTokenIds, &TokenIdsActionPermission{}) + if err := m.CanUpdateValidTokenIds[len(m.CanUpdateValidTokenIds)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CanUpdateTokenMetadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CanUpdateTokenMetadata = append(m.CanUpdateTokenMetadata, &TokenIdsActionPermission{}) + if err := m.CanUpdateTokenMetadata[len(m.CanUpdateTokenMetadata)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CanUpdateCollectionApprovals", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CanUpdateCollectionApprovals = append(m.CanUpdateCollectionApprovals, &CollectionApprovalPermission{}) + if err := m.CanUpdateCollectionApprovals[len(m.CanUpdateCollectionApprovals)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CanAddMoreAliasPaths", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CanAddMoreAliasPaths = append(m.CanAddMoreAliasPaths, &ActionPermission{}) + if err := m.CanAddMoreAliasPaths[len(m.CanAddMoreAliasPaths)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CanAddMoreCosmosCoinWrapperPaths", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CanAddMoreCosmosCoinWrapperPaths = append(m.CanAddMoreCosmosCoinWrapperPaths, &ActionPermission{}) + if err := m.CanAddMoreCosmosCoinWrapperPaths[len(m.CanAddMoreCosmosCoinWrapperPaths)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipPermissions(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPermissions + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *UserPermissions) 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 ErrIntOverflowPermissions + } + 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: UserPermissions: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: UserPermissions: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CanUpdateOutgoingApprovals", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CanUpdateOutgoingApprovals = append(m.CanUpdateOutgoingApprovals, &UserOutgoingApprovalPermission{}) + if err := m.CanUpdateOutgoingApprovals[len(m.CanUpdateOutgoingApprovals)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CanUpdateIncomingApprovals", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CanUpdateIncomingApprovals = append(m.CanUpdateIncomingApprovals, &UserIncomingApprovalPermission{}) + if err := m.CanUpdateIncomingApprovals[len(m.CanUpdateIncomingApprovals)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CanUpdateAutoApproveSelfInitiatedOutgoingTransfers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CanUpdateAutoApproveSelfInitiatedOutgoingTransfers = append(m.CanUpdateAutoApproveSelfInitiatedOutgoingTransfers, &ActionPermission{}) + if err := m.CanUpdateAutoApproveSelfInitiatedOutgoingTransfers[len(m.CanUpdateAutoApproveSelfInitiatedOutgoingTransfers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CanUpdateAutoApproveSelfInitiatedIncomingTransfers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CanUpdateAutoApproveSelfInitiatedIncomingTransfers = append(m.CanUpdateAutoApproveSelfInitiatedIncomingTransfers, &ActionPermission{}) + if err := m.CanUpdateAutoApproveSelfInitiatedIncomingTransfers[len(m.CanUpdateAutoApproveSelfInitiatedIncomingTransfers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CanUpdateAutoApproveAllIncomingTransfers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CanUpdateAutoApproveAllIncomingTransfers = append(m.CanUpdateAutoApproveAllIncomingTransfers, &ActionPermission{}) + if err := m.CanUpdateAutoApproveAllIncomingTransfers[len(m.CanUpdateAutoApproveAllIncomingTransfers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipPermissions(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPermissions + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CollectionApprovalPermission) 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 ErrIntOverflowPermissions + } + 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: CollectionApprovalPermission: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CollectionApprovalPermission: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FromListId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + 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 ErrInvalidLengthPermissions + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FromListId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ToListId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + 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 ErrInvalidLengthPermissions + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ToListId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field InitiatedByListId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + 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 ErrInvalidLengthPermissions + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.InitiatedByListId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TransferTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TransferTimes = append(m.TransferTimes, &UintRange{}) + if err := m.TransferTimes[len(m.TransferTimes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TokenIds", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TokenIds = append(m.TokenIds, &UintRange{}) + if err := m.TokenIds[len(m.TokenIds)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OwnershipTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OwnershipTimes = append(m.OwnershipTimes, &UintRange{}) + if err := m.OwnershipTimes[len(m.OwnershipTimes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + 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 ErrInvalidLengthPermissions + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ApprovalId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PermanentlyPermittedTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PermanentlyPermittedTimes = append(m.PermanentlyPermittedTimes, &UintRange{}) + if err := m.PermanentlyPermittedTimes[len(m.PermanentlyPermittedTimes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PermanentlyForbiddenTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PermanentlyForbiddenTimes = append(m.PermanentlyForbiddenTimes, &UintRange{}) + if err := m.PermanentlyForbiddenTimes[len(m.PermanentlyForbiddenTimes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipPermissions(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPermissions + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *UserOutgoingApprovalPermission) 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 ErrIntOverflowPermissions + } + 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: UserOutgoingApprovalPermission: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: UserOutgoingApprovalPermission: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ToListId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + 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 ErrInvalidLengthPermissions + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ToListId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field InitiatedByListId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + 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 ErrInvalidLengthPermissions + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.InitiatedByListId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TransferTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TransferTimes = append(m.TransferTimes, &UintRange{}) + if err := m.TransferTimes[len(m.TransferTimes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TokenIds", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TokenIds = append(m.TokenIds, &UintRange{}) + if err := m.TokenIds[len(m.TokenIds)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OwnershipTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OwnershipTimes = append(m.OwnershipTimes, &UintRange{}) + if err := m.OwnershipTimes[len(m.OwnershipTimes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + 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 ErrInvalidLengthPermissions + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ApprovalId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PermanentlyPermittedTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PermanentlyPermittedTimes = append(m.PermanentlyPermittedTimes, &UintRange{}) + if err := m.PermanentlyPermittedTimes[len(m.PermanentlyPermittedTimes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PermanentlyForbiddenTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PermanentlyForbiddenTimes = append(m.PermanentlyForbiddenTimes, &UintRange{}) + if err := m.PermanentlyForbiddenTimes[len(m.PermanentlyForbiddenTimes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipPermissions(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPermissions + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *UserIncomingApprovalPermission) 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 ErrIntOverflowPermissions + } + 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: UserIncomingApprovalPermission: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: UserIncomingApprovalPermission: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FromListId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + 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 ErrInvalidLengthPermissions + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.FromListId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field InitiatedByListId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + 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 ErrInvalidLengthPermissions + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.InitiatedByListId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TransferTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TransferTimes = append(m.TransferTimes, &UintRange{}) + if err := m.TransferTimes[len(m.TransferTimes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TokenIds", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TokenIds = append(m.TokenIds, &UintRange{}) + if err := m.TokenIds[len(m.TokenIds)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OwnershipTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OwnershipTimes = append(m.OwnershipTimes, &UintRange{}) + if err := m.OwnershipTimes[len(m.OwnershipTimes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + 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 ErrInvalidLengthPermissions + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ApprovalId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PermanentlyPermittedTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PermanentlyPermittedTimes = append(m.PermanentlyPermittedTimes, &UintRange{}) + if err := m.PermanentlyPermittedTimes[len(m.PermanentlyPermittedTimes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PermanentlyForbiddenTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PermanentlyForbiddenTimes = append(m.PermanentlyForbiddenTimes, &UintRange{}) + if err := m.PermanentlyForbiddenTimes[len(m.PermanentlyForbiddenTimes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipPermissions(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPermissions + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *TokenIdsActionPermission) 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 ErrIntOverflowPermissions + } + 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: TokenIdsActionPermission: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TokenIdsActionPermission: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TokenIds", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TokenIds = append(m.TokenIds, &UintRange{}) + if err := m.TokenIds[len(m.TokenIds)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PermanentlyPermittedTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PermanentlyPermittedTimes = append(m.PermanentlyPermittedTimes, &UintRange{}) + if err := m.PermanentlyPermittedTimes[len(m.PermanentlyPermittedTimes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PermanentlyForbiddenTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PermanentlyForbiddenTimes = append(m.PermanentlyForbiddenTimes, &UintRange{}) + if err := m.PermanentlyForbiddenTimes[len(m.PermanentlyForbiddenTimes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipPermissions(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPermissions + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ActionPermission) 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 ErrIntOverflowPermissions + } + 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: ActionPermission: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ActionPermission: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PermanentlyPermittedTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PermanentlyPermittedTimes = append(m.PermanentlyPermittedTimes, &UintRange{}) + if err := m.PermanentlyPermittedTimes[len(m.PermanentlyPermittedTimes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PermanentlyForbiddenTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPermissions + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPermissions + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPermissions + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PermanentlyForbiddenTimes = append(m.PermanentlyForbiddenTimes, &UintRange{}) + if err := m.PermanentlyForbiddenTimes[len(m.PermanentlyForbiddenTimes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipPermissions(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPermissions + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipPermissions(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, ErrIntOverflowPermissions + } + 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, ErrIntOverflowPermissions + } + 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, ErrIntOverflowPermissions + } + 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, ErrInvalidLengthPermissions + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupPermissions + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthPermissions + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthPermissions = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowPermissions = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupPermissions = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/tokenization/types/v29/predetermined_balances.pb.go b/x/tokenization/types/v29/predetermined_balances.pb.go new file mode 100644 index 00000000..bae9a1d4 --- /dev/null +++ b/x/tokenization/types/v29/predetermined_balances.pb.go @@ -0,0 +1,1881 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: tokenization/v29/predetermined_balances.proto + +package v29 + +import ( + fmt "fmt" + _ "github.com/cosmos/gogoproto/gogoproto" + 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 + +// ManualBalances represents a list of manual balances entered for the predetermined balances criteria. Order is calculated according to the calculation method set. +type ManualBalances struct { + Balances []*Balance `protobuf:"bytes,1,rep,name=balances,proto3" json:"balances,omitempty"` +} + +func (m *ManualBalances) Reset() { *m = ManualBalances{} } +func (m *ManualBalances) String() string { return proto.CompactTextString(m) } +func (*ManualBalances) ProtoMessage() {} +func (*ManualBalances) Descriptor() ([]byte, []int) { + return fileDescriptor_605b48ccdc1d5231, []int{0} +} +func (m *ManualBalances) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ManualBalances) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ManualBalances.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 *ManualBalances) XXX_Merge(src proto.Message) { + xxx_messageInfo_ManualBalances.Merge(m, src) +} +func (m *ManualBalances) XXX_Size() int { + return m.Size() +} +func (m *ManualBalances) XXX_DiscardUnknown() { + xxx_messageInfo_ManualBalances.DiscardUnknown(m) +} + +var xxx_messageInfo_ManualBalances proto.InternalMessageInfo + +func (m *ManualBalances) GetBalances() []*Balance { + if m != nil { + return m.Balances + } + return nil +} + +// RecurringOwnershipTimes represents a list of recurring ownership times. +type RecurringOwnershipTimes struct { + // The original start time of the first interval. + StartTime Uint `protobuf:"bytes,1,opt,name=startTime,proto3,customtype=Uint" json:"startTime"` + // The interval length in unix milliseconds. + IntervalLength Uint `protobuf:"bytes,2,opt,name=intervalLength,proto3,customtype=Uint" json:"intervalLength"` + // Grace period length where you can charge the next interval (nextStartTime - chargePeriodLength) until (nextStartTime) = charge period + ChargePeriodLength Uint `protobuf:"bytes,3,opt,name=chargePeriodLength,proto3,customtype=Uint" json:"chargePeriodLength"` +} + +func (m *RecurringOwnershipTimes) Reset() { *m = RecurringOwnershipTimes{} } +func (m *RecurringOwnershipTimes) String() string { return proto.CompactTextString(m) } +func (*RecurringOwnershipTimes) ProtoMessage() {} +func (*RecurringOwnershipTimes) Descriptor() ([]byte, []int) { + return fileDescriptor_605b48ccdc1d5231, []int{1} +} +func (m *RecurringOwnershipTimes) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *RecurringOwnershipTimes) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_RecurringOwnershipTimes.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 *RecurringOwnershipTimes) XXX_Merge(src proto.Message) { + xxx_messageInfo_RecurringOwnershipTimes.Merge(m, src) +} +func (m *RecurringOwnershipTimes) XXX_Size() int { + return m.Size() +} +func (m *RecurringOwnershipTimes) XXX_DiscardUnknown() { + xxx_messageInfo_RecurringOwnershipTimes.DiscardUnknown(m) +} + +var xxx_messageInfo_RecurringOwnershipTimes proto.InternalMessageInfo + +// IncrementedBalances represents balances that are incremented by specific amounts, according to the order calculation method. +type IncrementedBalances struct { + StartBalances []*Balance `protobuf:"bytes,1,rep,name=startBalances,proto3" json:"startBalances,omitempty"` + // The amount by which to increment token IDs. + IncrementTokenIdsBy Uint `protobuf:"bytes,2,opt,name=incrementTokenIdsBy,proto3,customtype=Uint" json:"incrementTokenIdsBy"` + // The amount by which to increment ownership times. Incompatible with approveStartingFromNowBy. + IncrementOwnershipTimesBy Uint `protobuf:"bytes,3,opt,name=incrementOwnershipTimesBy,proto3,customtype=Uint" json:"incrementOwnershipTimesBy"` + // The amount of unix milliseconds to approve starting from now. Incompatible with incrementOwnershipTimesBy. + DurationFromTimestamp Uint `protobuf:"bytes,4,opt,name=durationFromTimestamp,proto3,customtype=Uint" json:"durationFromTimestamp"` + // Whether to allow overriding the timestamp for the balances (only applicable with durationFromTimestamp set). + AllowOverrideTimestamp bool `protobuf:"varint,5,opt,name=allowOverrideTimestamp,proto3" json:"allowOverrideTimestamp,omitempty"` + // Recurring ownership times. + RecurringOwnershipTimes *RecurringOwnershipTimes `protobuf:"bytes,6,opt,name=recurringOwnershipTimes,proto3" json:"recurringOwnershipTimes,omitempty"` + // Allow override of any valid ID + AllowOverrideWithAnyValidToken bool `protobuf:"varint,7,opt,name=allowOverrideWithAnyValidToken,proto3" json:"allowOverrideWithAnyValidToken,omitempty"` + // When true, the actual transfer can be any evenly divisible integer multiple (>=1x) of startBalances. + // approvalCriteria.coinTransfers are scaled by the same multiplier. + // All other IncrementedBalances fields must be zero/false/nil when this is true. + AllowAmountScaling bool `protobuf:"varint,8,opt,name=allowAmountScaling,proto3" json:"allowAmountScaling,omitempty"` + // Maximum allowed scaling multiplier. Must be > 0 when allowAmountScaling is true. + // The chain rejects transfers where the computed multiplier exceeds this cap. + // Ignored (set to "0") when allowAmountScaling is false. + MaxScalingMultiplier Uint `protobuf:"bytes,9,opt,name=maxScalingMultiplier,proto3,customtype=Uint" json:"maxScalingMultiplier"` +} + +func (m *IncrementedBalances) Reset() { *m = IncrementedBalances{} } +func (m *IncrementedBalances) String() string { return proto.CompactTextString(m) } +func (*IncrementedBalances) ProtoMessage() {} +func (*IncrementedBalances) Descriptor() ([]byte, []int) { + return fileDescriptor_605b48ccdc1d5231, []int{2} +} +func (m *IncrementedBalances) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *IncrementedBalances) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_IncrementedBalances.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 *IncrementedBalances) XXX_Merge(src proto.Message) { + xxx_messageInfo_IncrementedBalances.Merge(m, src) +} +func (m *IncrementedBalances) XXX_Size() int { + return m.Size() +} +func (m *IncrementedBalances) XXX_DiscardUnknown() { + xxx_messageInfo_IncrementedBalances.DiscardUnknown(m) +} + +var xxx_messageInfo_IncrementedBalances proto.InternalMessageInfo + +func (m *IncrementedBalances) GetStartBalances() []*Balance { + if m != nil { + return m.StartBalances + } + return nil +} + +func (m *IncrementedBalances) GetAllowOverrideTimestamp() bool { + if m != nil { + return m.AllowOverrideTimestamp + } + return false +} + +func (m *IncrementedBalances) GetRecurringOwnershipTimes() *RecurringOwnershipTimes { + if m != nil { + return m.RecurringOwnershipTimes + } + return nil +} + +func (m *IncrementedBalances) GetAllowOverrideWithAnyValidToken() bool { + if m != nil { + return m.AllowOverrideWithAnyValidToken + } + return false +} + +func (m *IncrementedBalances) GetAllowAmountScaling() bool { + if m != nil { + return m.AllowAmountScaling + } + return false +} + +// PredeterminedOrderCalculationMethod defines the method to calculate predetermined balances order. +type PredeterminedOrderCalculationMethod struct { + // Use the overall number of transfers to calculate the order. Ex: First transfer gets the first balance, second transfer gets the second balance, etc. + UseOverallNumTransfers bool `protobuf:"varint,1,opt,name=useOverallNumTransfers,proto3" json:"useOverallNumTransfers,omitempty"` + // Use the number of transfers per "to" address to calculate the order. Ex: First transfer to address A gets the first balance, second transfer to address A gets the second balance, etc. + UsePerToAddressNumTransfers bool `protobuf:"varint,2,opt,name=usePerToAddressNumTransfers,proto3" json:"usePerToAddressNumTransfers,omitempty"` + // Use the number of transfers per "from" address to calculate the order. Ex: First transfer from address A gets the first balance, second transfer from address A gets the second balance, etc. + UsePerFromAddressNumTransfers bool `protobuf:"varint,3,opt,name=usePerFromAddressNumTransfers,proto3" json:"usePerFromAddressNumTransfers,omitempty"` + // Use the number of transfers per "initiated by" address to calculate the order. Ex: First transfer initiated by address A gets the first balance, second transfer initiated by address A gets the second balance, etc. + UsePerInitiatedByAddressNumTransfers bool `protobuf:"varint,4,opt,name=usePerInitiatedByAddressNumTransfers,proto3" json:"usePerInitiatedByAddressNumTransfers,omitempty"` + // Use the Merkle challenge leaf index to calculate the order. Ex: Transfer that uses leaf index 0 gets the first balance, transfer that uses leaf index 1 gets the second balance, etc. + UseMerkleChallengeLeafIndex bool `protobuf:"varint,5,opt,name=useMerkleChallengeLeafIndex,proto3" json:"useMerkleChallengeLeafIndex,omitempty"` + // If useMerkleChallengeLeafIndex is set, then this is the ID of the challenge tracker associated with this calculation method. + ChallengeTrackerId string `protobuf:"bytes,6,opt,name=challengeTrackerId,proto3" json:"challengeTrackerId,omitempty"` +} + +func (m *PredeterminedOrderCalculationMethod) Reset() { *m = PredeterminedOrderCalculationMethod{} } +func (m *PredeterminedOrderCalculationMethod) String() string { return proto.CompactTextString(m) } +func (*PredeterminedOrderCalculationMethod) ProtoMessage() {} +func (*PredeterminedOrderCalculationMethod) Descriptor() ([]byte, []int) { + return fileDescriptor_605b48ccdc1d5231, []int{3} +} +func (m *PredeterminedOrderCalculationMethod) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PredeterminedOrderCalculationMethod) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PredeterminedOrderCalculationMethod.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 *PredeterminedOrderCalculationMethod) XXX_Merge(src proto.Message) { + xxx_messageInfo_PredeterminedOrderCalculationMethod.Merge(m, src) +} +func (m *PredeterminedOrderCalculationMethod) XXX_Size() int { + return m.Size() +} +func (m *PredeterminedOrderCalculationMethod) XXX_DiscardUnknown() { + xxx_messageInfo_PredeterminedOrderCalculationMethod.DiscardUnknown(m) +} + +var xxx_messageInfo_PredeterminedOrderCalculationMethod proto.InternalMessageInfo + +func (m *PredeterminedOrderCalculationMethod) GetUseOverallNumTransfers() bool { + if m != nil { + return m.UseOverallNumTransfers + } + return false +} + +func (m *PredeterminedOrderCalculationMethod) GetUsePerToAddressNumTransfers() bool { + if m != nil { + return m.UsePerToAddressNumTransfers + } + return false +} + +func (m *PredeterminedOrderCalculationMethod) GetUsePerFromAddressNumTransfers() bool { + if m != nil { + return m.UsePerFromAddressNumTransfers + } + return false +} + +func (m *PredeterminedOrderCalculationMethod) GetUsePerInitiatedByAddressNumTransfers() bool { + if m != nil { + return m.UsePerInitiatedByAddressNumTransfers + } + return false +} + +func (m *PredeterminedOrderCalculationMethod) GetUseMerkleChallengeLeafIndex() bool { + if m != nil { + return m.UseMerkleChallengeLeafIndex + } + return false +} + +func (m *PredeterminedOrderCalculationMethod) GetChallengeTrackerId() string { + if m != nil { + return m.ChallengeTrackerId + } + return "" +} + +// PredeterminedBalances represents balances with predetermined order calculation. +type PredeterminedBalances struct { + // Manual balances that can be entered. If this is nil, then we use the incremented balances. + ManualBalances []*ManualBalances `protobuf:"bytes,1,rep,name=manualBalances,proto3" json:"manualBalances,omitempty"` + // Balances that have a starting amount and increment. If this is nil, then we use the manual balances. + IncrementedBalances *IncrementedBalances `protobuf:"bytes,2,opt,name=incrementedBalances,proto3" json:"incrementedBalances,omitempty"` + // The method to calculate the order of predetermined balances. + OrderCalculationMethod *PredeterminedOrderCalculationMethod `protobuf:"bytes,3,opt,name=orderCalculationMethod,proto3" json:"orderCalculationMethod,omitempty"` +} + +func (m *PredeterminedBalances) Reset() { *m = PredeterminedBalances{} } +func (m *PredeterminedBalances) String() string { return proto.CompactTextString(m) } +func (*PredeterminedBalances) ProtoMessage() {} +func (*PredeterminedBalances) Descriptor() ([]byte, []int) { + return fileDescriptor_605b48ccdc1d5231, []int{4} +} +func (m *PredeterminedBalances) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PredeterminedBalances) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PredeterminedBalances.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 *PredeterminedBalances) XXX_Merge(src proto.Message) { + xxx_messageInfo_PredeterminedBalances.Merge(m, src) +} +func (m *PredeterminedBalances) XXX_Size() int { + return m.Size() +} +func (m *PredeterminedBalances) XXX_DiscardUnknown() { + xxx_messageInfo_PredeterminedBalances.DiscardUnknown(m) +} + +var xxx_messageInfo_PredeterminedBalances proto.InternalMessageInfo + +func (m *PredeterminedBalances) GetManualBalances() []*ManualBalances { + if m != nil { + return m.ManualBalances + } + return nil +} + +func (m *PredeterminedBalances) GetIncrementedBalances() *IncrementedBalances { + if m != nil { + return m.IncrementedBalances + } + return nil +} + +func (m *PredeterminedBalances) GetOrderCalculationMethod() *PredeterminedOrderCalculationMethod { + if m != nil { + return m.OrderCalculationMethod + } + return nil +} + +func init() { + proto.RegisterType((*ManualBalances)(nil), "tokenization.v29.ManualBalances") + proto.RegisterType((*RecurringOwnershipTimes)(nil), "tokenization.v29.RecurringOwnershipTimes") + proto.RegisterType((*IncrementedBalances)(nil), "tokenization.v29.IncrementedBalances") + proto.RegisterType((*PredeterminedOrderCalculationMethod)(nil), "tokenization.v29.PredeterminedOrderCalculationMethod") + proto.RegisterType((*PredeterminedBalances)(nil), "tokenization.v29.PredeterminedBalances") +} + +func init() { + proto.RegisterFile("tokenization/v29/predetermined_balances.proto", fileDescriptor_605b48ccdc1d5231) +} + +var fileDescriptor_605b48ccdc1d5231 = []byte{ + // 736 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x95, 0xdd, 0x4e, 0xdb, 0x48, + 0x14, 0xc7, 0x63, 0x92, 0x65, 0x93, 0xc9, 0x2e, 0x5a, 0x0d, 0x5f, 0x86, 0xd5, 0x86, 0x6c, 0x76, + 0x2b, 0xa5, 0x95, 0x9a, 0x48, 0x69, 0xa9, 0x84, 0x84, 0x5a, 0x08, 0x15, 0x6d, 0x2a, 0x52, 0x90, + 0x9b, 0x82, 0xd4, 0x9b, 0x6a, 0x62, 0x1f, 0xec, 0x11, 0xe3, 0x71, 0x34, 0x1e, 0x07, 0xd2, 0xa7, + 0xe8, 0x6b, 0x54, 0x7d, 0x82, 0xbe, 0x01, 0x97, 0x5c, 0x56, 0xbd, 0x40, 0x15, 0x3c, 0x47, 0xa5, + 0xca, 0x43, 0x3e, 0x30, 0x99, 0x50, 0xee, 0x6c, 0x9f, 0xdf, 0xf9, 0xfb, 0xcc, 0x99, 0xff, 0x9c, + 0x41, 0x0f, 0x65, 0x70, 0x04, 0x9c, 0x7e, 0x20, 0x92, 0x06, 0xbc, 0xda, 0xad, 0xad, 0x55, 0x3b, + 0x02, 0x1c, 0x90, 0x20, 0x7c, 0xca, 0xc1, 0x79, 0xdf, 0x26, 0x8c, 0x70, 0x1b, 0xc2, 0x4a, 0x47, + 0x04, 0x32, 0xc0, 0x7f, 0x5d, 0xc7, 0x2b, 0xdd, 0xda, 0xda, 0xf2, 0x9c, 0x1b, 0xb8, 0x81, 0x0a, + 0x56, 0xe3, 0xa7, 0x2b, 0x6e, 0x79, 0x65, 0x4c, 0x36, 0x29, 0xb4, 0xfc, 0xef, 0x18, 0x60, 0x7b, + 0x84, 0x31, 0xe0, 0xee, 0x00, 0x29, 0xbd, 0x40, 0x33, 0x4d, 0xc2, 0x23, 0xc2, 0xea, 0xfd, 0x54, + 0xbc, 0x8a, 0xb2, 0x03, 0x19, 0xd3, 0x28, 0xa6, 0xcb, 0xf9, 0xda, 0x52, 0xe5, 0x66, 0x41, 0x95, + 0x3e, 0x6d, 0x0d, 0xd1, 0xd2, 0x17, 0x03, 0x2d, 0x5a, 0x60, 0x47, 0x42, 0x50, 0xee, 0xee, 0x1e, + 0x73, 0x10, 0xa1, 0x47, 0x3b, 0x2d, 0xea, 0x43, 0x88, 0x1f, 0xa0, 0x5c, 0x28, 0x89, 0x90, 0xf1, + 0x9b, 0x69, 0x14, 0x8d, 0x72, 0xae, 0xfe, 0xc7, 0xe9, 0xf9, 0x4a, 0xea, 0xdb, 0xf9, 0x4a, 0xe6, + 0x2d, 0xe5, 0xd2, 0x1a, 0x85, 0xf1, 0x63, 0x34, 0x43, 0xb9, 0x04, 0xd1, 0x25, 0x6c, 0x07, 0xb8, + 0x2b, 0x3d, 0x73, 0x4a, 0x93, 0x70, 0x83, 0xc1, 0xeb, 0x08, 0xdb, 0x1e, 0x11, 0x2e, 0xec, 0x81, + 0xa0, 0x81, 0xd3, 0xcf, 0x4c, 0x6b, 0x32, 0x35, 0x5c, 0xe9, 0x47, 0x06, 0xcd, 0x36, 0xb8, 0x2d, + 0xc0, 0x07, 0x2e, 0xc1, 0x19, 0xb6, 0xe2, 0x19, 0xfa, 0x53, 0x15, 0x56, 0xbf, 0x73, 0x3f, 0x92, + 0x3c, 0x7e, 0x8a, 0x66, 0xe9, 0x40, 0xb7, 0x15, 0xe7, 0x34, 0x9c, 0xb0, 0xde, 0xd3, 0xae, 0x48, + 0x07, 0xe2, 0x57, 0x68, 0x69, 0xf8, 0x39, 0xd9, 0xd3, 0x7a, 0x4f, 0xbb, 0xba, 0xc9, 0x38, 0xae, + 0xa3, 0x79, 0x27, 0x12, 0xaa, 0xe4, 0x6d, 0x11, 0xf8, 0xea, 0xb3, 0x24, 0x7e, 0xc7, 0xcc, 0x68, + 0x74, 0xf4, 0x28, 0x7e, 0x82, 0x16, 0x08, 0x63, 0xc1, 0xf1, 0x6e, 0x17, 0x84, 0xa0, 0x0e, 0x8c, + 0x44, 0x7e, 0x2b, 0x1a, 0xe5, 0xac, 0x35, 0x21, 0x8a, 0x6d, 0xb4, 0x28, 0xf4, 0xde, 0x30, 0xa7, + 0x8b, 0x46, 0x39, 0x5f, 0xbb, 0x3f, 0xde, 0xd2, 0x09, 0x66, 0xb2, 0x26, 0x29, 0xe1, 0x6d, 0x54, + 0x48, 0xfc, 0xfe, 0x80, 0x4a, 0x6f, 0x93, 0xf7, 0xf6, 0x09, 0xa3, 0x8e, 0xea, 0xa9, 0xf9, 0xbb, + 0x2a, 0xf2, 0x17, 0x14, 0xae, 0x20, 0xac, 0x88, 0x4d, 0x3f, 0x88, 0xb8, 0x7c, 0x63, 0x13, 0x46, + 0xb9, 0x6b, 0x66, 0x55, 0xae, 0x26, 0x82, 0x37, 0xd0, 0x9c, 0x4f, 0x4e, 0xfa, 0x6f, 0xcd, 0x88, + 0x49, 0xda, 0x61, 0x14, 0x84, 0x99, 0xd3, 0xf4, 0x55, 0x4b, 0x96, 0x3e, 0xa7, 0xd1, 0x7f, 0x7b, + 0xd7, 0x27, 0xc2, 0xae, 0x70, 0x40, 0x6c, 0x11, 0x66, 0x47, 0x4c, 0x35, 0xa4, 0x09, 0xd2, 0x0b, + 0x9c, 0xb8, 0xfd, 0x51, 0x08, 0x71, 0xe5, 0x84, 0xb1, 0xd7, 0x91, 0xdf, 0x12, 0x84, 0x87, 0x87, + 0x20, 0x42, 0x75, 0xa8, 0xb2, 0xd6, 0x84, 0x28, 0xde, 0x40, 0x7f, 0x47, 0x61, 0x6c, 0xf9, 0x56, + 0xb0, 0xe9, 0x38, 0x02, 0xc2, 0x30, 0x91, 0x3c, 0xa5, 0x92, 0x6f, 0x43, 0xf0, 0x73, 0xf4, 0xcf, + 0x55, 0x38, 0xf6, 0x83, 0x4e, 0x23, 0xad, 0x34, 0x6e, 0x87, 0xb0, 0x85, 0xfe, 0xbf, 0x02, 0x1a, + 0x9c, 0x4a, 0x4a, 0xe2, 0xa3, 0xd6, 0xd3, 0x89, 0x65, 0x94, 0xd8, 0x9d, 0xd8, 0xfe, 0xda, 0x9a, + 0x20, 0x8e, 0x18, 0x6c, 0x0d, 0xa6, 0xdb, 0x0e, 0x90, 0xc3, 0x06, 0x77, 0xe0, 0xa4, 0xef, 0xcb, + 0xdb, 0x90, 0x78, 0xbf, 0x87, 0x63, 0xb1, 0x25, 0x88, 0x7d, 0x04, 0xa2, 0xe1, 0x28, 0x5f, 0xe6, + 0x2c, 0x4d, 0xa4, 0xf4, 0x69, 0x0a, 0xcd, 0x27, 0x76, 0x6b, 0x78, 0xdc, 0x5f, 0xa2, 0x19, 0x3f, + 0x31, 0x4c, 0xfb, 0x03, 0xa3, 0x38, 0xee, 0xee, 0xe4, 0xd0, 0xb5, 0x6e, 0xe4, 0xe1, 0x83, 0x6b, + 0x83, 0x63, 0xf4, 0x03, 0xb5, 0x53, 0xf9, 0xda, 0xbd, 0x71, 0x39, 0xcd, 0xf4, 0xb2, 0x74, 0x0a, + 0xd8, 0x47, 0x0b, 0x81, 0xd6, 0x5c, 0x6a, 0x07, 0xf3, 0xb5, 0xd5, 0x71, 0xed, 0x3b, 0x38, 0xd3, + 0x9a, 0x20, 0x5a, 0xdf, 0x3f, 0xbd, 0x28, 0x18, 0x67, 0x17, 0x05, 0xe3, 0xfb, 0x45, 0xc1, 0xf8, + 0x78, 0x59, 0x48, 0x9d, 0x5d, 0x16, 0x52, 0x5f, 0x2f, 0x0b, 0xa9, 0x77, 0xeb, 0x2e, 0x95, 0x5e, + 0xd4, 0xae, 0xd8, 0x81, 0x5f, 0x6d, 0x53, 0xd9, 0x26, 0x8e, 0x0b, 0xe1, 0xe8, 0xc9, 0xf6, 0x08, + 0xe5, 0xd5, 0x93, 0x6a, 0xe2, 0x06, 0x93, 0xbd, 0x0e, 0x84, 0xf1, 0x3d, 0xd6, 0x9e, 0x56, 0xb7, + 0xd7, 0xa3, 0x9f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x70, 0x21, 0xd1, 0xd7, 0x5a, 0x07, 0x00, 0x00, +} + +func (m *ManualBalances) 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 *ManualBalances) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ManualBalances) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Balances) > 0 { + for iNdEx := len(m.Balances) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Balances[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPredeterminedBalances(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *RecurringOwnershipTimes) 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 *RecurringOwnershipTimes) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *RecurringOwnershipTimes) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.ChargePeriodLength.Size() + i -= size + if _, err := m.ChargePeriodLength.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintPredeterminedBalances(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + { + size := m.IntervalLength.Size() + i -= size + if _, err := m.IntervalLength.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintPredeterminedBalances(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + { + size := m.StartTime.Size() + i -= size + if _, err := m.StartTime.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintPredeterminedBalances(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *IncrementedBalances) 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 *IncrementedBalances) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *IncrementedBalances) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.MaxScalingMultiplier.Size() + i -= size + if _, err := m.MaxScalingMultiplier.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintPredeterminedBalances(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x4a + if m.AllowAmountScaling { + i-- + if m.AllowAmountScaling { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x40 + } + if m.AllowOverrideWithAnyValidToken { + i-- + if m.AllowOverrideWithAnyValidToken { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x38 + } + if m.RecurringOwnershipTimes != nil { + { + size, err := m.RecurringOwnershipTimes.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPredeterminedBalances(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + if m.AllowOverrideTimestamp { + i-- + if m.AllowOverrideTimestamp { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x28 + } + { + size := m.DurationFromTimestamp.Size() + i -= size + if _, err := m.DurationFromTimestamp.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintPredeterminedBalances(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + { + size := m.IncrementOwnershipTimesBy.Size() + i -= size + if _, err := m.IncrementOwnershipTimesBy.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintPredeterminedBalances(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + { + size := m.IncrementTokenIdsBy.Size() + i -= size + if _, err := m.IncrementTokenIdsBy.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintPredeterminedBalances(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.StartBalances) > 0 { + for iNdEx := len(m.StartBalances) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.StartBalances[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPredeterminedBalances(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *PredeterminedOrderCalculationMethod) 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 *PredeterminedOrderCalculationMethod) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PredeterminedOrderCalculationMethod) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ChallengeTrackerId) > 0 { + i -= len(m.ChallengeTrackerId) + copy(dAtA[i:], m.ChallengeTrackerId) + i = encodeVarintPredeterminedBalances(dAtA, i, uint64(len(m.ChallengeTrackerId))) + i-- + dAtA[i] = 0x32 + } + if m.UseMerkleChallengeLeafIndex { + i-- + if m.UseMerkleChallengeLeafIndex { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x28 + } + if m.UsePerInitiatedByAddressNumTransfers { + i-- + if m.UsePerInitiatedByAddressNumTransfers { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x20 + } + if m.UsePerFromAddressNumTransfers { + i-- + if m.UsePerFromAddressNumTransfers { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } + if m.UsePerToAddressNumTransfers { + i-- + if m.UsePerToAddressNumTransfers { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 + } + if m.UseOverallNumTransfers { + i-- + if m.UseOverallNumTransfers { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *PredeterminedBalances) 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 *PredeterminedBalances) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PredeterminedBalances) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.OrderCalculationMethod != nil { + { + size, err := m.OrderCalculationMethod.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPredeterminedBalances(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if m.IncrementedBalances != nil { + { + size, err := m.IncrementedBalances.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPredeterminedBalances(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.ManualBalances) > 0 { + for iNdEx := len(m.ManualBalances) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.ManualBalances[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintPredeterminedBalances(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func encodeVarintPredeterminedBalances(dAtA []byte, offset int, v uint64) int { + offset -= sovPredeterminedBalances(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *ManualBalances) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Balances) > 0 { + for _, e := range m.Balances { + l = e.Size() + n += 1 + l + sovPredeterminedBalances(uint64(l)) + } + } + return n +} + +func (m *RecurringOwnershipTimes) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.StartTime.Size() + n += 1 + l + sovPredeterminedBalances(uint64(l)) + l = m.IntervalLength.Size() + n += 1 + l + sovPredeterminedBalances(uint64(l)) + l = m.ChargePeriodLength.Size() + n += 1 + l + sovPredeterminedBalances(uint64(l)) + return n +} + +func (m *IncrementedBalances) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.StartBalances) > 0 { + for _, e := range m.StartBalances { + l = e.Size() + n += 1 + l + sovPredeterminedBalances(uint64(l)) + } + } + l = m.IncrementTokenIdsBy.Size() + n += 1 + l + sovPredeterminedBalances(uint64(l)) + l = m.IncrementOwnershipTimesBy.Size() + n += 1 + l + sovPredeterminedBalances(uint64(l)) + l = m.DurationFromTimestamp.Size() + n += 1 + l + sovPredeterminedBalances(uint64(l)) + if m.AllowOverrideTimestamp { + n += 2 + } + if m.RecurringOwnershipTimes != nil { + l = m.RecurringOwnershipTimes.Size() + n += 1 + l + sovPredeterminedBalances(uint64(l)) + } + if m.AllowOverrideWithAnyValidToken { + n += 2 + } + if m.AllowAmountScaling { + n += 2 + } + l = m.MaxScalingMultiplier.Size() + n += 1 + l + sovPredeterminedBalances(uint64(l)) + return n +} + +func (m *PredeterminedOrderCalculationMethod) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.UseOverallNumTransfers { + n += 2 + } + if m.UsePerToAddressNumTransfers { + n += 2 + } + if m.UsePerFromAddressNumTransfers { + n += 2 + } + if m.UsePerInitiatedByAddressNumTransfers { + n += 2 + } + if m.UseMerkleChallengeLeafIndex { + n += 2 + } + l = len(m.ChallengeTrackerId) + if l > 0 { + n += 1 + l + sovPredeterminedBalances(uint64(l)) + } + return n +} + +func (m *PredeterminedBalances) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.ManualBalances) > 0 { + for _, e := range m.ManualBalances { + l = e.Size() + n += 1 + l + sovPredeterminedBalances(uint64(l)) + } + } + if m.IncrementedBalances != nil { + l = m.IncrementedBalances.Size() + n += 1 + l + sovPredeterminedBalances(uint64(l)) + } + if m.OrderCalculationMethod != nil { + l = m.OrderCalculationMethod.Size() + n += 1 + l + sovPredeterminedBalances(uint64(l)) + } + return n +} + +func sovPredeterminedBalances(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozPredeterminedBalances(x uint64) (n int) { + return sovPredeterminedBalances(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *ManualBalances) 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 ErrIntOverflowPredeterminedBalances + } + 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: ManualBalances: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ManualBalances: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Balances", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPredeterminedBalances + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPredeterminedBalances + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPredeterminedBalances + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Balances = append(m.Balances, &Balance{}) + if err := m.Balances[len(m.Balances)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipPredeterminedBalances(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPredeterminedBalances + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *RecurringOwnershipTimes) 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 ErrIntOverflowPredeterminedBalances + } + 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: RecurringOwnershipTimes: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: RecurringOwnershipTimes: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StartTime", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPredeterminedBalances + } + 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 ErrInvalidLengthPredeterminedBalances + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPredeterminedBalances + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.StartTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IntervalLength", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPredeterminedBalances + } + 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 ErrInvalidLengthPredeterminedBalances + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPredeterminedBalances + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.IntervalLength.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChargePeriodLength", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPredeterminedBalances + } + 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 ErrInvalidLengthPredeterminedBalances + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPredeterminedBalances + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ChargePeriodLength.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipPredeterminedBalances(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPredeterminedBalances + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *IncrementedBalances) 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 ErrIntOverflowPredeterminedBalances + } + 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: IncrementedBalances: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: IncrementedBalances: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StartBalances", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPredeterminedBalances + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPredeterminedBalances + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPredeterminedBalances + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.StartBalances = append(m.StartBalances, &Balance{}) + if err := m.StartBalances[len(m.StartBalances)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IncrementTokenIdsBy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPredeterminedBalances + } + 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 ErrInvalidLengthPredeterminedBalances + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPredeterminedBalances + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.IncrementTokenIdsBy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IncrementOwnershipTimesBy", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPredeterminedBalances + } + 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 ErrInvalidLengthPredeterminedBalances + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPredeterminedBalances + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.IncrementOwnershipTimesBy.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DurationFromTimestamp", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPredeterminedBalances + } + 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 ErrInvalidLengthPredeterminedBalances + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPredeterminedBalances + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.DurationFromTimestamp.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AllowOverrideTimestamp", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPredeterminedBalances + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.AllowOverrideTimestamp = bool(v != 0) + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field RecurringOwnershipTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPredeterminedBalances + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPredeterminedBalances + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPredeterminedBalances + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.RecurringOwnershipTimes == nil { + m.RecurringOwnershipTimes = &RecurringOwnershipTimes{} + } + if err := m.RecurringOwnershipTimes.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AllowOverrideWithAnyValidToken", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPredeterminedBalances + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.AllowOverrideWithAnyValidToken = bool(v != 0) + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AllowAmountScaling", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPredeterminedBalances + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.AllowAmountScaling = bool(v != 0) + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxScalingMultiplier", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPredeterminedBalances + } + 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 ErrInvalidLengthPredeterminedBalances + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPredeterminedBalances + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.MaxScalingMultiplier.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipPredeterminedBalances(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPredeterminedBalances + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PredeterminedOrderCalculationMethod) 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 ErrIntOverflowPredeterminedBalances + } + 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: PredeterminedOrderCalculationMethod: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PredeterminedOrderCalculationMethod: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UseOverallNumTransfers", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPredeterminedBalances + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.UseOverallNumTransfers = bool(v != 0) + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UsePerToAddressNumTransfers", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPredeterminedBalances + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.UsePerToAddressNumTransfers = bool(v != 0) + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UsePerFromAddressNumTransfers", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPredeterminedBalances + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.UsePerFromAddressNumTransfers = bool(v != 0) + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UsePerInitiatedByAddressNumTransfers", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPredeterminedBalances + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.UsePerInitiatedByAddressNumTransfers = bool(v != 0) + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UseMerkleChallengeLeafIndex", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPredeterminedBalances + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.UseMerkleChallengeLeafIndex = bool(v != 0) + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ChallengeTrackerId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPredeterminedBalances + } + 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 ErrInvalidLengthPredeterminedBalances + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthPredeterminedBalances + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ChallengeTrackerId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipPredeterminedBalances(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPredeterminedBalances + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PredeterminedBalances) 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 ErrIntOverflowPredeterminedBalances + } + 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: PredeterminedBalances: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PredeterminedBalances: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ManualBalances", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPredeterminedBalances + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPredeterminedBalances + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPredeterminedBalances + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ManualBalances = append(m.ManualBalances, &ManualBalances{}) + if err := m.ManualBalances[len(m.ManualBalances)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IncrementedBalances", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPredeterminedBalances + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPredeterminedBalances + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPredeterminedBalances + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.IncrementedBalances == nil { + m.IncrementedBalances = &IncrementedBalances{} + } + if err := m.IncrementedBalances.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OrderCalculationMethod", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowPredeterminedBalances + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthPredeterminedBalances + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthPredeterminedBalances + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.OrderCalculationMethod == nil { + m.OrderCalculationMethod = &PredeterminedOrderCalculationMethod{} + } + if err := m.OrderCalculationMethod.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipPredeterminedBalances(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthPredeterminedBalances + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipPredeterminedBalances(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, ErrIntOverflowPredeterminedBalances + } + 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, ErrIntOverflowPredeterminedBalances + } + 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, ErrIntOverflowPredeterminedBalances + } + 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, ErrInvalidLengthPredeterminedBalances + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupPredeterminedBalances + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthPredeterminedBalances + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthPredeterminedBalances = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowPredeterminedBalances = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupPredeterminedBalances = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/tokenization/types/v29/timelines.pb.go b/x/tokenization/types/v29/timelines.pb.go new file mode 100644 index 00000000..cdd5e15e --- /dev/null +++ b/x/tokenization/types/v29/timelines.pb.go @@ -0,0 +1,1824 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: tokenization/v29/timelines.proto + +package v29 + +import ( + fmt "fmt" + _ "github.com/cosmos/cosmos-sdk/codec/types" + _ "github.com/cosmos/gogoproto/gogoproto" + 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 + +// CollectionMetadataTimeline defines the metadata for a collection at different timeline times. +type CollectionMetadataTimeline struct { + // The collection metadata for a specific timeline element. + CollectionMetadata *CollectionMetadata `protobuf:"bytes,1,opt,name=collectionMetadata,proto3" json:"collectionMetadata,omitempty"` + // The timeline times when the collection metadata is valid. Can not overlap with other timeline elements in same array. + TimelineTimes []*UintRange `protobuf:"bytes,2,rep,name=timelineTimes,proto3" json:"timelineTimes,omitempty"` +} + +func (m *CollectionMetadataTimeline) Reset() { *m = CollectionMetadataTimeline{} } +func (m *CollectionMetadataTimeline) String() string { return proto.CompactTextString(m) } +func (*CollectionMetadataTimeline) ProtoMessage() {} +func (*CollectionMetadataTimeline) Descriptor() ([]byte, []int) { + return fileDescriptor_084a5a2b74f56723, []int{0} +} +func (m *CollectionMetadataTimeline) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CollectionMetadataTimeline) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CollectionMetadataTimeline.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 *CollectionMetadataTimeline) XXX_Merge(src proto.Message) { + xxx_messageInfo_CollectionMetadataTimeline.Merge(m, src) +} +func (m *CollectionMetadataTimeline) XXX_Size() int { + return m.Size() +} +func (m *CollectionMetadataTimeline) XXX_DiscardUnknown() { + xxx_messageInfo_CollectionMetadataTimeline.DiscardUnknown(m) +} + +var xxx_messageInfo_CollectionMetadataTimeline proto.InternalMessageInfo + +func (m *CollectionMetadataTimeline) GetCollectionMetadata() *CollectionMetadata { + if m != nil { + return m.CollectionMetadata + } + return nil +} + +func (m *CollectionMetadataTimeline) GetTimelineTimes() []*UintRange { + if m != nil { + return m.TimelineTimes + } + return nil +} + +// TokenMetadataTimeline defines the metadata for tokens at different timeline times. +type TokenMetadataTimeline struct { + // The token metadata for a specific timeline element. + TokenMetadata []*TokenMetadata `protobuf:"bytes,1,rep,name=tokenMetadata,proto3" json:"tokenMetadata,omitempty"` + // The timeline times when the token metadata is valid. Can not overlap with other timeline elements in same array. + TimelineTimes []*UintRange `protobuf:"bytes,2,rep,name=timelineTimes,proto3" json:"timelineTimes,omitempty"` +} + +func (m *TokenMetadataTimeline) Reset() { *m = TokenMetadataTimeline{} } +func (m *TokenMetadataTimeline) String() string { return proto.CompactTextString(m) } +func (*TokenMetadataTimeline) ProtoMessage() {} +func (*TokenMetadataTimeline) Descriptor() ([]byte, []int) { + return fileDescriptor_084a5a2b74f56723, []int{1} +} +func (m *TokenMetadataTimeline) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *TokenMetadataTimeline) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_TokenMetadataTimeline.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 *TokenMetadataTimeline) XXX_Merge(src proto.Message) { + xxx_messageInfo_TokenMetadataTimeline.Merge(m, src) +} +func (m *TokenMetadataTimeline) XXX_Size() int { + return m.Size() +} +func (m *TokenMetadataTimeline) XXX_DiscardUnknown() { + xxx_messageInfo_TokenMetadataTimeline.DiscardUnknown(m) +} + +var xxx_messageInfo_TokenMetadataTimeline proto.InternalMessageInfo + +func (m *TokenMetadataTimeline) GetTokenMetadata() []*TokenMetadata { + if m != nil { + return m.TokenMetadata + } + return nil +} + +func (m *TokenMetadataTimeline) GetTimelineTimes() []*UintRange { + if m != nil { + return m.TimelineTimes + } + return nil +} + +// CustomDataTimeline defines custom data at different timeline times. +type CustomDataTimeline struct { + // The custom data for a specific timeline element. + CustomData string `protobuf:"bytes,1,opt,name=customData,proto3" json:"customData,omitempty"` + // The timeline times when the custom data is valid. Can not overlap with other timeline elements in same array. + TimelineTimes []*UintRange `protobuf:"bytes,2,rep,name=timelineTimes,proto3" json:"timelineTimes,omitempty"` +} + +func (m *CustomDataTimeline) Reset() { *m = CustomDataTimeline{} } +func (m *CustomDataTimeline) String() string { return proto.CompactTextString(m) } +func (*CustomDataTimeline) ProtoMessage() {} +func (*CustomDataTimeline) Descriptor() ([]byte, []int) { + return fileDescriptor_084a5a2b74f56723, []int{2} +} +func (m *CustomDataTimeline) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CustomDataTimeline) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CustomDataTimeline.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 *CustomDataTimeline) XXX_Merge(src proto.Message) { + xxx_messageInfo_CustomDataTimeline.Merge(m, src) +} +func (m *CustomDataTimeline) XXX_Size() int { + return m.Size() +} +func (m *CustomDataTimeline) XXX_DiscardUnknown() { + xxx_messageInfo_CustomDataTimeline.DiscardUnknown(m) +} + +var xxx_messageInfo_CustomDataTimeline proto.InternalMessageInfo + +func (m *CustomDataTimeline) GetCustomData() string { + if m != nil { + return m.CustomData + } + return "" +} + +func (m *CustomDataTimeline) GetTimelineTimes() []*UintRange { + if m != nil { + return m.TimelineTimes + } + return nil +} + +// ManagerTimeline defines the manager address at different timeline times. +type ManagerTimeline struct { + // The manager address for a specific timeline element. + Manager string `protobuf:"bytes,1,opt,name=manager,proto3" json:"manager,omitempty"` + // The timeline times when the manager address is valid. Can not overlap with other timeline elements in same array. + TimelineTimes []*UintRange `protobuf:"bytes,2,rep,name=timelineTimes,proto3" json:"timelineTimes,omitempty"` +} + +func (m *ManagerTimeline) Reset() { *m = ManagerTimeline{} } +func (m *ManagerTimeline) String() string { return proto.CompactTextString(m) } +func (*ManagerTimeline) ProtoMessage() {} +func (*ManagerTimeline) Descriptor() ([]byte, []int) { + return fileDescriptor_084a5a2b74f56723, []int{3} +} +func (m *ManagerTimeline) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ManagerTimeline) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ManagerTimeline.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 *ManagerTimeline) XXX_Merge(src proto.Message) { + xxx_messageInfo_ManagerTimeline.Merge(m, src) +} +func (m *ManagerTimeline) XXX_Size() int { + return m.Size() +} +func (m *ManagerTimeline) XXX_DiscardUnknown() { + xxx_messageInfo_ManagerTimeline.DiscardUnknown(m) +} + +var xxx_messageInfo_ManagerTimeline proto.InternalMessageInfo + +func (m *ManagerTimeline) GetManager() string { + if m != nil { + return m.Manager + } + return "" +} + +func (m *ManagerTimeline) GetTimelineTimes() []*UintRange { + if m != nil { + return m.TimelineTimes + } + return nil +} + +// IsArchivedTimeline defines whether a collection is archived at different timeline times. +type IsArchivedTimeline struct { + // Indicates whether the collection is archived for a specific timeline element. + IsArchived bool `protobuf:"varint,1,opt,name=isArchived,proto3" json:"isArchived,omitempty"` + // The timeline times when the archived status is valid. Can not overlap with other timeline elements in same array. + TimelineTimes []*UintRange `protobuf:"bytes,2,rep,name=timelineTimes,proto3" json:"timelineTimes,omitempty"` +} + +func (m *IsArchivedTimeline) Reset() { *m = IsArchivedTimeline{} } +func (m *IsArchivedTimeline) String() string { return proto.CompactTextString(m) } +func (*IsArchivedTimeline) ProtoMessage() {} +func (*IsArchivedTimeline) Descriptor() ([]byte, []int) { + return fileDescriptor_084a5a2b74f56723, []int{4} +} +func (m *IsArchivedTimeline) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *IsArchivedTimeline) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_IsArchivedTimeline.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 *IsArchivedTimeline) XXX_Merge(src proto.Message) { + xxx_messageInfo_IsArchivedTimeline.Merge(m, src) +} +func (m *IsArchivedTimeline) XXX_Size() int { + return m.Size() +} +func (m *IsArchivedTimeline) XXX_DiscardUnknown() { + xxx_messageInfo_IsArchivedTimeline.DiscardUnknown(m) +} + +var xxx_messageInfo_IsArchivedTimeline proto.InternalMessageInfo + +func (m *IsArchivedTimeline) GetIsArchived() bool { + if m != nil { + return m.IsArchived + } + return false +} + +func (m *IsArchivedTimeline) GetTimelineTimes() []*UintRange { + if m != nil { + return m.TimelineTimes + } + return nil +} + +// ContractAddressTimeline defines the contract address at different timeline times. +type ContractAddressTimeline struct { + // The contract address for a specific timeline element. + ContractAddress string `protobuf:"bytes,1,opt,name=contractAddress,proto3" json:"contractAddress,omitempty"` + // The timeline times when the contract address is valid. Can not overlap with other timeline elements in same array. + TimelineTimes []*UintRange `protobuf:"bytes,2,rep,name=timelineTimes,proto3" json:"timelineTimes,omitempty"` +} + +func (m *ContractAddressTimeline) Reset() { *m = ContractAddressTimeline{} } +func (m *ContractAddressTimeline) String() string { return proto.CompactTextString(m) } +func (*ContractAddressTimeline) ProtoMessage() {} +func (*ContractAddressTimeline) Descriptor() ([]byte, []int) { + return fileDescriptor_084a5a2b74f56723, []int{5} +} +func (m *ContractAddressTimeline) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ContractAddressTimeline) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ContractAddressTimeline.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 *ContractAddressTimeline) XXX_Merge(src proto.Message) { + xxx_messageInfo_ContractAddressTimeline.Merge(m, src) +} +func (m *ContractAddressTimeline) XXX_Size() int { + return m.Size() +} +func (m *ContractAddressTimeline) XXX_DiscardUnknown() { + xxx_messageInfo_ContractAddressTimeline.DiscardUnknown(m) +} + +var xxx_messageInfo_ContractAddressTimeline proto.InternalMessageInfo + +func (m *ContractAddressTimeline) GetContractAddress() string { + if m != nil { + return m.ContractAddress + } + return "" +} + +func (m *ContractAddressTimeline) GetTimelineTimes() []*UintRange { + if m != nil { + return m.TimelineTimes + } + return nil +} + +// StandardsTimeline defines the standards used for a collection at different timeline times. +type StandardsTimeline struct { + // The standards applied to the collection for a specific timeline element. + Standards []string `protobuf:"bytes,1,rep,name=standards,proto3" json:"standards,omitempty"` + // The timeline times when the standards are valid. Can not overlap with other timeline elements in same array. + TimelineTimes []*UintRange `protobuf:"bytes,2,rep,name=timelineTimes,proto3" json:"timelineTimes,omitempty"` +} + +func (m *StandardsTimeline) Reset() { *m = StandardsTimeline{} } +func (m *StandardsTimeline) String() string { return proto.CompactTextString(m) } +func (*StandardsTimeline) ProtoMessage() {} +func (*StandardsTimeline) Descriptor() ([]byte, []int) { + return fileDescriptor_084a5a2b74f56723, []int{6} +} +func (m *StandardsTimeline) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *StandardsTimeline) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_StandardsTimeline.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 *StandardsTimeline) XXX_Merge(src proto.Message) { + xxx_messageInfo_StandardsTimeline.Merge(m, src) +} +func (m *StandardsTimeline) XXX_Size() int { + return m.Size() +} +func (m *StandardsTimeline) XXX_DiscardUnknown() { + xxx_messageInfo_StandardsTimeline.DiscardUnknown(m) +} + +var xxx_messageInfo_StandardsTimeline proto.InternalMessageInfo + +func (m *StandardsTimeline) GetStandards() []string { + if m != nil { + return m.Standards + } + return nil +} + +func (m *StandardsTimeline) GetTimelineTimes() []*UintRange { + if m != nil { + return m.TimelineTimes + } + return nil +} + +func init() { + proto.RegisterType((*CollectionMetadataTimeline)(nil), "tokenization.v29.CollectionMetadataTimeline") + proto.RegisterType((*TokenMetadataTimeline)(nil), "tokenization.v29.TokenMetadataTimeline") + proto.RegisterType((*CustomDataTimeline)(nil), "tokenization.v29.CustomDataTimeline") + proto.RegisterType((*ManagerTimeline)(nil), "tokenization.v29.ManagerTimeline") + proto.RegisterType((*IsArchivedTimeline)(nil), "tokenization.v29.IsArchivedTimeline") + proto.RegisterType((*ContractAddressTimeline)(nil), "tokenization.v29.ContractAddressTimeline") + proto.RegisterType((*StandardsTimeline)(nil), "tokenization.v29.StandardsTimeline") +} + +func init() { proto.RegisterFile("tokenization/v29/timelines.proto", fileDescriptor_084a5a2b74f56723) } + +var fileDescriptor_084a5a2b74f56723 = []byte{ + // 449 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x54, 0xbd, 0x8e, 0xd3, 0x40, + 0x10, 0xce, 0x82, 0x04, 0x64, 0x4f, 0xa7, 0x03, 0x0b, 0x44, 0x30, 0xc8, 0x17, 0x45, 0x14, 0xa9, + 0xbc, 0x52, 0xa8, 0x4e, 0xa2, 0x09, 0x81, 0x82, 0xe2, 0x1a, 0x13, 0x28, 0xe8, 0xc6, 0xeb, 0xbd, + 0xcd, 0x0a, 0x7b, 0x37, 0xda, 0x9d, 0x04, 0x8e, 0x07, 0xa0, 0xe6, 0x15, 0x78, 0x08, 0xde, 0x81, + 0xf2, 0x4a, 0x4a, 0x94, 0xbc, 0x08, 0xb2, 0xe3, 0x38, 0xf6, 0xf9, 0xae, 0x73, 0xb7, 0xfe, 0xe6, + 0xfb, 0x99, 0x19, 0x59, 0x43, 0x87, 0x68, 0xbe, 0x08, 0xad, 0xbe, 0x03, 0x2a, 0xa3, 0xd9, 0x7a, + 0x72, 0xc6, 0x50, 0x65, 0x22, 0x55, 0x5a, 0xb8, 0x70, 0x69, 0x0d, 0x1a, 0xef, 0x61, 0x9d, 0x11, + 0xae, 0x27, 0x67, 0xfe, 0x33, 0x69, 0x8c, 0x4c, 0x05, 0x2b, 0xea, 0xf1, 0xea, 0x82, 0x81, 0xbe, + 0xdc, 0x91, 0xfd, 0x1b, 0xec, 0x2c, 0x68, 0x77, 0x21, 0x6c, 0x69, 0xe7, 0x9f, 0xb6, 0x18, 0x31, + 0xa4, 0xa0, 0xf9, 0x3e, 0xcf, 0x1f, 0xb5, 0x08, 0x4b, 0x61, 0x33, 0xe5, 0x9c, 0x32, 0xfa, 0x76, + 0x93, 0x4c, 0x20, 0x24, 0x80, 0x50, 0x12, 0x1e, 0x4b, 0x23, 0x4d, 0xf1, 0x64, 0xf9, 0x6b, 0x87, + 0x8e, 0x7e, 0x13, 0xea, 0xcf, 0x4c, 0x9a, 0x0a, 0x9e, 0xeb, 0xce, 0x4b, 0xc9, 0xbc, 0x1c, 0xd8, + 0x9b, 0x53, 0x8f, 0xb7, 0xaa, 0x03, 0x32, 0x24, 0xe3, 0xa3, 0xc9, 0xcb, 0xf0, 0xfa, 0x1a, 0xc2, + 0xb6, 0x53, 0x74, 0x83, 0xde, 0x9b, 0xd2, 0xe3, 0xfd, 0x4a, 0xf3, 0x24, 0x37, 0xb8, 0x33, 0xbc, + 0x3b, 0x3e, 0x9a, 0x3c, 0x6f, 0x1b, 0x7e, 0x54, 0x1a, 0x23, 0xd0, 0x52, 0x44, 0x4d, 0xc5, 0xe8, + 0x17, 0xa1, 0x4f, 0xe6, 0x39, 0xbb, 0xd5, 0xf2, 0x3b, 0x7a, 0x8c, 0xf5, 0xc2, 0x80, 0x14, 0xe6, + 0xa7, 0x6d, 0xf3, 0x86, 0x3e, 0x6a, 0xaa, 0xba, 0xe8, 0xf1, 0x2b, 0xf5, 0x66, 0x2b, 0x87, 0x26, + 0x7b, 0x5b, 0xef, 0x2f, 0xa0, 0x94, 0x57, 0x68, 0xb1, 0xca, 0x7e, 0x54, 0x43, 0xba, 0x08, 0xd6, + 0xf4, 0xe4, 0x1c, 0x34, 0x48, 0x61, 0xab, 0xd4, 0x01, 0xbd, 0x9f, 0xed, 0xa0, 0x32, 0x72, 0xff, + 0xd9, 0xd1, 0xa0, 0xef, 0xdd, 0xd4, 0xf2, 0x85, 0x5a, 0x8b, 0xa4, 0x3e, 0xa8, 0xaa, 0xd0, 0x22, + 0xf5, 0x41, 0x54, 0x43, 0xba, 0x08, 0xfe, 0x41, 0xe8, 0xd3, 0x99, 0xd1, 0x68, 0x81, 0xe3, 0x34, + 0x49, 0xac, 0x70, 0xae, 0x8a, 0x1f, 0xd3, 0x13, 0xde, 0x2c, 0x95, 0x93, 0x5f, 0x87, 0xbb, 0x68, + 0x04, 0xe9, 0xa3, 0x0f, 0x08, 0x3a, 0x01, 0x9b, 0x1c, 0x3a, 0x78, 0x41, 0xfb, 0x6e, 0x0f, 0x16, + 0x7f, 0x61, 0x3f, 0x3a, 0x00, 0x1d, 0xa4, 0xbe, 0xf9, 0xf4, 0x67, 0x13, 0x90, 0xab, 0x4d, 0x40, + 0xfe, 0x6d, 0x02, 0xf2, 0x73, 0x1b, 0xf4, 0xae, 0xb6, 0x41, 0xef, 0xef, 0x36, 0xe8, 0x7d, 0x7e, + 0x2d, 0x15, 0x2e, 0x56, 0x71, 0xc8, 0x4d, 0xc6, 0x62, 0x85, 0x31, 0x24, 0x52, 0xb8, 0xc3, 0x8b, + 0x2f, 0x40, 0x69, 0xf6, 0x8d, 0x35, 0x6e, 0x06, 0x5e, 0x2e, 0x85, 0xcb, 0x2f, 0x47, 0x7c, 0xaf, + 0xb8, 0x0d, 0xaf, 0xfe, 0x07, 0x00, 0x00, 0xff, 0xff, 0x10, 0x58, 0xef, 0x29, 0x0a, 0x05, 0x00, + 0x00, +} + +func (m *CollectionMetadataTimeline) 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 *CollectionMetadataTimeline) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CollectionMetadataTimeline) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.TimelineTimes) > 0 { + for iNdEx := len(m.TimelineTimes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TimelineTimes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTimelines(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if m.CollectionMetadata != nil { + { + size, err := m.CollectionMetadata.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTimelines(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *TokenMetadataTimeline) 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 *TokenMetadataTimeline) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *TokenMetadataTimeline) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.TimelineTimes) > 0 { + for iNdEx := len(m.TimelineTimes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TimelineTimes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTimelines(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.TokenMetadata) > 0 { + for iNdEx := len(m.TokenMetadata) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TokenMetadata[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTimelines(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *CustomDataTimeline) 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 *CustomDataTimeline) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CustomDataTimeline) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.TimelineTimes) > 0 { + for iNdEx := len(m.TimelineTimes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TimelineTimes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTimelines(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.CustomData) > 0 { + i -= len(m.CustomData) + copy(dAtA[i:], m.CustomData) + i = encodeVarintTimelines(dAtA, i, uint64(len(m.CustomData))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ManagerTimeline) 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 *ManagerTimeline) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ManagerTimeline) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.TimelineTimes) > 0 { + for iNdEx := len(m.TimelineTimes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TimelineTimes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTimelines(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.Manager) > 0 { + i -= len(m.Manager) + copy(dAtA[i:], m.Manager) + i = encodeVarintTimelines(dAtA, i, uint64(len(m.Manager))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *IsArchivedTimeline) 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 *IsArchivedTimeline) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *IsArchivedTimeline) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.TimelineTimes) > 0 { + for iNdEx := len(m.TimelineTimes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TimelineTimes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTimelines(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if m.IsArchived { + i-- + if m.IsArchived { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *ContractAddressTimeline) 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 *ContractAddressTimeline) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ContractAddressTimeline) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.TimelineTimes) > 0 { + for iNdEx := len(m.TimelineTimes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TimelineTimes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTimelines(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.ContractAddress) > 0 { + i -= len(m.ContractAddress) + copy(dAtA[i:], m.ContractAddress) + i = encodeVarintTimelines(dAtA, i, uint64(len(m.ContractAddress))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *StandardsTimeline) 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 *StandardsTimeline) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *StandardsTimeline) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.TimelineTimes) > 0 { + for iNdEx := len(m.TimelineTimes) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TimelineTimes[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTimelines(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.Standards) > 0 { + for iNdEx := len(m.Standards) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Standards[iNdEx]) + copy(dAtA[i:], m.Standards[iNdEx]) + i = encodeVarintTimelines(dAtA, i, uint64(len(m.Standards[iNdEx]))) + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func encodeVarintTimelines(dAtA []byte, offset int, v uint64) int { + offset -= sovTimelines(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *CollectionMetadataTimeline) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.CollectionMetadata != nil { + l = m.CollectionMetadata.Size() + n += 1 + l + sovTimelines(uint64(l)) + } + if len(m.TimelineTimes) > 0 { + for _, e := range m.TimelineTimes { + l = e.Size() + n += 1 + l + sovTimelines(uint64(l)) + } + } + return n +} + +func (m *TokenMetadataTimeline) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.TokenMetadata) > 0 { + for _, e := range m.TokenMetadata { + l = e.Size() + n += 1 + l + sovTimelines(uint64(l)) + } + } + if len(m.TimelineTimes) > 0 { + for _, e := range m.TimelineTimes { + l = e.Size() + n += 1 + l + sovTimelines(uint64(l)) + } + } + return n +} + +func (m *CustomDataTimeline) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.CustomData) + if l > 0 { + n += 1 + l + sovTimelines(uint64(l)) + } + if len(m.TimelineTimes) > 0 { + for _, e := range m.TimelineTimes { + l = e.Size() + n += 1 + l + sovTimelines(uint64(l)) + } + } + return n +} + +func (m *ManagerTimeline) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Manager) + if l > 0 { + n += 1 + l + sovTimelines(uint64(l)) + } + if len(m.TimelineTimes) > 0 { + for _, e := range m.TimelineTimes { + l = e.Size() + n += 1 + l + sovTimelines(uint64(l)) + } + } + return n +} + +func (m *IsArchivedTimeline) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.IsArchived { + n += 2 + } + if len(m.TimelineTimes) > 0 { + for _, e := range m.TimelineTimes { + l = e.Size() + n += 1 + l + sovTimelines(uint64(l)) + } + } + return n +} + +func (m *ContractAddressTimeline) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ContractAddress) + if l > 0 { + n += 1 + l + sovTimelines(uint64(l)) + } + if len(m.TimelineTimes) > 0 { + for _, e := range m.TimelineTimes { + l = e.Size() + n += 1 + l + sovTimelines(uint64(l)) + } + } + return n +} + +func (m *StandardsTimeline) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Standards) > 0 { + for _, s := range m.Standards { + l = len(s) + n += 1 + l + sovTimelines(uint64(l)) + } + } + if len(m.TimelineTimes) > 0 { + for _, e := range m.TimelineTimes { + l = e.Size() + n += 1 + l + sovTimelines(uint64(l)) + } + } + return n +} + +func sovTimelines(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozTimelines(x uint64) (n int) { + return sovTimelines(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *CollectionMetadataTimeline) 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 ErrIntOverflowTimelines + } + 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: CollectionMetadataTimeline: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CollectionMetadataTimeline: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionMetadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTimelines + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTimelines + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTimelines + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.CollectionMetadata == nil { + m.CollectionMetadata = &CollectionMetadata{} + } + if err := m.CollectionMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TimelineTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTimelines + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTimelines + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTimelines + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TimelineTimes = append(m.TimelineTimes, &UintRange{}) + if err := m.TimelineTimes[len(m.TimelineTimes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTimelines(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTimelines + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *TokenMetadataTimeline) 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 ErrIntOverflowTimelines + } + 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: TokenMetadataTimeline: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TokenMetadataTimeline: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TokenMetadata", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTimelines + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTimelines + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTimelines + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TokenMetadata = append(m.TokenMetadata, &TokenMetadata{}) + if err := m.TokenMetadata[len(m.TokenMetadata)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TimelineTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTimelines + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTimelines + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTimelines + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TimelineTimes = append(m.TimelineTimes, &UintRange{}) + if err := m.TimelineTimes[len(m.TimelineTimes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTimelines(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTimelines + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CustomDataTimeline) 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 ErrIntOverflowTimelines + } + 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: CustomDataTimeline: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CustomDataTimeline: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CustomData", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTimelines + } + 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 ErrInvalidLengthTimelines + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTimelines + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CustomData = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TimelineTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTimelines + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTimelines + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTimelines + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TimelineTimes = append(m.TimelineTimes, &UintRange{}) + if err := m.TimelineTimes[len(m.TimelineTimes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTimelines(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTimelines + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ManagerTimeline) 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 ErrIntOverflowTimelines + } + 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: ManagerTimeline: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ManagerTimeline: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Manager", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTimelines + } + 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 ErrInvalidLengthTimelines + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTimelines + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Manager = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TimelineTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTimelines + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTimelines + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTimelines + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TimelineTimes = append(m.TimelineTimes, &UintRange{}) + if err := m.TimelineTimes[len(m.TimelineTimes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTimelines(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTimelines + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *IsArchivedTimeline) 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 ErrIntOverflowTimelines + } + 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: IsArchivedTimeline: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: IsArchivedTimeline: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IsArchived", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTimelines + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.IsArchived = bool(v != 0) + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TimelineTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTimelines + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTimelines + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTimelines + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TimelineTimes = append(m.TimelineTimes, &UintRange{}) + if err := m.TimelineTimes[len(m.TimelineTimes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTimelines(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTimelines + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ContractAddressTimeline) 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 ErrIntOverflowTimelines + } + 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: ContractAddressTimeline: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ContractAddressTimeline: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ContractAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTimelines + } + 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 ErrInvalidLengthTimelines + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTimelines + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ContractAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TimelineTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTimelines + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTimelines + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTimelines + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TimelineTimes = append(m.TimelineTimes, &UintRange{}) + if err := m.TimelineTimes[len(m.TimelineTimes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTimelines(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTimelines + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *StandardsTimeline) 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 ErrIntOverflowTimelines + } + 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: StandardsTimeline: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: StandardsTimeline: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Standards", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTimelines + } + 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 ErrInvalidLengthTimelines + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTimelines + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Standards = append(m.Standards, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TimelineTimes", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTimelines + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTimelines + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTimelines + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TimelineTimes = append(m.TimelineTimes, &UintRange{}) + if err := m.TimelineTimes[len(m.TimelineTimes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTimelines(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTimelines + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipTimelines(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, ErrIntOverflowTimelines + } + 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, ErrIntOverflowTimelines + } + 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, ErrIntOverflowTimelines + } + 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, ErrInvalidLengthTimelines + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupTimelines + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthTimelines + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthTimelines = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowTimelines = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupTimelines = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/tokenization/types/v29/transfers.pb.go b/x/tokenization/types/v29/transfers.pb.go new file mode 100644 index 00000000..f77d9653 --- /dev/null +++ b/x/tokenization/types/v29/transfers.pb.go @@ -0,0 +1,1286 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: tokenization/v29/transfers.proto + +package v29 + +import ( + fmt "fmt" + _ "github.com/cosmos/gogoproto/gogoproto" + 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 + +// Transfer defines the details of a transfer of tokens. +type Transfer struct { + // The address of the sender of the transfer. + From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` + // The addresses of the recipients of the transfer. + ToAddresses []string `protobuf:"bytes,2,rep,name=toAddresses,proto3" json:"toAddresses,omitempty"` + // The balances to be transferred. + Balances []*Balance `protobuf:"bytes,3,rep,name=balances,proto3" json:"balances,omitempty"` + // If defined, we will use the predeterminedBalances from the specified approval to calculate the balances at execution time. + // We will override the balances field with the precalculated balances. Only applicable for approvals with predeterminedBalances set. + PrecalculateBalancesFromApproval *PrecalculateBalancesFromApprovalDetails `protobuf:"bytes,4,opt,name=precalculateBalancesFromApproval,proto3" json:"precalculateBalancesFromApproval,omitempty"` + // The Merkle proofs / solutions for all Merkle challenges required for the transfer. + MerkleProofs []*MerkleProof `protobuf:"bytes,5,rep,name=merkleProofs,proto3" json:"merkleProofs,omitempty"` + // The ETH signature proofs / solutions for all ETH signature challenges required for the transfer. + EthSignatureProofs []*ETHSignatureProof `protobuf:"bytes,6,rep,name=ethSignatureProofs,proto3" json:"ethSignatureProofs,omitempty"` + // The memo for the transfer. + Memo string `protobuf:"bytes,7,opt,name=memo,proto3" json:"memo,omitempty"` + // The prioritized approvals for the transfer. By default, we scan linearly through the approvals and use the first match. + // This field can be used to prioritize specific approvals and scan through them first. + PrioritizedApprovals []*ApprovalIdentifierDetails `protobuf:"bytes,8,rep,name=prioritizedApprovals,proto3" json:"prioritizedApprovals,omitempty"` + // Whether to only check prioritized approvals for the transfer. + // If true, we will only check the prioritized approvals and fail if none of them match (i.e. do not check any non-prioritized approvals). + // If false, we will check the prioritized approvals first and then scan through the rest of the approvals. + OnlyCheckPrioritizedCollectionApprovals bool `protobuf:"varint,9,opt,name=onlyCheckPrioritizedCollectionApprovals,proto3" json:"onlyCheckPrioritizedCollectionApprovals,omitempty"` + // Whether to only check prioritized approvals for the transfer. + // If true, we will only check the prioritized approvals and fail if none of them match (i.e. do not check any non-prioritized approvals). + // If false, we will check the prioritized approvals first and then scan through the rest of the approvals. + OnlyCheckPrioritizedIncomingApprovals bool `protobuf:"varint,10,opt,name=onlyCheckPrioritizedIncomingApprovals,proto3" json:"onlyCheckPrioritizedIncomingApprovals,omitempty"` + // Whether to only check prioritized approvals for the transfer. + // If true, we will only check the prioritized approvals and fail if none of them match (i.e. do not check any non-prioritized approvals). + // If false, we will check the prioritized approvals first and then scan through the rest of the approvals. + OnlyCheckPrioritizedOutgoingApprovals bool `protobuf:"varint,11,opt,name=onlyCheckPrioritizedOutgoingApprovals,proto3" json:"onlyCheckPrioritizedOutgoingApprovals,omitempty"` +} + +func (m *Transfer) Reset() { *m = Transfer{} } +func (m *Transfer) String() string { return proto.CompactTextString(m) } +func (*Transfer) ProtoMessage() {} +func (*Transfer) Descriptor() ([]byte, []int) { + return fileDescriptor_21c2d26033b7e791, []int{0} +} +func (m *Transfer) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Transfer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Transfer.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 *Transfer) XXX_Merge(src proto.Message) { + xxx_messageInfo_Transfer.Merge(m, src) +} +func (m *Transfer) XXX_Size() int { + return m.Size() +} +func (m *Transfer) XXX_DiscardUnknown() { + xxx_messageInfo_Transfer.DiscardUnknown(m) +} + +var xxx_messageInfo_Transfer proto.InternalMessageInfo + +func (m *Transfer) GetFrom() string { + if m != nil { + return m.From + } + return "" +} + +func (m *Transfer) GetToAddresses() []string { + if m != nil { + return m.ToAddresses + } + return nil +} + +func (m *Transfer) GetBalances() []*Balance { + if m != nil { + return m.Balances + } + return nil +} + +func (m *Transfer) GetPrecalculateBalancesFromApproval() *PrecalculateBalancesFromApprovalDetails { + if m != nil { + return m.PrecalculateBalancesFromApproval + } + return nil +} + +func (m *Transfer) GetMerkleProofs() []*MerkleProof { + if m != nil { + return m.MerkleProofs + } + return nil +} + +func (m *Transfer) GetEthSignatureProofs() []*ETHSignatureProof { + if m != nil { + return m.EthSignatureProofs + } + return nil +} + +func (m *Transfer) GetMemo() string { + if m != nil { + return m.Memo + } + return "" +} + +func (m *Transfer) GetPrioritizedApprovals() []*ApprovalIdentifierDetails { + if m != nil { + return m.PrioritizedApprovals + } + return nil +} + +func (m *Transfer) GetOnlyCheckPrioritizedCollectionApprovals() bool { + if m != nil { + return m.OnlyCheckPrioritizedCollectionApprovals + } + return false +} + +func (m *Transfer) GetOnlyCheckPrioritizedIncomingApprovals() bool { + if m != nil { + return m.OnlyCheckPrioritizedIncomingApprovals + } + return false +} + +func (m *Transfer) GetOnlyCheckPrioritizedOutgoingApprovals() bool { + if m != nil { + return m.OnlyCheckPrioritizedOutgoingApprovals + } + return false +} + +// PrecalculateBalancesFromApprovalDetails defines the details for precalculating balances from an approval. +type PrecalculateBalancesFromApprovalDetails struct { + // The ID of the approval. + ApprovalId string `protobuf:"bytes,1,opt,name=approvalId,proto3" json:"approvalId,omitempty"` + // The level of the approval. Can be "collection", "incoming", or "outgoing". + ApprovalLevel string `protobuf:"bytes,2,opt,name=approvalLevel,proto3" json:"approvalLevel,omitempty"` + // The address of the approver. Leave blank "" if approvalLevel == "collection". + ApproverAddress string `protobuf:"bytes,3,opt,name=approverAddress,proto3" json:"approverAddress,omitempty"` + // The version of the approval. + Version Uint `protobuf:"bytes,4,opt,name=version,proto3,customtype=Uint" json:"version"` + // The options for precalculating the balances. + PrecalculationOptions *PrecalculationOptions `protobuf:"bytes,5,opt,name=precalculationOptions,proto3" json:"precalculationOptions,omitempty"` +} + +func (m *PrecalculateBalancesFromApprovalDetails) Reset() { + *m = PrecalculateBalancesFromApprovalDetails{} +} +func (m *PrecalculateBalancesFromApprovalDetails) String() string { return proto.CompactTextString(m) } +func (*PrecalculateBalancesFromApprovalDetails) ProtoMessage() {} +func (*PrecalculateBalancesFromApprovalDetails) Descriptor() ([]byte, []int) { + return fileDescriptor_21c2d26033b7e791, []int{1} +} +func (m *PrecalculateBalancesFromApprovalDetails) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *PrecalculateBalancesFromApprovalDetails) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_PrecalculateBalancesFromApprovalDetails.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 *PrecalculateBalancesFromApprovalDetails) XXX_Merge(src proto.Message) { + xxx_messageInfo_PrecalculateBalancesFromApprovalDetails.Merge(m, src) +} +func (m *PrecalculateBalancesFromApprovalDetails) XXX_Size() int { + return m.Size() +} +func (m *PrecalculateBalancesFromApprovalDetails) XXX_DiscardUnknown() { + xxx_messageInfo_PrecalculateBalancesFromApprovalDetails.DiscardUnknown(m) +} + +var xxx_messageInfo_PrecalculateBalancesFromApprovalDetails proto.InternalMessageInfo + +func (m *PrecalculateBalancesFromApprovalDetails) GetApprovalId() string { + if m != nil { + return m.ApprovalId + } + return "" +} + +func (m *PrecalculateBalancesFromApprovalDetails) GetApprovalLevel() string { + if m != nil { + return m.ApprovalLevel + } + return "" +} + +func (m *PrecalculateBalancesFromApprovalDetails) GetApproverAddress() string { + if m != nil { + return m.ApproverAddress + } + return "" +} + +func (m *PrecalculateBalancesFromApprovalDetails) GetPrecalculationOptions() *PrecalculationOptions { + if m != nil { + return m.PrecalculationOptions + } + return nil +} + +func init() { + proto.RegisterType((*Transfer)(nil), "tokenization.v29.Transfer") + proto.RegisterType((*PrecalculateBalancesFromApprovalDetails)(nil), "tokenization.v29.PrecalculateBalancesFromApprovalDetails") +} + +func init() { proto.RegisterFile("tokenization/v29/transfers.proto", fileDescriptor_21c2d26033b7e791) } + +var fileDescriptor_21c2d26033b7e791 = []byte{ + // 582 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x94, 0x4f, 0x6b, 0x13, 0x41, + 0x14, 0xc0, 0xb3, 0x4d, 0x6d, 0x93, 0x49, 0x45, 0x19, 0x2a, 0xac, 0x05, 0xb7, 0x6b, 0xfd, 0xd3, + 0x05, 0x21, 0x0b, 0x11, 0x0f, 0x05, 0x2f, 0x4d, 0x55, 0x2c, 0x28, 0x0d, 0xdb, 0x28, 0x22, 0x88, + 0x4c, 0x36, 0x2f, 0x9b, 0x21, 0xb3, 0x33, 0xcb, 0xcc, 0x24, 0xd8, 0xde, 0xbd, 0x8b, 0x9f, 0xc0, + 0x8f, 0xd3, 0x63, 0x8f, 0xe2, 0xa1, 0x48, 0xf2, 0x45, 0x64, 0x37, 0xbb, 0xdd, 0xa4, 0x9b, 0xda, + 0x5c, 0xc2, 0xcb, 0xdb, 0xdf, 0xfc, 0xde, 0xbe, 0x9d, 0x79, 0x83, 0x6c, 0x2d, 0x06, 0xc0, 0xe9, + 0x29, 0xd1, 0x54, 0x70, 0x77, 0xd4, 0xd8, 0x73, 0xb5, 0x24, 0x5c, 0xf5, 0x40, 0xaa, 0x7a, 0x24, + 0x85, 0x16, 0xf8, 0xee, 0x2c, 0x51, 0x1f, 0x35, 0xf6, 0xb6, 0x36, 0x03, 0x11, 0x88, 0xe4, 0xa1, + 0x1b, 0x47, 0x53, 0x6e, 0x6b, 0xbb, 0x60, 0xea, 0x10, 0x46, 0xb8, 0x0f, 0xa9, 0x68, 0xab, 0x58, + 0x8a, 0x44, 0x91, 0x14, 0x23, 0xc2, 0x32, 0xe2, 0x61, 0x81, 0xf0, 0xfb, 0x84, 0x31, 0xe0, 0x41, + 0x26, 0xd9, 0xf9, 0xb9, 0x86, 0x2a, 0xed, 0xf4, 0x0d, 0x31, 0x46, 0xab, 0x3d, 0x29, 0x42, 0xd3, + 0xb0, 0x0d, 0xa7, 0xea, 0x25, 0x31, 0xb6, 0x51, 0x4d, 0x8b, 0xfd, 0x6e, 0x57, 0x82, 0x52, 0xa0, + 0xcc, 0x15, 0xbb, 0xec, 0x54, 0xbd, 0xd9, 0x14, 0x7e, 0x81, 0x2a, 0xd9, 0x9b, 0x99, 0x65, 0xbb, + 0xec, 0xd4, 0x1a, 0xf7, 0xeb, 0x57, 0x7b, 0xac, 0x37, 0xa7, 0x84, 0x77, 0x89, 0xe2, 0xef, 0x06, + 0xb2, 0x23, 0x09, 0x3e, 0x61, 0xfe, 0x90, 0x11, 0x0d, 0x29, 0xa1, 0xde, 0x48, 0x11, 0xee, 0xa7, + 0x8d, 0x98, 0xab, 0xb6, 0xe1, 0xd4, 0x1a, 0x7b, 0x45, 0x5f, 0xeb, 0x86, 0x95, 0xaf, 0x40, 0x13, + 0xca, 0x94, 0x77, 0x63, 0x09, 0xbc, 0x8f, 0x36, 0x42, 0x90, 0x03, 0x06, 0x2d, 0x29, 0x44, 0x4f, + 0x99, 0xb7, 0x92, 0x16, 0x1e, 0x14, 0x4b, 0xbe, 0xcf, 0x29, 0x6f, 0x6e, 0x09, 0x3e, 0x46, 0x18, + 0x74, 0xff, 0x98, 0x06, 0x9c, 0xe8, 0xa1, 0xcc, 0x44, 0x6b, 0x89, 0xe8, 0x51, 0x51, 0xf4, 0xba, + 0xfd, 0x76, 0x9e, 0xf5, 0x16, 0x2c, 0x8f, 0x37, 0x23, 0x84, 0x50, 0x98, 0xeb, 0xd3, 0xcd, 0x88, + 0x63, 0xfc, 0x15, 0x6d, 0x46, 0x92, 0x0a, 0x49, 0x35, 0x3d, 0x85, 0x6e, 0xd6, 0x82, 0x32, 0x2b, + 0x49, 0xa9, 0x67, 0xc5, 0x52, 0x19, 0x72, 0xd8, 0x05, 0xae, 0x69, 0x8f, 0x82, 0xcc, 0x3e, 0xcc, + 0x42, 0x11, 0xfe, 0x84, 0x76, 0x05, 0x67, 0x27, 0x07, 0x7d, 0xf0, 0x07, 0xad, 0x1c, 0x38, 0x10, + 0x8c, 0x81, 0x1f, 0x5b, 0xf3, 0x9a, 0x55, 0xdb, 0x70, 0x2a, 0xde, 0xb2, 0x38, 0x6e, 0xa3, 0x27, + 0x8b, 0xd0, 0x43, 0xee, 0x8b, 0x90, 0xf2, 0x20, 0xf7, 0xa2, 0xc4, 0xbb, 0x1c, 0x7c, 0x9d, 0xf5, + 0x68, 0xa8, 0x03, 0x31, 0x67, 0xad, 0x5d, 0x6f, 0x2d, 0xc0, 0x3b, 0xbf, 0x56, 0xd0, 0xee, 0x92, + 0x07, 0x0c, 0x5b, 0x08, 0x91, 0xcb, 0x8f, 0x9c, 0x4e, 0xce, 0x4c, 0x06, 0x3f, 0x46, 0xb7, 0xb3, + 0x7f, 0xef, 0x60, 0x04, 0xcc, 0x5c, 0x49, 0x90, 0xf9, 0x24, 0x76, 0xd0, 0x9d, 0x69, 0x02, 0x64, + 0x3a, 0x58, 0x66, 0x39, 0xe1, 0xae, 0xa6, 0xf1, 0x53, 0xb4, 0x3e, 0x02, 0xa9, 0xa8, 0xe0, 0xc9, + 0x70, 0x54, 0x9b, 0x1b, 0x67, 0x17, 0xdb, 0xa5, 0x3f, 0x17, 0xdb, 0xab, 0x1f, 0x28, 0xd7, 0x5e, + 0xf6, 0x10, 0x7f, 0x41, 0xf7, 0x66, 0x8e, 0x3e, 0x15, 0xfc, 0x28, 0x8a, 0x7f, 0xe3, 0xf3, 0x1d, + 0x8f, 0xd4, 0xee, 0x7f, 0x47, 0x2a, 0xc7, 0xbd, 0xc5, 0x96, 0xe6, 0xc7, 0xb3, 0xb1, 0x65, 0x9c, + 0x8f, 0x2d, 0xe3, 0xef, 0xd8, 0x32, 0x7e, 0x4c, 0xac, 0xd2, 0xf9, 0xc4, 0x2a, 0xfd, 0x9e, 0x58, + 0xa5, 0xcf, 0x2f, 0x03, 0xaa, 0xfb, 0xc3, 0x4e, 0xdd, 0x17, 0xa1, 0xdb, 0xa1, 0xba, 0x43, 0xba, + 0x01, 0xa8, 0x3c, 0xf2, 0xfb, 0x84, 0x72, 0xf7, 0x9b, 0x3b, 0x77, 0x35, 0xe9, 0x93, 0x08, 0x54, + 0x7c, 0x41, 0x75, 0xd6, 0x92, 0x6b, 0xe9, 0xf9, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x61, 0x0c, + 0xcd, 0xfa, 0x48, 0x05, 0x00, 0x00, +} + +func (m *Transfer) 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 *Transfer) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Transfer) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.OnlyCheckPrioritizedOutgoingApprovals { + i-- + if m.OnlyCheckPrioritizedOutgoingApprovals { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x58 + } + if m.OnlyCheckPrioritizedIncomingApprovals { + i-- + if m.OnlyCheckPrioritizedIncomingApprovals { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x50 + } + if m.OnlyCheckPrioritizedCollectionApprovals { + i-- + if m.OnlyCheckPrioritizedCollectionApprovals { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x48 + } + if len(m.PrioritizedApprovals) > 0 { + for iNdEx := len(m.PrioritizedApprovals) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.PrioritizedApprovals[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTransfers(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + } + } + if len(m.Memo) > 0 { + i -= len(m.Memo) + copy(dAtA[i:], m.Memo) + i = encodeVarintTransfers(dAtA, i, uint64(len(m.Memo))) + i-- + dAtA[i] = 0x3a + } + if len(m.EthSignatureProofs) > 0 { + for iNdEx := len(m.EthSignatureProofs) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.EthSignatureProofs[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTransfers(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + } + if len(m.MerkleProofs) > 0 { + for iNdEx := len(m.MerkleProofs) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.MerkleProofs[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTransfers(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + } + if m.PrecalculateBalancesFromApproval != nil { + { + size, err := m.PrecalculateBalancesFromApproval.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTransfers(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if len(m.Balances) > 0 { + for iNdEx := len(m.Balances) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Balances[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTransfers(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.ToAddresses) > 0 { + for iNdEx := len(m.ToAddresses) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.ToAddresses[iNdEx]) + copy(dAtA[i:], m.ToAddresses[iNdEx]) + i = encodeVarintTransfers(dAtA, i, uint64(len(m.ToAddresses[iNdEx]))) + i-- + dAtA[i] = 0x12 + } + } + if len(m.From) > 0 { + i -= len(m.From) + copy(dAtA[i:], m.From) + i = encodeVarintTransfers(dAtA, i, uint64(len(m.From))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *PrecalculateBalancesFromApprovalDetails) 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 *PrecalculateBalancesFromApprovalDetails) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *PrecalculateBalancesFromApprovalDetails) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.PrecalculationOptions != nil { + { + size, err := m.PrecalculationOptions.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTransfers(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + { + size := m.Version.Size() + i -= size + if _, err := m.Version.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTransfers(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + if len(m.ApproverAddress) > 0 { + i -= len(m.ApproverAddress) + copy(dAtA[i:], m.ApproverAddress) + i = encodeVarintTransfers(dAtA, i, uint64(len(m.ApproverAddress))) + i-- + dAtA[i] = 0x1a + } + if len(m.ApprovalLevel) > 0 { + i -= len(m.ApprovalLevel) + copy(dAtA[i:], m.ApprovalLevel) + i = encodeVarintTransfers(dAtA, i, uint64(len(m.ApprovalLevel))) + i-- + dAtA[i] = 0x12 + } + if len(m.ApprovalId) > 0 { + i -= len(m.ApprovalId) + copy(dAtA[i:], m.ApprovalId) + i = encodeVarintTransfers(dAtA, i, uint64(len(m.ApprovalId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintTransfers(dAtA []byte, offset int, v uint64) int { + offset -= sovTransfers(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *Transfer) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.From) + if l > 0 { + n += 1 + l + sovTransfers(uint64(l)) + } + if len(m.ToAddresses) > 0 { + for _, s := range m.ToAddresses { + l = len(s) + n += 1 + l + sovTransfers(uint64(l)) + } + } + if len(m.Balances) > 0 { + for _, e := range m.Balances { + l = e.Size() + n += 1 + l + sovTransfers(uint64(l)) + } + } + if m.PrecalculateBalancesFromApproval != nil { + l = m.PrecalculateBalancesFromApproval.Size() + n += 1 + l + sovTransfers(uint64(l)) + } + if len(m.MerkleProofs) > 0 { + for _, e := range m.MerkleProofs { + l = e.Size() + n += 1 + l + sovTransfers(uint64(l)) + } + } + if len(m.EthSignatureProofs) > 0 { + for _, e := range m.EthSignatureProofs { + l = e.Size() + n += 1 + l + sovTransfers(uint64(l)) + } + } + l = len(m.Memo) + if l > 0 { + n += 1 + l + sovTransfers(uint64(l)) + } + if len(m.PrioritizedApprovals) > 0 { + for _, e := range m.PrioritizedApprovals { + l = e.Size() + n += 1 + l + sovTransfers(uint64(l)) + } + } + if m.OnlyCheckPrioritizedCollectionApprovals { + n += 2 + } + if m.OnlyCheckPrioritizedIncomingApprovals { + n += 2 + } + if m.OnlyCheckPrioritizedOutgoingApprovals { + n += 2 + } + return n +} + +func (m *PrecalculateBalancesFromApprovalDetails) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ApprovalId) + if l > 0 { + n += 1 + l + sovTransfers(uint64(l)) + } + l = len(m.ApprovalLevel) + if l > 0 { + n += 1 + l + sovTransfers(uint64(l)) + } + l = len(m.ApproverAddress) + if l > 0 { + n += 1 + l + sovTransfers(uint64(l)) + } + l = m.Version.Size() + n += 1 + l + sovTransfers(uint64(l)) + if m.PrecalculationOptions != nil { + l = m.PrecalculationOptions.Size() + n += 1 + l + sovTransfers(uint64(l)) + } + return n +} + +func sovTransfers(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozTransfers(x uint64) (n int) { + return sovTransfers(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *Transfer) 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 ErrIntOverflowTransfers + } + 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: Transfer: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Transfer: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field From", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTransfers + } + 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 ErrInvalidLengthTransfers + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTransfers + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.From = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ToAddresses", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTransfers + } + 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 ErrInvalidLengthTransfers + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTransfers + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ToAddresses = append(m.ToAddresses, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Balances", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTransfers + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTransfers + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTransfers + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Balances = append(m.Balances, &Balance{}) + if err := m.Balances[len(m.Balances)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PrecalculateBalancesFromApproval", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTransfers + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTransfers + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTransfers + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.PrecalculateBalancesFromApproval == nil { + m.PrecalculateBalancesFromApproval = &PrecalculateBalancesFromApprovalDetails{} + } + if err := m.PrecalculateBalancesFromApproval.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MerkleProofs", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTransfers + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTransfers + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTransfers + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MerkleProofs = append(m.MerkleProofs, &MerkleProof{}) + if err := m.MerkleProofs[len(m.MerkleProofs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EthSignatureProofs", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTransfers + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTransfers + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTransfers + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.EthSignatureProofs = append(m.EthSignatureProofs, ÐSignatureProof{}) + if err := m.EthSignatureProofs[len(m.EthSignatureProofs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Memo", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTransfers + } + 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 ErrInvalidLengthTransfers + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTransfers + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Memo = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PrioritizedApprovals", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTransfers + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTransfers + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTransfers + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PrioritizedApprovals = append(m.PrioritizedApprovals, &ApprovalIdentifierDetails{}) + if err := m.PrioritizedApprovals[len(m.PrioritizedApprovals)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field OnlyCheckPrioritizedCollectionApprovals", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTransfers + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.OnlyCheckPrioritizedCollectionApprovals = bool(v != 0) + case 10: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field OnlyCheckPrioritizedIncomingApprovals", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTransfers + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.OnlyCheckPrioritizedIncomingApprovals = bool(v != 0) + case 11: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field OnlyCheckPrioritizedOutgoingApprovals", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTransfers + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.OnlyCheckPrioritizedOutgoingApprovals = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skipTransfers(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTransfers + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PrecalculateBalancesFromApprovalDetails) 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 ErrIntOverflowTransfers + } + 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: PrecalculateBalancesFromApprovalDetails: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PrecalculateBalancesFromApprovalDetails: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTransfers + } + 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 ErrInvalidLengthTransfers + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTransfers + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ApprovalId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalLevel", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTransfers + } + 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 ErrInvalidLengthTransfers + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTransfers + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ApprovalLevel = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApproverAddress", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTransfers + } + 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 ErrInvalidLengthTransfers + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTransfers + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ApproverAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTransfers + } + 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 ErrInvalidLengthTransfers + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTransfers + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Version.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PrecalculationOptions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTransfers + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTransfers + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTransfers + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.PrecalculationOptions == nil { + m.PrecalculationOptions = &PrecalculationOptions{} + } + if err := m.PrecalculationOptions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipTransfers(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTransfers + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipTransfers(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, ErrIntOverflowTransfers + } + 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, ErrIntOverflowTransfers + } + 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, ErrIntOverflowTransfers + } + 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, ErrInvalidLengthTransfers + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupTransfers + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthTransfers + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthTransfers = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowTransfers = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupTransfers = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/tokenization/types/v29/tx.pb.go b/x/tokenization/types/v29/tx.pb.go new file mode 100644 index 00000000..08531d77 --- /dev/null +++ b/x/tokenization/types/v29/tx.pb.go @@ -0,0 +1,23046 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: tokenization/v29/tx.proto + +package v29 + +import ( + context "context" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + types "github.com/cosmos/cosmos-sdk/types" + _ "github.com/cosmos/cosmos-sdk/types/msgservice" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + _ "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 + +// Used for WASM bindings and JSON parsing +type TokenizationCustomMsgType struct { + CreateAddressListsMsg *MsgCreateAddressLists `protobuf:"bytes,1,opt,name=createAddressListsMsg,proto3" json:"createAddressListsMsg,omitempty"` + UniversalUpdateCollectionMsg *MsgUniversalUpdateCollection `protobuf:"bytes,2,opt,name=universalUpdateCollectionMsg,proto3" json:"universalUpdateCollectionMsg,omitempty"` + DeleteCollectionMsg *MsgDeleteCollection `protobuf:"bytes,3,opt,name=deleteCollectionMsg,proto3" json:"deleteCollectionMsg,omitempty"` + TransferTokensMsg *MsgTransferTokens `protobuf:"bytes,4,opt,name=transferTokensMsg,proto3" json:"transferTokensMsg,omitempty"` + UpdateUserApprovalsMsg *MsgUpdateUserApprovals `protobuf:"bytes,5,opt,name=updateUserApprovalsMsg,proto3" json:"updateUserApprovalsMsg,omitempty"` + UpdateCollectionMsg *MsgUpdateCollection `protobuf:"bytes,6,opt,name=updateCollectionMsg,proto3" json:"updateCollectionMsg,omitempty"` + CreateCollectionMsg *MsgCreateCollection `protobuf:"bytes,7,opt,name=createCollectionMsg,proto3" json:"createCollectionMsg,omitempty"` + CreateDynamicStoreMsg *MsgCreateDynamicStore `protobuf:"bytes,8,opt,name=createDynamicStoreMsg,proto3" json:"createDynamicStoreMsg,omitempty"` + UpdateDynamicStoreMsg *MsgUpdateDynamicStore `protobuf:"bytes,9,opt,name=updateDynamicStoreMsg,proto3" json:"updateDynamicStoreMsg,omitempty"` + DeleteDynamicStoreMsg *MsgDeleteDynamicStore `protobuf:"bytes,10,opt,name=deleteDynamicStoreMsg,proto3" json:"deleteDynamicStoreMsg,omitempty"` + SetDynamicStoreValueMsg *MsgSetDynamicStoreValue `protobuf:"bytes,11,opt,name=setDynamicStoreValueMsg,proto3" json:"setDynamicStoreValueMsg,omitempty"` + SetIncomingApprovalMsg *MsgSetIncomingApproval `protobuf:"bytes,14,opt,name=setIncomingApprovalMsg,proto3" json:"setIncomingApprovalMsg,omitempty"` + DeleteIncomingApprovalMsg *MsgDeleteIncomingApproval `protobuf:"bytes,15,opt,name=deleteIncomingApprovalMsg,proto3" json:"deleteIncomingApprovalMsg,omitempty"` + SetOutgoingApprovalMsg *MsgSetOutgoingApproval `protobuf:"bytes,16,opt,name=setOutgoingApprovalMsg,proto3" json:"setOutgoingApprovalMsg,omitempty"` + DeleteOutgoingApprovalMsg *MsgDeleteOutgoingApproval `protobuf:"bytes,17,opt,name=deleteOutgoingApprovalMsg,proto3" json:"deleteOutgoingApprovalMsg,omitempty"` + PurgeApprovalsMsg *MsgPurgeApprovals `protobuf:"bytes,18,opt,name=purgeApprovalsMsg,proto3" json:"purgeApprovalsMsg,omitempty"` + // Helper message types for UniversalUpdateCollection subsets + SetValidTokenIdsMsg *MsgSetValidTokenIds `protobuf:"bytes,19,opt,name=setValidTokenIdsMsg,proto3" json:"setValidTokenIdsMsg,omitempty"` + SetManagerMsg *MsgSetManager `protobuf:"bytes,20,opt,name=setManagerMsg,proto3" json:"setManagerMsg,omitempty"` + SetCollectionMetadataMsg *MsgSetCollectionMetadata `protobuf:"bytes,21,opt,name=setCollectionMetadataMsg,proto3" json:"setCollectionMetadataMsg,omitempty"` + SetTokenMetadataMsg *MsgSetTokenMetadata `protobuf:"bytes,22,opt,name=setTokenMetadataMsg,proto3" json:"setTokenMetadataMsg,omitempty"` + SetCustomDataMsg *MsgSetCustomData `protobuf:"bytes,23,opt,name=setCustomDataMsg,proto3" json:"setCustomDataMsg,omitempty"` + SetStandardsMsg *MsgSetStandards `protobuf:"bytes,24,opt,name=setStandardsMsg,proto3" json:"setStandardsMsg,omitempty"` + SetCollectionApprovalsMsg *MsgSetCollectionApprovals `protobuf:"bytes,25,opt,name=setCollectionApprovalsMsg,proto3" json:"setCollectionApprovalsMsg,omitempty"` + SetIsArchivedMsg *MsgSetIsArchived `protobuf:"bytes,26,opt,name=setIsArchivedMsg,proto3" json:"setIsArchivedMsg,omitempty"` + SetReservedProtocolAddressMsg *MsgSetReservedProtocolAddress `protobuf:"bytes,27,opt,name=setReservedProtocolAddressMsg,proto3" json:"setReservedProtocolAddressMsg,omitempty"` + CastVoteMsg *MsgCastVote `protobuf:"bytes,28,opt,name=castVoteMsg,proto3" json:"castVoteMsg,omitempty"` +} + +func (m *TokenizationCustomMsgType) Reset() { *m = TokenizationCustomMsgType{} } +func (m *TokenizationCustomMsgType) String() string { return proto.CompactTextString(m) } +func (*TokenizationCustomMsgType) ProtoMessage() {} +func (*TokenizationCustomMsgType) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{0} +} +func (m *TokenizationCustomMsgType) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *TokenizationCustomMsgType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_TokenizationCustomMsgType.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 *TokenizationCustomMsgType) XXX_Merge(src proto.Message) { + xxx_messageInfo_TokenizationCustomMsgType.Merge(m, src) +} +func (m *TokenizationCustomMsgType) XXX_Size() int { + return m.Size() +} +func (m *TokenizationCustomMsgType) XXX_DiscardUnknown() { + xxx_messageInfo_TokenizationCustomMsgType.DiscardUnknown(m) +} + +var xxx_messageInfo_TokenizationCustomMsgType proto.InternalMessageInfo + +func (m *TokenizationCustomMsgType) GetCreateAddressListsMsg() *MsgCreateAddressLists { + if m != nil { + return m.CreateAddressListsMsg + } + return nil +} + +func (m *TokenizationCustomMsgType) GetUniversalUpdateCollectionMsg() *MsgUniversalUpdateCollection { + if m != nil { + return m.UniversalUpdateCollectionMsg + } + return nil +} + +func (m *TokenizationCustomMsgType) GetDeleteCollectionMsg() *MsgDeleteCollection { + if m != nil { + return m.DeleteCollectionMsg + } + return nil +} + +func (m *TokenizationCustomMsgType) GetTransferTokensMsg() *MsgTransferTokens { + if m != nil { + return m.TransferTokensMsg + } + return nil +} + +func (m *TokenizationCustomMsgType) GetUpdateUserApprovalsMsg() *MsgUpdateUserApprovals { + if m != nil { + return m.UpdateUserApprovalsMsg + } + return nil +} + +func (m *TokenizationCustomMsgType) GetUpdateCollectionMsg() *MsgUpdateCollection { + if m != nil { + return m.UpdateCollectionMsg + } + return nil +} + +func (m *TokenizationCustomMsgType) GetCreateCollectionMsg() *MsgCreateCollection { + if m != nil { + return m.CreateCollectionMsg + } + return nil +} + +func (m *TokenizationCustomMsgType) GetCreateDynamicStoreMsg() *MsgCreateDynamicStore { + if m != nil { + return m.CreateDynamicStoreMsg + } + return nil +} + +func (m *TokenizationCustomMsgType) GetUpdateDynamicStoreMsg() *MsgUpdateDynamicStore { + if m != nil { + return m.UpdateDynamicStoreMsg + } + return nil +} + +func (m *TokenizationCustomMsgType) GetDeleteDynamicStoreMsg() *MsgDeleteDynamicStore { + if m != nil { + return m.DeleteDynamicStoreMsg + } + return nil +} + +func (m *TokenizationCustomMsgType) GetSetDynamicStoreValueMsg() *MsgSetDynamicStoreValue { + if m != nil { + return m.SetDynamicStoreValueMsg + } + return nil +} + +func (m *TokenizationCustomMsgType) GetSetIncomingApprovalMsg() *MsgSetIncomingApproval { + if m != nil { + return m.SetIncomingApprovalMsg + } + return nil +} + +func (m *TokenizationCustomMsgType) GetDeleteIncomingApprovalMsg() *MsgDeleteIncomingApproval { + if m != nil { + return m.DeleteIncomingApprovalMsg + } + return nil +} + +func (m *TokenizationCustomMsgType) GetSetOutgoingApprovalMsg() *MsgSetOutgoingApproval { + if m != nil { + return m.SetOutgoingApprovalMsg + } + return nil +} + +func (m *TokenizationCustomMsgType) GetDeleteOutgoingApprovalMsg() *MsgDeleteOutgoingApproval { + if m != nil { + return m.DeleteOutgoingApprovalMsg + } + return nil +} + +func (m *TokenizationCustomMsgType) GetPurgeApprovalsMsg() *MsgPurgeApprovals { + if m != nil { + return m.PurgeApprovalsMsg + } + return nil +} + +func (m *TokenizationCustomMsgType) GetSetValidTokenIdsMsg() *MsgSetValidTokenIds { + if m != nil { + return m.SetValidTokenIdsMsg + } + return nil +} + +func (m *TokenizationCustomMsgType) GetSetManagerMsg() *MsgSetManager { + if m != nil { + return m.SetManagerMsg + } + return nil +} + +func (m *TokenizationCustomMsgType) GetSetCollectionMetadataMsg() *MsgSetCollectionMetadata { + if m != nil { + return m.SetCollectionMetadataMsg + } + return nil +} + +func (m *TokenizationCustomMsgType) GetSetTokenMetadataMsg() *MsgSetTokenMetadata { + if m != nil { + return m.SetTokenMetadataMsg + } + return nil +} + +func (m *TokenizationCustomMsgType) GetSetCustomDataMsg() *MsgSetCustomData { + if m != nil { + return m.SetCustomDataMsg + } + return nil +} + +func (m *TokenizationCustomMsgType) GetSetStandardsMsg() *MsgSetStandards { + if m != nil { + return m.SetStandardsMsg + } + return nil +} + +func (m *TokenizationCustomMsgType) GetSetCollectionApprovalsMsg() *MsgSetCollectionApprovals { + if m != nil { + return m.SetCollectionApprovalsMsg + } + return nil +} + +func (m *TokenizationCustomMsgType) GetSetIsArchivedMsg() *MsgSetIsArchived { + if m != nil { + return m.SetIsArchivedMsg + } + return nil +} + +func (m *TokenizationCustomMsgType) GetSetReservedProtocolAddressMsg() *MsgSetReservedProtocolAddress { + if m != nil { + return m.SetReservedProtocolAddressMsg + } + return nil +} + +func (m *TokenizationCustomMsgType) GetCastVoteMsg() *MsgCastVote { + if m != nil { + return m.CastVoteMsg + } + return nil +} + +// MsgUpdateParams is the Msg/UpdateParams request type. +type MsgUpdateParams struct { + // authority is the address that controls the module (defaults to x/gov unless overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // params defines the module 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_5ff3c354e788fb63, []int{1} +} +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. +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_5ff3c354e788fb63, []int{2} +} +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 + +type CosmosCoinWrapperPathAddObject struct { + Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` + Conversion *ConversionWithoutDenom `protobuf:"bytes,2,opt,name=conversion,proto3" json:"conversion,omitempty"` + Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` + DenomUnits []*DenomUnit `protobuf:"bytes,4,rep,name=denomUnits,proto3" json:"denomUnits,omitempty"` + AllowOverrideWithAnyValidToken bool `protobuf:"varint,5,opt,name=allowOverrideWithAnyValidToken,proto3" json:"allowOverrideWithAnyValidToken,omitempty"` + // The metadata for this wrapper path. + Metadata *PathMetadata `protobuf:"bytes,6,opt,name=metadata,proto3" json:"metadata,omitempty"` +} + +func (m *CosmosCoinWrapperPathAddObject) Reset() { *m = CosmosCoinWrapperPathAddObject{} } +func (m *CosmosCoinWrapperPathAddObject) String() string { return proto.CompactTextString(m) } +func (*CosmosCoinWrapperPathAddObject) ProtoMessage() {} +func (*CosmosCoinWrapperPathAddObject) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{3} +} +func (m *CosmosCoinWrapperPathAddObject) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CosmosCoinWrapperPathAddObject) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CosmosCoinWrapperPathAddObject.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 *CosmosCoinWrapperPathAddObject) XXX_Merge(src proto.Message) { + xxx_messageInfo_CosmosCoinWrapperPathAddObject.Merge(m, src) +} +func (m *CosmosCoinWrapperPathAddObject) XXX_Size() int { + return m.Size() +} +func (m *CosmosCoinWrapperPathAddObject) XXX_DiscardUnknown() { + xxx_messageInfo_CosmosCoinWrapperPathAddObject.DiscardUnknown(m) +} + +var xxx_messageInfo_CosmosCoinWrapperPathAddObject proto.InternalMessageInfo + +func (m *CosmosCoinWrapperPathAddObject) GetDenom() string { + if m != nil { + return m.Denom + } + return "" +} + +func (m *CosmosCoinWrapperPathAddObject) GetConversion() *ConversionWithoutDenom { + if m != nil { + return m.Conversion + } + return nil +} + +func (m *CosmosCoinWrapperPathAddObject) GetSymbol() string { + if m != nil { + return m.Symbol + } + return "" +} + +func (m *CosmosCoinWrapperPathAddObject) GetDenomUnits() []*DenomUnit { + if m != nil { + return m.DenomUnits + } + return nil +} + +func (m *CosmosCoinWrapperPathAddObject) GetAllowOverrideWithAnyValidToken() bool { + if m != nil { + return m.AllowOverrideWithAnyValidToken + } + return false +} + +func (m *CosmosCoinWrapperPathAddObject) GetMetadata() *PathMetadata { + if m != nil { + return m.Metadata + } + return nil +} + +type AliasPathAddObject struct { + Denom string `protobuf:"bytes,1,opt,name=denom,proto3" json:"denom,omitempty"` + Conversion *ConversionWithoutDenom `protobuf:"bytes,2,opt,name=conversion,proto3" json:"conversion,omitempty"` + Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty"` + DenomUnits []*DenomUnit `protobuf:"bytes,4,rep,name=denomUnits,proto3" json:"denomUnits,omitempty"` + // The metadata for this alias path. + Metadata *PathMetadata `protobuf:"bytes,5,opt,name=metadata,proto3" json:"metadata,omitempty"` +} + +func (m *AliasPathAddObject) Reset() { *m = AliasPathAddObject{} } +func (m *AliasPathAddObject) String() string { return proto.CompactTextString(m) } +func (*AliasPathAddObject) ProtoMessage() {} +func (*AliasPathAddObject) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{4} +} +func (m *AliasPathAddObject) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AliasPathAddObject) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AliasPathAddObject.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 *AliasPathAddObject) XXX_Merge(src proto.Message) { + xxx_messageInfo_AliasPathAddObject.Merge(m, src) +} +func (m *AliasPathAddObject) XXX_Size() int { + return m.Size() +} +func (m *AliasPathAddObject) XXX_DiscardUnknown() { + xxx_messageInfo_AliasPathAddObject.DiscardUnknown(m) +} + +var xxx_messageInfo_AliasPathAddObject proto.InternalMessageInfo + +func (m *AliasPathAddObject) GetDenom() string { + if m != nil { + return m.Denom + } + return "" +} + +func (m *AliasPathAddObject) GetConversion() *ConversionWithoutDenom { + if m != nil { + return m.Conversion + } + return nil +} + +func (m *AliasPathAddObject) GetSymbol() string { + if m != nil { + return m.Symbol + } + return "" +} + +func (m *AliasPathAddObject) GetDenomUnits() []*DenomUnit { + if m != nil { + return m.DenomUnits + } + return nil +} + +func (m *AliasPathAddObject) GetMetadata() *PathMetadata { + if m != nil { + return m.Metadata + } + return nil +} + +type CosmosCoinBackedPathAddObject struct { + Conversion *Conversion `protobuf:"bytes,1,opt,name=conversion,proto3" json:"conversion,omitempty"` +} + +func (m *CosmosCoinBackedPathAddObject) Reset() { *m = CosmosCoinBackedPathAddObject{} } +func (m *CosmosCoinBackedPathAddObject) String() string { return proto.CompactTextString(m) } +func (*CosmosCoinBackedPathAddObject) ProtoMessage() {} +func (*CosmosCoinBackedPathAddObject) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{5} +} +func (m *CosmosCoinBackedPathAddObject) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CosmosCoinBackedPathAddObject) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CosmosCoinBackedPathAddObject.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 *CosmosCoinBackedPathAddObject) XXX_Merge(src proto.Message) { + xxx_messageInfo_CosmosCoinBackedPathAddObject.Merge(m, src) +} +func (m *CosmosCoinBackedPathAddObject) XXX_Size() int { + return m.Size() +} +func (m *CosmosCoinBackedPathAddObject) XXX_DiscardUnknown() { + xxx_messageInfo_CosmosCoinBackedPathAddObject.DiscardUnknown(m) +} + +var xxx_messageInfo_CosmosCoinBackedPathAddObject proto.InternalMessageInfo + +func (m *CosmosCoinBackedPathAddObject) GetConversion() *Conversion { + if m != nil { + return m.Conversion + } + return nil +} + +// InvariantsAddObject is used for adding invariants without specifying addresses. +// Addresses are generated by the keeper and stored in the collection. +type InvariantsAddObject struct { + // If true, all ownership times must be full ranges [{ start: 1, end: GoMaxUInt64 }]. + // This prevents time-based restrictions on token ownership. + NoCustomOwnershipTimes bool `protobuf:"varint,1,opt,name=noCustomOwnershipTimes,proto3" json:"noCustomOwnershipTimes,omitempty"` + // Maximum supply per token ID. Checked against Total address balances after transfers complete. + // A value of 0 means no limit (unlimited). + MaxSupplyPerId Uint `protobuf:"bytes,2,opt,name=maxSupplyPerId,proto3,customtype=Uint" json:"maxSupplyPerId"` + // The IBC backed (sdk.coin) path for the collection. Only one path is allowed. + // Address will be generated by the keeper. + CosmosCoinBackedPath *CosmosCoinBackedPathAddObject `protobuf:"bytes,3,opt,name=cosmosCoinBackedPath,proto3" json:"cosmosCoinBackedPath,omitempty"` + // If true, disallows any collection approvals that have overridesFromOutgoingApprovals or overridesToIncomingApprovals set to true. + // This prevents forceful transfers that bypass user-level approvals. + // This only applies to transfers where the from address does not equal "Mint". + NoForcefulPostMintTransfers bool `protobuf:"varint,4,opt,name=noForcefulPostMintTransfers,proto3" json:"noForcefulPostMintTransfers,omitempty"` + // If true, disallows pool creation with this collection's assets. + // When true, any attempt to create a pool with tokenization assets from this collection will fail. + DisablePoolCreation bool `protobuf:"varint,5,opt,name=disablePoolCreation,proto3" json:"disablePoolCreation,omitempty"` + // EVM query invariants that must pass after all transfers complete. + // These are checked once per message after all balance updates, with access to ALL recipient addresses. + // Placeholders: $sender, $recipients (comma-separated), $initiator, $collectionId, $recipient + EvmQueryChallenges []*EVMQueryChallenge `protobuf:"bytes,6,rep,name=evmQueryChallenges,proto3" json:"evmQueryChallenges,omitempty"` +} + +func (m *InvariantsAddObject) Reset() { *m = InvariantsAddObject{} } +func (m *InvariantsAddObject) String() string { return proto.CompactTextString(m) } +func (*InvariantsAddObject) ProtoMessage() {} +func (*InvariantsAddObject) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{6} +} +func (m *InvariantsAddObject) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *InvariantsAddObject) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_InvariantsAddObject.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 *InvariantsAddObject) XXX_Merge(src proto.Message) { + xxx_messageInfo_InvariantsAddObject.Merge(m, src) +} +func (m *InvariantsAddObject) XXX_Size() int { + return m.Size() +} +func (m *InvariantsAddObject) XXX_DiscardUnknown() { + xxx_messageInfo_InvariantsAddObject.DiscardUnknown(m) +} + +var xxx_messageInfo_InvariantsAddObject proto.InternalMessageInfo + +func (m *InvariantsAddObject) GetNoCustomOwnershipTimes() bool { + if m != nil { + return m.NoCustomOwnershipTimes + } + return false +} + +func (m *InvariantsAddObject) GetCosmosCoinBackedPath() *CosmosCoinBackedPathAddObject { + if m != nil { + return m.CosmosCoinBackedPath + } + return nil +} + +func (m *InvariantsAddObject) GetNoForcefulPostMintTransfers() bool { + if m != nil { + return m.NoForcefulPostMintTransfers + } + return false +} + +func (m *InvariantsAddObject) GetDisablePoolCreation() bool { + if m != nil { + return m.DisablePoolCreation + } + return false +} + +func (m *InvariantsAddObject) GetEvmQueryChallenges() []*EVMQueryChallenge { + if m != nil { + return m.EvmQueryChallenges + } + return nil +} + +// MsgUniversalUpdateCollection is used to define MsgServer types for all requests and responses for Msgs of the tokens module. +// It is a universal interface that can be used for both creating and updating collections. +// We have it defined for legacy purposes, but it is recommended to use MsgCreateCollection and MsgUpdateCollection instead. +type MsgUniversalUpdateCollection struct { + // Address of the creator. + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + // ID of the collection (0 for new collection). + CollectionId Uint `protobuf:"bytes,2,opt,name=collectionId,proto3,customtype=Uint" json:"collectionId"` + // The default balances for the user + DefaultBalances *UserBalanceStore `protobuf:"bytes,3,opt,name=defaultBalances,proto3" json:"defaultBalances,omitempty"` + // Indicates if the valid token IDs should be updated. If true, we set to value in this Msg. If false, we keep existing value. + UpdateValidTokenIds bool `protobuf:"varint,4,opt,name=updateValidTokenIds,proto3" json:"updateValidTokenIds,omitempty"` + // New token IDs to add to this collection + ValidTokenIds []*UintRange `protobuf:"bytes,5,rep,name=validTokenIds,proto3" json:"validTokenIds,omitempty"` + // Indicates if collection permissions should be updated. If true, we set to value in this Msg. If false, we keep existing value. + UpdateCollectionPermissions bool `protobuf:"varint,6,opt,name=updateCollectionPermissions,proto3" json:"updateCollectionPermissions,omitempty"` + // New collection permissions to set. + CollectionPermissions *CollectionPermissions `protobuf:"bytes,7,opt,name=collectionPermissions,proto3" json:"collectionPermissions,omitempty"` + // Indicates if the manager should be updated. If true, we set to value in this Msg. If false, we keep existing value. + UpdateManager bool `protobuf:"varint,8,opt,name=updateManager,proto3" json:"updateManager,omitempty"` + // New manager to set. + Manager string `protobuf:"bytes,9,opt,name=manager,proto3" json:"manager,omitempty"` + // Indicates if the collection metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value. + UpdateCollectionMetadata bool `protobuf:"varint,10,opt,name=updateCollectionMetadata,proto3" json:"updateCollectionMetadata,omitempty"` + // New collection metadata to set. + CollectionMetadata *CollectionMetadata `protobuf:"bytes,11,opt,name=collectionMetadata,proto3" json:"collectionMetadata,omitempty"` + // Indicates if the token metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value. + UpdateTokenMetadata bool `protobuf:"varint,12,opt,name=updateTokenMetadata,proto3" json:"updateTokenMetadata,omitempty"` + // New token metadata to set. + TokenMetadata []*TokenMetadata `protobuf:"bytes,13,rep,name=tokenMetadata,proto3" json:"tokenMetadata,omitempty"` + // Indicates if the custom data should be updated. If true, we set to value in this Msg. If false, we keep existing value. + UpdateCustomData bool `protobuf:"varint,14,opt,name=updateCustomData,proto3" json:"updateCustomData,omitempty"` + // New custom data to set. + CustomData string `protobuf:"bytes,15,opt,name=customData,proto3" json:"customData,omitempty"` + // Indicates if collection approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value. + UpdateCollectionApprovals bool `protobuf:"varint,16,opt,name=updateCollectionApprovals,proto3" json:"updateCollectionApprovals,omitempty"` + // New collection approvals to set. + CollectionApprovals []*CollectionApproval `protobuf:"bytes,17,rep,name=collectionApprovals,proto3" json:"collectionApprovals,omitempty"` + // Indicates if the standards should be updated. If true, we set to value in this Msg. If false, we keep existing value. + UpdateStandards bool `protobuf:"varint,18,opt,name=updateStandards,proto3" json:"updateStandards,omitempty"` + // New standards to set. + Standards []string `protobuf:"bytes,19,rep,name=standards,proto3" json:"standards,omitempty"` + // Indicates if the isArchived should be updated. If true, we set to value in this Msg. If false, we keep existing value. + UpdateIsArchived bool `protobuf:"varint,20,opt,name=updateIsArchived,proto3" json:"updateIsArchived,omitempty"` + // New isArchived to set. + IsArchived bool `protobuf:"varint,21,opt,name=isArchived,proto3" json:"isArchived,omitempty"` + // Coins to be transferred to the mint escrow address. + MintEscrowCoinsToTransfer []*types.Coin `protobuf:"bytes,22,rep,name=mintEscrowCoinsToTransfer,proto3" json:"mintEscrowCoinsToTransfer,omitempty"` + // IBC wrapper paths to add. + CosmosCoinWrapperPathsToAdd []*CosmosCoinWrapperPathAddObject `protobuf:"bytes,23,rep,name=cosmosCoinWrapperPathsToAdd,proto3" json:"cosmosCoinWrapperPathsToAdd,omitempty"` + // Collection-level invariants that cannot be broken. + // These are set upon genesis and cannot be modified. + // Addresses are generated by the keeper and stored in the collection. + Invariants *InvariantsAddObject `protobuf:"bytes,24,opt,name=invariants,proto3" json:"invariants,omitempty"` + // Alias (non-wrapping) paths to add. + AliasPathsToAdd []*AliasPathAddObject `protobuf:"bytes,25,rep,name=aliasPathsToAdd,proto3" json:"aliasPathsToAdd,omitempty"` +} + +func (m *MsgUniversalUpdateCollection) Reset() { *m = MsgUniversalUpdateCollection{} } +func (m *MsgUniversalUpdateCollection) String() string { return proto.CompactTextString(m) } +func (*MsgUniversalUpdateCollection) ProtoMessage() {} +func (*MsgUniversalUpdateCollection) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{7} +} +func (m *MsgUniversalUpdateCollection) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUniversalUpdateCollection) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUniversalUpdateCollection.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 *MsgUniversalUpdateCollection) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUniversalUpdateCollection.Merge(m, src) +} +func (m *MsgUniversalUpdateCollection) XXX_Size() int { + return m.Size() +} +func (m *MsgUniversalUpdateCollection) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUniversalUpdateCollection.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUniversalUpdateCollection proto.InternalMessageInfo + +func (m *MsgUniversalUpdateCollection) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgUniversalUpdateCollection) GetDefaultBalances() *UserBalanceStore { + if m != nil { + return m.DefaultBalances + } + return nil +} + +func (m *MsgUniversalUpdateCollection) GetUpdateValidTokenIds() bool { + if m != nil { + return m.UpdateValidTokenIds + } + return false +} + +func (m *MsgUniversalUpdateCollection) GetValidTokenIds() []*UintRange { + if m != nil { + return m.ValidTokenIds + } + return nil +} + +func (m *MsgUniversalUpdateCollection) GetUpdateCollectionPermissions() bool { + if m != nil { + return m.UpdateCollectionPermissions + } + return false +} + +func (m *MsgUniversalUpdateCollection) GetCollectionPermissions() *CollectionPermissions { + if m != nil { + return m.CollectionPermissions + } + return nil +} + +func (m *MsgUniversalUpdateCollection) GetUpdateManager() bool { + if m != nil { + return m.UpdateManager + } + return false +} + +func (m *MsgUniversalUpdateCollection) GetManager() string { + if m != nil { + return m.Manager + } + return "" +} + +func (m *MsgUniversalUpdateCollection) GetUpdateCollectionMetadata() bool { + if m != nil { + return m.UpdateCollectionMetadata + } + return false +} + +func (m *MsgUniversalUpdateCollection) GetCollectionMetadata() *CollectionMetadata { + if m != nil { + return m.CollectionMetadata + } + return nil +} + +func (m *MsgUniversalUpdateCollection) GetUpdateTokenMetadata() bool { + if m != nil { + return m.UpdateTokenMetadata + } + return false +} + +func (m *MsgUniversalUpdateCollection) GetTokenMetadata() []*TokenMetadata { + if m != nil { + return m.TokenMetadata + } + return nil +} + +func (m *MsgUniversalUpdateCollection) GetUpdateCustomData() bool { + if m != nil { + return m.UpdateCustomData + } + return false +} + +func (m *MsgUniversalUpdateCollection) GetCustomData() string { + if m != nil { + return m.CustomData + } + return "" +} + +func (m *MsgUniversalUpdateCollection) GetUpdateCollectionApprovals() bool { + if m != nil { + return m.UpdateCollectionApprovals + } + return false +} + +func (m *MsgUniversalUpdateCollection) GetCollectionApprovals() []*CollectionApproval { + if m != nil { + return m.CollectionApprovals + } + return nil +} + +func (m *MsgUniversalUpdateCollection) GetUpdateStandards() bool { + if m != nil { + return m.UpdateStandards + } + return false +} + +func (m *MsgUniversalUpdateCollection) GetStandards() []string { + if m != nil { + return m.Standards + } + return nil +} + +func (m *MsgUniversalUpdateCollection) GetUpdateIsArchived() bool { + if m != nil { + return m.UpdateIsArchived + } + return false +} + +func (m *MsgUniversalUpdateCollection) GetIsArchived() bool { + if m != nil { + return m.IsArchived + } + return false +} + +func (m *MsgUniversalUpdateCollection) GetMintEscrowCoinsToTransfer() []*types.Coin { + if m != nil { + return m.MintEscrowCoinsToTransfer + } + return nil +} + +func (m *MsgUniversalUpdateCollection) GetCosmosCoinWrapperPathsToAdd() []*CosmosCoinWrapperPathAddObject { + if m != nil { + return m.CosmosCoinWrapperPathsToAdd + } + return nil +} + +func (m *MsgUniversalUpdateCollection) GetInvariants() *InvariantsAddObject { + if m != nil { + return m.Invariants + } + return nil +} + +func (m *MsgUniversalUpdateCollection) GetAliasPathsToAdd() []*AliasPathAddObject { + if m != nil { + return m.AliasPathsToAdd + } + return nil +} + +// MsgUniversalUpdateCollectionResponse is the response to MsgUniversalUpdateCollection. +type MsgUniversalUpdateCollectionResponse struct { + // ID of the collection. + CollectionId Uint `protobuf:"bytes,1,opt,name=collectionId,proto3,customtype=Uint" json:"collectionId"` + ApprovalChanges []*ApprovalChange `protobuf:"bytes,2,rep,name=approvalChanges,proto3" json:"approvalChanges,omitempty"` + ReviewItems []string `protobuf:"bytes,3,rep,name=reviewItems,proto3" json:"reviewItems,omitempty"` +} + +func (m *MsgUniversalUpdateCollectionResponse) Reset() { *m = MsgUniversalUpdateCollectionResponse{} } +func (m *MsgUniversalUpdateCollectionResponse) String() string { return proto.CompactTextString(m) } +func (*MsgUniversalUpdateCollectionResponse) ProtoMessage() {} +func (*MsgUniversalUpdateCollectionResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{8} +} +func (m *MsgUniversalUpdateCollectionResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUniversalUpdateCollectionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUniversalUpdateCollectionResponse.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 *MsgUniversalUpdateCollectionResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUniversalUpdateCollectionResponse.Merge(m, src) +} +func (m *MsgUniversalUpdateCollectionResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgUniversalUpdateCollectionResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUniversalUpdateCollectionResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUniversalUpdateCollectionResponse proto.InternalMessageInfo + +func (m *MsgUniversalUpdateCollectionResponse) GetApprovalChanges() []*ApprovalChange { + if m != nil { + return m.ApprovalChanges + } + return nil +} + +func (m *MsgUniversalUpdateCollectionResponse) GetReviewItems() []string { + if m != nil { + return m.ReviewItems + } + return nil +} + +// MsgUpdateCollection is used to update a collection. +type MsgUpdateCollection struct { + // Address of the creator. + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + // ID of the collection (0 for new collection). + CollectionId Uint `protobuf:"bytes,2,opt,name=collectionId,proto3,customtype=Uint" json:"collectionId"` + // Indicates if the valid token IDs should be updated. If true, we set to value in this Msg. If false, we keep existing value. + UpdateValidTokenIds bool `protobuf:"varint,3,opt,name=updateValidTokenIds,proto3" json:"updateValidTokenIds,omitempty"` + // New token IDs to add to this collection + ValidTokenIds []*UintRange `protobuf:"bytes,4,rep,name=validTokenIds,proto3" json:"validTokenIds,omitempty"` + // Indicates if collection permissions should be updated. If true, we set to value in this Msg. If false, we keep existing value. + UpdateCollectionPermissions bool `protobuf:"varint,5,opt,name=updateCollectionPermissions,proto3" json:"updateCollectionPermissions,omitempty"` + // New collection permissions to set. + CollectionPermissions *CollectionPermissions `protobuf:"bytes,6,opt,name=collectionPermissions,proto3" json:"collectionPermissions,omitempty"` + // Indicates if the manager should be updated. If true, we set to value in this Msg. If false, we keep existing value. + UpdateManager bool `protobuf:"varint,7,opt,name=updateManager,proto3" json:"updateManager,omitempty"` + // New manager to set. + Manager string `protobuf:"bytes,8,opt,name=manager,proto3" json:"manager,omitempty"` + // Indicates if the collection metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value. + UpdateCollectionMetadata bool `protobuf:"varint,9,opt,name=updateCollectionMetadata,proto3" json:"updateCollectionMetadata,omitempty"` + // New collection metadata to set. + CollectionMetadata *CollectionMetadata `protobuf:"bytes,10,opt,name=collectionMetadata,proto3" json:"collectionMetadata,omitempty"` + // Indicates if the token metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value. + UpdateTokenMetadata bool `protobuf:"varint,11,opt,name=updateTokenMetadata,proto3" json:"updateTokenMetadata,omitempty"` + // New token metadata to set. + TokenMetadata []*TokenMetadata `protobuf:"bytes,12,rep,name=tokenMetadata,proto3" json:"tokenMetadata,omitempty"` + // Indicates if the custom data should be updated. If true, we set to value in this Msg. If false, we keep existing value. + UpdateCustomData bool `protobuf:"varint,13,opt,name=updateCustomData,proto3" json:"updateCustomData,omitempty"` + // New custom data to set. + CustomData string `protobuf:"bytes,14,opt,name=customData,proto3" json:"customData,omitempty"` + // Indicates if collection approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value. + UpdateCollectionApprovals bool `protobuf:"varint,15,opt,name=updateCollectionApprovals,proto3" json:"updateCollectionApprovals,omitempty"` + // New collection approvals to set. + CollectionApprovals []*CollectionApproval `protobuf:"bytes,16,rep,name=collectionApprovals,proto3" json:"collectionApprovals,omitempty"` + // Indicates if the standards should be updated. If true, we set to value in this Msg. If false, we keep existing value. + UpdateStandards bool `protobuf:"varint,17,opt,name=updateStandards,proto3" json:"updateStandards,omitempty"` + // New standards to set. + Standards []string `protobuf:"bytes,18,rep,name=standards,proto3" json:"standards,omitempty"` + // Indicates if the isArchived should be updated. If true, we set to value in this Msg. If false, we keep existing value. + UpdateIsArchived bool `protobuf:"varint,19,opt,name=updateIsArchived,proto3" json:"updateIsArchived,omitempty"` + // New isArchived to set. + IsArchived bool `protobuf:"varint,20,opt,name=isArchived,proto3" json:"isArchived,omitempty"` + // Coins to be transferred to the mint escrow address. + MintEscrowCoinsToTransfer []*types.Coin `protobuf:"bytes,21,rep,name=mintEscrowCoinsToTransfer,proto3" json:"mintEscrowCoinsToTransfer,omitempty"` + // IBC wrapper paths to add. + CosmosCoinWrapperPathsToAdd []*CosmosCoinWrapperPathAddObject `protobuf:"bytes,22,rep,name=cosmosCoinWrapperPathsToAdd,proto3" json:"cosmosCoinWrapperPathsToAdd,omitempty"` + // Collection-level invariants that cannot be broken. + // These are set upon genesis and cannot be modified. + // Addresses are generated by the keeper and stored in the collection. + Invariants *InvariantsAddObject `protobuf:"bytes,23,opt,name=invariants,proto3" json:"invariants,omitempty"` + // Alias (non-wrapping) paths to add. + AliasPathsToAdd []*AliasPathAddObject `protobuf:"bytes,24,rep,name=aliasPathsToAdd,proto3" json:"aliasPathsToAdd,omitempty"` +} + +func (m *MsgUpdateCollection) Reset() { *m = MsgUpdateCollection{} } +func (m *MsgUpdateCollection) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateCollection) ProtoMessage() {} +func (*MsgUpdateCollection) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{9} +} +func (m *MsgUpdateCollection) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateCollection) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateCollection.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 *MsgUpdateCollection) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateCollection.Merge(m, src) +} +func (m *MsgUpdateCollection) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateCollection) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateCollection.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateCollection proto.InternalMessageInfo + +func (m *MsgUpdateCollection) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgUpdateCollection) GetUpdateValidTokenIds() bool { + if m != nil { + return m.UpdateValidTokenIds + } + return false +} + +func (m *MsgUpdateCollection) GetValidTokenIds() []*UintRange { + if m != nil { + return m.ValidTokenIds + } + return nil +} + +func (m *MsgUpdateCollection) GetUpdateCollectionPermissions() bool { + if m != nil { + return m.UpdateCollectionPermissions + } + return false +} + +func (m *MsgUpdateCollection) GetCollectionPermissions() *CollectionPermissions { + if m != nil { + return m.CollectionPermissions + } + return nil +} + +func (m *MsgUpdateCollection) GetUpdateManager() bool { + if m != nil { + return m.UpdateManager + } + return false +} + +func (m *MsgUpdateCollection) GetManager() string { + if m != nil { + return m.Manager + } + return "" +} + +func (m *MsgUpdateCollection) GetUpdateCollectionMetadata() bool { + if m != nil { + return m.UpdateCollectionMetadata + } + return false +} + +func (m *MsgUpdateCollection) GetCollectionMetadata() *CollectionMetadata { + if m != nil { + return m.CollectionMetadata + } + return nil +} + +func (m *MsgUpdateCollection) GetUpdateTokenMetadata() bool { + if m != nil { + return m.UpdateTokenMetadata + } + return false +} + +func (m *MsgUpdateCollection) GetTokenMetadata() []*TokenMetadata { + if m != nil { + return m.TokenMetadata + } + return nil +} + +func (m *MsgUpdateCollection) GetUpdateCustomData() bool { + if m != nil { + return m.UpdateCustomData + } + return false +} + +func (m *MsgUpdateCollection) GetCustomData() string { + if m != nil { + return m.CustomData + } + return "" +} + +func (m *MsgUpdateCollection) GetUpdateCollectionApprovals() bool { + if m != nil { + return m.UpdateCollectionApprovals + } + return false +} + +func (m *MsgUpdateCollection) GetCollectionApprovals() []*CollectionApproval { + if m != nil { + return m.CollectionApprovals + } + return nil +} + +func (m *MsgUpdateCollection) GetUpdateStandards() bool { + if m != nil { + return m.UpdateStandards + } + return false +} + +func (m *MsgUpdateCollection) GetStandards() []string { + if m != nil { + return m.Standards + } + return nil +} + +func (m *MsgUpdateCollection) GetUpdateIsArchived() bool { + if m != nil { + return m.UpdateIsArchived + } + return false +} + +func (m *MsgUpdateCollection) GetIsArchived() bool { + if m != nil { + return m.IsArchived + } + return false +} + +func (m *MsgUpdateCollection) GetMintEscrowCoinsToTransfer() []*types.Coin { + if m != nil { + return m.MintEscrowCoinsToTransfer + } + return nil +} + +func (m *MsgUpdateCollection) GetCosmosCoinWrapperPathsToAdd() []*CosmosCoinWrapperPathAddObject { + if m != nil { + return m.CosmosCoinWrapperPathsToAdd + } + return nil +} + +func (m *MsgUpdateCollection) GetInvariants() *InvariantsAddObject { + if m != nil { + return m.Invariants + } + return nil +} + +func (m *MsgUpdateCollection) GetAliasPathsToAdd() []*AliasPathAddObject { + if m != nil { + return m.AliasPathsToAdd + } + return nil +} + +// MsgUpdateCollectionResponse is the response to MsgUpdateCollection. +type MsgUpdateCollectionResponse struct { + // ID of the collection. + CollectionId Uint `protobuf:"bytes,1,opt,name=collectionId,proto3,customtype=Uint" json:"collectionId"` + ApprovalChanges []*ApprovalChange `protobuf:"bytes,2,rep,name=approvalChanges,proto3" json:"approvalChanges,omitempty"` + ReviewItems []string `protobuf:"bytes,3,rep,name=reviewItems,proto3" json:"reviewItems,omitempty"` +} + +func (m *MsgUpdateCollectionResponse) Reset() { *m = MsgUpdateCollectionResponse{} } +func (m *MsgUpdateCollectionResponse) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateCollectionResponse) ProtoMessage() {} +func (*MsgUpdateCollectionResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{10} +} +func (m *MsgUpdateCollectionResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateCollectionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateCollectionResponse.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 *MsgUpdateCollectionResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateCollectionResponse.Merge(m, src) +} +func (m *MsgUpdateCollectionResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateCollectionResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateCollectionResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateCollectionResponse proto.InternalMessageInfo + +func (m *MsgUpdateCollectionResponse) GetApprovalChanges() []*ApprovalChange { + if m != nil { + return m.ApprovalChanges + } + return nil +} + +func (m *MsgUpdateCollectionResponse) GetReviewItems() []string { + if m != nil { + return m.ReviewItems + } + return nil +} + +// MsgCreateCollection is used to create a new collection. +type MsgCreateCollection struct { + // Address of the creator. + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + // The default balances for the user + DefaultBalances *UserBalanceStore `protobuf:"bytes,2,opt,name=defaultBalances,proto3" json:"defaultBalances,omitempty"` + // New token IDs to add to this collection + ValidTokenIds []*UintRange `protobuf:"bytes,3,rep,name=validTokenIds,proto3" json:"validTokenIds,omitempty"` + // Collection permissions. + CollectionPermissions *CollectionPermissions `protobuf:"bytes,4,opt,name=collectionPermissions,proto3" json:"collectionPermissions,omitempty"` + // Manager address. + Manager string `protobuf:"bytes,5,opt,name=manager,proto3" json:"manager,omitempty"` + // Collection metadata. + CollectionMetadata *CollectionMetadata `protobuf:"bytes,6,opt,name=collectionMetadata,proto3" json:"collectionMetadata,omitempty"` + // Token metadata entries. + TokenMetadata []*TokenMetadata `protobuf:"bytes,7,rep,name=tokenMetadata,proto3" json:"tokenMetadata,omitempty"` + // Custom data. + CustomData string `protobuf:"bytes,8,opt,name=customData,proto3" json:"customData,omitempty"` + // Collection approvals. + CollectionApprovals []*CollectionApproval `protobuf:"bytes,9,rep,name=collectionApprovals,proto3" json:"collectionApprovals,omitempty"` + // Standards entries. + Standards []string `protobuf:"bytes,10,rep,name=standards,proto3" json:"standards,omitempty"` + // isArchived flag. + IsArchived bool `protobuf:"varint,11,opt,name=isArchived,proto3" json:"isArchived,omitempty"` + // Coins to be transferred to the mint escrow address. + MintEscrowCoinsToTransfer []*types.Coin `protobuf:"bytes,12,rep,name=mintEscrowCoinsToTransfer,proto3" json:"mintEscrowCoinsToTransfer,omitempty"` + // IBC wrapper paths to add. + CosmosCoinWrapperPathsToAdd []*CosmosCoinWrapperPathAddObject `protobuf:"bytes,13,rep,name=cosmosCoinWrapperPathsToAdd,proto3" json:"cosmosCoinWrapperPathsToAdd,omitempty"` + // Collection-level invariants that cannot be broken. + // Addresses are generated by the keeper and stored in the collection. + Invariants *InvariantsAddObject `protobuf:"bytes,14,opt,name=invariants,proto3" json:"invariants,omitempty"` + // Alias (non-wrapping) paths to add. + AliasPathsToAdd []*AliasPathAddObject `protobuf:"bytes,15,rep,name=aliasPathsToAdd,proto3" json:"aliasPathsToAdd,omitempty"` +} + +func (m *MsgCreateCollection) Reset() { *m = MsgCreateCollection{} } +func (m *MsgCreateCollection) String() string { return proto.CompactTextString(m) } +func (*MsgCreateCollection) ProtoMessage() {} +func (*MsgCreateCollection) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{11} +} +func (m *MsgCreateCollection) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgCreateCollection) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgCreateCollection.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 *MsgCreateCollection) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgCreateCollection.Merge(m, src) +} +func (m *MsgCreateCollection) XXX_Size() int { + return m.Size() +} +func (m *MsgCreateCollection) XXX_DiscardUnknown() { + xxx_messageInfo_MsgCreateCollection.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgCreateCollection proto.InternalMessageInfo + +func (m *MsgCreateCollection) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgCreateCollection) GetDefaultBalances() *UserBalanceStore { + if m != nil { + return m.DefaultBalances + } + return nil +} + +func (m *MsgCreateCollection) GetValidTokenIds() []*UintRange { + if m != nil { + return m.ValidTokenIds + } + return nil +} + +func (m *MsgCreateCollection) GetCollectionPermissions() *CollectionPermissions { + if m != nil { + return m.CollectionPermissions + } + return nil +} + +func (m *MsgCreateCollection) GetManager() string { + if m != nil { + return m.Manager + } + return "" +} + +func (m *MsgCreateCollection) GetCollectionMetadata() *CollectionMetadata { + if m != nil { + return m.CollectionMetadata + } + return nil +} + +func (m *MsgCreateCollection) GetTokenMetadata() []*TokenMetadata { + if m != nil { + return m.TokenMetadata + } + return nil +} + +func (m *MsgCreateCollection) GetCustomData() string { + if m != nil { + return m.CustomData + } + return "" +} + +func (m *MsgCreateCollection) GetCollectionApprovals() []*CollectionApproval { + if m != nil { + return m.CollectionApprovals + } + return nil +} + +func (m *MsgCreateCollection) GetStandards() []string { + if m != nil { + return m.Standards + } + return nil +} + +func (m *MsgCreateCollection) GetIsArchived() bool { + if m != nil { + return m.IsArchived + } + return false +} + +func (m *MsgCreateCollection) GetMintEscrowCoinsToTransfer() []*types.Coin { + if m != nil { + return m.MintEscrowCoinsToTransfer + } + return nil +} + +func (m *MsgCreateCollection) GetCosmosCoinWrapperPathsToAdd() []*CosmosCoinWrapperPathAddObject { + if m != nil { + return m.CosmosCoinWrapperPathsToAdd + } + return nil +} + +func (m *MsgCreateCollection) GetInvariants() *InvariantsAddObject { + if m != nil { + return m.Invariants + } + return nil +} + +func (m *MsgCreateCollection) GetAliasPathsToAdd() []*AliasPathAddObject { + if m != nil { + return m.AliasPathsToAdd + } + return nil +} + +// MsgCreateCollectionResponse is the response to MsgCreateCollection. +type MsgCreateCollectionResponse struct { + // ID of the collection. + CollectionId Uint `protobuf:"bytes,1,opt,name=collectionId,proto3,customtype=Uint" json:"collectionId"` + ApprovalChanges []*ApprovalChange `protobuf:"bytes,2,rep,name=approvalChanges,proto3" json:"approvalChanges,omitempty"` + ReviewItems []string `protobuf:"bytes,3,rep,name=reviewItems,proto3" json:"reviewItems,omitempty"` +} + +func (m *MsgCreateCollectionResponse) Reset() { *m = MsgCreateCollectionResponse{} } +func (m *MsgCreateCollectionResponse) String() string { return proto.CompactTextString(m) } +func (*MsgCreateCollectionResponse) ProtoMessage() {} +func (*MsgCreateCollectionResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{12} +} +func (m *MsgCreateCollectionResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgCreateCollectionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgCreateCollectionResponse.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 *MsgCreateCollectionResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgCreateCollectionResponse.Merge(m, src) +} +func (m *MsgCreateCollectionResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgCreateCollectionResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgCreateCollectionResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgCreateCollectionResponse proto.InternalMessageInfo + +func (m *MsgCreateCollectionResponse) GetApprovalChanges() []*ApprovalChange { + if m != nil { + return m.ApprovalChanges + } + return nil +} + +func (m *MsgCreateCollectionResponse) GetReviewItems() []string { + if m != nil { + return m.ReviewItems + } + return nil +} + +// MsgCreateAddressLists is used to create address lists. +type MsgCreateAddressLists struct { + // Address of the creator. + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + // Address lists to create. The createdBy field will be automatically set to the creator address. + AddressLists []*AddressListInput `protobuf:"bytes,2,rep,name=addressLists,proto3" json:"addressLists,omitempty"` +} + +func (m *MsgCreateAddressLists) Reset() { *m = MsgCreateAddressLists{} } +func (m *MsgCreateAddressLists) String() string { return proto.CompactTextString(m) } +func (*MsgCreateAddressLists) ProtoMessage() {} +func (*MsgCreateAddressLists) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{13} +} +func (m *MsgCreateAddressLists) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgCreateAddressLists) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgCreateAddressLists.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 *MsgCreateAddressLists) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgCreateAddressLists.Merge(m, src) +} +func (m *MsgCreateAddressLists) XXX_Size() int { + return m.Size() +} +func (m *MsgCreateAddressLists) XXX_DiscardUnknown() { + xxx_messageInfo_MsgCreateAddressLists.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgCreateAddressLists proto.InternalMessageInfo + +func (m *MsgCreateAddressLists) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgCreateAddressLists) GetAddressLists() []*AddressListInput { + if m != nil { + return m.AddressLists + } + return nil +} + +// MsgCreateAddressListsResponse is the response to MsgCreateAddressLists. +type MsgCreateAddressListsResponse struct { +} + +func (m *MsgCreateAddressListsResponse) Reset() { *m = MsgCreateAddressListsResponse{} } +func (m *MsgCreateAddressListsResponse) String() string { return proto.CompactTextString(m) } +func (*MsgCreateAddressListsResponse) ProtoMessage() {} +func (*MsgCreateAddressListsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{14} +} +func (m *MsgCreateAddressListsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgCreateAddressListsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgCreateAddressListsResponse.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 *MsgCreateAddressListsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgCreateAddressListsResponse.Merge(m, src) +} +func (m *MsgCreateAddressListsResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgCreateAddressListsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgCreateAddressListsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgCreateAddressListsResponse proto.InternalMessageInfo + +// MsgTransferTokens is used to transfer tokens. +type MsgTransferTokens struct { + // Address of the creator. + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + // ID of the collection. + CollectionId Uint `protobuf:"bytes,2,opt,name=collectionId,proto3,customtype=Uint" json:"collectionId"` + // Transfers to execute. + Transfers []*Transfer `protobuf:"bytes,3,rep,name=transfers,proto3" json:"transfers,omitempty"` +} + +func (m *MsgTransferTokens) Reset() { *m = MsgTransferTokens{} } +func (m *MsgTransferTokens) String() string { return proto.CompactTextString(m) } +func (*MsgTransferTokens) ProtoMessage() {} +func (*MsgTransferTokens) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{15} +} +func (m *MsgTransferTokens) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgTransferTokens) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgTransferTokens.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 *MsgTransferTokens) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgTransferTokens.Merge(m, src) +} +func (m *MsgTransferTokens) XXX_Size() int { + return m.Size() +} +func (m *MsgTransferTokens) XXX_DiscardUnknown() { + xxx_messageInfo_MsgTransferTokens.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgTransferTokens proto.InternalMessageInfo + +func (m *MsgTransferTokens) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgTransferTokens) GetTransfers() []*Transfer { + if m != nil { + return m.Transfers + } + return nil +} + +// MsgTransferTokensResponse is the response to MsgTransferTokens. +type MsgTransferTokensResponse struct { + ApprovalsUsed []*ApprovalUsed `protobuf:"bytes,1,rep,name=approvalsUsed,proto3" json:"approvalsUsed,omitempty"` + CoinTransfers []*CoinTransferProto `protobuf:"bytes,2,rep,name=coinTransfers,proto3" json:"coinTransfers,omitempty"` + BalancesTransferred []*Balance `protobuf:"bytes,3,rep,name=balancesTransferred,proto3" json:"balancesTransferred,omitempty"` + ReviewItems []string `protobuf:"bytes,4,rep,name=reviewItems,proto3" json:"reviewItems,omitempty"` +} + +func (m *MsgTransferTokensResponse) Reset() { *m = MsgTransferTokensResponse{} } +func (m *MsgTransferTokensResponse) String() string { return proto.CompactTextString(m) } +func (*MsgTransferTokensResponse) ProtoMessage() {} +func (*MsgTransferTokensResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{16} +} +func (m *MsgTransferTokensResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgTransferTokensResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgTransferTokensResponse.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 *MsgTransferTokensResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgTransferTokensResponse.Merge(m, src) +} +func (m *MsgTransferTokensResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgTransferTokensResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgTransferTokensResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgTransferTokensResponse proto.InternalMessageInfo + +func (m *MsgTransferTokensResponse) GetApprovalsUsed() []*ApprovalUsed { + if m != nil { + return m.ApprovalsUsed + } + return nil +} + +func (m *MsgTransferTokensResponse) GetCoinTransfers() []*CoinTransferProto { + if m != nil { + return m.CoinTransfers + } + return nil +} + +func (m *MsgTransferTokensResponse) GetBalancesTransferred() []*Balance { + if m != nil { + return m.BalancesTransferred + } + return nil +} + +func (m *MsgTransferTokensResponse) GetReviewItems() []string { + if m != nil { + return m.ReviewItems + } + return nil +} + +// MsgDeleteCollection is used to delete a collection. +type MsgDeleteCollection struct { + // Address of the creator. + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + // ID of the collection. + CollectionId Uint `protobuf:"bytes,2,opt,name=collectionId,proto3,customtype=Uint" json:"collectionId"` +} + +func (m *MsgDeleteCollection) Reset() { *m = MsgDeleteCollection{} } +func (m *MsgDeleteCollection) String() string { return proto.CompactTextString(m) } +func (*MsgDeleteCollection) ProtoMessage() {} +func (*MsgDeleteCollection) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{17} +} +func (m *MsgDeleteCollection) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgDeleteCollection) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgDeleteCollection.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 *MsgDeleteCollection) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgDeleteCollection.Merge(m, src) +} +func (m *MsgDeleteCollection) XXX_Size() int { + return m.Size() +} +func (m *MsgDeleteCollection) XXX_DiscardUnknown() { + xxx_messageInfo_MsgDeleteCollection.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgDeleteCollection proto.InternalMessageInfo + +func (m *MsgDeleteCollection) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +// MsgDeleteCollectionResponse is the response to MsgDeleteCollection. +type MsgDeleteCollectionResponse struct { +} + +func (m *MsgDeleteCollectionResponse) Reset() { *m = MsgDeleteCollectionResponse{} } +func (m *MsgDeleteCollectionResponse) String() string { return proto.CompactTextString(m) } +func (*MsgDeleteCollectionResponse) ProtoMessage() {} +func (*MsgDeleteCollectionResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{18} +} +func (m *MsgDeleteCollectionResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgDeleteCollectionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgDeleteCollectionResponse.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 *MsgDeleteCollectionResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgDeleteCollectionResponse.Merge(m, src) +} +func (m *MsgDeleteCollectionResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgDeleteCollectionResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgDeleteCollectionResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgDeleteCollectionResponse proto.InternalMessageInfo + +// MsgUpdateUserApprovals is used to update user approvals. +type MsgUpdateUserApprovals struct { + // Address of the creator. + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + // ID of the collection. + CollectionId Uint `protobuf:"bytes,2,opt,name=collectionId,proto3,customtype=Uint" json:"collectionId"` + // Indicates if outgoing approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value. + UpdateOutgoingApprovals bool `protobuf:"varint,3,opt,name=updateOutgoingApprovals,proto3" json:"updateOutgoingApprovals,omitempty"` + // New outgoing approvals to set. + OutgoingApprovals []*UserOutgoingApproval `protobuf:"bytes,4,rep,name=outgoingApprovals,proto3" json:"outgoingApprovals,omitempty"` + // Indicates if incoming approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value. + UpdateIncomingApprovals bool `protobuf:"varint,5,opt,name=updateIncomingApprovals,proto3" json:"updateIncomingApprovals,omitempty"` + // New incoming approvals to set. + IncomingApprovals []*UserIncomingApproval `protobuf:"bytes,6,rep,name=incomingApprovals,proto3" json:"incomingApprovals,omitempty"` + // Indicates if auto-approve settings for self-initiated outgoing transfers should be updated. If true, we set to value in this Msg. If false, we keep existing value. + UpdateAutoApproveSelfInitiatedOutgoingTransfers bool `protobuf:"varint,7,opt,name=updateAutoApproveSelfInitiatedOutgoingTransfers,proto3" json:"updateAutoApproveSelfInitiatedOutgoingTransfers,omitempty"` + // Auto-approve setting for self-initiated outgoing transfers. + AutoApproveSelfInitiatedOutgoingTransfers bool `protobuf:"varint,8,opt,name=autoApproveSelfInitiatedOutgoingTransfers,proto3" json:"autoApproveSelfInitiatedOutgoingTransfers,omitempty"` + // Indicates if auto-approve settings for self-initiated incoming transfers should be updated. If true, we set to value in this Msg. If false, we keep existing value. + UpdateAutoApproveSelfInitiatedIncomingTransfers bool `protobuf:"varint,9,opt,name=updateAutoApproveSelfInitiatedIncomingTransfers,proto3" json:"updateAutoApproveSelfInitiatedIncomingTransfers,omitempty"` + // Auto-approve setting for self-initiated incoming transfers. + AutoApproveSelfInitiatedIncomingTransfers bool `protobuf:"varint,10,opt,name=autoApproveSelfInitiatedIncomingTransfers,proto3" json:"autoApproveSelfInitiatedIncomingTransfers,omitempty"` + // Indicates if auto-approve settings for all incoming transfers should be updated. If true, we set to value in this Msg. If false, we keep existing value. + UpdateAutoApproveAllIncomingTransfers bool `protobuf:"varint,11,opt,name=updateAutoApproveAllIncomingTransfers,proto3" json:"updateAutoApproveAllIncomingTransfers,omitempty"` + // Auto-approve setting for all incoming transfers. + AutoApproveAllIncomingTransfers bool `protobuf:"varint,12,opt,name=autoApproveAllIncomingTransfers,proto3" json:"autoApproveAllIncomingTransfers,omitempty"` + // Indicates if user permissions should be updated. If true, we set to value in this Msg. If false, we keep existing value. + UpdateUserPermissions bool `protobuf:"varint,13,opt,name=updateUserPermissions,proto3" json:"updateUserPermissions,omitempty"` + // New user permissions to set. + UserPermissions *UserPermissions `protobuf:"bytes,14,opt,name=userPermissions,proto3" json:"userPermissions,omitempty"` +} + +func (m *MsgUpdateUserApprovals) Reset() { *m = MsgUpdateUserApprovals{} } +func (m *MsgUpdateUserApprovals) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateUserApprovals) ProtoMessage() {} +func (*MsgUpdateUserApprovals) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{19} +} +func (m *MsgUpdateUserApprovals) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateUserApprovals) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateUserApprovals.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 *MsgUpdateUserApprovals) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateUserApprovals.Merge(m, src) +} +func (m *MsgUpdateUserApprovals) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateUserApprovals) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateUserApprovals.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateUserApprovals proto.InternalMessageInfo + +func (m *MsgUpdateUserApprovals) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgUpdateUserApprovals) GetUpdateOutgoingApprovals() bool { + if m != nil { + return m.UpdateOutgoingApprovals + } + return false +} + +func (m *MsgUpdateUserApprovals) GetOutgoingApprovals() []*UserOutgoingApproval { + if m != nil { + return m.OutgoingApprovals + } + return nil +} + +func (m *MsgUpdateUserApprovals) GetUpdateIncomingApprovals() bool { + if m != nil { + return m.UpdateIncomingApprovals + } + return false +} + +func (m *MsgUpdateUserApprovals) GetIncomingApprovals() []*UserIncomingApproval { + if m != nil { + return m.IncomingApprovals + } + return nil +} + +func (m *MsgUpdateUserApprovals) GetUpdateAutoApproveSelfInitiatedOutgoingTransfers() bool { + if m != nil { + return m.UpdateAutoApproveSelfInitiatedOutgoingTransfers + } + return false +} + +func (m *MsgUpdateUserApprovals) GetAutoApproveSelfInitiatedOutgoingTransfers() bool { + if m != nil { + return m.AutoApproveSelfInitiatedOutgoingTransfers + } + return false +} + +func (m *MsgUpdateUserApprovals) GetUpdateAutoApproveSelfInitiatedIncomingTransfers() bool { + if m != nil { + return m.UpdateAutoApproveSelfInitiatedIncomingTransfers + } + return false +} + +func (m *MsgUpdateUserApprovals) GetAutoApproveSelfInitiatedIncomingTransfers() bool { + if m != nil { + return m.AutoApproveSelfInitiatedIncomingTransfers + } + return false +} + +func (m *MsgUpdateUserApprovals) GetUpdateAutoApproveAllIncomingTransfers() bool { + if m != nil { + return m.UpdateAutoApproveAllIncomingTransfers + } + return false +} + +func (m *MsgUpdateUserApprovals) GetAutoApproveAllIncomingTransfers() bool { + if m != nil { + return m.AutoApproveAllIncomingTransfers + } + return false +} + +func (m *MsgUpdateUserApprovals) GetUpdateUserPermissions() bool { + if m != nil { + return m.UpdateUserPermissions + } + return false +} + +func (m *MsgUpdateUserApprovals) GetUserPermissions() *UserPermissions { + if m != nil { + return m.UserPermissions + } + return nil +} + +// MsgUpdateUserApprovalsResponse is the response to MsgUpdateUserApprovals. +type MsgUpdateUserApprovalsResponse struct { + IncomingChanges []*ApprovalChange `protobuf:"bytes,1,rep,name=incomingChanges,proto3" json:"incomingChanges,omitempty"` + OutgoingChanges []*ApprovalChange `protobuf:"bytes,2,rep,name=outgoingChanges,proto3" json:"outgoingChanges,omitempty"` + ReviewItems []string `protobuf:"bytes,3,rep,name=reviewItems,proto3" json:"reviewItems,omitempty"` +} + +func (m *MsgUpdateUserApprovalsResponse) Reset() { *m = MsgUpdateUserApprovalsResponse{} } +func (m *MsgUpdateUserApprovalsResponse) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateUserApprovalsResponse) ProtoMessage() {} +func (*MsgUpdateUserApprovalsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{20} +} +func (m *MsgUpdateUserApprovalsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateUserApprovalsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateUserApprovalsResponse.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 *MsgUpdateUserApprovalsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateUserApprovalsResponse.Merge(m, src) +} +func (m *MsgUpdateUserApprovalsResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateUserApprovalsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateUserApprovalsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateUserApprovalsResponse proto.InternalMessageInfo + +func (m *MsgUpdateUserApprovalsResponse) GetIncomingChanges() []*ApprovalChange { + if m != nil { + return m.IncomingChanges + } + return nil +} + +func (m *MsgUpdateUserApprovalsResponse) GetOutgoingChanges() []*ApprovalChange { + if m != nil { + return m.OutgoingChanges + } + return nil +} + +func (m *MsgUpdateUserApprovalsResponse) GetReviewItems() []string { + if m != nil { + return m.ReviewItems + } + return nil +} + +// MsgSetIncomingApproval is a helper message to set a single incoming approval. +type MsgSetIncomingApproval struct { + // Address of the creator. + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + // ID of the collection. + CollectionId Uint `protobuf:"bytes,2,opt,name=collectionId,proto3,customtype=Uint" json:"collectionId"` + // The incoming approval to set. + Approval *UserIncomingApproval `protobuf:"bytes,3,opt,name=approval,proto3" json:"approval,omitempty"` +} + +func (m *MsgSetIncomingApproval) Reset() { *m = MsgSetIncomingApproval{} } +func (m *MsgSetIncomingApproval) String() string { return proto.CompactTextString(m) } +func (*MsgSetIncomingApproval) ProtoMessage() {} +func (*MsgSetIncomingApproval) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{21} +} +func (m *MsgSetIncomingApproval) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSetIncomingApproval) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSetIncomingApproval.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 *MsgSetIncomingApproval) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSetIncomingApproval.Merge(m, src) +} +func (m *MsgSetIncomingApproval) XXX_Size() int { + return m.Size() +} +func (m *MsgSetIncomingApproval) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSetIncomingApproval.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSetIncomingApproval proto.InternalMessageInfo + +func (m *MsgSetIncomingApproval) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgSetIncomingApproval) GetApproval() *UserIncomingApproval { + if m != nil { + return m.Approval + } + return nil +} + +// MsgSetIncomingApprovalResponse is the response to MsgSetIncomingApproval. +type MsgSetIncomingApprovalResponse struct { + Action string `protobuf:"bytes,1,opt,name=action,proto3" json:"action,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + ReviewItems []string `protobuf:"bytes,3,rep,name=reviewItems,proto3" json:"reviewItems,omitempty"` +} + +func (m *MsgSetIncomingApprovalResponse) Reset() { *m = MsgSetIncomingApprovalResponse{} } +func (m *MsgSetIncomingApprovalResponse) String() string { return proto.CompactTextString(m) } +func (*MsgSetIncomingApprovalResponse) ProtoMessage() {} +func (*MsgSetIncomingApprovalResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{22} +} +func (m *MsgSetIncomingApprovalResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSetIncomingApprovalResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSetIncomingApprovalResponse.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 *MsgSetIncomingApprovalResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSetIncomingApprovalResponse.Merge(m, src) +} +func (m *MsgSetIncomingApprovalResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgSetIncomingApprovalResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSetIncomingApprovalResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSetIncomingApprovalResponse proto.InternalMessageInfo + +func (m *MsgSetIncomingApprovalResponse) GetAction() string { + if m != nil { + return m.Action + } + return "" +} + +func (m *MsgSetIncomingApprovalResponse) GetVersion() string { + if m != nil { + return m.Version + } + return "" +} + +func (m *MsgSetIncomingApprovalResponse) GetReviewItems() []string { + if m != nil { + return m.ReviewItems + } + return nil +} + +// MsgDeleteIncomingApproval is a helper message to delete a single incoming approval. +type MsgDeleteIncomingApproval struct { + // Address of the creator. + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + // ID of the collection. + CollectionId Uint `protobuf:"bytes,2,opt,name=collectionId,proto3,customtype=Uint" json:"collectionId"` + // The ID of the approval to delete. + ApprovalId string `protobuf:"bytes,3,opt,name=approvalId,proto3" json:"approvalId,omitempty"` +} + +func (m *MsgDeleteIncomingApproval) Reset() { *m = MsgDeleteIncomingApproval{} } +func (m *MsgDeleteIncomingApproval) String() string { return proto.CompactTextString(m) } +func (*MsgDeleteIncomingApproval) ProtoMessage() {} +func (*MsgDeleteIncomingApproval) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{23} +} +func (m *MsgDeleteIncomingApproval) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgDeleteIncomingApproval) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgDeleteIncomingApproval.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 *MsgDeleteIncomingApproval) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgDeleteIncomingApproval.Merge(m, src) +} +func (m *MsgDeleteIncomingApproval) XXX_Size() int { + return m.Size() +} +func (m *MsgDeleteIncomingApproval) XXX_DiscardUnknown() { + xxx_messageInfo_MsgDeleteIncomingApproval.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgDeleteIncomingApproval proto.InternalMessageInfo + +func (m *MsgDeleteIncomingApproval) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgDeleteIncomingApproval) GetApprovalId() string { + if m != nil { + return m.ApprovalId + } + return "" +} + +// MsgDeleteIncomingApprovalResponse is the response to MsgDeleteIncomingApproval. +type MsgDeleteIncomingApprovalResponse struct { + Found bool `protobuf:"varint,1,opt,name=found,proto3" json:"found,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + ReviewItems []string `protobuf:"bytes,3,rep,name=reviewItems,proto3" json:"reviewItems,omitempty"` +} + +func (m *MsgDeleteIncomingApprovalResponse) Reset() { *m = MsgDeleteIncomingApprovalResponse{} } +func (m *MsgDeleteIncomingApprovalResponse) String() string { return proto.CompactTextString(m) } +func (*MsgDeleteIncomingApprovalResponse) ProtoMessage() {} +func (*MsgDeleteIncomingApprovalResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{24} +} +func (m *MsgDeleteIncomingApprovalResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgDeleteIncomingApprovalResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgDeleteIncomingApprovalResponse.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 *MsgDeleteIncomingApprovalResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgDeleteIncomingApprovalResponse.Merge(m, src) +} +func (m *MsgDeleteIncomingApprovalResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgDeleteIncomingApprovalResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgDeleteIncomingApprovalResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgDeleteIncomingApprovalResponse proto.InternalMessageInfo + +func (m *MsgDeleteIncomingApprovalResponse) GetFound() bool { + if m != nil { + return m.Found + } + return false +} + +func (m *MsgDeleteIncomingApprovalResponse) GetVersion() string { + if m != nil { + return m.Version + } + return "" +} + +func (m *MsgDeleteIncomingApprovalResponse) GetReviewItems() []string { + if m != nil { + return m.ReviewItems + } + return nil +} + +// MsgSetOutgoingApproval is a helper message to set a single outgoing approval. +type MsgSetOutgoingApproval struct { + // Address of the creator. + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + // ID of the collection. + CollectionId Uint `protobuf:"bytes,2,opt,name=collectionId,proto3,customtype=Uint" json:"collectionId"` + // The outgoing approval to set. + Approval *UserOutgoingApproval `protobuf:"bytes,3,opt,name=approval,proto3" json:"approval,omitempty"` +} + +func (m *MsgSetOutgoingApproval) Reset() { *m = MsgSetOutgoingApproval{} } +func (m *MsgSetOutgoingApproval) String() string { return proto.CompactTextString(m) } +func (*MsgSetOutgoingApproval) ProtoMessage() {} +func (*MsgSetOutgoingApproval) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{25} +} +func (m *MsgSetOutgoingApproval) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSetOutgoingApproval) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSetOutgoingApproval.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 *MsgSetOutgoingApproval) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSetOutgoingApproval.Merge(m, src) +} +func (m *MsgSetOutgoingApproval) XXX_Size() int { + return m.Size() +} +func (m *MsgSetOutgoingApproval) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSetOutgoingApproval.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSetOutgoingApproval proto.InternalMessageInfo + +func (m *MsgSetOutgoingApproval) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgSetOutgoingApproval) GetApproval() *UserOutgoingApproval { + if m != nil { + return m.Approval + } + return nil +} + +// MsgSetOutgoingApprovalResponse is the response to MsgSetOutgoingApproval. +type MsgSetOutgoingApprovalResponse struct { + Action string `protobuf:"bytes,1,opt,name=action,proto3" json:"action,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + ReviewItems []string `protobuf:"bytes,3,rep,name=reviewItems,proto3" json:"reviewItems,omitempty"` +} + +func (m *MsgSetOutgoingApprovalResponse) Reset() { *m = MsgSetOutgoingApprovalResponse{} } +func (m *MsgSetOutgoingApprovalResponse) String() string { return proto.CompactTextString(m) } +func (*MsgSetOutgoingApprovalResponse) ProtoMessage() {} +func (*MsgSetOutgoingApprovalResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{26} +} +func (m *MsgSetOutgoingApprovalResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSetOutgoingApprovalResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSetOutgoingApprovalResponse.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 *MsgSetOutgoingApprovalResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSetOutgoingApprovalResponse.Merge(m, src) +} +func (m *MsgSetOutgoingApprovalResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgSetOutgoingApprovalResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSetOutgoingApprovalResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSetOutgoingApprovalResponse proto.InternalMessageInfo + +func (m *MsgSetOutgoingApprovalResponse) GetAction() string { + if m != nil { + return m.Action + } + return "" +} + +func (m *MsgSetOutgoingApprovalResponse) GetVersion() string { + if m != nil { + return m.Version + } + return "" +} + +func (m *MsgSetOutgoingApprovalResponse) GetReviewItems() []string { + if m != nil { + return m.ReviewItems + } + return nil +} + +// MsgDeleteOutgoingApproval is a helper message to delete a single outgoing approval. +type MsgDeleteOutgoingApproval struct { + // Address of the creator. + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + // ID of the collection. + CollectionId Uint `protobuf:"bytes,2,opt,name=collectionId,proto3,customtype=Uint" json:"collectionId"` + // The ID of the approval to delete. + ApprovalId string `protobuf:"bytes,3,opt,name=approvalId,proto3" json:"approvalId,omitempty"` +} + +func (m *MsgDeleteOutgoingApproval) Reset() { *m = MsgDeleteOutgoingApproval{} } +func (m *MsgDeleteOutgoingApproval) String() string { return proto.CompactTextString(m) } +func (*MsgDeleteOutgoingApproval) ProtoMessage() {} +func (*MsgDeleteOutgoingApproval) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{27} +} +func (m *MsgDeleteOutgoingApproval) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgDeleteOutgoingApproval) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgDeleteOutgoingApproval.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 *MsgDeleteOutgoingApproval) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgDeleteOutgoingApproval.Merge(m, src) +} +func (m *MsgDeleteOutgoingApproval) XXX_Size() int { + return m.Size() +} +func (m *MsgDeleteOutgoingApproval) XXX_DiscardUnknown() { + xxx_messageInfo_MsgDeleteOutgoingApproval.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgDeleteOutgoingApproval proto.InternalMessageInfo + +func (m *MsgDeleteOutgoingApproval) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgDeleteOutgoingApproval) GetApprovalId() string { + if m != nil { + return m.ApprovalId + } + return "" +} + +// MsgDeleteOutgoingApprovalResponse is the response to MsgDeleteOutgoingApproval. +type MsgDeleteOutgoingApprovalResponse struct { + Found bool `protobuf:"varint,1,opt,name=found,proto3" json:"found,omitempty"` + Version string `protobuf:"bytes,2,opt,name=version,proto3" json:"version,omitempty"` + ReviewItems []string `protobuf:"bytes,3,rep,name=reviewItems,proto3" json:"reviewItems,omitempty"` +} + +func (m *MsgDeleteOutgoingApprovalResponse) Reset() { *m = MsgDeleteOutgoingApprovalResponse{} } +func (m *MsgDeleteOutgoingApprovalResponse) String() string { return proto.CompactTextString(m) } +func (*MsgDeleteOutgoingApprovalResponse) ProtoMessage() {} +func (*MsgDeleteOutgoingApprovalResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{28} +} +func (m *MsgDeleteOutgoingApprovalResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgDeleteOutgoingApprovalResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgDeleteOutgoingApprovalResponse.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 *MsgDeleteOutgoingApprovalResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgDeleteOutgoingApprovalResponse.Merge(m, src) +} +func (m *MsgDeleteOutgoingApprovalResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgDeleteOutgoingApprovalResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgDeleteOutgoingApprovalResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgDeleteOutgoingApprovalResponse proto.InternalMessageInfo + +func (m *MsgDeleteOutgoingApprovalResponse) GetFound() bool { + if m != nil { + return m.Found + } + return false +} + +func (m *MsgDeleteOutgoingApprovalResponse) GetVersion() string { + if m != nil { + return m.Version + } + return "" +} + +func (m *MsgDeleteOutgoingApprovalResponse) GetReviewItems() []string { + if m != nil { + return m.ReviewItems + } + return nil +} + +// MsgPurgeApprovals is a helper message to purge expired approvals. +type MsgPurgeApprovals struct { + // Address of the creator. + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + // ID of the collection. + CollectionId Uint `protobuf:"bytes,2,opt,name=collectionId,proto3,customtype=Uint" json:"collectionId"` + // Whether to purge expired approvals (approvals with no future valid transfer times). + PurgeExpired bool `protobuf:"varint,3,opt,name=purgeExpired,proto3" json:"purgeExpired,omitempty"` + // Address of the user whose approvals to purge. If empty, defaults to creator. + ApproverAddress string `protobuf:"bytes,4,opt,name=approverAddress,proto3" json:"approverAddress,omitempty"` + // Whether to purge counterparty approvals (approvals where the creator is the only initiator). + PurgeCounterpartyApprovals bool `protobuf:"varint,5,opt,name=purgeCounterpartyApprovals,proto3" json:"purgeCounterpartyApprovals,omitempty"` + // Specific approvals to purge. If empty, purges all applicable approvals based on other flags. + ApprovalsToPurge []*ApprovalIdentifierDetails `protobuf:"bytes,6,rep,name=approvalsToPurge,proto3" json:"approvalsToPurge,omitempty"` +} + +func (m *MsgPurgeApprovals) Reset() { *m = MsgPurgeApprovals{} } +func (m *MsgPurgeApprovals) String() string { return proto.CompactTextString(m) } +func (*MsgPurgeApprovals) ProtoMessage() {} +func (*MsgPurgeApprovals) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{29} +} +func (m *MsgPurgeApprovals) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgPurgeApprovals) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgPurgeApprovals.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 *MsgPurgeApprovals) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgPurgeApprovals.Merge(m, src) +} +func (m *MsgPurgeApprovals) XXX_Size() int { + return m.Size() +} +func (m *MsgPurgeApprovals) XXX_DiscardUnknown() { + xxx_messageInfo_MsgPurgeApprovals.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgPurgeApprovals proto.InternalMessageInfo + +func (m *MsgPurgeApprovals) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgPurgeApprovals) GetPurgeExpired() bool { + if m != nil { + return m.PurgeExpired + } + return false +} + +func (m *MsgPurgeApprovals) GetApproverAddress() string { + if m != nil { + return m.ApproverAddress + } + return "" +} + +func (m *MsgPurgeApprovals) GetPurgeCounterpartyApprovals() bool { + if m != nil { + return m.PurgeCounterpartyApprovals + } + return false +} + +func (m *MsgPurgeApprovals) GetApprovalsToPurge() []*ApprovalIdentifierDetails { + if m != nil { + return m.ApprovalsToPurge + } + return nil +} + +// MsgPurgeApprovalsResponse is the response to MsgPurgeApprovals. +type MsgPurgeApprovalsResponse struct { + // Number of approvals purged. + NumPurged Uint `protobuf:"bytes,1,opt,name=numPurged,proto3,customtype=Uint" json:"numPurged"` + PurgedApprovalIds []string `protobuf:"bytes,2,rep,name=purgedApprovalIds,proto3" json:"purgedApprovalIds,omitempty"` + ReviewItems []string `protobuf:"bytes,3,rep,name=reviewItems,proto3" json:"reviewItems,omitempty"` +} + +func (m *MsgPurgeApprovalsResponse) Reset() { *m = MsgPurgeApprovalsResponse{} } +func (m *MsgPurgeApprovalsResponse) String() string { return proto.CompactTextString(m) } +func (*MsgPurgeApprovalsResponse) ProtoMessage() {} +func (*MsgPurgeApprovalsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{30} +} +func (m *MsgPurgeApprovalsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgPurgeApprovalsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgPurgeApprovalsResponse.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 *MsgPurgeApprovalsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgPurgeApprovalsResponse.Merge(m, src) +} +func (m *MsgPurgeApprovalsResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgPurgeApprovalsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgPurgeApprovalsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgPurgeApprovalsResponse proto.InternalMessageInfo + +func (m *MsgPurgeApprovalsResponse) GetPurgedApprovalIds() []string { + if m != nil { + return m.PurgedApprovalIds + } + return nil +} + +func (m *MsgPurgeApprovalsResponse) GetReviewItems() []string { + if m != nil { + return m.ReviewItems + } + return nil +} + +// MsgCreateDynamicStore is used to create a new dynamic store. +type MsgCreateDynamicStore struct { + // Address of the creator. + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + // The default value for uninitialized addresses (true/false). + DefaultValue bool `protobuf:"varint,2,opt,name=defaultValue,proto3" json:"defaultValue,omitempty"` + // URI for additional metadata or resources associated with this dynamic store. + Uri string `protobuf:"bytes,3,opt,name=uri,proto3" json:"uri,omitempty"` + // Custom data field for storing arbitrary data associated with this dynamic store. + CustomData string `protobuf:"bytes,4,opt,name=customData,proto3" json:"customData,omitempty"` +} + +func (m *MsgCreateDynamicStore) Reset() { *m = MsgCreateDynamicStore{} } +func (m *MsgCreateDynamicStore) String() string { return proto.CompactTextString(m) } +func (*MsgCreateDynamicStore) ProtoMessage() {} +func (*MsgCreateDynamicStore) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{31} +} +func (m *MsgCreateDynamicStore) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgCreateDynamicStore) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgCreateDynamicStore.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 *MsgCreateDynamicStore) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgCreateDynamicStore.Merge(m, src) +} +func (m *MsgCreateDynamicStore) XXX_Size() int { + return m.Size() +} +func (m *MsgCreateDynamicStore) XXX_DiscardUnknown() { + xxx_messageInfo_MsgCreateDynamicStore.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgCreateDynamicStore proto.InternalMessageInfo + +func (m *MsgCreateDynamicStore) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgCreateDynamicStore) GetDefaultValue() bool { + if m != nil { + return m.DefaultValue + } + return false +} + +func (m *MsgCreateDynamicStore) GetUri() string { + if m != nil { + return m.Uri + } + return "" +} + +func (m *MsgCreateDynamicStore) GetCustomData() string { + if m != nil { + return m.CustomData + } + return "" +} + +// MsgCreateDynamicStoreResponse is the response to MsgCreateDynamicStore. +type MsgCreateDynamicStoreResponse struct { + // ID of the dynamic store. + StoreId Uint `protobuf:"bytes,1,opt,name=storeId,proto3,customtype=Uint" json:"storeId"` + ReviewItems []string `protobuf:"bytes,2,rep,name=reviewItems,proto3" json:"reviewItems,omitempty"` +} + +func (m *MsgCreateDynamicStoreResponse) Reset() { *m = MsgCreateDynamicStoreResponse{} } +func (m *MsgCreateDynamicStoreResponse) String() string { return proto.CompactTextString(m) } +func (*MsgCreateDynamicStoreResponse) ProtoMessage() {} +func (*MsgCreateDynamicStoreResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{32} +} +func (m *MsgCreateDynamicStoreResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgCreateDynamicStoreResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgCreateDynamicStoreResponse.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 *MsgCreateDynamicStoreResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgCreateDynamicStoreResponse.Merge(m, src) +} +func (m *MsgCreateDynamicStoreResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgCreateDynamicStoreResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgCreateDynamicStoreResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgCreateDynamicStoreResponse proto.InternalMessageInfo + +func (m *MsgCreateDynamicStoreResponse) GetReviewItems() []string { + if m != nil { + return m.ReviewItems + } + return nil +} + +// MsgUpdateDynamicStore is used to update an existing dynamic store. +type MsgUpdateDynamicStore struct { + // Address of the creator. + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + // ID of the dynamic store to update. + StoreId Uint `protobuf:"bytes,2,opt,name=storeId,proto3,customtype=Uint" json:"storeId"` + // The new default value for uninitialized addresses (true/false). + DefaultValue bool `protobuf:"varint,3,opt,name=defaultValue,proto3" json:"defaultValue,omitempty"` + // The global kill switch state (true = enabled, false = disabled/halted). + // Callers should query the current value first if they want to keep it unchanged. + GlobalEnabled bool `protobuf:"varint,4,opt,name=globalEnabled,proto3" json:"globalEnabled,omitempty"` + // URI for additional metadata or resources associated with this dynamic store. + Uri string `protobuf:"bytes,5,opt,name=uri,proto3" json:"uri,omitempty"` + // Custom data field for storing arbitrary data associated with this dynamic store. + CustomData string `protobuf:"bytes,6,opt,name=customData,proto3" json:"customData,omitempty"` +} + +func (m *MsgUpdateDynamicStore) Reset() { *m = MsgUpdateDynamicStore{} } +func (m *MsgUpdateDynamicStore) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateDynamicStore) ProtoMessage() {} +func (*MsgUpdateDynamicStore) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{33} +} +func (m *MsgUpdateDynamicStore) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateDynamicStore) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateDynamicStore.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 *MsgUpdateDynamicStore) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateDynamicStore.Merge(m, src) +} +func (m *MsgUpdateDynamicStore) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateDynamicStore) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateDynamicStore.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateDynamicStore proto.InternalMessageInfo + +func (m *MsgUpdateDynamicStore) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgUpdateDynamicStore) GetDefaultValue() bool { + if m != nil { + return m.DefaultValue + } + return false +} + +func (m *MsgUpdateDynamicStore) GetGlobalEnabled() bool { + if m != nil { + return m.GlobalEnabled + } + return false +} + +func (m *MsgUpdateDynamicStore) GetUri() string { + if m != nil { + return m.Uri + } + return "" +} + +func (m *MsgUpdateDynamicStore) GetCustomData() string { + if m != nil { + return m.CustomData + } + return "" +} + +// MsgUpdateDynamicStoreResponse is the response to MsgUpdateDynamicStore. +type MsgUpdateDynamicStoreResponse struct { +} + +func (m *MsgUpdateDynamicStoreResponse) Reset() { *m = MsgUpdateDynamicStoreResponse{} } +func (m *MsgUpdateDynamicStoreResponse) String() string { return proto.CompactTextString(m) } +func (*MsgUpdateDynamicStoreResponse) ProtoMessage() {} +func (*MsgUpdateDynamicStoreResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{34} +} +func (m *MsgUpdateDynamicStoreResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgUpdateDynamicStoreResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgUpdateDynamicStoreResponse.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 *MsgUpdateDynamicStoreResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUpdateDynamicStoreResponse.Merge(m, src) +} +func (m *MsgUpdateDynamicStoreResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgUpdateDynamicStoreResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUpdateDynamicStoreResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgUpdateDynamicStoreResponse proto.InternalMessageInfo + +// MsgDeleteDynamicStore is used to delete a dynamic store. +type MsgDeleteDynamicStore struct { + // Address of the creator. + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + // ID of the dynamic store to delete. + StoreId Uint `protobuf:"bytes,2,opt,name=storeId,proto3,customtype=Uint" json:"storeId"` +} + +func (m *MsgDeleteDynamicStore) Reset() { *m = MsgDeleteDynamicStore{} } +func (m *MsgDeleteDynamicStore) String() string { return proto.CompactTextString(m) } +func (*MsgDeleteDynamicStore) ProtoMessage() {} +func (*MsgDeleteDynamicStore) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{35} +} +func (m *MsgDeleteDynamicStore) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgDeleteDynamicStore) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgDeleteDynamicStore.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 *MsgDeleteDynamicStore) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgDeleteDynamicStore.Merge(m, src) +} +func (m *MsgDeleteDynamicStore) XXX_Size() int { + return m.Size() +} +func (m *MsgDeleteDynamicStore) XXX_DiscardUnknown() { + xxx_messageInfo_MsgDeleteDynamicStore.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgDeleteDynamicStore proto.InternalMessageInfo + +func (m *MsgDeleteDynamicStore) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +// MsgDeleteDynamicStoreResponse is the response to MsgDeleteDynamicStore. +type MsgDeleteDynamicStoreResponse struct { +} + +func (m *MsgDeleteDynamicStoreResponse) Reset() { *m = MsgDeleteDynamicStoreResponse{} } +func (m *MsgDeleteDynamicStoreResponse) String() string { return proto.CompactTextString(m) } +func (*MsgDeleteDynamicStoreResponse) ProtoMessage() {} +func (*MsgDeleteDynamicStoreResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{36} +} +func (m *MsgDeleteDynamicStoreResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgDeleteDynamicStoreResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgDeleteDynamicStoreResponse.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 *MsgDeleteDynamicStoreResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgDeleteDynamicStoreResponse.Merge(m, src) +} +func (m *MsgDeleteDynamicStoreResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgDeleteDynamicStoreResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgDeleteDynamicStoreResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgDeleteDynamicStoreResponse proto.InternalMessageInfo + +// MsgSetDynamicStoreValue is used to set a boolean value for a specific address in a dynamic store. +type MsgSetDynamicStoreValue struct { + // Address of the creator. + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + // ID of the dynamic store. + StoreId Uint `protobuf:"bytes,2,opt,name=storeId,proto3,customtype=Uint" json:"storeId"` + // The address for which to set the value. + Address string `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"` + // The boolean value to set (true/false). + Value bool `protobuf:"varint,4,opt,name=value,proto3" json:"value,omitempty"` +} + +func (m *MsgSetDynamicStoreValue) Reset() { *m = MsgSetDynamicStoreValue{} } +func (m *MsgSetDynamicStoreValue) String() string { return proto.CompactTextString(m) } +func (*MsgSetDynamicStoreValue) ProtoMessage() {} +func (*MsgSetDynamicStoreValue) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{37} +} +func (m *MsgSetDynamicStoreValue) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSetDynamicStoreValue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSetDynamicStoreValue.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 *MsgSetDynamicStoreValue) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSetDynamicStoreValue.Merge(m, src) +} +func (m *MsgSetDynamicStoreValue) XXX_Size() int { + return m.Size() +} +func (m *MsgSetDynamicStoreValue) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSetDynamicStoreValue.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSetDynamicStoreValue proto.InternalMessageInfo + +func (m *MsgSetDynamicStoreValue) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgSetDynamicStoreValue) GetAddress() string { + if m != nil { + return m.Address + } + return "" +} + +func (m *MsgSetDynamicStoreValue) GetValue() bool { + if m != nil { + return m.Value + } + return false +} + +// MsgSetDynamicStoreValueResponse is the response to MsgSetDynamicStoreValue. +type MsgSetDynamicStoreValueResponse struct { + PreviousValue string `protobuf:"bytes,1,opt,name=previousValue,proto3" json:"previousValue,omitempty"` + ReviewItems []string `protobuf:"bytes,2,rep,name=reviewItems,proto3" json:"reviewItems,omitempty"` +} + +func (m *MsgSetDynamicStoreValueResponse) Reset() { *m = MsgSetDynamicStoreValueResponse{} } +func (m *MsgSetDynamicStoreValueResponse) String() string { return proto.CompactTextString(m) } +func (*MsgSetDynamicStoreValueResponse) ProtoMessage() {} +func (*MsgSetDynamicStoreValueResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{38} +} +func (m *MsgSetDynamicStoreValueResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSetDynamicStoreValueResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSetDynamicStoreValueResponse.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 *MsgSetDynamicStoreValueResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSetDynamicStoreValueResponse.Merge(m, src) +} +func (m *MsgSetDynamicStoreValueResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgSetDynamicStoreValueResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSetDynamicStoreValueResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSetDynamicStoreValueResponse proto.InternalMessageInfo + +func (m *MsgSetDynamicStoreValueResponse) GetPreviousValue() string { + if m != nil { + return m.PreviousValue + } + return "" +} + +func (m *MsgSetDynamicStoreValueResponse) GetReviewItems() []string { + if m != nil { + return m.ReviewItems + } + return nil +} + +// MsgSetValidTokenIds sets the validTokenIds and canUpdateValidTokenIds permission +type MsgSetValidTokenIds struct { + // Address of the creator. + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + // ID of the collection. + CollectionId Uint `protobuf:"bytes,2,opt,name=collectionId,proto3,customtype=Uint" json:"collectionId"` + // New token IDs to add to this collection + ValidTokenIds []*UintRange `protobuf:"bytes,3,rep,name=validTokenIds,proto3" json:"validTokenIds,omitempty"` + // Permission to update valid token IDs + CanUpdateValidTokenIds []*TokenIdsActionPermission `protobuf:"bytes,4,rep,name=canUpdateValidTokenIds,proto3" json:"canUpdateValidTokenIds,omitempty"` +} + +func (m *MsgSetValidTokenIds) Reset() { *m = MsgSetValidTokenIds{} } +func (m *MsgSetValidTokenIds) String() string { return proto.CompactTextString(m) } +func (*MsgSetValidTokenIds) ProtoMessage() {} +func (*MsgSetValidTokenIds) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{39} +} +func (m *MsgSetValidTokenIds) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSetValidTokenIds) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSetValidTokenIds.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 *MsgSetValidTokenIds) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSetValidTokenIds.Merge(m, src) +} +func (m *MsgSetValidTokenIds) XXX_Size() int { + return m.Size() +} +func (m *MsgSetValidTokenIds) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSetValidTokenIds.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSetValidTokenIds proto.InternalMessageInfo + +func (m *MsgSetValidTokenIds) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgSetValidTokenIds) GetValidTokenIds() []*UintRange { + if m != nil { + return m.ValidTokenIds + } + return nil +} + +func (m *MsgSetValidTokenIds) GetCanUpdateValidTokenIds() []*TokenIdsActionPermission { + if m != nil { + return m.CanUpdateValidTokenIds + } + return nil +} + +// MsgSetValidTokenIdsResponse is the response to MsgSetValidTokenIds. +type MsgSetValidTokenIdsResponse struct { + // ID of the collection. + CollectionId Uint `protobuf:"bytes,1,opt,name=collectionId,proto3,customtype=Uint" json:"collectionId"` +} + +func (m *MsgSetValidTokenIdsResponse) Reset() { *m = MsgSetValidTokenIdsResponse{} } +func (m *MsgSetValidTokenIdsResponse) String() string { return proto.CompactTextString(m) } +func (*MsgSetValidTokenIdsResponse) ProtoMessage() {} +func (*MsgSetValidTokenIdsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{40} +} +func (m *MsgSetValidTokenIdsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSetValidTokenIdsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSetValidTokenIdsResponse.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 *MsgSetValidTokenIdsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSetValidTokenIdsResponse.Merge(m, src) +} +func (m *MsgSetValidTokenIdsResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgSetValidTokenIdsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSetValidTokenIdsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSetValidTokenIdsResponse proto.InternalMessageInfo + +// MsgSetManager sets the manager and canUpdateManager permission +type MsgSetManager struct { + // Address of the creator. + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + // ID of the collection. + CollectionId Uint `protobuf:"bytes,2,opt,name=collectionId,proto3,customtype=Uint" json:"collectionId"` + // New manager to set. + Manager string `protobuf:"bytes,3,opt,name=manager,proto3" json:"manager,omitempty"` + // Permission to update manager + CanUpdateManager []*ActionPermission `protobuf:"bytes,4,rep,name=canUpdateManager,proto3" json:"canUpdateManager,omitempty"` +} + +func (m *MsgSetManager) Reset() { *m = MsgSetManager{} } +func (m *MsgSetManager) String() string { return proto.CompactTextString(m) } +func (*MsgSetManager) ProtoMessage() {} +func (*MsgSetManager) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{41} +} +func (m *MsgSetManager) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSetManager) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSetManager.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 *MsgSetManager) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSetManager.Merge(m, src) +} +func (m *MsgSetManager) XXX_Size() int { + return m.Size() +} +func (m *MsgSetManager) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSetManager.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSetManager proto.InternalMessageInfo + +func (m *MsgSetManager) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgSetManager) GetManager() string { + if m != nil { + return m.Manager + } + return "" +} + +func (m *MsgSetManager) GetCanUpdateManager() []*ActionPermission { + if m != nil { + return m.CanUpdateManager + } + return nil +} + +// MsgSetManagerResponse is the response to MsgSetManager. +type MsgSetManagerResponse struct { + // ID of the collection. + CollectionId Uint `protobuf:"bytes,1,opt,name=collectionId,proto3,customtype=Uint" json:"collectionId"` +} + +func (m *MsgSetManagerResponse) Reset() { *m = MsgSetManagerResponse{} } +func (m *MsgSetManagerResponse) String() string { return proto.CompactTextString(m) } +func (*MsgSetManagerResponse) ProtoMessage() {} +func (*MsgSetManagerResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{42} +} +func (m *MsgSetManagerResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSetManagerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSetManagerResponse.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 *MsgSetManagerResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSetManagerResponse.Merge(m, src) +} +func (m *MsgSetManagerResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgSetManagerResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSetManagerResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSetManagerResponse proto.InternalMessageInfo + +// MsgSetCollectionMetadata sets the collection metadata and canUpdateCollectionMetadata permission +type MsgSetCollectionMetadata struct { + // Address of the creator. + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + // ID of the collection. + CollectionId Uint `protobuf:"bytes,2,opt,name=collectionId,proto3,customtype=Uint" json:"collectionId"` + // New collection metadata to set. + CollectionMetadata *CollectionMetadata `protobuf:"bytes,3,opt,name=collectionMetadata,proto3" json:"collectionMetadata,omitempty"` + // Permission to update collection metadata + CanUpdateCollectionMetadata []*ActionPermission `protobuf:"bytes,4,rep,name=canUpdateCollectionMetadata,proto3" json:"canUpdateCollectionMetadata,omitempty"` +} + +func (m *MsgSetCollectionMetadata) Reset() { *m = MsgSetCollectionMetadata{} } +func (m *MsgSetCollectionMetadata) String() string { return proto.CompactTextString(m) } +func (*MsgSetCollectionMetadata) ProtoMessage() {} +func (*MsgSetCollectionMetadata) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{43} +} +func (m *MsgSetCollectionMetadata) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSetCollectionMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSetCollectionMetadata.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 *MsgSetCollectionMetadata) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSetCollectionMetadata.Merge(m, src) +} +func (m *MsgSetCollectionMetadata) XXX_Size() int { + return m.Size() +} +func (m *MsgSetCollectionMetadata) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSetCollectionMetadata.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSetCollectionMetadata proto.InternalMessageInfo + +func (m *MsgSetCollectionMetadata) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgSetCollectionMetadata) GetCollectionMetadata() *CollectionMetadata { + if m != nil { + return m.CollectionMetadata + } + return nil +} + +func (m *MsgSetCollectionMetadata) GetCanUpdateCollectionMetadata() []*ActionPermission { + if m != nil { + return m.CanUpdateCollectionMetadata + } + return nil +} + +// MsgSetCollectionMetadataResponse is the response to MsgSetCollectionMetadata. +type MsgSetCollectionMetadataResponse struct { + // ID of the collection. + CollectionId Uint `protobuf:"bytes,1,opt,name=collectionId,proto3,customtype=Uint" json:"collectionId"` +} + +func (m *MsgSetCollectionMetadataResponse) Reset() { *m = MsgSetCollectionMetadataResponse{} } +func (m *MsgSetCollectionMetadataResponse) String() string { return proto.CompactTextString(m) } +func (*MsgSetCollectionMetadataResponse) ProtoMessage() {} +func (*MsgSetCollectionMetadataResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{44} +} +func (m *MsgSetCollectionMetadataResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSetCollectionMetadataResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSetCollectionMetadataResponse.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 *MsgSetCollectionMetadataResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSetCollectionMetadataResponse.Merge(m, src) +} +func (m *MsgSetCollectionMetadataResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgSetCollectionMetadataResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSetCollectionMetadataResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSetCollectionMetadataResponse proto.InternalMessageInfo + +// MsgSetTokenMetadata sets the token metadata and canUpdateTokenMetadata permission +type MsgSetTokenMetadata struct { + // Address of the creator. + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + // ID of the collection. + CollectionId Uint `protobuf:"bytes,2,opt,name=collectionId,proto3,customtype=Uint" json:"collectionId"` + // New token metadata to set. + TokenMetadata []*TokenMetadata `protobuf:"bytes,3,rep,name=tokenMetadata,proto3" json:"tokenMetadata,omitempty"` + // Permission to update token metadata + CanUpdateTokenMetadata []*TokenIdsActionPermission `protobuf:"bytes,4,rep,name=canUpdateTokenMetadata,proto3" json:"canUpdateTokenMetadata,omitempty"` +} + +func (m *MsgSetTokenMetadata) Reset() { *m = MsgSetTokenMetadata{} } +func (m *MsgSetTokenMetadata) String() string { return proto.CompactTextString(m) } +func (*MsgSetTokenMetadata) ProtoMessage() {} +func (*MsgSetTokenMetadata) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{45} +} +func (m *MsgSetTokenMetadata) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSetTokenMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSetTokenMetadata.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 *MsgSetTokenMetadata) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSetTokenMetadata.Merge(m, src) +} +func (m *MsgSetTokenMetadata) XXX_Size() int { + return m.Size() +} +func (m *MsgSetTokenMetadata) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSetTokenMetadata.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSetTokenMetadata proto.InternalMessageInfo + +func (m *MsgSetTokenMetadata) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgSetTokenMetadata) GetTokenMetadata() []*TokenMetadata { + if m != nil { + return m.TokenMetadata + } + return nil +} + +func (m *MsgSetTokenMetadata) GetCanUpdateTokenMetadata() []*TokenIdsActionPermission { + if m != nil { + return m.CanUpdateTokenMetadata + } + return nil +} + +// MsgSetTokenMetadataResponse is the response to MsgSetTokenMetadata. +type MsgSetTokenMetadataResponse struct { + // ID of the collection. + CollectionId Uint `protobuf:"bytes,1,opt,name=collectionId,proto3,customtype=Uint" json:"collectionId"` +} + +func (m *MsgSetTokenMetadataResponse) Reset() { *m = MsgSetTokenMetadataResponse{} } +func (m *MsgSetTokenMetadataResponse) String() string { return proto.CompactTextString(m) } +func (*MsgSetTokenMetadataResponse) ProtoMessage() {} +func (*MsgSetTokenMetadataResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{46} +} +func (m *MsgSetTokenMetadataResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSetTokenMetadataResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSetTokenMetadataResponse.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 *MsgSetTokenMetadataResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSetTokenMetadataResponse.Merge(m, src) +} +func (m *MsgSetTokenMetadataResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgSetTokenMetadataResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSetTokenMetadataResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSetTokenMetadataResponse proto.InternalMessageInfo + +// MsgSetCustomData sets the custom data and canUpdateCustomData permission +type MsgSetCustomData struct { + // Address of the creator. + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + // ID of the collection. + CollectionId Uint `protobuf:"bytes,2,opt,name=collectionId,proto3,customtype=Uint" json:"collectionId"` + // New custom data to set. + CustomData string `protobuf:"bytes,3,opt,name=customData,proto3" json:"customData,omitempty"` + // Permission to update custom data + CanUpdateCustomData []*ActionPermission `protobuf:"bytes,4,rep,name=canUpdateCustomData,proto3" json:"canUpdateCustomData,omitempty"` +} + +func (m *MsgSetCustomData) Reset() { *m = MsgSetCustomData{} } +func (m *MsgSetCustomData) String() string { return proto.CompactTextString(m) } +func (*MsgSetCustomData) ProtoMessage() {} +func (*MsgSetCustomData) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{47} +} +func (m *MsgSetCustomData) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSetCustomData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSetCustomData.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 *MsgSetCustomData) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSetCustomData.Merge(m, src) +} +func (m *MsgSetCustomData) XXX_Size() int { + return m.Size() +} +func (m *MsgSetCustomData) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSetCustomData.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSetCustomData proto.InternalMessageInfo + +func (m *MsgSetCustomData) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgSetCustomData) GetCustomData() string { + if m != nil { + return m.CustomData + } + return "" +} + +func (m *MsgSetCustomData) GetCanUpdateCustomData() []*ActionPermission { + if m != nil { + return m.CanUpdateCustomData + } + return nil +} + +// MsgSetCustomDataResponse is the response to MsgSetCustomData. +type MsgSetCustomDataResponse struct { + // ID of the collection. + CollectionId Uint `protobuf:"bytes,1,opt,name=collectionId,proto3,customtype=Uint" json:"collectionId"` +} + +func (m *MsgSetCustomDataResponse) Reset() { *m = MsgSetCustomDataResponse{} } +func (m *MsgSetCustomDataResponse) String() string { return proto.CompactTextString(m) } +func (*MsgSetCustomDataResponse) ProtoMessage() {} +func (*MsgSetCustomDataResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{48} +} +func (m *MsgSetCustomDataResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSetCustomDataResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSetCustomDataResponse.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 *MsgSetCustomDataResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSetCustomDataResponse.Merge(m, src) +} +func (m *MsgSetCustomDataResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgSetCustomDataResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSetCustomDataResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSetCustomDataResponse proto.InternalMessageInfo + +// MsgSetStandards sets the standards and canUpdateStandards permission +type MsgSetStandards struct { + // Address of the creator. + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + // ID of the collection. + CollectionId Uint `protobuf:"bytes,2,opt,name=collectionId,proto3,customtype=Uint" json:"collectionId"` + // New standards to set. + Standards []string `protobuf:"bytes,3,rep,name=standards,proto3" json:"standards,omitempty"` + // Permission to update standards + CanUpdateStandards []*ActionPermission `protobuf:"bytes,4,rep,name=canUpdateStandards,proto3" json:"canUpdateStandards,omitempty"` +} + +func (m *MsgSetStandards) Reset() { *m = MsgSetStandards{} } +func (m *MsgSetStandards) String() string { return proto.CompactTextString(m) } +func (*MsgSetStandards) ProtoMessage() {} +func (*MsgSetStandards) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{49} +} +func (m *MsgSetStandards) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSetStandards) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSetStandards.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 *MsgSetStandards) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSetStandards.Merge(m, src) +} +func (m *MsgSetStandards) XXX_Size() int { + return m.Size() +} +func (m *MsgSetStandards) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSetStandards.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSetStandards proto.InternalMessageInfo + +func (m *MsgSetStandards) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgSetStandards) GetStandards() []string { + if m != nil { + return m.Standards + } + return nil +} + +func (m *MsgSetStandards) GetCanUpdateStandards() []*ActionPermission { + if m != nil { + return m.CanUpdateStandards + } + return nil +} + +// MsgSetStandardsResponse is the response to MsgSetStandards. +type MsgSetStandardsResponse struct { + // ID of the collection. + CollectionId Uint `protobuf:"bytes,1,opt,name=collectionId,proto3,customtype=Uint" json:"collectionId"` +} + +func (m *MsgSetStandardsResponse) Reset() { *m = MsgSetStandardsResponse{} } +func (m *MsgSetStandardsResponse) String() string { return proto.CompactTextString(m) } +func (*MsgSetStandardsResponse) ProtoMessage() {} +func (*MsgSetStandardsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{50} +} +func (m *MsgSetStandardsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSetStandardsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSetStandardsResponse.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 *MsgSetStandardsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSetStandardsResponse.Merge(m, src) +} +func (m *MsgSetStandardsResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgSetStandardsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSetStandardsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSetStandardsResponse proto.InternalMessageInfo + +// MsgSetCollectionApprovals sets the collection approvals and canUpdateCollectionApprovals permission +type MsgSetCollectionApprovals struct { + // Address of the creator. + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + // ID of the collection. + CollectionId Uint `protobuf:"bytes,2,opt,name=collectionId,proto3,customtype=Uint" json:"collectionId"` + // New collection approvals to set. + CollectionApprovals []*CollectionApproval `protobuf:"bytes,3,rep,name=collectionApprovals,proto3" json:"collectionApprovals,omitempty"` + // Permission to update collection approvals + CanUpdateCollectionApprovals []*CollectionApprovalPermission `protobuf:"bytes,4,rep,name=canUpdateCollectionApprovals,proto3" json:"canUpdateCollectionApprovals,omitempty"` +} + +func (m *MsgSetCollectionApprovals) Reset() { *m = MsgSetCollectionApprovals{} } +func (m *MsgSetCollectionApprovals) String() string { return proto.CompactTextString(m) } +func (*MsgSetCollectionApprovals) ProtoMessage() {} +func (*MsgSetCollectionApprovals) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{51} +} +func (m *MsgSetCollectionApprovals) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSetCollectionApprovals) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSetCollectionApprovals.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 *MsgSetCollectionApprovals) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSetCollectionApprovals.Merge(m, src) +} +func (m *MsgSetCollectionApprovals) XXX_Size() int { + return m.Size() +} +func (m *MsgSetCollectionApprovals) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSetCollectionApprovals.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSetCollectionApprovals proto.InternalMessageInfo + +func (m *MsgSetCollectionApprovals) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgSetCollectionApprovals) GetCollectionApprovals() []*CollectionApproval { + if m != nil { + return m.CollectionApprovals + } + return nil +} + +func (m *MsgSetCollectionApprovals) GetCanUpdateCollectionApprovals() []*CollectionApprovalPermission { + if m != nil { + return m.CanUpdateCollectionApprovals + } + return nil +} + +// MsgSetCollectionApprovalsResponse is the response to MsgSetCollectionApprovals. +type MsgSetCollectionApprovalsResponse struct { + // ID of the collection. + CollectionId Uint `protobuf:"bytes,1,opt,name=collectionId,proto3,customtype=Uint" json:"collectionId"` + ApprovalChanges []*ApprovalChange `protobuf:"bytes,2,rep,name=approvalChanges,proto3" json:"approvalChanges,omitempty"` + ReviewItems []string `protobuf:"bytes,3,rep,name=reviewItems,proto3" json:"reviewItems,omitempty"` +} + +func (m *MsgSetCollectionApprovalsResponse) Reset() { *m = MsgSetCollectionApprovalsResponse{} } +func (m *MsgSetCollectionApprovalsResponse) String() string { return proto.CompactTextString(m) } +func (*MsgSetCollectionApprovalsResponse) ProtoMessage() {} +func (*MsgSetCollectionApprovalsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{52} +} +func (m *MsgSetCollectionApprovalsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSetCollectionApprovalsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSetCollectionApprovalsResponse.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 *MsgSetCollectionApprovalsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSetCollectionApprovalsResponse.Merge(m, src) +} +func (m *MsgSetCollectionApprovalsResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgSetCollectionApprovalsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSetCollectionApprovalsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSetCollectionApprovalsResponse proto.InternalMessageInfo + +func (m *MsgSetCollectionApprovalsResponse) GetApprovalChanges() []*ApprovalChange { + if m != nil { + return m.ApprovalChanges + } + return nil +} + +func (m *MsgSetCollectionApprovalsResponse) GetReviewItems() []string { + if m != nil { + return m.ReviewItems + } + return nil +} + +// MsgSetIsArchived sets the isArchived and canArchiveCollection permission +type MsgSetIsArchived struct { + // Address of the creator. + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + // ID of the collection. + CollectionId Uint `protobuf:"bytes,2,opt,name=collectionId,proto3,customtype=Uint" json:"collectionId"` + // New isArchived to set. + IsArchived bool `protobuf:"varint,3,opt,name=isArchived,proto3" json:"isArchived,omitempty"` + // Permission to archive collection + CanArchiveCollection []*ActionPermission `protobuf:"bytes,4,rep,name=canArchiveCollection,proto3" json:"canArchiveCollection,omitempty"` +} + +func (m *MsgSetIsArchived) Reset() { *m = MsgSetIsArchived{} } +func (m *MsgSetIsArchived) String() string { return proto.CompactTextString(m) } +func (*MsgSetIsArchived) ProtoMessage() {} +func (*MsgSetIsArchived) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{53} +} +func (m *MsgSetIsArchived) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSetIsArchived) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSetIsArchived.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 *MsgSetIsArchived) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSetIsArchived.Merge(m, src) +} +func (m *MsgSetIsArchived) XXX_Size() int { + return m.Size() +} +func (m *MsgSetIsArchived) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSetIsArchived.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSetIsArchived proto.InternalMessageInfo + +func (m *MsgSetIsArchived) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgSetIsArchived) GetIsArchived() bool { + if m != nil { + return m.IsArchived + } + return false +} + +func (m *MsgSetIsArchived) GetCanArchiveCollection() []*ActionPermission { + if m != nil { + return m.CanArchiveCollection + } + return nil +} + +// MsgSetIsArchivedResponse is the response to MsgSetIsArchived. +type MsgSetIsArchivedResponse struct { + // ID of the collection. + CollectionId Uint `protobuf:"bytes,1,opt,name=collectionId,proto3,customtype=Uint" json:"collectionId"` +} + +func (m *MsgSetIsArchivedResponse) Reset() { *m = MsgSetIsArchivedResponse{} } +func (m *MsgSetIsArchivedResponse) String() string { return proto.CompactTextString(m) } +func (*MsgSetIsArchivedResponse) ProtoMessage() {} +func (*MsgSetIsArchivedResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{54} +} +func (m *MsgSetIsArchivedResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSetIsArchivedResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSetIsArchivedResponse.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 *MsgSetIsArchivedResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSetIsArchivedResponse.Merge(m, src) +} +func (m *MsgSetIsArchivedResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgSetIsArchivedResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSetIsArchivedResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSetIsArchivedResponse proto.InternalMessageInfo + +// MsgSetReservedProtocolAddress sets or unsets a reserved protocol address (governance-only). +type MsgSetReservedProtocolAddress struct { + // authority is the address that controls the module (defaults to x/gov unless overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // Address to set or unset as reserved protocol address. + Address string `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` + // Whether the address should be a reserved protocol address (true) or not (false). + IsReservedProtocol bool `protobuf:"varint,3,opt,name=isReservedProtocol,proto3" json:"isReservedProtocol,omitempty"` +} + +func (m *MsgSetReservedProtocolAddress) Reset() { *m = MsgSetReservedProtocolAddress{} } +func (m *MsgSetReservedProtocolAddress) String() string { return proto.CompactTextString(m) } +func (*MsgSetReservedProtocolAddress) ProtoMessage() {} +func (*MsgSetReservedProtocolAddress) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{55} +} +func (m *MsgSetReservedProtocolAddress) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSetReservedProtocolAddress) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSetReservedProtocolAddress.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 *MsgSetReservedProtocolAddress) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSetReservedProtocolAddress.Merge(m, src) +} +func (m *MsgSetReservedProtocolAddress) XXX_Size() int { + return m.Size() +} +func (m *MsgSetReservedProtocolAddress) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSetReservedProtocolAddress.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSetReservedProtocolAddress proto.InternalMessageInfo + +func (m *MsgSetReservedProtocolAddress) GetAuthority() string { + if m != nil { + return m.Authority + } + return "" +} + +func (m *MsgSetReservedProtocolAddress) GetAddress() string { + if m != nil { + return m.Address + } + return "" +} + +func (m *MsgSetReservedProtocolAddress) GetIsReservedProtocol() bool { + if m != nil { + return m.IsReservedProtocol + } + return false +} + +// MsgSetReservedProtocolAddressResponse is the response to MsgSetReservedProtocolAddress. +type MsgSetReservedProtocolAddressResponse struct { +} + +func (m *MsgSetReservedProtocolAddressResponse) Reset() { *m = MsgSetReservedProtocolAddressResponse{} } +func (m *MsgSetReservedProtocolAddressResponse) String() string { return proto.CompactTextString(m) } +func (*MsgSetReservedProtocolAddressResponse) ProtoMessage() {} +func (*MsgSetReservedProtocolAddressResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{56} +} +func (m *MsgSetReservedProtocolAddressResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSetReservedProtocolAddressResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSetReservedProtocolAddressResponse.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 *MsgSetReservedProtocolAddressResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSetReservedProtocolAddressResponse.Merge(m, src) +} +func (m *MsgSetReservedProtocolAddressResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgSetReservedProtocolAddressResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSetReservedProtocolAddressResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSetReservedProtocolAddressResponse proto.InternalMessageInfo + +// MsgCastVote allows a voter to cast or update their vote for a voting challenge. +type MsgCastVote struct { + // The address of the voter casting the vote. + Creator string `protobuf:"bytes,1,opt,name=creator,proto3" json:"creator,omitempty"` + // The collection ID for the voting challenge. + CollectionId Uint `protobuf:"bytes,2,opt,name=collectionId,proto3,customtype=Uint" json:"collectionId"` + // The approval level ("collection", "incoming", or "outgoing"). + ApprovalLevel string `protobuf:"bytes,3,opt,name=approvalLevel,proto3" json:"approvalLevel,omitempty"` + // The approver address (empty string for collection-level approvals). + ApproverAddress string `protobuf:"bytes,4,opt,name=approverAddress,proto3" json:"approverAddress,omitempty"` + // The approval ID. + ApprovalId string `protobuf:"bytes,5,opt,name=approvalId,proto3" json:"approvalId,omitempty"` + // The proposal ID (challenge ID) from the VotingChallenge. + ProposalId string `protobuf:"bytes,6,opt,name=proposalId,proto3" json:"proposalId,omitempty"` + // The percentage weight (0-100) allocated to "yes" vote. + // The remaining percentage (100 - yesWeight) is allocated to "no" vote. + // Example: yesWeight=70 means 70% yes, 30% no. + YesWeight Uint `protobuf:"bytes,7,opt,name=yesWeight,proto3,customtype=Uint" json:"yesWeight"` +} + +func (m *MsgCastVote) Reset() { *m = MsgCastVote{} } +func (m *MsgCastVote) String() string { return proto.CompactTextString(m) } +func (*MsgCastVote) ProtoMessage() {} +func (*MsgCastVote) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{57} +} +func (m *MsgCastVote) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgCastVote) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgCastVote.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 *MsgCastVote) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgCastVote.Merge(m, src) +} +func (m *MsgCastVote) XXX_Size() int { + return m.Size() +} +func (m *MsgCastVote) XXX_DiscardUnknown() { + xxx_messageInfo_MsgCastVote.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgCastVote proto.InternalMessageInfo + +func (m *MsgCastVote) GetCreator() string { + if m != nil { + return m.Creator + } + return "" +} + +func (m *MsgCastVote) GetApprovalLevel() string { + if m != nil { + return m.ApprovalLevel + } + return "" +} + +func (m *MsgCastVote) GetApproverAddress() string { + if m != nil { + return m.ApproverAddress + } + return "" +} + +func (m *MsgCastVote) GetApprovalId() string { + if m != nil { + return m.ApprovalId + } + return "" +} + +func (m *MsgCastVote) GetProposalId() string { + if m != nil { + return m.ProposalId + } + return "" +} + +type MsgCastVoteResponse struct { +} + +func (m *MsgCastVoteResponse) Reset() { *m = MsgCastVoteResponse{} } +func (m *MsgCastVoteResponse) String() string { return proto.CompactTextString(m) } +func (*MsgCastVoteResponse) ProtoMessage() {} +func (*MsgCastVoteResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{58} +} +func (m *MsgCastVoteResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgCastVoteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgCastVoteResponse.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 *MsgCastVoteResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgCastVoteResponse.Merge(m, src) +} +func (m *MsgCastVoteResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgCastVoteResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgCastVoteResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgCastVoteResponse proto.InternalMessageInfo + +// ApprovalUsed represents an approval that was consumed during a transfer. +type ApprovalUsed struct { + ApprovalId string `protobuf:"bytes,1,opt,name=approvalId,proto3" json:"approvalId,omitempty"` + ApprovalLevel string `protobuf:"bytes,2,opt,name=approvalLevel,proto3" json:"approvalLevel,omitempty"` + ApproverAddress string `protobuf:"bytes,3,opt,name=approverAddress,proto3" json:"approverAddress,omitempty"` + Version string `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"` +} + +func (m *ApprovalUsed) Reset() { *m = ApprovalUsed{} } +func (m *ApprovalUsed) String() string { return proto.CompactTextString(m) } +func (*ApprovalUsed) ProtoMessage() {} +func (*ApprovalUsed) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{59} +} +func (m *ApprovalUsed) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ApprovalUsed) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ApprovalUsed.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 *ApprovalUsed) XXX_Merge(src proto.Message) { + xxx_messageInfo_ApprovalUsed.Merge(m, src) +} +func (m *ApprovalUsed) XXX_Size() int { + return m.Size() +} +func (m *ApprovalUsed) XXX_DiscardUnknown() { + xxx_messageInfo_ApprovalUsed.DiscardUnknown(m) +} + +var xxx_messageInfo_ApprovalUsed proto.InternalMessageInfo + +func (m *ApprovalUsed) GetApprovalId() string { + if m != nil { + return m.ApprovalId + } + return "" +} + +func (m *ApprovalUsed) GetApprovalLevel() string { + if m != nil { + return m.ApprovalLevel + } + return "" +} + +func (m *ApprovalUsed) GetApproverAddress() string { + if m != nil { + return m.ApproverAddress + } + return "" +} + +func (m *ApprovalUsed) GetVersion() string { + if m != nil { + return m.Version + } + return "" +} + +// CoinTransferProto represents a coin transfer that occurred during a transaction. +type CoinTransferProto struct { + From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` + To string `protobuf:"bytes,2,opt,name=to,proto3" json:"to,omitempty"` + Amount string `protobuf:"bytes,3,opt,name=amount,proto3" json:"amount,omitempty"` + Denom string `protobuf:"bytes,4,opt,name=denom,proto3" json:"denom,omitempty"` + IsProtocolFee bool `protobuf:"varint,5,opt,name=isProtocolFee,proto3" json:"isProtocolFee,omitempty"` +} + +func (m *CoinTransferProto) Reset() { *m = CoinTransferProto{} } +func (m *CoinTransferProto) String() string { return proto.CompactTextString(m) } +func (*CoinTransferProto) ProtoMessage() {} +func (*CoinTransferProto) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{60} +} +func (m *CoinTransferProto) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CoinTransferProto) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CoinTransferProto.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 *CoinTransferProto) XXX_Merge(src proto.Message) { + xxx_messageInfo_CoinTransferProto.Merge(m, src) +} +func (m *CoinTransferProto) XXX_Size() int { + return m.Size() +} +func (m *CoinTransferProto) XXX_DiscardUnknown() { + xxx_messageInfo_CoinTransferProto.DiscardUnknown(m) +} + +var xxx_messageInfo_CoinTransferProto proto.InternalMessageInfo + +func (m *CoinTransferProto) GetFrom() string { + if m != nil { + return m.From + } + return "" +} + +func (m *CoinTransferProto) GetTo() string { + if m != nil { + return m.To + } + return "" +} + +func (m *CoinTransferProto) GetAmount() string { + if m != nil { + return m.Amount + } + return "" +} + +func (m *CoinTransferProto) GetDenom() string { + if m != nil { + return m.Denom + } + return "" +} + +func (m *CoinTransferProto) GetIsProtocolFee() bool { + if m != nil { + return m.IsProtocolFee + } + return false +} + +// ApprovalChange represents a change to an approval (created, edited, or deleted). +type ApprovalChange struct { + ApprovalId string `protobuf:"bytes,1,opt,name=approvalId,proto3" json:"approvalId,omitempty"` + ApprovalLevel string `protobuf:"bytes,2,opt,name=approvalLevel,proto3" json:"approvalLevel,omitempty"` + Action string `protobuf:"bytes,3,opt,name=action,proto3" json:"action,omitempty"` + Version string `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"` +} + +func (m *ApprovalChange) Reset() { *m = ApprovalChange{} } +func (m *ApprovalChange) String() string { return proto.CompactTextString(m) } +func (*ApprovalChange) ProtoMessage() {} +func (*ApprovalChange) Descriptor() ([]byte, []int) { + return fileDescriptor_5ff3c354e788fb63, []int{61} +} +func (m *ApprovalChange) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ApprovalChange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ApprovalChange.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 *ApprovalChange) XXX_Merge(src proto.Message) { + xxx_messageInfo_ApprovalChange.Merge(m, src) +} +func (m *ApprovalChange) XXX_Size() int { + return m.Size() +} +func (m *ApprovalChange) XXX_DiscardUnknown() { + xxx_messageInfo_ApprovalChange.DiscardUnknown(m) +} + +var xxx_messageInfo_ApprovalChange proto.InternalMessageInfo + +func (m *ApprovalChange) GetApprovalId() string { + if m != nil { + return m.ApprovalId + } + return "" +} + +func (m *ApprovalChange) GetApprovalLevel() string { + if m != nil { + return m.ApprovalLevel + } + return "" +} + +func (m *ApprovalChange) GetAction() string { + if m != nil { + return m.Action + } + return "" +} + +func (m *ApprovalChange) GetVersion() string { + if m != nil { + return m.Version + } + return "" +} + +func init() { + proto.RegisterType((*TokenizationCustomMsgType)(nil), "tokenization.v29.TokenizationCustomMsgType") + proto.RegisterType((*MsgUpdateParams)(nil), "tokenization.v29.MsgUpdateParams") + proto.RegisterType((*MsgUpdateParamsResponse)(nil), "tokenization.v29.MsgUpdateParamsResponse") + proto.RegisterType((*CosmosCoinWrapperPathAddObject)(nil), "tokenization.v29.CosmosCoinWrapperPathAddObject") + proto.RegisterType((*AliasPathAddObject)(nil), "tokenization.v29.AliasPathAddObject") + proto.RegisterType((*CosmosCoinBackedPathAddObject)(nil), "tokenization.v29.CosmosCoinBackedPathAddObject") + proto.RegisterType((*InvariantsAddObject)(nil), "tokenization.v29.InvariantsAddObject") + proto.RegisterType((*MsgUniversalUpdateCollection)(nil), "tokenization.v29.MsgUniversalUpdateCollection") + proto.RegisterType((*MsgUniversalUpdateCollectionResponse)(nil), "tokenization.v29.MsgUniversalUpdateCollectionResponse") + proto.RegisterType((*MsgUpdateCollection)(nil), "tokenization.v29.MsgUpdateCollection") + proto.RegisterType((*MsgUpdateCollectionResponse)(nil), "tokenization.v29.MsgUpdateCollectionResponse") + proto.RegisterType((*MsgCreateCollection)(nil), "tokenization.v29.MsgCreateCollection") + proto.RegisterType((*MsgCreateCollectionResponse)(nil), "tokenization.v29.MsgCreateCollectionResponse") + proto.RegisterType((*MsgCreateAddressLists)(nil), "tokenization.v29.MsgCreateAddressLists") + proto.RegisterType((*MsgCreateAddressListsResponse)(nil), "tokenization.v29.MsgCreateAddressListsResponse") + proto.RegisterType((*MsgTransferTokens)(nil), "tokenization.v29.MsgTransferTokens") + proto.RegisterType((*MsgTransferTokensResponse)(nil), "tokenization.v29.MsgTransferTokensResponse") + proto.RegisterType((*MsgDeleteCollection)(nil), "tokenization.v29.MsgDeleteCollection") + proto.RegisterType((*MsgDeleteCollectionResponse)(nil), "tokenization.v29.MsgDeleteCollectionResponse") + proto.RegisterType((*MsgUpdateUserApprovals)(nil), "tokenization.v29.MsgUpdateUserApprovals") + proto.RegisterType((*MsgUpdateUserApprovalsResponse)(nil), "tokenization.v29.MsgUpdateUserApprovalsResponse") + proto.RegisterType((*MsgSetIncomingApproval)(nil), "tokenization.v29.MsgSetIncomingApproval") + proto.RegisterType((*MsgSetIncomingApprovalResponse)(nil), "tokenization.v29.MsgSetIncomingApprovalResponse") + proto.RegisterType((*MsgDeleteIncomingApproval)(nil), "tokenization.v29.MsgDeleteIncomingApproval") + proto.RegisterType((*MsgDeleteIncomingApprovalResponse)(nil), "tokenization.v29.MsgDeleteIncomingApprovalResponse") + proto.RegisterType((*MsgSetOutgoingApproval)(nil), "tokenization.v29.MsgSetOutgoingApproval") + proto.RegisterType((*MsgSetOutgoingApprovalResponse)(nil), "tokenization.v29.MsgSetOutgoingApprovalResponse") + proto.RegisterType((*MsgDeleteOutgoingApproval)(nil), "tokenization.v29.MsgDeleteOutgoingApproval") + proto.RegisterType((*MsgDeleteOutgoingApprovalResponse)(nil), "tokenization.v29.MsgDeleteOutgoingApprovalResponse") + proto.RegisterType((*MsgPurgeApprovals)(nil), "tokenization.v29.MsgPurgeApprovals") + proto.RegisterType((*MsgPurgeApprovalsResponse)(nil), "tokenization.v29.MsgPurgeApprovalsResponse") + proto.RegisterType((*MsgCreateDynamicStore)(nil), "tokenization.v29.MsgCreateDynamicStore") + proto.RegisterType((*MsgCreateDynamicStoreResponse)(nil), "tokenization.v29.MsgCreateDynamicStoreResponse") + proto.RegisterType((*MsgUpdateDynamicStore)(nil), "tokenization.v29.MsgUpdateDynamicStore") + proto.RegisterType((*MsgUpdateDynamicStoreResponse)(nil), "tokenization.v29.MsgUpdateDynamicStoreResponse") + proto.RegisterType((*MsgDeleteDynamicStore)(nil), "tokenization.v29.MsgDeleteDynamicStore") + proto.RegisterType((*MsgDeleteDynamicStoreResponse)(nil), "tokenization.v29.MsgDeleteDynamicStoreResponse") + proto.RegisterType((*MsgSetDynamicStoreValue)(nil), "tokenization.v29.MsgSetDynamicStoreValue") + proto.RegisterType((*MsgSetDynamicStoreValueResponse)(nil), "tokenization.v29.MsgSetDynamicStoreValueResponse") + proto.RegisterType((*MsgSetValidTokenIds)(nil), "tokenization.v29.MsgSetValidTokenIds") + proto.RegisterType((*MsgSetValidTokenIdsResponse)(nil), "tokenization.v29.MsgSetValidTokenIdsResponse") + proto.RegisterType((*MsgSetManager)(nil), "tokenization.v29.MsgSetManager") + proto.RegisterType((*MsgSetManagerResponse)(nil), "tokenization.v29.MsgSetManagerResponse") + proto.RegisterType((*MsgSetCollectionMetadata)(nil), "tokenization.v29.MsgSetCollectionMetadata") + proto.RegisterType((*MsgSetCollectionMetadataResponse)(nil), "tokenization.v29.MsgSetCollectionMetadataResponse") + proto.RegisterType((*MsgSetTokenMetadata)(nil), "tokenization.v29.MsgSetTokenMetadata") + proto.RegisterType((*MsgSetTokenMetadataResponse)(nil), "tokenization.v29.MsgSetTokenMetadataResponse") + proto.RegisterType((*MsgSetCustomData)(nil), "tokenization.v29.MsgSetCustomData") + proto.RegisterType((*MsgSetCustomDataResponse)(nil), "tokenization.v29.MsgSetCustomDataResponse") + proto.RegisterType((*MsgSetStandards)(nil), "tokenization.v29.MsgSetStandards") + proto.RegisterType((*MsgSetStandardsResponse)(nil), "tokenization.v29.MsgSetStandardsResponse") + proto.RegisterType((*MsgSetCollectionApprovals)(nil), "tokenization.v29.MsgSetCollectionApprovals") + proto.RegisterType((*MsgSetCollectionApprovalsResponse)(nil), "tokenization.v29.MsgSetCollectionApprovalsResponse") + proto.RegisterType((*MsgSetIsArchived)(nil), "tokenization.v29.MsgSetIsArchived") + proto.RegisterType((*MsgSetIsArchivedResponse)(nil), "tokenization.v29.MsgSetIsArchivedResponse") + proto.RegisterType((*MsgSetReservedProtocolAddress)(nil), "tokenization.v29.MsgSetReservedProtocolAddress") + proto.RegisterType((*MsgSetReservedProtocolAddressResponse)(nil), "tokenization.v29.MsgSetReservedProtocolAddressResponse") + proto.RegisterType((*MsgCastVote)(nil), "tokenization.v29.MsgCastVote") + proto.RegisterType((*MsgCastVoteResponse)(nil), "tokenization.v29.MsgCastVoteResponse") + proto.RegisterType((*ApprovalUsed)(nil), "tokenization.v29.ApprovalUsed") + proto.RegisterType((*CoinTransferProto)(nil), "tokenization.v29.CoinTransferProto") + proto.RegisterType((*ApprovalChange)(nil), "tokenization.v29.ApprovalChange") +} + +func init() { proto.RegisterFile("tokenization/v29/tx.proto", fileDescriptor_5ff3c354e788fb63) } + +var fileDescriptor_5ff3c354e788fb63 = []byte{ + // 4018 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x3c, 0x4b, 0x6c, 0x1c, 0x47, + 0x76, 0x9a, 0x19, 0x92, 0x9a, 0x79, 0xfc, 0x17, 0x29, 0x7e, 0x46, 0x12, 0x25, 0xb5, 0x29, 0x4b, + 0xa2, 0x6c, 0x8e, 0x44, 0x3b, 0xb2, 0x4d, 0x1b, 0x4e, 0x28, 0x52, 0x82, 0x69, 0x49, 0x16, 0xdd, + 0xfc, 0x08, 0x08, 0x6c, 0x28, 0x3d, 0x33, 0xc5, 0x61, 0xc7, 0x33, 0xdd, 0x93, 0xee, 0x1e, 0x4a, + 0xf4, 0x29, 0x48, 0xe0, 0x24, 0x88, 0x81, 0x24, 0x97, 0x20, 0x09, 0x72, 0xcd, 0x21, 0xb7, 0x28, + 0x40, 0x6e, 0x89, 0x81, 0x2c, 0x16, 0x58, 0x18, 0xd8, 0x8b, 0xb1, 0xa7, 0x5d, 0x1b, 0xf0, 0xee, + 0xda, 0x07, 0x9d, 0x76, 0x2f, 0x7b, 0xd9, 0xdb, 0x2e, 0xba, 0xba, 0xaa, 0x3f, 0xf5, 0x69, 0xf6, + 0x90, 0xc3, 0x5d, 0x78, 0x2f, 0x12, 0xa7, 0xfb, 0x7d, 0xaa, 0x5e, 0xbd, 0x7e, 0xbf, 0x7a, 0x55, + 0x30, 0xeb, 0xd9, 0x1f, 0x61, 0xcb, 0xfc, 0xd8, 0xf0, 0x4c, 0xdb, 0xaa, 0xec, 0x2f, 0xbd, 0x51, + 0xf1, 0x9e, 0x2e, 0xb6, 0x1d, 0xdb, 0xb3, 0xd1, 0x58, 0xfc, 0xd5, 0xe2, 0xfe, 0xd2, 0x1b, 0xe5, + 0x71, 0xa3, 0x65, 0x5a, 0x76, 0x85, 0xfc, 0x1b, 0x00, 0x95, 0xa7, 0x6b, 0xb6, 0xdb, 0xb2, 0xdd, + 0x4a, 0xcb, 0x6d, 0x54, 0xf6, 0x6f, 0xfa, 0xff, 0xd1, 0x17, 0xb3, 0xc1, 0x8b, 0xc7, 0xe4, 0x57, + 0x25, 0xf8, 0x41, 0x5f, 0x4d, 0x36, 0xec, 0x86, 0x1d, 0x3c, 0xf7, 0xff, 0xa2, 0x4f, 0xcf, 0x0b, + 0x23, 0x69, 0x1b, 0x8e, 0xd1, 0x62, 0x48, 0x17, 0xc5, 0x81, 0x3a, 0x86, 0xe5, 0xee, 0x62, 0x87, + 0x41, 0x5c, 0x10, 0x20, 0xaa, 0x46, 0xd3, 0xb0, 0x6a, 0x98, 0x01, 0x68, 0x22, 0x07, 0xec, 0xb4, + 0x4c, 0xd7, 0x35, 0x6d, 0x4b, 0x4d, 0xa4, 0x85, 0x3d, 0xa3, 0x6e, 0x78, 0x86, 0x92, 0x48, 0xcd, + 0x6e, 0x36, 0x71, 0xcd, 0x8b, 0x11, 0x99, 0x17, 0x60, 0x8c, 0x7a, 0xdd, 0xc1, 0xae, 0xfb, 0xb8, + 0x69, 0xba, 0x1e, 0x83, 0xba, 0x2c, 0x40, 0xd5, 0x0f, 0x2c, 0xa3, 0x65, 0xd6, 0x1e, 0xbb, 0x9e, + 0xed, 0x60, 0xf5, 0xc4, 0x8d, 0x76, 0xdb, 0xb1, 0xf7, 0x8d, 0x26, 0x83, 0xb8, 0x26, 0x40, 0x74, + 0x5c, 0xec, 0x3c, 0xa6, 0xb3, 0x0f, 0xa8, 0x51, 0xd0, 0x4b, 0xe2, 0xe8, 0xf7, 0x8c, 0x66, 0x13, + 0x5b, 0x8d, 0x90, 0xdf, 0x1c, 0x5d, 0xd1, 0xaa, 0xe1, 0xe2, 0xca, 0xfe, 0xcd, 0x2a, 0xf6, 0x8c, + 0x9b, 0x95, 0x9a, 0x6d, 0x5a, 0xc1, 0x7b, 0xed, 0x1f, 0x26, 0x60, 0x76, 0x2b, 0x46, 0x65, 0xb5, + 0xe3, 0x7a, 0x76, 0xeb, 0x81, 0xdb, 0xd8, 0x3a, 0x68, 0x63, 0xf4, 0x21, 0x9c, 0xa9, 0x39, 0xd8, + 0xf0, 0xf0, 0x4a, 0x30, 0xe3, 0xfb, 0xfe, 0x84, 0x1f, 0xb8, 0x8d, 0x99, 0xdc, 0xc5, 0xdc, 0xd5, + 0xc1, 0xa5, 0x2b, 0x8b, 0xbc, 0x52, 0x2d, 0x3e, 0x70, 0x1b, 0xab, 0x02, 0x86, 0x2e, 0xa7, 0x82, + 0x1c, 0x38, 0xd7, 0xb1, 0xcc, 0x7d, 0xec, 0xb8, 0x46, 0x73, 0xbb, 0x5d, 0x37, 0x3c, 0xbc, 0x1a, + 0x4a, 0xdf, 0xe7, 0x92, 0x27, 0x5c, 0x16, 0xa5, 0x5c, 0xb6, 0x55, 0x88, 0x7a, 0x2a, 0x4d, 0xf4, + 0x08, 0x26, 0xea, 0xb8, 0x89, 0x79, 0x56, 0x05, 0xc2, 0xea, 0xb2, 0x94, 0xd5, 0x1a, 0x07, 0xaf, + 0xcb, 0x28, 0xa0, 0xf7, 0x61, 0x9c, 0xe9, 0x30, 0x11, 0x28, 0x91, 0x53, 0x1f, 0x21, 0xfb, 0x82, + 0x94, 0xec, 0x56, 0x02, 0x5a, 0x17, 0xb1, 0xd1, 0x9f, 0xc1, 0x54, 0x87, 0x4c, 0x61, 0xdb, 0xc5, + 0xce, 0x0a, 0xd3, 0x13, 0x9f, 0x6e, 0x3f, 0xa1, 0x7b, 0x55, 0x2e, 0x19, 0x11, 0x45, 0x57, 0xd0, + 0xf1, 0xa5, 0xd1, 0x91, 0x08, 0x7e, 0x20, 0x45, 0x1a, 0x82, 0xbc, 0x65, 0x14, 0x7c, 0xc2, 0xc1, + 0x9a, 0x27, 0x09, 0x9f, 0x4e, 0x21, 0xbc, 0xca, 0xc1, 0xeb, 0x32, 0x0a, 0x91, 0x4a, 0xae, 0x05, + 0x9f, 0xd7, 0xa6, 0xff, 0x3d, 0xf8, 0xa4, 0x8b, 0x87, 0xaa, 0x64, 0x1c, 0x43, 0x97, 0x53, 0xf1, + 0xc9, 0x07, 0xd3, 0xe1, 0xc9, 0x97, 0x52, 0xc8, 0x6f, 0x0b, 0x18, 0xba, 0x9c, 0x8a, 0x4f, 0x3e, + 0xd0, 0x1d, 0x9e, 0x3c, 0xa4, 0x90, 0x5f, 0x13, 0x30, 0x74, 0x39, 0x15, 0x54, 0x83, 0x69, 0x17, + 0x7b, 0xf1, 0xa7, 0x3b, 0x46, 0xb3, 0x43, 0x18, 0x0c, 0x12, 0x06, 0xd7, 0xa4, 0x0c, 0x36, 0x25, + 0x38, 0xba, 0x8a, 0x92, 0xaf, 0x95, 0x2e, 0xf6, 0xd6, 0xad, 0x9a, 0xdd, 0x32, 0xad, 0x06, 0x53, + 0x27, 0x9f, 0xc7, 0x48, 0x8a, 0x56, 0x6e, 0x8a, 0x28, 0xba, 0x82, 0x0e, 0x32, 0x61, 0x36, 0x98, + 0x9f, 0x8c, 0xc9, 0x28, 0x61, 0x72, 0x3d, 0x45, 0x52, 0x02, 0x1f, 0x35, 0x35, 0x3a, 0x99, 0x87, + 0x1d, 0xaf, 0x61, 0x73, 0x7c, 0xc6, 0xd2, 0x27, 0xc3, 0xa3, 0xe8, 0x0a, 0x3a, 0xd1, 0x64, 0x64, + 0x4c, 0xc6, 0x0f, 0x9d, 0x8c, 0xc0, 0x47, 0x4d, 0xcd, 0x37, 0x41, 0xed, 0x8e, 0xd3, 0xc0, 0x09, + 0x53, 0x81, 0x52, 0x4c, 0xd0, 0x46, 0x02, 0x5a, 0x17, 0xb1, 0xfd, 0xef, 0xd8, 0xc5, 0xde, 0x8e, + 0xd1, 0x34, 0xeb, 0xc4, 0x2e, 0xad, 0xd7, 0x09, 0xd1, 0x89, 0x94, 0xef, 0x78, 0x93, 0x83, 0xd7, + 0x65, 0x14, 0xd0, 0x1d, 0x18, 0x76, 0xb1, 0xf7, 0xc0, 0xb0, 0x8c, 0x06, 0x76, 0x7c, 0x92, 0x93, + 0x84, 0xe4, 0x05, 0x15, 0x49, 0x0a, 0xa9, 0x27, 0xb1, 0xd0, 0x2e, 0xcc, 0xb8, 0xd8, 0x8b, 0x99, + 0x08, 0xea, 0xdf, 0x7d, 0x8a, 0x67, 0x08, 0xc5, 0x05, 0x15, 0x45, 0x11, 0x49, 0x57, 0xd2, 0xa2, + 0x72, 0x20, 0x13, 0x88, 0xb3, 0x98, 0x4a, 0x97, 0x43, 0x02, 0x5e, 0x97, 0x51, 0x40, 0xef, 0xc1, + 0x98, 0xcf, 0x94, 0xb8, 0xdd, 0x35, 0x4a, 0x75, 0x9a, 0x50, 0xd5, 0x94, 0x03, 0x0f, 0x81, 0x75, + 0x01, 0x17, 0xdd, 0x83, 0x51, 0x17, 0x7b, 0x9b, 0x9e, 0x61, 0xd5, 0x0d, 0x27, 0x58, 0xac, 0x19, + 0x42, 0xee, 0x92, 0x8a, 0x5c, 0x08, 0xab, 0xf3, 0x98, 0xbe, 0xee, 0x26, 0x24, 0x92, 0x50, 0xac, + 0xd9, 0x14, 0xdd, 0xdd, 0x94, 0x62, 0xe9, 0x6a, 0x6a, 0x54, 0x0e, 0xeb, 0xee, 0x8a, 0x53, 0xdb, + 0x33, 0xf7, 0x71, 0xdd, 0xe7, 0x50, 0x4e, 0x97, 0x43, 0x04, 0xac, 0x0b, 0xb8, 0xa8, 0x03, 0xe7, + 0x5d, 0xec, 0xe9, 0xd8, 0xc5, 0xce, 0x3e, 0xae, 0x6f, 0xf8, 0xc1, 0x4e, 0xcd, 0x6e, 0xd2, 0x08, + 0xc4, 0x27, 0x7e, 0x96, 0x10, 0xaf, 0xa8, 0x88, 0x2b, 0x30, 0xf5, 0x74, 0xaa, 0xe8, 0x8f, 0x61, + 0xb0, 0x66, 0xb8, 0xde, 0x8e, 0xed, 0x11, 0xab, 0x7b, 0x8e, 0x30, 0x39, 0x2f, 0x77, 0x4a, 0x14, + 0x4e, 0x8f, 0x63, 0x68, 0xff, 0x9b, 0x83, 0xd1, 0xd0, 0xa5, 0x6c, 0x90, 0x98, 0x19, 0xdd, 0x82, + 0x92, 0xd1, 0xf1, 0xf6, 0x6c, 0xc7, 0xf4, 0x0e, 0x48, 0xe8, 0x55, 0xba, 0x3d, 0xf3, 0xa3, 0xff, + 0x79, 0x79, 0x92, 0xc6, 0xe1, 0x94, 0xfd, 0xa6, 0xe7, 0x98, 0x56, 0x43, 0x8f, 0x40, 0xd1, 0x9b, + 0x30, 0x10, 0x44, 0xdd, 0x34, 0x92, 0x9a, 0x11, 0xc7, 0x11, 0x70, 0xb8, 0x5d, 0xfa, 0xfc, 0xeb, + 0x0b, 0xa7, 0xfe, 0xf3, 0xf9, 0xb3, 0x85, 0x9c, 0x4e, 0x51, 0x96, 0x5f, 0xf9, 0xab, 0xe7, 0xcf, + 0x16, 0x22, 0x62, 0x7f, 0xff, 0xfc, 0xd9, 0x82, 0x18, 0xbc, 0x72, 0x23, 0xd5, 0x66, 0x61, 0x9a, + 0x7b, 0xa4, 0x63, 0xb7, 0x6d, 0x5b, 0x2e, 0xd6, 0x7e, 0x92, 0x87, 0xb9, 0x55, 0x32, 0xe0, 0x55, + 0xdb, 0xb4, 0x1e, 0x39, 0x46, 0xbb, 0x8d, 0x9d, 0x0d, 0xc3, 0xdb, 0x5b, 0xa9, 0xd7, 0x1f, 0x56, + 0xff, 0x1c, 0xd7, 0x3c, 0x34, 0x09, 0xfd, 0x75, 0x6c, 0xd9, 0xad, 0x60, 0x8e, 0x7a, 0xf0, 0x03, + 0xbd, 0x03, 0x50, 0xb3, 0x2d, 0x3f, 0xa2, 0x33, 0x6d, 0x8b, 0xce, 0x44, 0x62, 0x96, 0x57, 0x43, + 0x98, 0x47, 0xa6, 0xb7, 0x67, 0x77, 0xbc, 0x35, 0x1f, 0x5b, 0x8f, 0xe1, 0xa2, 0x29, 0x18, 0x70, + 0x0f, 0x5a, 0x55, 0xbb, 0x49, 0xc2, 0xbd, 0x92, 0x4e, 0x7f, 0xa1, 0x37, 0x01, 0x08, 0xab, 0x6d, + 0xcb, 0xf4, 0xdc, 0x99, 0xbe, 0x8b, 0x85, 0xab, 0x83, 0x4b, 0x67, 0x45, 0x0e, 0x6b, 0x0c, 0x46, + 0x8f, 0x81, 0xa3, 0xbb, 0x30, 0x67, 0x34, 0x9b, 0xf6, 0x93, 0x87, 0xfb, 0xd8, 0x71, 0xcc, 0x3a, + 0xf6, 0xb9, 0xaf, 0x58, 0x07, 0x91, 0xc1, 0x23, 0xc1, 0x5a, 0x51, 0x3f, 0x04, 0x0a, 0x2d, 0x43, + 0x91, 0x25, 0x27, 0x34, 0xfe, 0x9a, 0x93, 0x2d, 0x97, 0xb7, 0x17, 0xda, 0x93, 0x10, 0x5e, 0xfb, + 0x24, 0x0f, 0x68, 0xa5, 0x69, 0x1a, 0xee, 0x1f, 0x80, 0x3c, 0xe3, 0x72, 0xe8, 0xef, 0x52, 0x0e, + 0x1f, 0xc2, 0xf9, 0x48, 0xc5, 0x6e, 0x1b, 0xb5, 0x8f, 0x70, 0x3d, 0x29, 0x91, 0xb7, 0x12, 0x73, + 0x0f, 0xb2, 0x98, 0x73, 0x69, 0x73, 0x8f, 0xcf, 0x57, 0xfb, 0xef, 0x02, 0x4c, 0xac, 0x5b, 0xfb, + 0x86, 0x63, 0x1a, 0x96, 0xe7, 0x46, 0x54, 0x6f, 0xc1, 0x94, 0x65, 0x07, 0x66, 0xf8, 0xe1, 0x13, + 0x0b, 0x3b, 0xee, 0x9e, 0xd9, 0xde, 0x32, 0x5b, 0xd8, 0x25, 0x1c, 0x8a, 0xba, 0xe2, 0x2d, 0x7a, + 0x15, 0x46, 0x5a, 0xc6, 0xd3, 0xcd, 0x4e, 0xbb, 0xdd, 0x3c, 0xd8, 0xc0, 0xce, 0x7a, 0x9d, 0xac, + 0x46, 0xe9, 0xf6, 0x90, 0xff, 0x35, 0x7e, 0xf9, 0xf5, 0x85, 0xbe, 0x6d, 0xd3, 0xf2, 0x74, 0x0e, + 0x06, 0xd5, 0x80, 0x7e, 0xf8, 0xc9, 0x49, 0xd2, 0x14, 0xa6, 0x22, 0x9b, 0x4d, 0x8a, 0x48, 0x74, + 0x29, 0x31, 0xf4, 0x27, 0x70, 0xd6, 0xb2, 0xef, 0xda, 0x4e, 0x0d, 0xef, 0x76, 0x9a, 0x1b, 0xb6, + 0xeb, 0x3d, 0x30, 0x2d, 0x8f, 0x65, 0x2c, 0x2e, 0xc9, 0x6b, 0x8a, 0x7a, 0x1a, 0x08, 0xba, 0x01, + 0x13, 0x75, 0xd3, 0x35, 0xaa, 0x4d, 0xbc, 0x61, 0xdb, 0x4d, 0x12, 0x81, 0xfb, 0x32, 0x0f, 0x3e, + 0x06, 0xd9, 0x2b, 0xb4, 0x09, 0x08, 0xef, 0xb7, 0xde, 0xef, 0x60, 0xe7, 0x60, 0x35, 0xcc, 0x63, + 0x67, 0x06, 0x88, 0xfa, 0x48, 0xe2, 0x97, 0x3b, 0x3b, 0x0f, 0x92, 0xb0, 0xba, 0x04, 0x5d, 0x7b, + 0x36, 0x04, 0xe7, 0xd2, 0xd2, 0x45, 0x34, 0x03, 0xa7, 0x49, 0x2a, 0x60, 0x3b, 0xf4, 0x33, 0x61, + 0x3f, 0xd1, 0x0d, 0x18, 0x8a, 0xaa, 0x01, 0x8a, 0xc5, 0x49, 0x40, 0xa0, 0xfb, 0x30, 0x5a, 0xc7, + 0xbb, 0x46, 0xa7, 0xe9, 0xdd, 0xa6, 0xc5, 0x0a, 0xba, 0x2a, 0x12, 0x1f, 0xe6, 0xe7, 0x62, 0x14, + 0x2a, 0x88, 0xe9, 0x79, 0x54, 0x5f, 0x82, 0x41, 0x16, 0x91, 0x08, 0x9e, 0xa8, 0xec, 0x65, 0xaf, + 0xd0, 0x0a, 0x0c, 0xef, 0x27, 0x60, 0xfb, 0x55, 0xdf, 0x1e, 0x19, 0xbc, 0xe1, 0x0b, 0x2d, 0x89, + 0xe1, 0x2f, 0x3c, 0x9f, 0xcf, 0x6d, 0x44, 0x75, 0x15, 0x62, 0x99, 0x8a, 0x7a, 0x1a, 0x08, 0xc9, + 0xd0, 0xa4, 0xb8, 0xa7, 0x55, 0x39, 0x8e, 0x94, 0x8e, 0x2e, 0xa7, 0x82, 0xe6, 0x61, 0x38, 0xe0, + 0x4e, 0xa3, 0x40, 0x92, 0xf8, 0x15, 0xf5, 0xe4, 0x43, 0x7f, 0x55, 0x5b, 0xf4, 0x7d, 0x29, 0x58, + 0x55, 0xfa, 0x13, 0x2d, 0xc3, 0x8c, 0x90, 0xb0, 0x32, 0x7b, 0x03, 0x84, 0x94, 0xf2, 0x3d, 0xda, + 0x02, 0x54, 0x13, 0xb1, 0x82, 0xd4, 0x6a, 0x3e, 0x6d, 0x5e, 0xa1, 0xad, 0x92, 0xe0, 0x47, 0xeb, + 0x9c, 0x08, 0x0e, 0x67, 0x86, 0xe2, 0xeb, 0x9c, 0x78, 0xe5, 0x07, 0xcf, 0x5e, 0x02, 0x76, 0x98, + 0xac, 0xb3, 0x24, 0x78, 0x4e, 0x46, 0xa0, 0x49, 0x2c, 0xb4, 0x00, 0x63, 0x74, 0xaa, 0x61, 0x08, + 0x49, 0x72, 0xb8, 0xa2, 0x2e, 0x3c, 0x47, 0x73, 0x00, 0xb5, 0x08, 0x6a, 0x94, 0xc8, 0x34, 0xf6, + 0x04, 0xbd, 0x05, 0xb3, 0xbc, 0xd8, 0xc2, 0xf8, 0x8e, 0xe4, 0x52, 0x45, 0x5d, 0x0d, 0x80, 0x76, + 0x60, 0xa2, 0x26, 0xc1, 0x1b, 0x27, 0xd3, 0x4a, 0x95, 0x6c, 0x98, 0x17, 0xc9, 0x08, 0xa0, 0xab, + 0x30, 0x1a, 0x30, 0x0d, 0xc3, 0x5a, 0x92, 0x0f, 0x15, 0x75, 0xfe, 0x31, 0x3a, 0x07, 0x25, 0x37, + 0x84, 0x99, 0xb8, 0x58, 0xb8, 0x5a, 0xd2, 0xa3, 0x07, 0x91, 0xa4, 0xa2, 0x20, 0x93, 0x24, 0x2c, + 0xa1, 0xa4, 0xa2, 0xe7, 0xbe, 0xa4, 0xcc, 0x08, 0xea, 0x0c, 0x81, 0x8a, 0x3d, 0x41, 0x8f, 0x60, + 0xb6, 0x65, 0x5a, 0xde, 0x1d, 0xb7, 0xe6, 0xd8, 0x4f, 0x7c, 0xb3, 0xeb, 0x6e, 0xd9, 0xcc, 0x6c, + 0xce, 0x4c, 0x91, 0x19, 0xcf, 0x2e, 0xd2, 0xd0, 0xae, 0x6a, 0xb8, 0x78, 0x91, 0x96, 0xed, 0x16, + 0x7d, 0x58, 0x5d, 0x8d, 0x8b, 0x1c, 0x38, 0x5b, 0x93, 0x05, 0x58, 0xee, 0x96, 0xbd, 0x52, 0xaf, + 0xcf, 0x4c, 0x13, 0xd2, 0x37, 0xd2, 0xfc, 0x83, 0x2c, 0x2a, 0xd3, 0xd3, 0x88, 0xa2, 0x3b, 0x00, + 0x66, 0xe8, 0x11, 0x69, 0xa6, 0x21, 0x49, 0x87, 0x24, 0x5e, 0x53, 0x8f, 0x21, 0xa2, 0xf7, 0x60, + 0xd4, 0x60, 0xf1, 0x0b, 0x1d, 0xee, 0xac, 0x6a, 0xed, 0xc5, 0x40, 0x47, 0xe7, 0x91, 0x97, 0xdf, + 0xf4, 0x83, 0x57, 0x66, 0xc8, 0xfd, 0xd0, 0x75, 0x41, 0x08, 0x5d, 0x95, 0x1e, 0x41, 0xfb, 0x41, + 0x0e, 0xe6, 0x53, 0x2b, 0x8c, 0x34, 0xa4, 0x15, 0x1c, 0x44, 0xee, 0x50, 0x07, 0xf1, 0x2e, 0x8c, + 0xb2, 0x7a, 0xef, 0xea, 0x9e, 0x41, 0xfc, 0x5b, 0x9e, 0xcc, 0xf3, 0xa2, 0x64, 0x9e, 0x09, 0x40, + 0x9d, 0x47, 0x44, 0x17, 0x61, 0xd0, 0xc1, 0xfb, 0x26, 0x7e, 0xb2, 0xee, 0xe1, 0x96, 0xef, 0x68, + 0x7c, 0x9d, 0x8d, 0x3f, 0xd2, 0xbe, 0x18, 0x84, 0x09, 0x49, 0xc5, 0xae, 0xa7, 0x2e, 0x4f, 0xe1, + 0xa4, 0x0a, 0x5d, 0x38, 0xa9, 0xbe, 0x5e, 0x3b, 0xa9, 0xfe, 0x63, 0x38, 0xa9, 0x81, 0x93, 0x71, + 0x52, 0xa7, 0x0f, 0x71, 0x52, 0xc5, 0xec, 0x4e, 0xaa, 0x74, 0x24, 0x27, 0x05, 0x27, 0xe3, 0xa4, + 0x06, 0xbb, 0x70, 0x52, 0x43, 0x3d, 0x73, 0x52, 0xc3, 0x99, 0x9c, 0xd4, 0x48, 0x77, 0x4e, 0x6a, + 0xf4, 0x88, 0x4e, 0x6a, 0xec, 0x04, 0x9c, 0xd4, 0x78, 0x06, 0x27, 0x85, 0xb2, 0x38, 0xa9, 0x89, + 0x4c, 0x4e, 0x6a, 0xb2, 0x3b, 0x27, 0x75, 0xe6, 0xe4, 0x9c, 0xd4, 0xd4, 0xc9, 0x3b, 0xa9, 0xe9, + 0x1e, 0x3a, 0xa9, 0x99, 0xe3, 0x38, 0xa9, 0x25, 0xde, 0x49, 0x89, 0xfb, 0x79, 0x82, 0x6f, 0xfa, + 0x2c, 0x07, 0x67, 0x65, 0x9b, 0x30, 0xdf, 0x15, 0x97, 0xf4, 0x1f, 0x45, 0xe2, 0x92, 0xf8, 0xbd, + 0x9e, 0x14, 0x97, 0x24, 0xc9, 0xa9, 0xf2, 0x47, 0xcf, 0xa9, 0x04, 0xe7, 0x53, 0xe8, 0xda, 0xf9, + 0x28, 0x5d, 0x47, 0x5f, 0x4f, 0x5c, 0x47, 0xcc, 0x29, 0xf4, 0x27, 0x9d, 0x82, 0xdc, 0xb0, 0x0f, + 0x1c, 0xd3, 0xb0, 0x0b, 0x66, 0xfa, 0xf4, 0x91, 0xcc, 0x74, 0xd2, 0xf4, 0x16, 0x05, 0xd3, 0xab, + 0x30, 0x9e, 0xa5, 0xe3, 0x1a, 0xcf, 0x84, 0x49, 0x04, 0xde, 0x24, 0x26, 0xcd, 0xdc, 0x60, 0x77, + 0x66, 0x6e, 0xe8, 0xe4, 0xcc, 0xdc, 0xf0, 0xc9, 0x9b, 0xb9, 0x91, 0x1e, 0x9a, 0xb9, 0xd1, 0x13, + 0x36, 0x73, 0xbc, 0x39, 0x60, 0x66, 0x4e, 0xd8, 0x12, 0xfe, 0xae, 0x98, 0xb9, 0xff, 0xca, 0xc1, + 0x19, 0x69, 0x2b, 0x44, 0x8a, 0xa1, 0xbb, 0x0b, 0x43, 0x46, 0x0c, 0x92, 0x0e, 0x4f, 0x62, 0xe5, + 0x62, 0xf4, 0xd6, 0xad, 0x76, 0xc7, 0xd3, 0x13, 0x78, 0xcb, 0xaf, 0xf2, 0xf2, 0x7e, 0x41, 0x21, + 0xef, 0xf8, 0xb8, 0xb4, 0x0b, 0x70, 0x5e, 0xde, 0xbb, 0xc1, 0xea, 0xf7, 0x3f, 0xcc, 0xc1, 0xb8, + 0xd0, 0xb5, 0xd0, 0xd3, 0x54, 0xe2, 0x75, 0x28, 0x85, 0x5d, 0x40, 0xd4, 0x2e, 0x97, 0x25, 0x56, + 0x88, 0x82, 0xe8, 0x11, 0xf0, 0xf2, 0x0d, 0x7e, 0xca, 0x62, 0xe3, 0x4f, 0x72, 0xdc, 0xda, 0xbf, + 0xe7, 0x61, 0x56, 0xec, 0xc1, 0x60, 0xea, 0xb5, 0x06, 0xc3, 0x61, 0x5b, 0xce, 0xb6, 0x8b, 0x7d, + 0xfd, 0x2a, 0xc8, 0x0b, 0xd1, 0x4c, 0x55, 0x7c, 0x28, 0x3d, 0x89, 0x84, 0xd6, 0x61, 0xb8, 0x66, + 0x9b, 0x56, 0x54, 0x35, 0xcd, 0xab, 0x4a, 0x99, 0xab, 0x31, 0x30, 0xb2, 0xa9, 0xa4, 0x27, 0x31, + 0xd1, 0x3d, 0x98, 0x60, 0xed, 0x4f, 0xec, 0xa1, 0x83, 0xeb, 0x54, 0x48, 0xb3, 0x22, 0x41, 0xea, + 0xef, 0x74, 0x19, 0x16, 0xaf, 0xbe, 0x7d, 0xa2, 0xfa, 0xfe, 0x73, 0x8e, 0x78, 0x69, 0xbe, 0xf1, + 0xa5, 0x97, 0xab, 0x9d, 0xc5, 0x2c, 0xf0, 0xfc, 0xb5, 0xf3, 0xc4, 0x2a, 0x08, 0xfd, 0x38, 0x4c, + 0x45, 0x7f, 0x59, 0x84, 0x29, 0x79, 0x03, 0x4c, 0x8f, 0xf5, 0x74, 0x3a, 0x88, 0xa7, 0xf9, 0x3d, + 0x78, 0x96, 0xf6, 0xaa, 0x5e, 0xa3, 0x2d, 0x18, 0xb7, 0x05, 0x9c, 0x20, 0xfd, 0x7d, 0x51, 0x1e, + 0xcd, 0x08, 0xdb, 0xff, 0x22, 0x81, 0x68, 0x3c, 0x7c, 0x83, 0x03, 0xcb, 0x84, 0x55, 0xaf, 0xfd, + 0xf1, 0x98, 0x02, 0xce, 0x40, 0xda, 0x78, 0x84, 0xde, 0x0a, 0x91, 0x00, 0xda, 0x83, 0x4a, 0xc0, + 0x70, 0xa5, 0xe3, 0xd9, 0xc1, 0x63, 0xbc, 0x89, 0x9b, 0xbb, 0xeb, 0x96, 0xe9, 0x99, 0x86, 0x87, + 0xeb, 0x6c, 0x52, 0xd1, 0x97, 0x11, 0xa4, 0xc7, 0xdd, 0xa2, 0xa1, 0x0f, 0xe0, 0x9a, 0x91, 0x99, + 0x47, 0x50, 0x27, 0xce, 0x8e, 0x70, 0xf8, 0x3c, 0x98, 0x30, 0x22, 0x1e, 0xa5, 0x2c, 0xf3, 0x10, + 0xd0, 0xd2, 0xe6, 0x21, 0xf2, 0x80, 0xf4, 0x79, 0x88, 0xd4, 0xb7, 0xe0, 0xb2, 0x30, 0xa0, 0x95, + 0x66, 0x53, 0xa4, 0x1c, 0xc4, 0x47, 0xd9, 0x80, 0xd1, 0x3b, 0x70, 0xc1, 0x38, 0x84, 0x5e, 0x50, + 0xc1, 0x3e, 0x0c, 0x0c, 0xbd, 0xca, 0x7a, 0xae, 0x7c, 0x05, 0x8b, 0x07, 0xd4, 0x41, 0x9a, 0x2f, + 0x7f, 0x89, 0xee, 0xc1, 0x68, 0x87, 0x83, 0x1f, 0x51, 0x35, 0x3a, 0x70, 0xb8, 0x3a, 0x8f, 0xb9, + 0xfc, 0x47, 0xbc, 0x31, 0x9a, 0x57, 0xa4, 0x62, 0x09, 0xab, 0xa2, 0x7d, 0x99, 0x83, 0x39, 0x45, + 0xc7, 0x1d, 0x73, 0x25, 0xef, 0xc2, 0x28, 0xfb, 0x42, 0x58, 0xdc, 0x91, 0xcb, 0x1a, 0x77, 0x70, + 0x88, 0x3e, 0x2d, 0xf6, 0xf5, 0x77, 0x1d, 0xc3, 0x70, 0x88, 0x19, 0x62, 0x98, 0x9f, 0xe6, 0x88, + 0x35, 0x95, 0x34, 0x6e, 0xf5, 0xd4, 0x9a, 0xde, 0x86, 0x22, 0x73, 0x9b, 0x74, 0xb3, 0x2c, 0xab, + 0xe9, 0x09, 0xf1, 0xb2, 0x2c, 0x9f, 0x64, 0x1a, 0x9a, 0x47, 0x56, 0x4f, 0xd6, 0x99, 0xc6, 0x56, + 0x6f, 0x0a, 0x06, 0x0c, 0x32, 0x50, 0x3a, 0x4f, 0xfa, 0xcb, 0x17, 0x40, 0x7c, 0x03, 0xbd, 0xa4, + 0xb3, 0x9f, 0x19, 0xe4, 0xfa, 0xbd, 0x1c, 0x09, 0x3d, 0xe4, 0xbd, 0x6a, 0x3d, 0x15, 0xed, 0x1c, + 0x00, 0x13, 0xd1, 0x7a, 0x9d, 0xee, 0xd1, 0xc7, 0x9e, 0x2c, 0xbf, 0xce, 0x8b, 0xed, 0x8a, 0xc2, + 0x05, 0x0b, 0x92, 0xeb, 0xc0, 0x25, 0x75, 0xbb, 0x1d, 0x13, 0xde, 0x24, 0xf4, 0xef, 0xda, 0x1d, + 0xab, 0x4e, 0x77, 0xc1, 0x83, 0x1f, 0xc7, 0x12, 0x5d, 0xa4, 0x92, 0xbc, 0x5f, 0xfc, 0xfd, 0xa8, + 0xa4, 0xe0, 0x9d, 0xbb, 0x55, 0x49, 0x9e, 0x40, 0xa4, 0x92, 0x02, 0xe9, 0xdf, 0x99, 0x4a, 0x9e, + 0xa8, 0x68, 0x7b, 0xa6, 0x92, 0x82, 0xe4, 0xe2, 0x2a, 0xa9, 0x14, 0x5e, 0xef, 0x55, 0xf2, 0xd7, + 0x79, 0x92, 0x16, 0x25, 0x3b, 0x29, 0x7b, 0x2a, 0x32, 0x0d, 0x86, 0x48, 0x5f, 0xe6, 0x9d, 0xa7, + 0x6d, 0x33, 0x08, 0xfa, 0xfd, 0xa1, 0x27, 0x9e, 0xa1, 0xab, 0x2c, 0xbb, 0xc5, 0x0e, 0x4d, 0xde, + 0x48, 0x35, 0xaa, 0xa4, 0xf3, 0x8f, 0xd1, 0xdb, 0x50, 0x26, 0x98, 0xab, 0x76, 0xc7, 0xf2, 0xb0, + 0xd3, 0x36, 0x1c, 0xef, 0x80, 0x8f, 0x17, 0x53, 0x20, 0xd0, 0x23, 0x18, 0x0b, 0xb3, 0x9c, 0x2d, + 0x9b, 0x4c, 0x9b, 0x46, 0x8c, 0xd7, 0xd5, 0x4e, 0x68, 0xbd, 0x8e, 0x2d, 0xcf, 0xdc, 0x35, 0xb1, + 0xb3, 0x86, 0x3d, 0xc3, 0x6c, 0xba, 0xba, 0x40, 0x24, 0x4b, 0x0e, 0x97, 0x14, 0xb2, 0xf6, 0x2f, + 0x81, 0xd6, 0x72, 0x4d, 0xac, 0x6c, 0xa9, 0x17, 0xa0, 0x64, 0x75, 0x5a, 0xe4, 0xa5, 0xbc, 0x3e, + 0x10, 0xbd, 0x46, 0x2f, 0xd1, 0xc6, 0xd9, 0x7a, 0x34, 0xe0, 0xc0, 0xb5, 0x96, 0x74, 0xf1, 0x45, + 0x06, 0xa5, 0xf8, 0x2c, 0x9e, 0xfe, 0xc7, 0x9b, 0xa8, 0x53, 0x14, 0x43, 0x83, 0x21, 0x5a, 0xac, + 0x24, 0x9d, 0xd6, 0x44, 0x31, 0x8a, 0x7a, 0xe2, 0x19, 0x1a, 0x83, 0x42, 0xc7, 0x31, 0xe9, 0x67, + 0xe3, 0xff, 0xc9, 0x95, 0xdd, 0xfa, 0xf8, 0xb2, 0x5b, 0xf6, 0x62, 0x40, 0x7c, 0x94, 0x9a, 0x19, + 0x2b, 0x06, 0x24, 0xfa, 0xce, 0x99, 0x70, 0x5f, 0x84, 0xd3, 0xe4, 0x20, 0x8a, 0xa2, 0xf4, 0xc2, + 0x5e, 0xf2, 0xa2, 0xca, 0x8b, 0xa2, 0xfa, 0x34, 0x4f, 0x44, 0x25, 0xb6, 0xd0, 0xa7, 0x88, 0x2a, + 0xc6, 0x3d, 0x9f, 0xc6, 0x9d, 0x17, 0x69, 0x41, 0x22, 0xd2, 0x79, 0x18, 0x6e, 0x34, 0xed, 0xaa, + 0xd1, 0xbc, 0x63, 0x19, 0xd5, 0x26, 0xae, 0xd3, 0xf6, 0x9a, 0xe4, 0x43, 0x26, 0xf8, 0x7e, 0x95, + 0xe0, 0x07, 0x8e, 0x22, 0x78, 0x71, 0xce, 0xb4, 0x0a, 0x23, 0x39, 0x4f, 0xc0, 0x52, 0xdc, 0x7f, + 0x0c, 0x34, 0x4b, 0x3c, 0x12, 0x70, 0x7c, 0x71, 0x65, 0x19, 0xb2, 0xc8, 0x97, 0x0e, 0x59, 0x72, + 0x46, 0x81, 0x0d, 0xf9, 0xfb, 0x39, 0xd2, 0x14, 0x2a, 0x3b, 0x64, 0xd0, 0x83, 0x35, 0x9e, 0x81, + 0xd3, 0xb4, 0xfa, 0x45, 0x3f, 0x0b, 0xf6, 0xd3, 0xb7, 0xf5, 0xfb, 0x64, 0xd9, 0x83, 0x15, 0x0d, + 0x7e, 0x2c, 0xdf, 0xe2, 0x27, 0x79, 0x59, 0xe6, 0x97, 0x85, 0x91, 0x6a, 0x26, 0x5c, 0x50, 0x9d, + 0x94, 0x60, 0x1f, 0xc5, 0x3c, 0x0c, 0xb7, 0x7d, 0xd5, 0xb6, 0x3b, 0x6e, 0xa0, 0x6f, 0xc1, 0x94, + 0x92, 0x0f, 0x33, 0x7c, 0x12, 0xff, 0x97, 0x27, 0xd5, 0x17, 0xbe, 0x8f, 0xbe, 0xa7, 0x4e, 0xa5, + 0x07, 0xfb, 0x20, 0x55, 0x98, 0xaa, 0x19, 0xd6, 0xb6, 0xb4, 0x43, 0xad, 0x20, 0x6f, 0xbc, 0x67, + 0x10, 0x2b, 0xdc, 0xae, 0x87, 0xae, 0xa0, 0x94, 0xa5, 0x48, 0xc4, 0x8b, 0x49, 0x7b, 0x48, 0x8a, + 0x44, 0xc2, 0x29, 0x84, 0x23, 0x97, 0x8e, 0xb5, 0x5f, 0xe5, 0x60, 0x38, 0x71, 0x08, 0xa1, 0xa7, + 0x2b, 0x11, 0xdb, 0xef, 0x29, 0x24, 0xf7, 0x7b, 0xde, 0x83, 0xb1, 0x50, 0x2c, 0xac, 0x8f, 0xa0, + 0x4f, 0x59, 0x14, 0xe6, 0x45, 0x2a, 0xe0, 0x2e, 0xbf, 0xc4, 0x0b, 0xf3, 0xac, 0x4c, 0x98, 0x14, + 0x5a, 0x5b, 0x27, 0x86, 0x26, 0x76, 0xf2, 0xe2, 0xe8, 0x02, 0xfc, 0x2a, 0x0f, 0x33, 0xaa, 0x33, + 0x17, 0x3d, 0x95, 0xa5, 0x7c, 0x87, 0xac, 0x70, 0xcc, 0x1d, 0xb2, 0x3a, 0x9c, 0x0d, 0x65, 0x29, + 0xe9, 0xc7, 0xc8, 0xbe, 0x24, 0x69, 0x64, 0x96, 0x5f, 0xe3, 0x57, 0xe7, 0x45, 0xd9, 0xea, 0x88, + 0x88, 0xda, 0x16, 0x5c, 0x54, 0x1e, 0x68, 0x39, 0xfa, 0x9a, 0xfd, 0x7f, 0x68, 0x84, 0x92, 0x5d, + 0x1d, 0xbd, 0x5c, 0x2e, 0x61, 0xeb, 0xb1, 0x70, 0xa4, 0xad, 0xc7, 0xb8, 0x21, 0x4a, 0x76, 0xa7, + 0x1c, 0xc7, 0x10, 0x25, 0x28, 0x65, 0x34, 0x44, 0x09, 0x9c, 0xc8, 0x10, 0x25, 0x47, 0x7f, 0xf4, + 0x35, 0xf9, 0x24, 0x0f, 0x63, 0xfc, 0x11, 0xa0, 0x5e, 0x67, 0x67, 0xb1, 0xa0, 0xa6, 0x20, 0x6c, + 0xe2, 0x6e, 0xc1, 0x44, 0xa4, 0xc2, 0xf1, 0xb0, 0x33, 0xeb, 0x17, 0x20, 0x43, 0x5f, 0xae, 0xf0, + 0xb2, 0x9d, 0x93, 0x6a, 0x7e, 0x88, 0xa0, 0xdd, 0x0f, 0xcd, 0x49, 0x74, 0x12, 0xea, 0xe8, 0x52, + 0xfd, 0x4d, 0x70, 0xe2, 0x26, 0x7e, 0x12, 0xaa, 0xa7, 0x42, 0x4d, 0xec, 0x50, 0x17, 0xf8, 0x1d, + 0x6a, 0x1d, 0x50, 0x28, 0x93, 0xa8, 0xff, 0x27, 0xbb, 0x44, 0x25, 0xd8, 0xcb, 0x8b, 0xbc, 0x40, + 0xcf, 0xcb, 0x04, 0x1a, 0xc2, 0x6b, 0xf7, 0x58, 0x80, 0x16, 0x1d, 0x05, 0x3b, 0xba, 0x38, 0x7f, + 0x11, 0xec, 0xac, 0xc9, 0x4f, 0x80, 0xf5, 0x54, 0xb0, 0x8a, 0x96, 0x82, 0xc2, 0x71, 0x5b, 0x0a, + 0x1c, 0x38, 0x27, 0x31, 0xd4, 0xfc, 0x86, 0xcd, 0x62, 0x16, 0x06, 0xb1, 0x85, 0x4a, 0xa5, 0x99, + 0xa5, 0xee, 0x21, 0x97, 0xa8, 0x1f, 0x5e, 0x5f, 0x52, 0x9f, 0xb8, 0xfb, 0xae, 0x6c, 0x98, 0xff, + 0x6d, 0x68, 0xda, 0x62, 0x4d, 0x6a, 0x3d, 0x36, 0x6d, 0xb1, 0x4e, 0x90, 0x82, 0xd0, 0x09, 0xb2, + 0x03, 0x93, 0x35, 0xc3, 0xa2, 0x3f, 0x23, 0x49, 0x76, 0xf1, 0x25, 0x4a, 0xf1, 0x33, 0x1a, 0xb7, + 0x68, 0xd2, 0x91, 0x71, 0x8b, 0x1d, 0x6f, 0x3c, 0xfa, 0xd7, 0xf8, 0xf3, 0x1c, 0x49, 0xcf, 0xd4, + 0x07, 0x1a, 0x8f, 0x7c, 0xb8, 0x30, 0x96, 0x78, 0xe5, 0x93, 0x89, 0xd7, 0x22, 0x20, 0xd3, 0xe5, + 0xd9, 0x51, 0x91, 0x4b, 0xde, 0x2c, 0xbf, 0x2d, 0x9e, 0x34, 0xbc, 0x2e, 0x13, 0x92, 0x62, 0x06, + 0xda, 0x15, 0xb8, 0x9c, 0x7e, 0x66, 0x93, 0x65, 0xa2, 0x5f, 0xe5, 0x61, 0x30, 0x76, 0xf0, 0x12, + 0x2d, 0x71, 0xfa, 0x95, 0x32, 0xf1, 0x63, 0x68, 0xde, 0x7c, 0xd4, 0x4c, 0x70, 0x1f, 0xef, 0x63, + 0x76, 0x58, 0x2e, 0xf9, 0xb0, 0x8b, 0x0a, 0x5e, 0xb2, 0x84, 0xda, 0xcf, 0x97, 0x50, 0xfd, 0xf7, + 0x6d, 0xc7, 0x6e, 0xdb, 0x2e, 0x79, 0x4f, 0x2b, 0x13, 0xd1, 0x13, 0xb4, 0x00, 0xa5, 0x03, 0xec, + 0x3e, 0xc2, 0x66, 0x63, 0xcf, 0x23, 0x1b, 0xaf, 0x42, 0x61, 0x2c, 0x7c, 0xbd, 0xbc, 0xc0, 0x6b, + 0xaf, 0x78, 0xc3, 0x0c, 0x93, 0xa6, 0x76, 0x26, 0xe8, 0xec, 0x63, 0xa7, 0x5a, 0x99, 0xd0, 0xff, + 0x35, 0x07, 0x43, 0xf1, 0x2e, 0x09, 0x6e, 0xfc, 0x39, 0x61, 0xfc, 0x82, 0xbc, 0xf2, 0x19, 0xe5, + 0x55, 0x90, 0xcb, 0x2b, 0x56, 0xdd, 0xed, 0x4b, 0x54, 0x77, 0xb5, 0x4f, 0x73, 0x30, 0x2e, 0xb4, + 0x5e, 0x20, 0x04, 0x7d, 0xbb, 0x4e, 0x78, 0x68, 0x92, 0xfc, 0x8d, 0x46, 0x20, 0xef, 0xd9, 0x74, + 0x20, 0x79, 0xcf, 0x26, 0x45, 0xf8, 0x96, 0xdd, 0xb1, 0x3c, 0x76, 0xf2, 0x31, 0xf8, 0x15, 0x9d, + 0xb8, 0xec, 0x8b, 0x9f, 0xb8, 0x9c, 0x87, 0x61, 0xd3, 0x65, 0x4a, 0x79, 0x17, 0x63, 0x5a, 0x66, + 0x4d, 0x3e, 0xd4, 0xfe, 0x2e, 0x07, 0x23, 0x49, 0x43, 0xda, 0x23, 0x51, 0x45, 0x3b, 0x06, 0x05, + 0xd5, 0x8e, 0x41, 0x52, 0x30, 0x4b, 0xff, 0x36, 0x0d, 0x85, 0x07, 0x6e, 0x03, 0x7d, 0x00, 0x43, + 0x89, 0x83, 0xc8, 0x97, 0x52, 0xae, 0xbf, 0x08, 0x40, 0xca, 0xd7, 0x0e, 0x05, 0x09, 0xad, 0xd9, + 0x5f, 0xe7, 0x60, 0x56, 0x7d, 0x2e, 0xaf, 0xcb, 0x6b, 0x5f, 0xca, 0xb7, 0xba, 0xbc, 0x26, 0x86, + 0x8d, 0xc2, 0x02, 0x24, 0x69, 0xd3, 0xca, 0x7a, 0xb5, 0x4d, 0xb9, 0x92, 0xf5, 0x0e, 0x1c, 0xc6, + 0xaf, 0x0a, 0x23, 0x5c, 0x0f, 0x55, 0x96, 0xeb, 0x61, 0xca, 0xd7, 0xb3, 0xdc, 0x21, 0xc3, 0x78, + 0xfc, 0x05, 0x4c, 0xc8, 0x9a, 0x60, 0x32, 0xdf, 0x17, 0x53, 0xbe, 0x91, 0xf9, 0x66, 0x99, 0x18, + 0x4b, 0xd9, 0x4e, 0x71, 0xe6, 0xcb, 0x40, 0x14, 0x2c, 0xd3, 0x36, 0x67, 0x3f, 0x86, 0x29, 0xc5, + 0x26, 0x6a, 0x37, 0xb7, 0x83, 0x94, 0x5f, 0xe9, 0xe6, 0x2a, 0x91, 0xe4, 0x74, 0x85, 0xad, 0xb2, + 0xcc, 0xd7, 0x85, 0xa8, 0xa7, 0xab, 0xdc, 0xbb, 0x0a, 0xa7, 0x2b, 0x70, 0xed, 0xe6, 0xfe, 0x90, + 0xd4, 0xe9, 0x2a, 0x79, 0x57, 0x61, 0x84, 0xdb, 0xe1, 0xca, 0x72, 0xa1, 0x88, 0x42, 0x69, 0x15, + 0x1b, 0x36, 0x7b, 0x30, 0x26, 0x34, 0x9c, 0x65, 0xbb, 0x90, 0xa9, 0xfc, 0x72, 0xb6, 0x7b, 0x9b, + 0x62, 0x9c, 0x04, 0x73, 0x93, 0xed, 0xb2, 0x23, 0x05, 0x27, 0xa5, 0x71, 0xd9, 0x83, 0x31, 0xa1, + 0xd5, 0x3d, 0xdb, 0xed, 0x47, 0x0a, 0x4e, 0xca, 0x8e, 0xd8, 0xd0, 0x8c, 0x25, 0x36, 0x05, 0xb2, + 0x5e, 0x87, 0x94, 0x6a, 0xc6, 0xa4, 0x3b, 0x40, 0x16, 0x20, 0xc9, 0x9e, 0x4d, 0xd6, 0xfb, 0x91, + 0x14, 0xfc, 0xd4, 0x1b, 0x1f, 0x3e, 0x3f, 0xc9, 0xa6, 0x47, 0xd6, 0x0b, 0x93, 0x14, 0xfc, 0xd4, + 0xbb, 0x16, 0xc8, 0x83, 0x49, 0xe9, 0x8e, 0x45, 0xf6, 0x1b, 0x94, 0xca, 0x37, 0xb3, 0x5f, 0xb6, + 0x14, 0xd3, 0x17, 0xa1, 0xec, 0x9f, 0xed, 0x96, 0x1d, 0x85, 0xbe, 0x28, 0xcb, 0xe0, 0x3b, 0x00, + 0xb1, 0x82, 0xf6, 0x61, 0xd7, 0xee, 0x94, 0xaf, 0x1c, 0x76, 0x2f, 0x0f, 0xa3, 0xfb, 0x04, 0xce, + 0xc8, 0xeb, 0xbc, 0x5d, 0xdc, 0xc3, 0x53, 0x5e, 0xea, 0xe2, 0xce, 0x9e, 0xa4, 0xe8, 0x92, 0xc5, + 0xca, 0x6c, 0x17, 0xf3, 0xa8, 0x45, 0x27, 0x2f, 0xdc, 0x3d, 0x86, 0xe1, 0x64, 0x09, 0x2e, 0xc3, + 0x4d, 0x3d, 0xe5, 0x85, 0x0c, 0xb7, 0xf9, 0x30, 0x06, 0x1f, 0xc0, 0x50, 0xa2, 0x1a, 0x75, 0xf8, + 0xd5, 0x3d, 0xe5, 0x6b, 0x87, 0xdf, 0xee, 0x13, 0xf3, 0x23, 0x8a, 0xe2, 0x4c, 0x37, 0x77, 0xf9, + 0x28, 0xfc, 0xc8, 0x21, 0x65, 0x88, 0x40, 0x74, 0xb1, 0x14, 0x3f, 0xc3, 0xe5, 0x3e, 0x6a, 0xd1, + 0x49, 0x32, 0xe4, 0xbf, 0xc9, 0x41, 0x39, 0x25, 0xd9, 0xed, 0xf6, 0xba, 0x9f, 0xf2, 0x6b, 0xdd, + 0xde, 0x0f, 0xc4, 0x06, 0xb2, 0x01, 0xc5, 0x30, 0xcf, 0x4c, 0xbf, 0xff, 0xa7, 0x7c, 0x39, 0xfd, + 0x7a, 0x20, 0x4a, 0xb1, 0xdc, 0xff, 0x97, 0xcf, 0x9f, 0x2d, 0xe4, 0x6e, 0xef, 0x7c, 0xfe, 0xcd, + 0x5c, 0xee, 0x8b, 0x6f, 0xe6, 0x72, 0x3f, 0xfb, 0x66, 0x2e, 0xf7, 0x4f, 0xdf, 0xce, 0x9d, 0xfa, + 0xe2, 0xdb, 0xb9, 0x53, 0x3f, 0xfe, 0x76, 0xee, 0xd4, 0x9f, 0xbe, 0xd5, 0x30, 0xbd, 0xbd, 0x4e, + 0x75, 0xb1, 0x66, 0xb7, 0x2a, 0x55, 0xd3, 0xab, 0x1a, 0xf5, 0x06, 0x76, 0xa3, 0xbf, 0x6a, 0x7b, + 0x86, 0x69, 0x55, 0x9e, 0x56, 0x12, 0x19, 0x9c, 0x77, 0xd0, 0xc6, 0xae, 0x9f, 0xc7, 0x55, 0x07, + 0xc8, 0x85, 0x90, 0xaf, 0xfc, 0x36, 0x00, 0x00, 0xff, 0xff, 0xc9, 0x67, 0x2b, 0xd9, 0x44, 0x54, + 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 { + // UpdateParams defines a (governance) operation for updating the module + // parameters. The authority defaults to the x/gov module account. + UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) + UniversalUpdateCollection(ctx context.Context, in *MsgUniversalUpdateCollection, opts ...grpc.CallOption) (*MsgUniversalUpdateCollectionResponse, error) + CreateAddressLists(ctx context.Context, in *MsgCreateAddressLists, opts ...grpc.CallOption) (*MsgCreateAddressListsResponse, error) + TransferTokens(ctx context.Context, in *MsgTransferTokens, opts ...grpc.CallOption) (*MsgTransferTokensResponse, error) + UpdateUserApprovals(ctx context.Context, in *MsgUpdateUserApprovals, opts ...grpc.CallOption) (*MsgUpdateUserApprovalsResponse, error) + SetIncomingApproval(ctx context.Context, in *MsgSetIncomingApproval, opts ...grpc.CallOption) (*MsgSetIncomingApprovalResponse, error) + DeleteIncomingApproval(ctx context.Context, in *MsgDeleteIncomingApproval, opts ...grpc.CallOption) (*MsgDeleteIncomingApprovalResponse, error) + SetOutgoingApproval(ctx context.Context, in *MsgSetOutgoingApproval, opts ...grpc.CallOption) (*MsgSetOutgoingApprovalResponse, error) + DeleteOutgoingApproval(ctx context.Context, in *MsgDeleteOutgoingApproval, opts ...grpc.CallOption) (*MsgDeleteOutgoingApprovalResponse, error) + PurgeApprovals(ctx context.Context, in *MsgPurgeApprovals, opts ...grpc.CallOption) (*MsgPurgeApprovalsResponse, error) + DeleteCollection(ctx context.Context, in *MsgDeleteCollection, opts ...grpc.CallOption) (*MsgDeleteCollectionResponse, error) + UpdateCollection(ctx context.Context, in *MsgUpdateCollection, opts ...grpc.CallOption) (*MsgUpdateCollectionResponse, error) + CreateCollection(ctx context.Context, in *MsgCreateCollection, opts ...grpc.CallOption) (*MsgCreateCollectionResponse, error) + CreateDynamicStore(ctx context.Context, in *MsgCreateDynamicStore, opts ...grpc.CallOption) (*MsgCreateDynamicStoreResponse, error) + UpdateDynamicStore(ctx context.Context, in *MsgUpdateDynamicStore, opts ...grpc.CallOption) (*MsgUpdateDynamicStoreResponse, error) + DeleteDynamicStore(ctx context.Context, in *MsgDeleteDynamicStore, opts ...grpc.CallOption) (*MsgDeleteDynamicStoreResponse, error) + SetDynamicStoreValue(ctx context.Context, in *MsgSetDynamicStoreValue, opts ...grpc.CallOption) (*MsgSetDynamicStoreValueResponse, error) + // Helper message types for UniversalUpdateCollection subsets + SetValidTokenIds(ctx context.Context, in *MsgSetValidTokenIds, opts ...grpc.CallOption) (*MsgSetValidTokenIdsResponse, error) + SetManager(ctx context.Context, in *MsgSetManager, opts ...grpc.CallOption) (*MsgSetManagerResponse, error) + SetCollectionMetadata(ctx context.Context, in *MsgSetCollectionMetadata, opts ...grpc.CallOption) (*MsgSetCollectionMetadataResponse, error) + SetTokenMetadata(ctx context.Context, in *MsgSetTokenMetadata, opts ...grpc.CallOption) (*MsgSetTokenMetadataResponse, error) + SetCustomData(ctx context.Context, in *MsgSetCustomData, opts ...grpc.CallOption) (*MsgSetCustomDataResponse, error) + SetStandards(ctx context.Context, in *MsgSetStandards, opts ...grpc.CallOption) (*MsgSetStandardsResponse, error) + SetCollectionApprovals(ctx context.Context, in *MsgSetCollectionApprovals, opts ...grpc.CallOption) (*MsgSetCollectionApprovalsResponse, error) + SetIsArchived(ctx context.Context, in *MsgSetIsArchived, opts ...grpc.CallOption) (*MsgSetIsArchivedResponse, error) + SetReservedProtocolAddress(ctx context.Context, in *MsgSetReservedProtocolAddress, opts ...grpc.CallOption) (*MsgSetReservedProtocolAddressResponse, error) + CastVote(ctx context.Context, in *MsgCastVote, opts ...grpc.CallOption) (*MsgCastVoteResponse, error) +} + +type msgClient struct { + cc grpc1.ClientConn +} + +func NewMsgClient(cc grpc1.ClientConn) MsgClient { + return &msgClient{cc} +} + +func (c *msgClient) UpdateParams(ctx context.Context, in *MsgUpdateParams, opts ...grpc.CallOption) (*MsgUpdateParamsResponse, error) { + out := new(MsgUpdateParamsResponse) + err := c.cc.Invoke(ctx, "/tokenization.v29.Msg/UpdateParams", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) UniversalUpdateCollection(ctx context.Context, in *MsgUniversalUpdateCollection, opts ...grpc.CallOption) (*MsgUniversalUpdateCollectionResponse, error) { + out := new(MsgUniversalUpdateCollectionResponse) + err := c.cc.Invoke(ctx, "/tokenization.v29.Msg/UniversalUpdateCollection", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) CreateAddressLists(ctx context.Context, in *MsgCreateAddressLists, opts ...grpc.CallOption) (*MsgCreateAddressListsResponse, error) { + out := new(MsgCreateAddressListsResponse) + err := c.cc.Invoke(ctx, "/tokenization.v29.Msg/CreateAddressLists", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) TransferTokens(ctx context.Context, in *MsgTransferTokens, opts ...grpc.CallOption) (*MsgTransferTokensResponse, error) { + out := new(MsgTransferTokensResponse) + err := c.cc.Invoke(ctx, "/tokenization.v29.Msg/TransferTokens", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) UpdateUserApprovals(ctx context.Context, in *MsgUpdateUserApprovals, opts ...grpc.CallOption) (*MsgUpdateUserApprovalsResponse, error) { + out := new(MsgUpdateUserApprovalsResponse) + err := c.cc.Invoke(ctx, "/tokenization.v29.Msg/UpdateUserApprovals", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) SetIncomingApproval(ctx context.Context, in *MsgSetIncomingApproval, opts ...grpc.CallOption) (*MsgSetIncomingApprovalResponse, error) { + out := new(MsgSetIncomingApprovalResponse) + err := c.cc.Invoke(ctx, "/tokenization.v29.Msg/SetIncomingApproval", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) DeleteIncomingApproval(ctx context.Context, in *MsgDeleteIncomingApproval, opts ...grpc.CallOption) (*MsgDeleteIncomingApprovalResponse, error) { + out := new(MsgDeleteIncomingApprovalResponse) + err := c.cc.Invoke(ctx, "/tokenization.v29.Msg/DeleteIncomingApproval", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) SetOutgoingApproval(ctx context.Context, in *MsgSetOutgoingApproval, opts ...grpc.CallOption) (*MsgSetOutgoingApprovalResponse, error) { + out := new(MsgSetOutgoingApprovalResponse) + err := c.cc.Invoke(ctx, "/tokenization.v29.Msg/SetOutgoingApproval", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) DeleteOutgoingApproval(ctx context.Context, in *MsgDeleteOutgoingApproval, opts ...grpc.CallOption) (*MsgDeleteOutgoingApprovalResponse, error) { + out := new(MsgDeleteOutgoingApprovalResponse) + err := c.cc.Invoke(ctx, "/tokenization.v29.Msg/DeleteOutgoingApproval", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) PurgeApprovals(ctx context.Context, in *MsgPurgeApprovals, opts ...grpc.CallOption) (*MsgPurgeApprovalsResponse, error) { + out := new(MsgPurgeApprovalsResponse) + err := c.cc.Invoke(ctx, "/tokenization.v29.Msg/PurgeApprovals", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) DeleteCollection(ctx context.Context, in *MsgDeleteCollection, opts ...grpc.CallOption) (*MsgDeleteCollectionResponse, error) { + out := new(MsgDeleteCollectionResponse) + err := c.cc.Invoke(ctx, "/tokenization.v29.Msg/DeleteCollection", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) UpdateCollection(ctx context.Context, in *MsgUpdateCollection, opts ...grpc.CallOption) (*MsgUpdateCollectionResponse, error) { + out := new(MsgUpdateCollectionResponse) + err := c.cc.Invoke(ctx, "/tokenization.v29.Msg/UpdateCollection", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) CreateCollection(ctx context.Context, in *MsgCreateCollection, opts ...grpc.CallOption) (*MsgCreateCollectionResponse, error) { + out := new(MsgCreateCollectionResponse) + err := c.cc.Invoke(ctx, "/tokenization.v29.Msg/CreateCollection", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) CreateDynamicStore(ctx context.Context, in *MsgCreateDynamicStore, opts ...grpc.CallOption) (*MsgCreateDynamicStoreResponse, error) { + out := new(MsgCreateDynamicStoreResponse) + err := c.cc.Invoke(ctx, "/tokenization.v29.Msg/CreateDynamicStore", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) UpdateDynamicStore(ctx context.Context, in *MsgUpdateDynamicStore, opts ...grpc.CallOption) (*MsgUpdateDynamicStoreResponse, error) { + out := new(MsgUpdateDynamicStoreResponse) + err := c.cc.Invoke(ctx, "/tokenization.v29.Msg/UpdateDynamicStore", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) DeleteDynamicStore(ctx context.Context, in *MsgDeleteDynamicStore, opts ...grpc.CallOption) (*MsgDeleteDynamicStoreResponse, error) { + out := new(MsgDeleteDynamicStoreResponse) + err := c.cc.Invoke(ctx, "/tokenization.v29.Msg/DeleteDynamicStore", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) SetDynamicStoreValue(ctx context.Context, in *MsgSetDynamicStoreValue, opts ...grpc.CallOption) (*MsgSetDynamicStoreValueResponse, error) { + out := new(MsgSetDynamicStoreValueResponse) + err := c.cc.Invoke(ctx, "/tokenization.v29.Msg/SetDynamicStoreValue", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) SetValidTokenIds(ctx context.Context, in *MsgSetValidTokenIds, opts ...grpc.CallOption) (*MsgSetValidTokenIdsResponse, error) { + out := new(MsgSetValidTokenIdsResponse) + err := c.cc.Invoke(ctx, "/tokenization.v29.Msg/SetValidTokenIds", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) SetManager(ctx context.Context, in *MsgSetManager, opts ...grpc.CallOption) (*MsgSetManagerResponse, error) { + out := new(MsgSetManagerResponse) + err := c.cc.Invoke(ctx, "/tokenization.v29.Msg/SetManager", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) SetCollectionMetadata(ctx context.Context, in *MsgSetCollectionMetadata, opts ...grpc.CallOption) (*MsgSetCollectionMetadataResponse, error) { + out := new(MsgSetCollectionMetadataResponse) + err := c.cc.Invoke(ctx, "/tokenization.v29.Msg/SetCollectionMetadata", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) SetTokenMetadata(ctx context.Context, in *MsgSetTokenMetadata, opts ...grpc.CallOption) (*MsgSetTokenMetadataResponse, error) { + out := new(MsgSetTokenMetadataResponse) + err := c.cc.Invoke(ctx, "/tokenization.v29.Msg/SetTokenMetadata", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) SetCustomData(ctx context.Context, in *MsgSetCustomData, opts ...grpc.CallOption) (*MsgSetCustomDataResponse, error) { + out := new(MsgSetCustomDataResponse) + err := c.cc.Invoke(ctx, "/tokenization.v29.Msg/SetCustomData", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) SetStandards(ctx context.Context, in *MsgSetStandards, opts ...grpc.CallOption) (*MsgSetStandardsResponse, error) { + out := new(MsgSetStandardsResponse) + err := c.cc.Invoke(ctx, "/tokenization.v29.Msg/SetStandards", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) SetCollectionApprovals(ctx context.Context, in *MsgSetCollectionApprovals, opts ...grpc.CallOption) (*MsgSetCollectionApprovalsResponse, error) { + out := new(MsgSetCollectionApprovalsResponse) + err := c.cc.Invoke(ctx, "/tokenization.v29.Msg/SetCollectionApprovals", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) SetIsArchived(ctx context.Context, in *MsgSetIsArchived, opts ...grpc.CallOption) (*MsgSetIsArchivedResponse, error) { + out := new(MsgSetIsArchivedResponse) + err := c.cc.Invoke(ctx, "/tokenization.v29.Msg/SetIsArchived", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) SetReservedProtocolAddress(ctx context.Context, in *MsgSetReservedProtocolAddress, opts ...grpc.CallOption) (*MsgSetReservedProtocolAddressResponse, error) { + out := new(MsgSetReservedProtocolAddressResponse) + err := c.cc.Invoke(ctx, "/tokenization.v29.Msg/SetReservedProtocolAddress", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) CastVote(ctx context.Context, in *MsgCastVote, opts ...grpc.CallOption) (*MsgCastVoteResponse, error) { + out := new(MsgCastVoteResponse) + err := c.cc.Invoke(ctx, "/tokenization.v29.Msg/CastVote", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// MsgServer is the server API for Msg service. +type MsgServer interface { + // UpdateParams defines a (governance) operation for updating the module + // parameters. The authority defaults to the x/gov module account. + UpdateParams(context.Context, *MsgUpdateParams) (*MsgUpdateParamsResponse, error) + UniversalUpdateCollection(context.Context, *MsgUniversalUpdateCollection) (*MsgUniversalUpdateCollectionResponse, error) + CreateAddressLists(context.Context, *MsgCreateAddressLists) (*MsgCreateAddressListsResponse, error) + TransferTokens(context.Context, *MsgTransferTokens) (*MsgTransferTokensResponse, error) + UpdateUserApprovals(context.Context, *MsgUpdateUserApprovals) (*MsgUpdateUserApprovalsResponse, error) + SetIncomingApproval(context.Context, *MsgSetIncomingApproval) (*MsgSetIncomingApprovalResponse, error) + DeleteIncomingApproval(context.Context, *MsgDeleteIncomingApproval) (*MsgDeleteIncomingApprovalResponse, error) + SetOutgoingApproval(context.Context, *MsgSetOutgoingApproval) (*MsgSetOutgoingApprovalResponse, error) + DeleteOutgoingApproval(context.Context, *MsgDeleteOutgoingApproval) (*MsgDeleteOutgoingApprovalResponse, error) + PurgeApprovals(context.Context, *MsgPurgeApprovals) (*MsgPurgeApprovalsResponse, error) + DeleteCollection(context.Context, *MsgDeleteCollection) (*MsgDeleteCollectionResponse, error) + UpdateCollection(context.Context, *MsgUpdateCollection) (*MsgUpdateCollectionResponse, error) + CreateCollection(context.Context, *MsgCreateCollection) (*MsgCreateCollectionResponse, error) + CreateDynamicStore(context.Context, *MsgCreateDynamicStore) (*MsgCreateDynamicStoreResponse, error) + UpdateDynamicStore(context.Context, *MsgUpdateDynamicStore) (*MsgUpdateDynamicStoreResponse, error) + DeleteDynamicStore(context.Context, *MsgDeleteDynamicStore) (*MsgDeleteDynamicStoreResponse, error) + SetDynamicStoreValue(context.Context, *MsgSetDynamicStoreValue) (*MsgSetDynamicStoreValueResponse, error) + // Helper message types for UniversalUpdateCollection subsets + SetValidTokenIds(context.Context, *MsgSetValidTokenIds) (*MsgSetValidTokenIdsResponse, error) + SetManager(context.Context, *MsgSetManager) (*MsgSetManagerResponse, error) + SetCollectionMetadata(context.Context, *MsgSetCollectionMetadata) (*MsgSetCollectionMetadataResponse, error) + SetTokenMetadata(context.Context, *MsgSetTokenMetadata) (*MsgSetTokenMetadataResponse, error) + SetCustomData(context.Context, *MsgSetCustomData) (*MsgSetCustomDataResponse, error) + SetStandards(context.Context, *MsgSetStandards) (*MsgSetStandardsResponse, error) + SetCollectionApprovals(context.Context, *MsgSetCollectionApprovals) (*MsgSetCollectionApprovalsResponse, error) + SetIsArchived(context.Context, *MsgSetIsArchived) (*MsgSetIsArchivedResponse, error) + SetReservedProtocolAddress(context.Context, *MsgSetReservedProtocolAddress) (*MsgSetReservedProtocolAddressResponse, error) + CastVote(context.Context, *MsgCastVote) (*MsgCastVoteResponse, error) +} + +// UnimplementedMsgServer can be embedded to have forward compatible implementations. +type UnimplementedMsgServer struct { +} + +func (*UnimplementedMsgServer) UpdateParams(ctx context.Context, req *MsgUpdateParams) (*MsgUpdateParamsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateParams not implemented") +} +func (*UnimplementedMsgServer) UniversalUpdateCollection(ctx context.Context, req *MsgUniversalUpdateCollection) (*MsgUniversalUpdateCollectionResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UniversalUpdateCollection not implemented") +} +func (*UnimplementedMsgServer) CreateAddressLists(ctx context.Context, req *MsgCreateAddressLists) (*MsgCreateAddressListsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateAddressLists not implemented") +} +func (*UnimplementedMsgServer) TransferTokens(ctx context.Context, req *MsgTransferTokens) (*MsgTransferTokensResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method TransferTokens not implemented") +} +func (*UnimplementedMsgServer) UpdateUserApprovals(ctx context.Context, req *MsgUpdateUserApprovals) (*MsgUpdateUserApprovalsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateUserApprovals not implemented") +} +func (*UnimplementedMsgServer) SetIncomingApproval(ctx context.Context, req *MsgSetIncomingApproval) (*MsgSetIncomingApprovalResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetIncomingApproval not implemented") +} +func (*UnimplementedMsgServer) DeleteIncomingApproval(ctx context.Context, req *MsgDeleteIncomingApproval) (*MsgDeleteIncomingApprovalResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteIncomingApproval not implemented") +} +func (*UnimplementedMsgServer) SetOutgoingApproval(ctx context.Context, req *MsgSetOutgoingApproval) (*MsgSetOutgoingApprovalResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetOutgoingApproval not implemented") +} +func (*UnimplementedMsgServer) DeleteOutgoingApproval(ctx context.Context, req *MsgDeleteOutgoingApproval) (*MsgDeleteOutgoingApprovalResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteOutgoingApproval not implemented") +} +func (*UnimplementedMsgServer) PurgeApprovals(ctx context.Context, req *MsgPurgeApprovals) (*MsgPurgeApprovalsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method PurgeApprovals not implemented") +} +func (*UnimplementedMsgServer) DeleteCollection(ctx context.Context, req *MsgDeleteCollection) (*MsgDeleteCollectionResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteCollection not implemented") +} +func (*UnimplementedMsgServer) UpdateCollection(ctx context.Context, req *MsgUpdateCollection) (*MsgUpdateCollectionResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateCollection not implemented") +} +func (*UnimplementedMsgServer) CreateCollection(ctx context.Context, req *MsgCreateCollection) (*MsgCreateCollectionResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateCollection not implemented") +} +func (*UnimplementedMsgServer) CreateDynamicStore(ctx context.Context, req *MsgCreateDynamicStore) (*MsgCreateDynamicStoreResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateDynamicStore not implemented") +} +func (*UnimplementedMsgServer) UpdateDynamicStore(ctx context.Context, req *MsgUpdateDynamicStore) (*MsgUpdateDynamicStoreResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateDynamicStore not implemented") +} +func (*UnimplementedMsgServer) DeleteDynamicStore(ctx context.Context, req *MsgDeleteDynamicStore) (*MsgDeleteDynamicStoreResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteDynamicStore not implemented") +} +func (*UnimplementedMsgServer) SetDynamicStoreValue(ctx context.Context, req *MsgSetDynamicStoreValue) (*MsgSetDynamicStoreValueResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetDynamicStoreValue not implemented") +} +func (*UnimplementedMsgServer) SetValidTokenIds(ctx context.Context, req *MsgSetValidTokenIds) (*MsgSetValidTokenIdsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetValidTokenIds not implemented") +} +func (*UnimplementedMsgServer) SetManager(ctx context.Context, req *MsgSetManager) (*MsgSetManagerResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetManager not implemented") +} +func (*UnimplementedMsgServer) SetCollectionMetadata(ctx context.Context, req *MsgSetCollectionMetadata) (*MsgSetCollectionMetadataResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetCollectionMetadata not implemented") +} +func (*UnimplementedMsgServer) SetTokenMetadata(ctx context.Context, req *MsgSetTokenMetadata) (*MsgSetTokenMetadataResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetTokenMetadata not implemented") +} +func (*UnimplementedMsgServer) SetCustomData(ctx context.Context, req *MsgSetCustomData) (*MsgSetCustomDataResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetCustomData not implemented") +} +func (*UnimplementedMsgServer) SetStandards(ctx context.Context, req *MsgSetStandards) (*MsgSetStandardsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetStandards not implemented") +} +func (*UnimplementedMsgServer) SetCollectionApprovals(ctx context.Context, req *MsgSetCollectionApprovals) (*MsgSetCollectionApprovalsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetCollectionApprovals not implemented") +} +func (*UnimplementedMsgServer) SetIsArchived(ctx context.Context, req *MsgSetIsArchived) (*MsgSetIsArchivedResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetIsArchived not implemented") +} +func (*UnimplementedMsgServer) SetReservedProtocolAddress(ctx context.Context, req *MsgSetReservedProtocolAddress) (*MsgSetReservedProtocolAddressResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetReservedProtocolAddress not implemented") +} +func (*UnimplementedMsgServer) CastVote(ctx context.Context, req *MsgCastVote) (*MsgCastVoteResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CastVote not implemented") +} + +func RegisterMsgServer(s grpc1.Server, srv MsgServer) { + s.RegisterService(&_Msg_serviceDesc, srv) +} + +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: "/tokenization.v29.Msg/UpdateParams", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UpdateParams(ctx, req.(*MsgUpdateParams)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_UniversalUpdateCollection_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUniversalUpdateCollection) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).UniversalUpdateCollection(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tokenization.v29.Msg/UniversalUpdateCollection", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UniversalUpdateCollection(ctx, req.(*MsgUniversalUpdateCollection)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_CreateAddressLists_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgCreateAddressLists) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).CreateAddressLists(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tokenization.v29.Msg/CreateAddressLists", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).CreateAddressLists(ctx, req.(*MsgCreateAddressLists)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_TransferTokens_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgTransferTokens) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).TransferTokens(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tokenization.v29.Msg/TransferTokens", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).TransferTokens(ctx, req.(*MsgTransferTokens)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_UpdateUserApprovals_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUpdateUserApprovals) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).UpdateUserApprovals(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tokenization.v29.Msg/UpdateUserApprovals", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UpdateUserApprovals(ctx, req.(*MsgUpdateUserApprovals)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_SetIncomingApproval_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgSetIncomingApproval) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).SetIncomingApproval(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tokenization.v29.Msg/SetIncomingApproval", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).SetIncomingApproval(ctx, req.(*MsgSetIncomingApproval)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_DeleteIncomingApproval_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgDeleteIncomingApproval) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).DeleteIncomingApproval(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tokenization.v29.Msg/DeleteIncomingApproval", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).DeleteIncomingApproval(ctx, req.(*MsgDeleteIncomingApproval)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_SetOutgoingApproval_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgSetOutgoingApproval) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).SetOutgoingApproval(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tokenization.v29.Msg/SetOutgoingApproval", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).SetOutgoingApproval(ctx, req.(*MsgSetOutgoingApproval)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_DeleteOutgoingApproval_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgDeleteOutgoingApproval) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).DeleteOutgoingApproval(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tokenization.v29.Msg/DeleteOutgoingApproval", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).DeleteOutgoingApproval(ctx, req.(*MsgDeleteOutgoingApproval)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_PurgeApprovals_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgPurgeApprovals) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).PurgeApprovals(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tokenization.v29.Msg/PurgeApprovals", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).PurgeApprovals(ctx, req.(*MsgPurgeApprovals)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_DeleteCollection_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgDeleteCollection) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).DeleteCollection(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tokenization.v29.Msg/DeleteCollection", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).DeleteCollection(ctx, req.(*MsgDeleteCollection)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_UpdateCollection_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUpdateCollection) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).UpdateCollection(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tokenization.v29.Msg/UpdateCollection", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UpdateCollection(ctx, req.(*MsgUpdateCollection)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_CreateCollection_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgCreateCollection) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).CreateCollection(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tokenization.v29.Msg/CreateCollection", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).CreateCollection(ctx, req.(*MsgCreateCollection)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_CreateDynamicStore_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgCreateDynamicStore) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).CreateDynamicStore(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tokenization.v29.Msg/CreateDynamicStore", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).CreateDynamicStore(ctx, req.(*MsgCreateDynamicStore)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_UpdateDynamicStore_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUpdateDynamicStore) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).UpdateDynamicStore(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tokenization.v29.Msg/UpdateDynamicStore", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).UpdateDynamicStore(ctx, req.(*MsgUpdateDynamicStore)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_DeleteDynamicStore_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgDeleteDynamicStore) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).DeleteDynamicStore(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tokenization.v29.Msg/DeleteDynamicStore", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).DeleteDynamicStore(ctx, req.(*MsgDeleteDynamicStore)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_SetDynamicStoreValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgSetDynamicStoreValue) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).SetDynamicStoreValue(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tokenization.v29.Msg/SetDynamicStoreValue", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).SetDynamicStoreValue(ctx, req.(*MsgSetDynamicStoreValue)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_SetValidTokenIds_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgSetValidTokenIds) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).SetValidTokenIds(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tokenization.v29.Msg/SetValidTokenIds", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).SetValidTokenIds(ctx, req.(*MsgSetValidTokenIds)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_SetManager_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgSetManager) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).SetManager(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tokenization.v29.Msg/SetManager", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).SetManager(ctx, req.(*MsgSetManager)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_SetCollectionMetadata_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgSetCollectionMetadata) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).SetCollectionMetadata(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tokenization.v29.Msg/SetCollectionMetadata", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).SetCollectionMetadata(ctx, req.(*MsgSetCollectionMetadata)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_SetTokenMetadata_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgSetTokenMetadata) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).SetTokenMetadata(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tokenization.v29.Msg/SetTokenMetadata", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).SetTokenMetadata(ctx, req.(*MsgSetTokenMetadata)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_SetCustomData_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgSetCustomData) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).SetCustomData(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tokenization.v29.Msg/SetCustomData", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).SetCustomData(ctx, req.(*MsgSetCustomData)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_SetStandards_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgSetStandards) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).SetStandards(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tokenization.v29.Msg/SetStandards", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).SetStandards(ctx, req.(*MsgSetStandards)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_SetCollectionApprovals_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgSetCollectionApprovals) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).SetCollectionApprovals(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tokenization.v29.Msg/SetCollectionApprovals", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).SetCollectionApprovals(ctx, req.(*MsgSetCollectionApprovals)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_SetIsArchived_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgSetIsArchived) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).SetIsArchived(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tokenization.v29.Msg/SetIsArchived", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).SetIsArchived(ctx, req.(*MsgSetIsArchived)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_SetReservedProtocolAddress_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgSetReservedProtocolAddress) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).SetReservedProtocolAddress(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tokenization.v29.Msg/SetReservedProtocolAddress", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).SetReservedProtocolAddress(ctx, req.(*MsgSetReservedProtocolAddress)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_CastVote_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgCastVote) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).CastVote(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/tokenization.v29.Msg/CastVote", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).CastVote(ctx, req.(*MsgCastVote)) + } + return interceptor(ctx, in, info, handler) +} + +var Msg_serviceDesc = _Msg_serviceDesc +var _Msg_serviceDesc = grpc.ServiceDesc{ + ServiceName: "tokenization.v29.Msg", + HandlerType: (*MsgServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "UpdateParams", + Handler: _Msg_UpdateParams_Handler, + }, + { + MethodName: "UniversalUpdateCollection", + Handler: _Msg_UniversalUpdateCollection_Handler, + }, + { + MethodName: "CreateAddressLists", + Handler: _Msg_CreateAddressLists_Handler, + }, + { + MethodName: "TransferTokens", + Handler: _Msg_TransferTokens_Handler, + }, + { + MethodName: "UpdateUserApprovals", + Handler: _Msg_UpdateUserApprovals_Handler, + }, + { + MethodName: "SetIncomingApproval", + Handler: _Msg_SetIncomingApproval_Handler, + }, + { + MethodName: "DeleteIncomingApproval", + Handler: _Msg_DeleteIncomingApproval_Handler, + }, + { + MethodName: "SetOutgoingApproval", + Handler: _Msg_SetOutgoingApproval_Handler, + }, + { + MethodName: "DeleteOutgoingApproval", + Handler: _Msg_DeleteOutgoingApproval_Handler, + }, + { + MethodName: "PurgeApprovals", + Handler: _Msg_PurgeApprovals_Handler, + }, + { + MethodName: "DeleteCollection", + Handler: _Msg_DeleteCollection_Handler, + }, + { + MethodName: "UpdateCollection", + Handler: _Msg_UpdateCollection_Handler, + }, + { + MethodName: "CreateCollection", + Handler: _Msg_CreateCollection_Handler, + }, + { + MethodName: "CreateDynamicStore", + Handler: _Msg_CreateDynamicStore_Handler, + }, + { + MethodName: "UpdateDynamicStore", + Handler: _Msg_UpdateDynamicStore_Handler, + }, + { + MethodName: "DeleteDynamicStore", + Handler: _Msg_DeleteDynamicStore_Handler, + }, + { + MethodName: "SetDynamicStoreValue", + Handler: _Msg_SetDynamicStoreValue_Handler, + }, + { + MethodName: "SetValidTokenIds", + Handler: _Msg_SetValidTokenIds_Handler, + }, + { + MethodName: "SetManager", + Handler: _Msg_SetManager_Handler, + }, + { + MethodName: "SetCollectionMetadata", + Handler: _Msg_SetCollectionMetadata_Handler, + }, + { + MethodName: "SetTokenMetadata", + Handler: _Msg_SetTokenMetadata_Handler, + }, + { + MethodName: "SetCustomData", + Handler: _Msg_SetCustomData_Handler, + }, + { + MethodName: "SetStandards", + Handler: _Msg_SetStandards_Handler, + }, + { + MethodName: "SetCollectionApprovals", + Handler: _Msg_SetCollectionApprovals_Handler, + }, + { + MethodName: "SetIsArchived", + Handler: _Msg_SetIsArchived_Handler, + }, + { + MethodName: "SetReservedProtocolAddress", + Handler: _Msg_SetReservedProtocolAddress_Handler, + }, + { + MethodName: "CastVote", + Handler: _Msg_CastVote_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "tokenization/v29/tx.proto", +} + +func (m *TokenizationCustomMsgType) 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 *TokenizationCustomMsgType) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *TokenizationCustomMsgType) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.CastVoteMsg != nil { + { + size, err := m.CastVoteMsg.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xe2 + } + if m.SetReservedProtocolAddressMsg != nil { + { + size, err := m.SetReservedProtocolAddressMsg.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xda + } + if m.SetIsArchivedMsg != nil { + { + size, err := m.SetIsArchivedMsg.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xd2 + } + if m.SetCollectionApprovalsMsg != nil { + { + size, err := m.SetCollectionApprovalsMsg.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xca + } + if m.SetStandardsMsg != nil { + { + size, err := m.SetStandardsMsg.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xc2 + } + if m.SetCustomDataMsg != nil { + { + size, err := m.SetCustomDataMsg.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xba + } + if m.SetTokenMetadataMsg != nil { + { + size, err := m.SetTokenMetadataMsg.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xb2 + } + if m.SetCollectionMetadataMsg != nil { + { + size, err := m.SetCollectionMetadataMsg.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xaa + } + if m.SetManagerMsg != nil { + { + size, err := m.SetManagerMsg.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xa2 + } + if m.SetValidTokenIdsMsg != nil { + { + size, err := m.SetValidTokenIdsMsg.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x9a + } + if m.PurgeApprovalsMsg != nil { + { + size, err := m.PurgeApprovalsMsg.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x92 + } + if m.DeleteOutgoingApprovalMsg != nil { + { + size, err := m.DeleteOutgoingApprovalMsg.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x8a + } + if m.SetOutgoingApprovalMsg != nil { + { + size, err := m.SetOutgoingApprovalMsg.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x82 + } + if m.DeleteIncomingApprovalMsg != nil { + { + size, err := m.DeleteIncomingApprovalMsg.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x7a + } + if m.SetIncomingApprovalMsg != nil { + { + size, err := m.SetIncomingApprovalMsg.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x72 + } + if m.SetDynamicStoreValueMsg != nil { + { + size, err := m.SetDynamicStoreValueMsg.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x5a + } + if m.DeleteDynamicStoreMsg != nil { + { + size, err := m.DeleteDynamicStoreMsg.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x52 + } + if m.UpdateDynamicStoreMsg != nil { + { + size, err := m.UpdateDynamicStoreMsg.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x4a + } + if m.CreateDynamicStoreMsg != nil { + { + size, err := m.CreateDynamicStoreMsg.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + } + if m.CreateCollectionMsg != nil { + { + size, err := m.CreateCollectionMsg.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + if m.UpdateCollectionMsg != nil { + { + size, err := m.UpdateCollectionMsg.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + if m.UpdateUserApprovalsMsg != nil { + { + size, err := m.UpdateUserApprovalsMsg.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + if m.TransferTokensMsg != nil { + { + size, err := m.TransferTokensMsg.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if m.DeleteCollectionMsg != nil { + { + size, err := m.DeleteCollectionMsg.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + if m.UniversalUpdateCollectionMsg != nil { + { + size, err := m.UniversalUpdateCollectionMsg.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if m.CreateAddressListsMsg != nil { + { + size, err := m.CreateAddressListsMsg.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +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 *CosmosCoinWrapperPathAddObject) 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 *CosmosCoinWrapperPathAddObject) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CosmosCoinWrapperPathAddObject) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Metadata != nil { + { + size, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + if m.AllowOverrideWithAnyValidToken { + i-- + if m.AllowOverrideWithAnyValidToken { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x28 + } + if len(m.DenomUnits) > 0 { + for iNdEx := len(m.DenomUnits) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.DenomUnits[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.Symbol) > 0 { + i -= len(m.Symbol) + copy(dAtA[i:], m.Symbol) + i = encodeVarintTx(dAtA, i, uint64(len(m.Symbol))) + i-- + dAtA[i] = 0x1a + } + if m.Conversion != nil { + { + size, err := m.Conversion.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintTx(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *AliasPathAddObject) 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 *AliasPathAddObject) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *AliasPathAddObject) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Metadata != nil { + { + size, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + if len(m.DenomUnits) > 0 { + for iNdEx := len(m.DenomUnits) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.DenomUnits[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.Symbol) > 0 { + i -= len(m.Symbol) + copy(dAtA[i:], m.Symbol) + i = encodeVarintTx(dAtA, i, uint64(len(m.Symbol))) + i-- + dAtA[i] = 0x1a + } + if m.Conversion != nil { + { + size, err := m.Conversion.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintTx(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *CosmosCoinBackedPathAddObject) 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 *CosmosCoinBackedPathAddObject) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CosmosCoinBackedPathAddObject) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Conversion != nil { + { + size, err := m.Conversion.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *InvariantsAddObject) 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 *InvariantsAddObject) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *InvariantsAddObject) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.EvmQueryChallenges) > 0 { + for iNdEx := len(m.EvmQueryChallenges) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.EvmQueryChallenges[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + } + if m.DisablePoolCreation { + i-- + if m.DisablePoolCreation { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x28 + } + if m.NoForcefulPostMintTransfers { + i-- + if m.NoForcefulPostMintTransfers { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x20 + } + if m.CosmosCoinBackedPath != nil { + { + size, err := m.CosmosCoinBackedPath.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + { + size := m.MaxSupplyPerId.Size() + i -= size + if _, err := m.MaxSupplyPerId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if m.NoCustomOwnershipTimes { + i-- + if m.NoCustomOwnershipTimes { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *MsgUniversalUpdateCollection) 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 *MsgUniversalUpdateCollection) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUniversalUpdateCollection) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.AliasPathsToAdd) > 0 { + for iNdEx := len(m.AliasPathsToAdd) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.AliasPathsToAdd[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xca + } + } + if m.Invariants != nil { + { + size, err := m.Invariants.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xc2 + } + if len(m.CosmosCoinWrapperPathsToAdd) > 0 { + for iNdEx := len(m.CosmosCoinWrapperPathsToAdd) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CosmosCoinWrapperPathsToAdd[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xba + } + } + if len(m.MintEscrowCoinsToTransfer) > 0 { + for iNdEx := len(m.MintEscrowCoinsToTransfer) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.MintEscrowCoinsToTransfer[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xb2 + } + } + if m.IsArchived { + i-- + if m.IsArchived { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xa8 + } + if m.UpdateIsArchived { + i-- + if m.UpdateIsArchived { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xa0 + } + if len(m.Standards) > 0 { + for iNdEx := len(m.Standards) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Standards[iNdEx]) + copy(dAtA[i:], m.Standards[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.Standards[iNdEx]))) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x9a + } + } + if m.UpdateStandards { + i-- + if m.UpdateStandards { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x90 + } + if len(m.CollectionApprovals) > 0 { + for iNdEx := len(m.CollectionApprovals) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CollectionApprovals[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x8a + } + } + if m.UpdateCollectionApprovals { + i-- + if m.UpdateCollectionApprovals { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x80 + } + if len(m.CustomData) > 0 { + i -= len(m.CustomData) + copy(dAtA[i:], m.CustomData) + i = encodeVarintTx(dAtA, i, uint64(len(m.CustomData))) + i-- + dAtA[i] = 0x7a + } + if m.UpdateCustomData { + i-- + if m.UpdateCustomData { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x70 + } + if len(m.TokenMetadata) > 0 { + for iNdEx := len(m.TokenMetadata) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TokenMetadata[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x6a + } + } + if m.UpdateTokenMetadata { + i-- + if m.UpdateTokenMetadata { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x60 + } + if m.CollectionMetadata != nil { + { + size, err := m.CollectionMetadata.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x5a + } + if m.UpdateCollectionMetadata { + i-- + if m.UpdateCollectionMetadata { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x50 + } + if len(m.Manager) > 0 { + i -= len(m.Manager) + copy(dAtA[i:], m.Manager) + i = encodeVarintTx(dAtA, i, uint64(len(m.Manager))) + i-- + dAtA[i] = 0x4a + } + if m.UpdateManager { + i-- + if m.UpdateManager { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x40 + } + if m.CollectionPermissions != nil { + { + size, err := m.CollectionPermissions.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + if m.UpdateCollectionPermissions { + i-- + if m.UpdateCollectionPermissions { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x30 + } + if len(m.ValidTokenIds) > 0 { + for iNdEx := len(m.ValidTokenIds) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.ValidTokenIds[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + } + if m.UpdateValidTokenIds { + i-- + if m.UpdateValidTokenIds { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x20 + } + if m.DefaultBalances != nil { + { + size, err := m.DefaultBalances.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + { + size := m.CollectionId.Size() + i -= size + if _, err := m.CollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgUniversalUpdateCollectionResponse) 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 *MsgUniversalUpdateCollectionResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUniversalUpdateCollectionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ReviewItems) > 0 { + for iNdEx := len(m.ReviewItems) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.ReviewItems[iNdEx]) + copy(dAtA[i:], m.ReviewItems[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.ReviewItems[iNdEx]))) + i-- + dAtA[i] = 0x1a + } + } + if len(m.ApprovalChanges) > 0 { + for iNdEx := len(m.ApprovalChanges) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.ApprovalChanges[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + { + size := m.CollectionId.Size() + i -= size + if _, err := m.CollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *MsgUpdateCollection) 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 *MsgUpdateCollection) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateCollection) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.AliasPathsToAdd) > 0 { + for iNdEx := len(m.AliasPathsToAdd) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.AliasPathsToAdd[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xc2 + } + } + if m.Invariants != nil { + { + size, err := m.Invariants.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xba + } + if len(m.CosmosCoinWrapperPathsToAdd) > 0 { + for iNdEx := len(m.CosmosCoinWrapperPathsToAdd) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CosmosCoinWrapperPathsToAdd[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xb2 + } + } + if len(m.MintEscrowCoinsToTransfer) > 0 { + for iNdEx := len(m.MintEscrowCoinsToTransfer) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.MintEscrowCoinsToTransfer[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xaa + } + } + if m.IsArchived { + i-- + if m.IsArchived { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xa0 + } + if m.UpdateIsArchived { + i-- + if m.UpdateIsArchived { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x98 + } + if len(m.Standards) > 0 { + for iNdEx := len(m.Standards) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Standards[iNdEx]) + copy(dAtA[i:], m.Standards[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.Standards[iNdEx]))) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x92 + } + } + if m.UpdateStandards { + i-- + if m.UpdateStandards { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x88 + } + if len(m.CollectionApprovals) > 0 { + for iNdEx := len(m.CollectionApprovals) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CollectionApprovals[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x82 + } + } + if m.UpdateCollectionApprovals { + i-- + if m.UpdateCollectionApprovals { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x78 + } + if len(m.CustomData) > 0 { + i -= len(m.CustomData) + copy(dAtA[i:], m.CustomData) + i = encodeVarintTx(dAtA, i, uint64(len(m.CustomData))) + i-- + dAtA[i] = 0x72 + } + if m.UpdateCustomData { + i-- + if m.UpdateCustomData { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x68 + } + if len(m.TokenMetadata) > 0 { + for iNdEx := len(m.TokenMetadata) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TokenMetadata[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x62 + } + } + if m.UpdateTokenMetadata { + i-- + if m.UpdateTokenMetadata { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x58 + } + if m.CollectionMetadata != nil { + { + size, err := m.CollectionMetadata.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x52 + } + if m.UpdateCollectionMetadata { + i-- + if m.UpdateCollectionMetadata { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x48 + } + if len(m.Manager) > 0 { + i -= len(m.Manager) + copy(dAtA[i:], m.Manager) + i = encodeVarintTx(dAtA, i, uint64(len(m.Manager))) + i-- + dAtA[i] = 0x42 + } + if m.UpdateManager { + i-- + if m.UpdateManager { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x38 + } + if m.CollectionPermissions != nil { + { + size, err := m.CollectionPermissions.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + if m.UpdateCollectionPermissions { + i-- + if m.UpdateCollectionPermissions { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x28 + } + if len(m.ValidTokenIds) > 0 { + for iNdEx := len(m.ValidTokenIds) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.ValidTokenIds[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if m.UpdateValidTokenIds { + i-- + if m.UpdateValidTokenIds { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } + { + size := m.CollectionId.Size() + i -= size + if _, err := m.CollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgUpdateCollectionResponse) 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 *MsgUpdateCollectionResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateCollectionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ReviewItems) > 0 { + for iNdEx := len(m.ReviewItems) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.ReviewItems[iNdEx]) + copy(dAtA[i:], m.ReviewItems[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.ReviewItems[iNdEx]))) + i-- + dAtA[i] = 0x1a + } + } + if len(m.ApprovalChanges) > 0 { + for iNdEx := len(m.ApprovalChanges) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.ApprovalChanges[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + { + size := m.CollectionId.Size() + i -= size + if _, err := m.CollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *MsgCreateCollection) 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 *MsgCreateCollection) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgCreateCollection) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.AliasPathsToAdd) > 0 { + for iNdEx := len(m.AliasPathsToAdd) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.AliasPathsToAdd[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x7a + } + } + if m.Invariants != nil { + { + size, err := m.Invariants.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x72 + } + if len(m.CosmosCoinWrapperPathsToAdd) > 0 { + for iNdEx := len(m.CosmosCoinWrapperPathsToAdd) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CosmosCoinWrapperPathsToAdd[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x6a + } + } + if len(m.MintEscrowCoinsToTransfer) > 0 { + for iNdEx := len(m.MintEscrowCoinsToTransfer) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.MintEscrowCoinsToTransfer[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x62 + } + } + if m.IsArchived { + i-- + if m.IsArchived { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x58 + } + if len(m.Standards) > 0 { + for iNdEx := len(m.Standards) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Standards[iNdEx]) + copy(dAtA[i:], m.Standards[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.Standards[iNdEx]))) + i-- + dAtA[i] = 0x52 + } + } + if len(m.CollectionApprovals) > 0 { + for iNdEx := len(m.CollectionApprovals) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CollectionApprovals[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x4a + } + } + if len(m.CustomData) > 0 { + i -= len(m.CustomData) + copy(dAtA[i:], m.CustomData) + i = encodeVarintTx(dAtA, i, uint64(len(m.CustomData))) + i-- + dAtA[i] = 0x42 + } + if len(m.TokenMetadata) > 0 { + for iNdEx := len(m.TokenMetadata) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TokenMetadata[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + } + if m.CollectionMetadata != nil { + { + size, err := m.CollectionMetadata.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + if len(m.Manager) > 0 { + i -= len(m.Manager) + copy(dAtA[i:], m.Manager) + i = encodeVarintTx(dAtA, i, uint64(len(m.Manager))) + i-- + dAtA[i] = 0x2a + } + if m.CollectionPermissions != nil { + { + size, err := m.CollectionPermissions.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + if len(m.ValidTokenIds) > 0 { + for iNdEx := len(m.ValidTokenIds) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.ValidTokenIds[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if m.DefaultBalances != nil { + { + size, err := m.DefaultBalances.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgCreateCollectionResponse) 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 *MsgCreateCollectionResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgCreateCollectionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ReviewItems) > 0 { + for iNdEx := len(m.ReviewItems) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.ReviewItems[iNdEx]) + copy(dAtA[i:], m.ReviewItems[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.ReviewItems[iNdEx]))) + i-- + dAtA[i] = 0x1a + } + } + if len(m.ApprovalChanges) > 0 { + for iNdEx := len(m.ApprovalChanges) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.ApprovalChanges[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + { + size := m.CollectionId.Size() + i -= size + if _, err := m.CollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *MsgCreateAddressLists) 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 *MsgCreateAddressLists) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgCreateAddressLists) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.AddressLists) > 0 { + for iNdEx := len(m.AddressLists) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.AddressLists[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgCreateAddressListsResponse) 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 *MsgCreateAddressListsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgCreateAddressListsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgTransferTokens) 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 *MsgTransferTokens) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgTransferTokens) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Transfers) > 0 { + for iNdEx := len(m.Transfers) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Transfers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + { + size := m.CollectionId.Size() + i -= size + if _, err := m.CollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgTransferTokensResponse) 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 *MsgTransferTokensResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgTransferTokensResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ReviewItems) > 0 { + for iNdEx := len(m.ReviewItems) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.ReviewItems[iNdEx]) + copy(dAtA[i:], m.ReviewItems[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.ReviewItems[iNdEx]))) + i-- + dAtA[i] = 0x22 + } + } + if len(m.BalancesTransferred) > 0 { + for iNdEx := len(m.BalancesTransferred) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.BalancesTransferred[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.CoinTransfers) > 0 { + for iNdEx := len(m.CoinTransfers) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CoinTransfers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.ApprovalsUsed) > 0 { + for iNdEx := len(m.ApprovalsUsed) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.ApprovalsUsed[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *MsgDeleteCollection) 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 *MsgDeleteCollection) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgDeleteCollection) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.CollectionId.Size() + i -= size + if _, err := m.CollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgDeleteCollectionResponse) 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 *MsgDeleteCollectionResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgDeleteCollectionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgUpdateUserApprovals) 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 *MsgUpdateUserApprovals) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateUserApprovals) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.UserPermissions != nil { + { + size, err := m.UserPermissions.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x72 + } + if m.UpdateUserPermissions { + i-- + if m.UpdateUserPermissions { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x68 + } + if m.AutoApproveAllIncomingTransfers { + i-- + if m.AutoApproveAllIncomingTransfers { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x60 + } + if m.UpdateAutoApproveAllIncomingTransfers { + i-- + if m.UpdateAutoApproveAllIncomingTransfers { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x58 + } + if m.AutoApproveSelfInitiatedIncomingTransfers { + i-- + if m.AutoApproveSelfInitiatedIncomingTransfers { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x50 + } + if m.UpdateAutoApproveSelfInitiatedIncomingTransfers { + i-- + if m.UpdateAutoApproveSelfInitiatedIncomingTransfers { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x48 + } + if m.AutoApproveSelfInitiatedOutgoingTransfers { + i-- + if m.AutoApproveSelfInitiatedOutgoingTransfers { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x40 + } + if m.UpdateAutoApproveSelfInitiatedOutgoingTransfers { + i-- + if m.UpdateAutoApproveSelfInitiatedOutgoingTransfers { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x38 + } + if len(m.IncomingApprovals) > 0 { + for iNdEx := len(m.IncomingApprovals) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.IncomingApprovals[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + } + if m.UpdateIncomingApprovals { + i-- + if m.UpdateIncomingApprovals { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x28 + } + if len(m.OutgoingApprovals) > 0 { + for iNdEx := len(m.OutgoingApprovals) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.OutgoingApprovals[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if m.UpdateOutgoingApprovals { + i-- + if m.UpdateOutgoingApprovals { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } + { + size := m.CollectionId.Size() + i -= size + if _, err := m.CollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgUpdateUserApprovalsResponse) 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 *MsgUpdateUserApprovalsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateUserApprovalsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ReviewItems) > 0 { + for iNdEx := len(m.ReviewItems) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.ReviewItems[iNdEx]) + copy(dAtA[i:], m.ReviewItems[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.ReviewItems[iNdEx]))) + i-- + dAtA[i] = 0x1a + } + } + if len(m.OutgoingChanges) > 0 { + for iNdEx := len(m.OutgoingChanges) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.OutgoingChanges[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.IncomingChanges) > 0 { + for iNdEx := len(m.IncomingChanges) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.IncomingChanges[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *MsgSetIncomingApproval) 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 *MsgSetIncomingApproval) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSetIncomingApproval) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Approval != nil { + { + size, err := m.Approval.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + { + size := m.CollectionId.Size() + i -= size + if _, err := m.CollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgSetIncomingApprovalResponse) 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 *MsgSetIncomingApprovalResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSetIncomingApprovalResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ReviewItems) > 0 { + for iNdEx := len(m.ReviewItems) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.ReviewItems[iNdEx]) + copy(dAtA[i:], m.ReviewItems[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.ReviewItems[iNdEx]))) + i-- + dAtA[i] = 0x1a + } + } + if len(m.Version) > 0 { + i -= len(m.Version) + copy(dAtA[i:], m.Version) + i = encodeVarintTx(dAtA, i, uint64(len(m.Version))) + i-- + dAtA[i] = 0x12 + } + if len(m.Action) > 0 { + i -= len(m.Action) + copy(dAtA[i:], m.Action) + i = encodeVarintTx(dAtA, i, uint64(len(m.Action))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgDeleteIncomingApproval) 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 *MsgDeleteIncomingApproval) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgDeleteIncomingApproval) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ApprovalId) > 0 { + i -= len(m.ApprovalId) + copy(dAtA[i:], m.ApprovalId) + i = encodeVarintTx(dAtA, i, uint64(len(m.ApprovalId))) + i-- + dAtA[i] = 0x1a + } + { + size := m.CollectionId.Size() + i -= size + if _, err := m.CollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgDeleteIncomingApprovalResponse) 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 *MsgDeleteIncomingApprovalResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgDeleteIncomingApprovalResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ReviewItems) > 0 { + for iNdEx := len(m.ReviewItems) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.ReviewItems[iNdEx]) + copy(dAtA[i:], m.ReviewItems[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.ReviewItems[iNdEx]))) + i-- + dAtA[i] = 0x1a + } + } + if len(m.Version) > 0 { + i -= len(m.Version) + copy(dAtA[i:], m.Version) + i = encodeVarintTx(dAtA, i, uint64(len(m.Version))) + i-- + dAtA[i] = 0x12 + } + if m.Found { + i-- + if m.Found { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *MsgSetOutgoingApproval) 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 *MsgSetOutgoingApproval) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSetOutgoingApproval) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Approval != nil { + { + size, err := m.Approval.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + { + size := m.CollectionId.Size() + i -= size + if _, err := m.CollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgSetOutgoingApprovalResponse) 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 *MsgSetOutgoingApprovalResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSetOutgoingApprovalResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ReviewItems) > 0 { + for iNdEx := len(m.ReviewItems) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.ReviewItems[iNdEx]) + copy(dAtA[i:], m.ReviewItems[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.ReviewItems[iNdEx]))) + i-- + dAtA[i] = 0x1a + } + } + if len(m.Version) > 0 { + i -= len(m.Version) + copy(dAtA[i:], m.Version) + i = encodeVarintTx(dAtA, i, uint64(len(m.Version))) + i-- + dAtA[i] = 0x12 + } + if len(m.Action) > 0 { + i -= len(m.Action) + copy(dAtA[i:], m.Action) + i = encodeVarintTx(dAtA, i, uint64(len(m.Action))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgDeleteOutgoingApproval) 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 *MsgDeleteOutgoingApproval) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgDeleteOutgoingApproval) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ApprovalId) > 0 { + i -= len(m.ApprovalId) + copy(dAtA[i:], m.ApprovalId) + i = encodeVarintTx(dAtA, i, uint64(len(m.ApprovalId))) + i-- + dAtA[i] = 0x1a + } + { + size := m.CollectionId.Size() + i -= size + if _, err := m.CollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgDeleteOutgoingApprovalResponse) 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 *MsgDeleteOutgoingApprovalResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgDeleteOutgoingApprovalResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ReviewItems) > 0 { + for iNdEx := len(m.ReviewItems) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.ReviewItems[iNdEx]) + copy(dAtA[i:], m.ReviewItems[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.ReviewItems[iNdEx]))) + i-- + dAtA[i] = 0x1a + } + } + if len(m.Version) > 0 { + i -= len(m.Version) + copy(dAtA[i:], m.Version) + i = encodeVarintTx(dAtA, i, uint64(len(m.Version))) + i-- + dAtA[i] = 0x12 + } + if m.Found { + i-- + if m.Found { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *MsgPurgeApprovals) 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 *MsgPurgeApprovals) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgPurgeApprovals) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ApprovalsToPurge) > 0 { + for iNdEx := len(m.ApprovalsToPurge) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.ApprovalsToPurge[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + } + if m.PurgeCounterpartyApprovals { + i-- + if m.PurgeCounterpartyApprovals { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x28 + } + if len(m.ApproverAddress) > 0 { + i -= len(m.ApproverAddress) + copy(dAtA[i:], m.ApproverAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.ApproverAddress))) + i-- + dAtA[i] = 0x22 + } + if m.PurgeExpired { + i-- + if m.PurgeExpired { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } + { + size := m.CollectionId.Size() + i -= size + if _, err := m.CollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgPurgeApprovalsResponse) 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 *MsgPurgeApprovalsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgPurgeApprovalsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ReviewItems) > 0 { + for iNdEx := len(m.ReviewItems) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.ReviewItems[iNdEx]) + copy(dAtA[i:], m.ReviewItems[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.ReviewItems[iNdEx]))) + i-- + dAtA[i] = 0x1a + } + } + if len(m.PurgedApprovalIds) > 0 { + for iNdEx := len(m.PurgedApprovalIds) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.PurgedApprovalIds[iNdEx]) + copy(dAtA[i:], m.PurgedApprovalIds[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.PurgedApprovalIds[iNdEx]))) + i-- + dAtA[i] = 0x12 + } + } + { + size := m.NumPurged.Size() + i -= size + if _, err := m.NumPurged.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *MsgCreateDynamicStore) 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 *MsgCreateDynamicStore) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgCreateDynamicStore) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.CustomData) > 0 { + i -= len(m.CustomData) + copy(dAtA[i:], m.CustomData) + i = encodeVarintTx(dAtA, i, uint64(len(m.CustomData))) + i-- + dAtA[i] = 0x22 + } + if len(m.Uri) > 0 { + i -= len(m.Uri) + copy(dAtA[i:], m.Uri) + i = encodeVarintTx(dAtA, i, uint64(len(m.Uri))) + i-- + dAtA[i] = 0x1a + } + if m.DefaultValue { + i-- + if m.DefaultValue { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 + } + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgCreateDynamicStoreResponse) 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 *MsgCreateDynamicStoreResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgCreateDynamicStoreResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ReviewItems) > 0 { + for iNdEx := len(m.ReviewItems) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.ReviewItems[iNdEx]) + copy(dAtA[i:], m.ReviewItems[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.ReviewItems[iNdEx]))) + i-- + dAtA[i] = 0x12 + } + } + { + size := m.StoreId.Size() + i -= size + if _, err := m.StoreId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *MsgUpdateDynamicStore) 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 *MsgUpdateDynamicStore) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateDynamicStore) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.CustomData) > 0 { + i -= len(m.CustomData) + copy(dAtA[i:], m.CustomData) + i = encodeVarintTx(dAtA, i, uint64(len(m.CustomData))) + i-- + dAtA[i] = 0x32 + } + if len(m.Uri) > 0 { + i -= len(m.Uri) + copy(dAtA[i:], m.Uri) + i = encodeVarintTx(dAtA, i, uint64(len(m.Uri))) + i-- + dAtA[i] = 0x2a + } + if m.GlobalEnabled { + i-- + if m.GlobalEnabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x20 + } + if m.DefaultValue { + i-- + if m.DefaultValue { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } + { + size := m.StoreId.Size() + i -= size + if _, err := m.StoreId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgUpdateDynamicStoreResponse) 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 *MsgUpdateDynamicStoreResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgUpdateDynamicStoreResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgDeleteDynamicStore) 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 *MsgDeleteDynamicStore) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgDeleteDynamicStore) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.StoreId.Size() + i -= size + if _, err := m.StoreId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgDeleteDynamicStoreResponse) 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 *MsgDeleteDynamicStoreResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgDeleteDynamicStoreResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgSetDynamicStoreValue) 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 *MsgSetDynamicStoreValue) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSetDynamicStoreValue) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Value { + i-- + if m.Value { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x20 + } + if len(m.Address) > 0 { + i -= len(m.Address) + copy(dAtA[i:], m.Address) + i = encodeVarintTx(dAtA, i, uint64(len(m.Address))) + i-- + dAtA[i] = 0x1a + } + { + size := m.StoreId.Size() + i -= size + if _, err := m.StoreId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgSetDynamicStoreValueResponse) 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 *MsgSetDynamicStoreValueResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSetDynamicStoreValueResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ReviewItems) > 0 { + for iNdEx := len(m.ReviewItems) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.ReviewItems[iNdEx]) + copy(dAtA[i:], m.ReviewItems[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.ReviewItems[iNdEx]))) + i-- + dAtA[i] = 0x12 + } + } + if len(m.PreviousValue) > 0 { + i -= len(m.PreviousValue) + copy(dAtA[i:], m.PreviousValue) + i = encodeVarintTx(dAtA, i, uint64(len(m.PreviousValue))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgSetValidTokenIds) 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 *MsgSetValidTokenIds) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSetValidTokenIds) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.CanUpdateValidTokenIds) > 0 { + for iNdEx := len(m.CanUpdateValidTokenIds) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CanUpdateValidTokenIds[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.ValidTokenIds) > 0 { + for iNdEx := len(m.ValidTokenIds) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.ValidTokenIds[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + { + size := m.CollectionId.Size() + i -= size + if _, err := m.CollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgSetValidTokenIdsResponse) 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 *MsgSetValidTokenIdsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSetValidTokenIdsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.CollectionId.Size() + i -= size + if _, err := m.CollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *MsgSetManager) 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 *MsgSetManager) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSetManager) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.CanUpdateManager) > 0 { + for iNdEx := len(m.CanUpdateManager) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CanUpdateManager[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.Manager) > 0 { + i -= len(m.Manager) + copy(dAtA[i:], m.Manager) + i = encodeVarintTx(dAtA, i, uint64(len(m.Manager))) + i-- + dAtA[i] = 0x1a + } + { + size := m.CollectionId.Size() + i -= size + if _, err := m.CollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgSetManagerResponse) 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 *MsgSetManagerResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSetManagerResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.CollectionId.Size() + i -= size + if _, err := m.CollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *MsgSetCollectionMetadata) 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 *MsgSetCollectionMetadata) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSetCollectionMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.CanUpdateCollectionMetadata) > 0 { + for iNdEx := len(m.CanUpdateCollectionMetadata) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CanUpdateCollectionMetadata[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if m.CollectionMetadata != nil { + { + size, err := m.CollectionMetadata.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + { + size := m.CollectionId.Size() + i -= size + if _, err := m.CollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgSetCollectionMetadataResponse) 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 *MsgSetCollectionMetadataResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSetCollectionMetadataResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.CollectionId.Size() + i -= size + if _, err := m.CollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *MsgSetTokenMetadata) 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 *MsgSetTokenMetadata) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSetTokenMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.CanUpdateTokenMetadata) > 0 { + for iNdEx := len(m.CanUpdateTokenMetadata) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CanUpdateTokenMetadata[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.TokenMetadata) > 0 { + for iNdEx := len(m.TokenMetadata) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TokenMetadata[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + { + size := m.CollectionId.Size() + i -= size + if _, err := m.CollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgSetTokenMetadataResponse) 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 *MsgSetTokenMetadataResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSetTokenMetadataResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.CollectionId.Size() + i -= size + if _, err := m.CollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *MsgSetCustomData) 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 *MsgSetCustomData) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSetCustomData) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.CanUpdateCustomData) > 0 { + for iNdEx := len(m.CanUpdateCustomData) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CanUpdateCustomData[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.CustomData) > 0 { + i -= len(m.CustomData) + copy(dAtA[i:], m.CustomData) + i = encodeVarintTx(dAtA, i, uint64(len(m.CustomData))) + i-- + dAtA[i] = 0x1a + } + { + size := m.CollectionId.Size() + i -= size + if _, err := m.CollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgSetCustomDataResponse) 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 *MsgSetCustomDataResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSetCustomDataResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.CollectionId.Size() + i -= size + if _, err := m.CollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *MsgSetStandards) 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 *MsgSetStandards) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSetStandards) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.CanUpdateStandards) > 0 { + for iNdEx := len(m.CanUpdateStandards) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CanUpdateStandards[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.Standards) > 0 { + for iNdEx := len(m.Standards) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Standards[iNdEx]) + copy(dAtA[i:], m.Standards[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.Standards[iNdEx]))) + i-- + dAtA[i] = 0x1a + } + } + { + size := m.CollectionId.Size() + i -= size + if _, err := m.CollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgSetStandardsResponse) 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 *MsgSetStandardsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSetStandardsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.CollectionId.Size() + i -= size + if _, err := m.CollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *MsgSetCollectionApprovals) 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 *MsgSetCollectionApprovals) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSetCollectionApprovals) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.CanUpdateCollectionApprovals) > 0 { + for iNdEx := len(m.CanUpdateCollectionApprovals) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CanUpdateCollectionApprovals[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.CollectionApprovals) > 0 { + for iNdEx := len(m.CollectionApprovals) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CollectionApprovals[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + { + size := m.CollectionId.Size() + i -= size + if _, err := m.CollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgSetCollectionApprovalsResponse) 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 *MsgSetCollectionApprovalsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSetCollectionApprovalsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ReviewItems) > 0 { + for iNdEx := len(m.ReviewItems) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.ReviewItems[iNdEx]) + copy(dAtA[i:], m.ReviewItems[iNdEx]) + i = encodeVarintTx(dAtA, i, uint64(len(m.ReviewItems[iNdEx]))) + i-- + dAtA[i] = 0x1a + } + } + if len(m.ApprovalChanges) > 0 { + for iNdEx := len(m.ApprovalChanges) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.ApprovalChanges[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + { + size := m.CollectionId.Size() + i -= size + if _, err := m.CollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *MsgSetIsArchived) 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 *MsgSetIsArchived) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSetIsArchived) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.CanArchiveCollection) > 0 { + for iNdEx := len(m.CanArchiveCollection) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CanArchiveCollection[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if m.IsArchived { + i-- + if m.IsArchived { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } + { + size := m.CollectionId.Size() + i -= size + if _, err := m.CollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgSetIsArchivedResponse) 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 *MsgSetIsArchivedResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSetIsArchivedResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.CollectionId.Size() + i -= size + if _, err := m.CollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + +func (m *MsgSetReservedProtocolAddress) 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 *MsgSetReservedProtocolAddress) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSetReservedProtocolAddress) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.IsReservedProtocol { + i-- + if m.IsReservedProtocol { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } + if len(m.Address) > 0 { + i -= len(m.Address) + copy(dAtA[i:], m.Address) + i = encodeVarintTx(dAtA, i, uint64(len(m.Address))) + 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 *MsgSetReservedProtocolAddressResponse) 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 *MsgSetReservedProtocolAddressResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSetReservedProtocolAddressResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgCastVote) 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 *MsgCastVote) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgCastVote) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size := m.YesWeight.Size() + i -= size + if _, err := m.YesWeight.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + if len(m.ProposalId) > 0 { + i -= len(m.ProposalId) + copy(dAtA[i:], m.ProposalId) + i = encodeVarintTx(dAtA, i, uint64(len(m.ProposalId))) + i-- + dAtA[i] = 0x32 + } + if len(m.ApprovalId) > 0 { + i -= len(m.ApprovalId) + copy(dAtA[i:], m.ApprovalId) + i = encodeVarintTx(dAtA, i, uint64(len(m.ApprovalId))) + i-- + dAtA[i] = 0x2a + } + if len(m.ApproverAddress) > 0 { + i -= len(m.ApproverAddress) + copy(dAtA[i:], m.ApproverAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.ApproverAddress))) + i-- + dAtA[i] = 0x22 + } + if len(m.ApprovalLevel) > 0 { + i -= len(m.ApprovalLevel) + copy(dAtA[i:], m.ApprovalLevel) + i = encodeVarintTx(dAtA, i, uint64(len(m.ApprovalLevel))) + i-- + dAtA[i] = 0x1a + } + { + size := m.CollectionId.Size() + i -= size + if _, err := m.CollectionId.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if len(m.Creator) > 0 { + i -= len(m.Creator) + copy(dAtA[i:], m.Creator) + i = encodeVarintTx(dAtA, i, uint64(len(m.Creator))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *MsgCastVoteResponse) 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 *MsgCastVoteResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgCastVoteResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *ApprovalUsed) 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 *ApprovalUsed) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ApprovalUsed) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Version) > 0 { + i -= len(m.Version) + copy(dAtA[i:], m.Version) + i = encodeVarintTx(dAtA, i, uint64(len(m.Version))) + i-- + dAtA[i] = 0x22 + } + if len(m.ApproverAddress) > 0 { + i -= len(m.ApproverAddress) + copy(dAtA[i:], m.ApproverAddress) + i = encodeVarintTx(dAtA, i, uint64(len(m.ApproverAddress))) + i-- + dAtA[i] = 0x1a + } + if len(m.ApprovalLevel) > 0 { + i -= len(m.ApprovalLevel) + copy(dAtA[i:], m.ApprovalLevel) + i = encodeVarintTx(dAtA, i, uint64(len(m.ApprovalLevel))) + i-- + dAtA[i] = 0x12 + } + if len(m.ApprovalId) > 0 { + i -= len(m.ApprovalId) + copy(dAtA[i:], m.ApprovalId) + i = encodeVarintTx(dAtA, i, uint64(len(m.ApprovalId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *CoinTransferProto) 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 *CoinTransferProto) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CoinTransferProto) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.IsProtocolFee { + i-- + if m.IsProtocolFee { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x28 + } + if len(m.Denom) > 0 { + i -= len(m.Denom) + copy(dAtA[i:], m.Denom) + i = encodeVarintTx(dAtA, i, uint64(len(m.Denom))) + i-- + dAtA[i] = 0x22 + } + if len(m.Amount) > 0 { + i -= len(m.Amount) + copy(dAtA[i:], m.Amount) + i = encodeVarintTx(dAtA, i, uint64(len(m.Amount))) + i-- + dAtA[i] = 0x1a + } + if len(m.To) > 0 { + i -= len(m.To) + copy(dAtA[i:], m.To) + i = encodeVarintTx(dAtA, i, uint64(len(m.To))) + i-- + dAtA[i] = 0x12 + } + if len(m.From) > 0 { + i -= len(m.From) + copy(dAtA[i:], m.From) + i = encodeVarintTx(dAtA, i, uint64(len(m.From))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ApprovalChange) 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 *ApprovalChange) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ApprovalChange) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Version) > 0 { + i -= len(m.Version) + copy(dAtA[i:], m.Version) + i = encodeVarintTx(dAtA, i, uint64(len(m.Version))) + i-- + dAtA[i] = 0x22 + } + if len(m.Action) > 0 { + i -= len(m.Action) + copy(dAtA[i:], m.Action) + i = encodeVarintTx(dAtA, i, uint64(len(m.Action))) + i-- + dAtA[i] = 0x1a + } + if len(m.ApprovalLevel) > 0 { + i -= len(m.ApprovalLevel) + copy(dAtA[i:], m.ApprovalLevel) + i = encodeVarintTx(dAtA, i, uint64(len(m.ApprovalLevel))) + i-- + dAtA[i] = 0x12 + } + if len(m.ApprovalId) > 0 { + i -= len(m.ApprovalId) + copy(dAtA[i:], m.ApprovalId) + i = encodeVarintTx(dAtA, i, uint64(len(m.ApprovalId))) + 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 *TokenizationCustomMsgType) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.CreateAddressListsMsg != nil { + l = m.CreateAddressListsMsg.Size() + n += 1 + l + sovTx(uint64(l)) + } + if m.UniversalUpdateCollectionMsg != nil { + l = m.UniversalUpdateCollectionMsg.Size() + n += 1 + l + sovTx(uint64(l)) + } + if m.DeleteCollectionMsg != nil { + l = m.DeleteCollectionMsg.Size() + n += 1 + l + sovTx(uint64(l)) + } + if m.TransferTokensMsg != nil { + l = m.TransferTokensMsg.Size() + n += 1 + l + sovTx(uint64(l)) + } + if m.UpdateUserApprovalsMsg != nil { + l = m.UpdateUserApprovalsMsg.Size() + n += 1 + l + sovTx(uint64(l)) + } + if m.UpdateCollectionMsg != nil { + l = m.UpdateCollectionMsg.Size() + n += 1 + l + sovTx(uint64(l)) + } + if m.CreateCollectionMsg != nil { + l = m.CreateCollectionMsg.Size() + n += 1 + l + sovTx(uint64(l)) + } + if m.CreateDynamicStoreMsg != nil { + l = m.CreateDynamicStoreMsg.Size() + n += 1 + l + sovTx(uint64(l)) + } + if m.UpdateDynamicStoreMsg != nil { + l = m.UpdateDynamicStoreMsg.Size() + n += 1 + l + sovTx(uint64(l)) + } + if m.DeleteDynamicStoreMsg != nil { + l = m.DeleteDynamicStoreMsg.Size() + n += 1 + l + sovTx(uint64(l)) + } + if m.SetDynamicStoreValueMsg != nil { + l = m.SetDynamicStoreValueMsg.Size() + n += 1 + l + sovTx(uint64(l)) + } + if m.SetIncomingApprovalMsg != nil { + l = m.SetIncomingApprovalMsg.Size() + n += 1 + l + sovTx(uint64(l)) + } + if m.DeleteIncomingApprovalMsg != nil { + l = m.DeleteIncomingApprovalMsg.Size() + n += 1 + l + sovTx(uint64(l)) + } + if m.SetOutgoingApprovalMsg != nil { + l = m.SetOutgoingApprovalMsg.Size() + n += 2 + l + sovTx(uint64(l)) + } + if m.DeleteOutgoingApprovalMsg != nil { + l = m.DeleteOutgoingApprovalMsg.Size() + n += 2 + l + sovTx(uint64(l)) + } + if m.PurgeApprovalsMsg != nil { + l = m.PurgeApprovalsMsg.Size() + n += 2 + l + sovTx(uint64(l)) + } + if m.SetValidTokenIdsMsg != nil { + l = m.SetValidTokenIdsMsg.Size() + n += 2 + l + sovTx(uint64(l)) + } + if m.SetManagerMsg != nil { + l = m.SetManagerMsg.Size() + n += 2 + l + sovTx(uint64(l)) + } + if m.SetCollectionMetadataMsg != nil { + l = m.SetCollectionMetadataMsg.Size() + n += 2 + l + sovTx(uint64(l)) + } + if m.SetTokenMetadataMsg != nil { + l = m.SetTokenMetadataMsg.Size() + n += 2 + l + sovTx(uint64(l)) + } + if m.SetCustomDataMsg != nil { + l = m.SetCustomDataMsg.Size() + n += 2 + l + sovTx(uint64(l)) + } + if m.SetStandardsMsg != nil { + l = m.SetStandardsMsg.Size() + n += 2 + l + sovTx(uint64(l)) + } + if m.SetCollectionApprovalsMsg != nil { + l = m.SetCollectionApprovalsMsg.Size() + n += 2 + l + sovTx(uint64(l)) + } + if m.SetIsArchivedMsg != nil { + l = m.SetIsArchivedMsg.Size() + n += 2 + l + sovTx(uint64(l)) + } + if m.SetReservedProtocolAddressMsg != nil { + l = m.SetReservedProtocolAddressMsg.Size() + n += 2 + l + sovTx(uint64(l)) + } + if m.CastVoteMsg != nil { + l = m.CastVoteMsg.Size() + n += 2 + l + sovTx(uint64(l)) + } + return n +} + +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 *CosmosCoinWrapperPathAddObject) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.Conversion != nil { + l = m.Conversion.Size() + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Symbol) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if len(m.DenomUnits) > 0 { + for _, e := range m.DenomUnits { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if m.AllowOverrideWithAnyValidToken { + n += 2 + } + if m.Metadata != nil { + l = m.Metadata.Size() + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *AliasPathAddObject) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.Conversion != nil { + l = m.Conversion.Size() + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Symbol) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if len(m.DenomUnits) > 0 { + for _, e := range m.DenomUnits { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if m.Metadata != nil { + l = m.Metadata.Size() + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *CosmosCoinBackedPathAddObject) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Conversion != nil { + l = m.Conversion.Size() + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *InvariantsAddObject) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.NoCustomOwnershipTimes { + n += 2 + } + l = m.MaxSupplyPerId.Size() + n += 1 + l + sovTx(uint64(l)) + if m.CosmosCoinBackedPath != nil { + l = m.CosmosCoinBackedPath.Size() + n += 1 + l + sovTx(uint64(l)) + } + if m.NoForcefulPostMintTransfers { + n += 2 + } + if m.DisablePoolCreation { + n += 2 + } + if len(m.EvmQueryChallenges) > 0 { + for _, e := range m.EvmQueryChallenges { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgUniversalUpdateCollection) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.CollectionId.Size() + n += 1 + l + sovTx(uint64(l)) + if m.DefaultBalances != nil { + l = m.DefaultBalances.Size() + n += 1 + l + sovTx(uint64(l)) + } + if m.UpdateValidTokenIds { + n += 2 + } + if len(m.ValidTokenIds) > 0 { + for _, e := range m.ValidTokenIds { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if m.UpdateCollectionPermissions { + n += 2 + } + if m.CollectionPermissions != nil { + l = m.CollectionPermissions.Size() + n += 1 + l + sovTx(uint64(l)) + } + if m.UpdateManager { + n += 2 + } + l = len(m.Manager) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.UpdateCollectionMetadata { + n += 2 + } + if m.CollectionMetadata != nil { + l = m.CollectionMetadata.Size() + n += 1 + l + sovTx(uint64(l)) + } + if m.UpdateTokenMetadata { + n += 2 + } + if len(m.TokenMetadata) > 0 { + for _, e := range m.TokenMetadata { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if m.UpdateCustomData { + n += 2 + } + l = len(m.CustomData) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.UpdateCollectionApprovals { + n += 3 + } + if len(m.CollectionApprovals) > 0 { + for _, e := range m.CollectionApprovals { + l = e.Size() + n += 2 + l + sovTx(uint64(l)) + } + } + if m.UpdateStandards { + n += 3 + } + if len(m.Standards) > 0 { + for _, s := range m.Standards { + l = len(s) + n += 2 + l + sovTx(uint64(l)) + } + } + if m.UpdateIsArchived { + n += 3 + } + if m.IsArchived { + n += 3 + } + if len(m.MintEscrowCoinsToTransfer) > 0 { + for _, e := range m.MintEscrowCoinsToTransfer { + l = e.Size() + n += 2 + l + sovTx(uint64(l)) + } + } + if len(m.CosmosCoinWrapperPathsToAdd) > 0 { + for _, e := range m.CosmosCoinWrapperPathsToAdd { + l = e.Size() + n += 2 + l + sovTx(uint64(l)) + } + } + if m.Invariants != nil { + l = m.Invariants.Size() + n += 2 + l + sovTx(uint64(l)) + } + if len(m.AliasPathsToAdd) > 0 { + for _, e := range m.AliasPathsToAdd { + l = e.Size() + n += 2 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgUniversalUpdateCollectionResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.CollectionId.Size() + n += 1 + l + sovTx(uint64(l)) + if len(m.ApprovalChanges) > 0 { + for _, e := range m.ApprovalChanges { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.ReviewItems) > 0 { + for _, s := range m.ReviewItems { + l = len(s) + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgUpdateCollection) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.CollectionId.Size() + n += 1 + l + sovTx(uint64(l)) + if m.UpdateValidTokenIds { + n += 2 + } + if len(m.ValidTokenIds) > 0 { + for _, e := range m.ValidTokenIds { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if m.UpdateCollectionPermissions { + n += 2 + } + if m.CollectionPermissions != nil { + l = m.CollectionPermissions.Size() + n += 1 + l + sovTx(uint64(l)) + } + if m.UpdateManager { + n += 2 + } + l = len(m.Manager) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.UpdateCollectionMetadata { + n += 2 + } + if m.CollectionMetadata != nil { + l = m.CollectionMetadata.Size() + n += 1 + l + sovTx(uint64(l)) + } + if m.UpdateTokenMetadata { + n += 2 + } + if len(m.TokenMetadata) > 0 { + for _, e := range m.TokenMetadata { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if m.UpdateCustomData { + n += 2 + } + l = len(m.CustomData) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.UpdateCollectionApprovals { + n += 2 + } + if len(m.CollectionApprovals) > 0 { + for _, e := range m.CollectionApprovals { + l = e.Size() + n += 2 + l + sovTx(uint64(l)) + } + } + if m.UpdateStandards { + n += 3 + } + if len(m.Standards) > 0 { + for _, s := range m.Standards { + l = len(s) + n += 2 + l + sovTx(uint64(l)) + } + } + if m.UpdateIsArchived { + n += 3 + } + if m.IsArchived { + n += 3 + } + if len(m.MintEscrowCoinsToTransfer) > 0 { + for _, e := range m.MintEscrowCoinsToTransfer { + l = e.Size() + n += 2 + l + sovTx(uint64(l)) + } + } + if len(m.CosmosCoinWrapperPathsToAdd) > 0 { + for _, e := range m.CosmosCoinWrapperPathsToAdd { + l = e.Size() + n += 2 + l + sovTx(uint64(l)) + } + } + if m.Invariants != nil { + l = m.Invariants.Size() + n += 2 + l + sovTx(uint64(l)) + } + if len(m.AliasPathsToAdd) > 0 { + for _, e := range m.AliasPathsToAdd { + l = e.Size() + n += 2 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgUpdateCollectionResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.CollectionId.Size() + n += 1 + l + sovTx(uint64(l)) + if len(m.ApprovalChanges) > 0 { + for _, e := range m.ApprovalChanges { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.ReviewItems) > 0 { + for _, s := range m.ReviewItems { + l = len(s) + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgCreateCollection) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.DefaultBalances != nil { + l = m.DefaultBalances.Size() + n += 1 + l + sovTx(uint64(l)) + } + if len(m.ValidTokenIds) > 0 { + for _, e := range m.ValidTokenIds { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if m.CollectionPermissions != nil { + l = m.CollectionPermissions.Size() + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Manager) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.CollectionMetadata != nil { + l = m.CollectionMetadata.Size() + n += 1 + l + sovTx(uint64(l)) + } + if len(m.TokenMetadata) > 0 { + for _, e := range m.TokenMetadata { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + l = len(m.CustomData) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if len(m.CollectionApprovals) > 0 { + for _, e := range m.CollectionApprovals { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.Standards) > 0 { + for _, s := range m.Standards { + l = len(s) + n += 1 + l + sovTx(uint64(l)) + } + } + if m.IsArchived { + n += 2 + } + if len(m.MintEscrowCoinsToTransfer) > 0 { + for _, e := range m.MintEscrowCoinsToTransfer { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.CosmosCoinWrapperPathsToAdd) > 0 { + for _, e := range m.CosmosCoinWrapperPathsToAdd { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if m.Invariants != nil { + l = m.Invariants.Size() + n += 1 + l + sovTx(uint64(l)) + } + if len(m.AliasPathsToAdd) > 0 { + for _, e := range m.AliasPathsToAdd { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgCreateCollectionResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.CollectionId.Size() + n += 1 + l + sovTx(uint64(l)) + if len(m.ApprovalChanges) > 0 { + for _, e := range m.ApprovalChanges { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.ReviewItems) > 0 { + for _, s := range m.ReviewItems { + l = len(s) + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgCreateAddressLists) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if len(m.AddressLists) > 0 { + for _, e := range m.AddressLists { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgCreateAddressListsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgTransferTokens) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.CollectionId.Size() + n += 1 + l + sovTx(uint64(l)) + if len(m.Transfers) > 0 { + for _, e := range m.Transfers { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgTransferTokensResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.ApprovalsUsed) > 0 { + for _, e := range m.ApprovalsUsed { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.CoinTransfers) > 0 { + for _, e := range m.CoinTransfers { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.BalancesTransferred) > 0 { + for _, e := range m.BalancesTransferred { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.ReviewItems) > 0 { + for _, s := range m.ReviewItems { + l = len(s) + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgDeleteCollection) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.CollectionId.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgDeleteCollectionResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgUpdateUserApprovals) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.CollectionId.Size() + n += 1 + l + sovTx(uint64(l)) + if m.UpdateOutgoingApprovals { + n += 2 + } + if len(m.OutgoingApprovals) > 0 { + for _, e := range m.OutgoingApprovals { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if m.UpdateIncomingApprovals { + n += 2 + } + if len(m.IncomingApprovals) > 0 { + for _, e := range m.IncomingApprovals { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if m.UpdateAutoApproveSelfInitiatedOutgoingTransfers { + n += 2 + } + if m.AutoApproveSelfInitiatedOutgoingTransfers { + n += 2 + } + if m.UpdateAutoApproveSelfInitiatedIncomingTransfers { + n += 2 + } + if m.AutoApproveSelfInitiatedIncomingTransfers { + n += 2 + } + if m.UpdateAutoApproveAllIncomingTransfers { + n += 2 + } + if m.AutoApproveAllIncomingTransfers { + n += 2 + } + if m.UpdateUserPermissions { + n += 2 + } + if m.UserPermissions != nil { + l = m.UserPermissions.Size() + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgUpdateUserApprovalsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.IncomingChanges) > 0 { + for _, e := range m.IncomingChanges { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.OutgoingChanges) > 0 { + for _, e := range m.OutgoingChanges { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.ReviewItems) > 0 { + for _, s := range m.ReviewItems { + l = len(s) + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgSetIncomingApproval) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.CollectionId.Size() + n += 1 + l + sovTx(uint64(l)) + if m.Approval != nil { + l = m.Approval.Size() + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgSetIncomingApprovalResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Action) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Version) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if len(m.ReviewItems) > 0 { + for _, s := range m.ReviewItems { + l = len(s) + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgDeleteIncomingApproval) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.CollectionId.Size() + n += 1 + l + sovTx(uint64(l)) + l = len(m.ApprovalId) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgDeleteIncomingApprovalResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Found { + n += 2 + } + l = len(m.Version) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if len(m.ReviewItems) > 0 { + for _, s := range m.ReviewItems { + l = len(s) + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgSetOutgoingApproval) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.CollectionId.Size() + n += 1 + l + sovTx(uint64(l)) + if m.Approval != nil { + l = m.Approval.Size() + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgSetOutgoingApprovalResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Action) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Version) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if len(m.ReviewItems) > 0 { + for _, s := range m.ReviewItems { + l = len(s) + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgDeleteOutgoingApproval) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.CollectionId.Size() + n += 1 + l + sovTx(uint64(l)) + l = len(m.ApprovalId) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgDeleteOutgoingApprovalResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Found { + n += 2 + } + l = len(m.Version) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if len(m.ReviewItems) > 0 { + for _, s := range m.ReviewItems { + l = len(s) + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgPurgeApprovals) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.CollectionId.Size() + n += 1 + l + sovTx(uint64(l)) + if m.PurgeExpired { + n += 2 + } + l = len(m.ApproverAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.PurgeCounterpartyApprovals { + n += 2 + } + if len(m.ApprovalsToPurge) > 0 { + for _, e := range m.ApprovalsToPurge { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgPurgeApprovalsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.NumPurged.Size() + n += 1 + l + sovTx(uint64(l)) + if len(m.PurgedApprovalIds) > 0 { + for _, s := range m.PurgedApprovalIds { + l = len(s) + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.ReviewItems) > 0 { + for _, s := range m.ReviewItems { + l = len(s) + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgCreateDynamicStore) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.DefaultValue { + n += 2 + } + l = len(m.Uri) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.CustomData) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgCreateDynamicStoreResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.StoreId.Size() + n += 1 + l + sovTx(uint64(l)) + if len(m.ReviewItems) > 0 { + for _, s := range m.ReviewItems { + l = len(s) + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgUpdateDynamicStore) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.StoreId.Size() + n += 1 + l + sovTx(uint64(l)) + if m.DefaultValue { + n += 2 + } + if m.GlobalEnabled { + n += 2 + } + l = len(m.Uri) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.CustomData) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *MsgUpdateDynamicStoreResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgDeleteDynamicStore) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.StoreId.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgDeleteDynamicStoreResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgSetDynamicStoreValue) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.StoreId.Size() + n += 1 + l + sovTx(uint64(l)) + l = len(m.Address) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.Value { + n += 2 + } + return n +} + +func (m *MsgSetDynamicStoreValueResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.PreviousValue) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if len(m.ReviewItems) > 0 { + for _, s := range m.ReviewItems { + l = len(s) + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgSetValidTokenIds) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.CollectionId.Size() + n += 1 + l + sovTx(uint64(l)) + if len(m.ValidTokenIds) > 0 { + for _, e := range m.ValidTokenIds { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.CanUpdateValidTokenIds) > 0 { + for _, e := range m.CanUpdateValidTokenIds { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgSetValidTokenIdsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.CollectionId.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgSetManager) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.CollectionId.Size() + n += 1 + l + sovTx(uint64(l)) + l = len(m.Manager) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if len(m.CanUpdateManager) > 0 { + for _, e := range m.CanUpdateManager { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgSetManagerResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.CollectionId.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgSetCollectionMetadata) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.CollectionId.Size() + n += 1 + l + sovTx(uint64(l)) + if m.CollectionMetadata != nil { + l = m.CollectionMetadata.Size() + n += 1 + l + sovTx(uint64(l)) + } + if len(m.CanUpdateCollectionMetadata) > 0 { + for _, e := range m.CanUpdateCollectionMetadata { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgSetCollectionMetadataResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.CollectionId.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgSetTokenMetadata) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.CollectionId.Size() + n += 1 + l + sovTx(uint64(l)) + if len(m.TokenMetadata) > 0 { + for _, e := range m.TokenMetadata { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.CanUpdateTokenMetadata) > 0 { + for _, e := range m.CanUpdateTokenMetadata { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgSetTokenMetadataResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.CollectionId.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgSetCustomData) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.CollectionId.Size() + n += 1 + l + sovTx(uint64(l)) + l = len(m.CustomData) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if len(m.CanUpdateCustomData) > 0 { + for _, e := range m.CanUpdateCustomData { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgSetCustomDataResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.CollectionId.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgSetStandards) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.CollectionId.Size() + n += 1 + l + sovTx(uint64(l)) + if len(m.Standards) > 0 { + for _, s := range m.Standards { + l = len(s) + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.CanUpdateStandards) > 0 { + for _, e := range m.CanUpdateStandards { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgSetStandardsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.CollectionId.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgSetCollectionApprovals) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.CollectionId.Size() + n += 1 + l + sovTx(uint64(l)) + if len(m.CollectionApprovals) > 0 { + for _, e := range m.CollectionApprovals { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.CanUpdateCollectionApprovals) > 0 { + for _, e := range m.CanUpdateCollectionApprovals { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgSetCollectionApprovalsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.CollectionId.Size() + n += 1 + l + sovTx(uint64(l)) + if len(m.ApprovalChanges) > 0 { + for _, e := range m.ApprovalChanges { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + if len(m.ReviewItems) > 0 { + for _, s := range m.ReviewItems { + l = len(s) + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgSetIsArchived) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.CollectionId.Size() + n += 1 + l + sovTx(uint64(l)) + if m.IsArchived { + n += 2 + } + if len(m.CanArchiveCollection) > 0 { + for _, e := range m.CanArchiveCollection { + l = e.Size() + n += 1 + l + sovTx(uint64(l)) + } + } + return n +} + +func (m *MsgSetIsArchivedResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.CollectionId.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgSetReservedProtocolAddress) 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.Address) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.IsReservedProtocol { + n += 2 + } + return n +} + +func (m *MsgSetReservedProtocolAddressResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgCastVote) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Creator) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.CollectionId.Size() + n += 1 + l + sovTx(uint64(l)) + l = len(m.ApprovalLevel) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.ApproverAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.ApprovalId) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.ProposalId) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.YesWeight.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgCastVoteResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *ApprovalUsed) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ApprovalId) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.ApprovalLevel) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.ApproverAddress) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Version) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + return n +} + +func (m *CoinTransferProto) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.From) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.To) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Amount) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Denom) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.IsProtocolFee { + n += 2 + } + return n +} + +func (m *ApprovalChange) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ApprovalId) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.ApprovalLevel) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Action) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = len(m.Version) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + 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 *TokenizationCustomMsgType) 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: TokenizationCustomMsgType: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: TokenizationCustomMsgType: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CreateAddressListsMsg", 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 m.CreateAddressListsMsg == nil { + m.CreateAddressListsMsg = &MsgCreateAddressLists{} + } + if err := m.CreateAddressListsMsg.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UniversalUpdateCollectionMsg", 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 m.UniversalUpdateCollectionMsg == nil { + m.UniversalUpdateCollectionMsg = &MsgUniversalUpdateCollection{} + } + if err := m.UniversalUpdateCollectionMsg.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DeleteCollectionMsg", 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 m.DeleteCollectionMsg == nil { + m.DeleteCollectionMsg = &MsgDeleteCollection{} + } + if err := m.DeleteCollectionMsg.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TransferTokensMsg", 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 m.TransferTokensMsg == nil { + m.TransferTokensMsg = &MsgTransferTokens{} + } + if err := m.TransferTokensMsg.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateUserApprovalsMsg", 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 m.UpdateUserApprovalsMsg == nil { + m.UpdateUserApprovalsMsg = &MsgUpdateUserApprovals{} + } + if err := m.UpdateUserApprovalsMsg.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateCollectionMsg", 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 m.UpdateCollectionMsg == nil { + m.UpdateCollectionMsg = &MsgUpdateCollection{} + } + if err := m.UpdateCollectionMsg.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CreateCollectionMsg", 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 m.CreateCollectionMsg == nil { + m.CreateCollectionMsg = &MsgCreateCollection{} + } + if err := m.CreateCollectionMsg.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CreateDynamicStoreMsg", 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 m.CreateDynamicStoreMsg == nil { + m.CreateDynamicStoreMsg = &MsgCreateDynamicStore{} + } + if err := m.CreateDynamicStoreMsg.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateDynamicStoreMsg", 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 m.UpdateDynamicStoreMsg == nil { + m.UpdateDynamicStoreMsg = &MsgUpdateDynamicStore{} + } + if err := m.UpdateDynamicStoreMsg.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DeleteDynamicStoreMsg", 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 m.DeleteDynamicStoreMsg == nil { + m.DeleteDynamicStoreMsg = &MsgDeleteDynamicStore{} + } + if err := m.DeleteDynamicStoreMsg.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SetDynamicStoreValueMsg", 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 m.SetDynamicStoreValueMsg == nil { + m.SetDynamicStoreValueMsg = &MsgSetDynamicStoreValue{} + } + if err := m.SetDynamicStoreValueMsg.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SetIncomingApprovalMsg", 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 m.SetIncomingApprovalMsg == nil { + m.SetIncomingApprovalMsg = &MsgSetIncomingApproval{} + } + if err := m.SetIncomingApprovalMsg.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 15: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DeleteIncomingApprovalMsg", 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 m.DeleteIncomingApprovalMsg == nil { + m.DeleteIncomingApprovalMsg = &MsgDeleteIncomingApproval{} + } + if err := m.DeleteIncomingApprovalMsg.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 16: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SetOutgoingApprovalMsg", 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 m.SetOutgoingApprovalMsg == nil { + m.SetOutgoingApprovalMsg = &MsgSetOutgoingApproval{} + } + if err := m.SetOutgoingApprovalMsg.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 17: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DeleteOutgoingApprovalMsg", 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 m.DeleteOutgoingApprovalMsg == nil { + m.DeleteOutgoingApprovalMsg = &MsgDeleteOutgoingApproval{} + } + if err := m.DeleteOutgoingApprovalMsg.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 18: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PurgeApprovalsMsg", 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 m.PurgeApprovalsMsg == nil { + m.PurgeApprovalsMsg = &MsgPurgeApprovals{} + } + if err := m.PurgeApprovalsMsg.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 19: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SetValidTokenIdsMsg", 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 m.SetValidTokenIdsMsg == nil { + m.SetValidTokenIdsMsg = &MsgSetValidTokenIds{} + } + if err := m.SetValidTokenIdsMsg.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 20: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SetManagerMsg", 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 m.SetManagerMsg == nil { + m.SetManagerMsg = &MsgSetManager{} + } + if err := m.SetManagerMsg.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 21: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SetCollectionMetadataMsg", 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 m.SetCollectionMetadataMsg == nil { + m.SetCollectionMetadataMsg = &MsgSetCollectionMetadata{} + } + if err := m.SetCollectionMetadataMsg.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 22: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SetTokenMetadataMsg", 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 m.SetTokenMetadataMsg == nil { + m.SetTokenMetadataMsg = &MsgSetTokenMetadata{} + } + if err := m.SetTokenMetadataMsg.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 23: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SetCustomDataMsg", 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 m.SetCustomDataMsg == nil { + m.SetCustomDataMsg = &MsgSetCustomData{} + } + if err := m.SetCustomDataMsg.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 24: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SetStandardsMsg", 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 m.SetStandardsMsg == nil { + m.SetStandardsMsg = &MsgSetStandards{} + } + if err := m.SetStandardsMsg.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 25: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SetCollectionApprovalsMsg", 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 m.SetCollectionApprovalsMsg == nil { + m.SetCollectionApprovalsMsg = &MsgSetCollectionApprovals{} + } + if err := m.SetCollectionApprovalsMsg.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 26: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SetIsArchivedMsg", 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 m.SetIsArchivedMsg == nil { + m.SetIsArchivedMsg = &MsgSetIsArchived{} + } + if err := m.SetIsArchivedMsg.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 27: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SetReservedProtocolAddressMsg", 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 m.SetReservedProtocolAddressMsg == nil { + m.SetReservedProtocolAddressMsg = &MsgSetReservedProtocolAddress{} + } + if err := m.SetReservedProtocolAddressMsg.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 28: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CastVoteMsg", 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 m.CastVoteMsg == nil { + m.CastVoteMsg = &MsgCastVote{} + } + if err := m.CastVoteMsg.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 *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 *CosmosCoinWrapperPathAddObject) 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: CosmosCoinWrapperPathAddObject: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CosmosCoinWrapperPathAddObject: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denom", 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.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Conversion", 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 m.Conversion == nil { + m.Conversion = &ConversionWithoutDenom{} + } + if err := m.Conversion.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Symbol", 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.Symbol = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DenomUnits", 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 + } + m.DenomUnits = append(m.DenomUnits, &DenomUnit{}) + if err := m.DenomUnits[len(m.DenomUnits)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AllowOverrideWithAnyValidToken", 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.AllowOverrideWithAnyValidToken = bool(v != 0) + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Metadata", 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 m.Metadata == nil { + m.Metadata = &PathMetadata{} + } + if err := m.Metadata.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 *AliasPathAddObject) 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: AliasPathAddObject: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AliasPathAddObject: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denom", 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.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Conversion", 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 m.Conversion == nil { + m.Conversion = &ConversionWithoutDenom{} + } + if err := m.Conversion.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Symbol", 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.Symbol = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DenomUnits", 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 + } + m.DenomUnits = append(m.DenomUnits, &DenomUnit{}) + if err := m.DenomUnits[len(m.DenomUnits)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Metadata", 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 m.Metadata == nil { + m.Metadata = &PathMetadata{} + } + if err := m.Metadata.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 *CosmosCoinBackedPathAddObject) 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: CosmosCoinBackedPathAddObject: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CosmosCoinBackedPathAddObject: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Conversion", 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 m.Conversion == nil { + m.Conversion = &Conversion{} + } + if err := m.Conversion.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 *InvariantsAddObject) 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: InvariantsAddObject: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: InvariantsAddObject: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NoCustomOwnershipTimes", 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.NoCustomOwnershipTimes = bool(v != 0) + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxSupplyPerId", 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 + } + if err := m.MaxSupplyPerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CosmosCoinBackedPath", 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 m.CosmosCoinBackedPath == nil { + m.CosmosCoinBackedPath = &CosmosCoinBackedPathAddObject{} + } + if err := m.CosmosCoinBackedPath.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field NoForcefulPostMintTransfers", 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.NoForcefulPostMintTransfers = bool(v != 0) + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DisablePoolCreation", 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.DisablePoolCreation = bool(v != 0) + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field EvmQueryChallenges", 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 + } + m.EvmQueryChallenges = append(m.EvmQueryChallenges, &EVMQueryChallenge{}) + if err := m.EvmQueryChallenges[len(m.EvmQueryChallenges)-1].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 *MsgUniversalUpdateCollection) 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: MsgUniversalUpdateCollection: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUniversalUpdateCollection: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", 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 + } + if err := m.CollectionId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DefaultBalances", 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 m.DefaultBalances == nil { + m.DefaultBalances = &UserBalanceStore{} + } + if err := m.DefaultBalances.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateValidTokenIds", 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.UpdateValidTokenIds = bool(v != 0) + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValidTokenIds", 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 + } + m.ValidTokenIds = append(m.ValidTokenIds, &UintRange{}) + if err := m.ValidTokenIds[len(m.ValidTokenIds)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateCollectionPermissions", 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.UpdateCollectionPermissions = bool(v != 0) + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionPermissions", 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 m.CollectionPermissions == nil { + m.CollectionPermissions = &CollectionPermissions{} + } + if err := m.CollectionPermissions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateManager", 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.UpdateManager = bool(v != 0) + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Manager", 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.Manager = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 10: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateCollectionMetadata", 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.UpdateCollectionMetadata = bool(v != 0) + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionMetadata", 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 m.CollectionMetadata == nil { + m.CollectionMetadata = &CollectionMetadata{} + } + if err := m.CollectionMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 12: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateTokenMetadata", 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.UpdateTokenMetadata = bool(v != 0) + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TokenMetadata", 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 + } + m.TokenMetadata = append(m.TokenMetadata, &TokenMetadata{}) + if err := m.TokenMetadata[len(m.TokenMetadata)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 14: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateCustomData", 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.UpdateCustomData = bool(v != 0) + case 15: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CustomData", 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.CustomData = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 16: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateCollectionApprovals", 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.UpdateCollectionApprovals = bool(v != 0) + case 17: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionApprovals", 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 + } + m.CollectionApprovals = append(m.CollectionApprovals, &CollectionApproval{}) + if err := m.CollectionApprovals[len(m.CollectionApprovals)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 18: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateStandards", 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.UpdateStandards = bool(v != 0) + case 19: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Standards", 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.Standards = append(m.Standards, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 20: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateIsArchived", 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.UpdateIsArchived = bool(v != 0) + case 21: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IsArchived", 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.IsArchived = bool(v != 0) + case 22: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MintEscrowCoinsToTransfer", 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 + } + m.MintEscrowCoinsToTransfer = append(m.MintEscrowCoinsToTransfer, &types.Coin{}) + if err := m.MintEscrowCoinsToTransfer[len(m.MintEscrowCoinsToTransfer)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 23: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CosmosCoinWrapperPathsToAdd", 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 + } + m.CosmosCoinWrapperPathsToAdd = append(m.CosmosCoinWrapperPathsToAdd, &CosmosCoinWrapperPathAddObject{}) + if err := m.CosmosCoinWrapperPathsToAdd[len(m.CosmosCoinWrapperPathsToAdd)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 24: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Invariants", 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 m.Invariants == nil { + m.Invariants = &InvariantsAddObject{} + } + if err := m.Invariants.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 25: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AliasPathsToAdd", 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 + } + m.AliasPathsToAdd = append(m.AliasPathsToAdd, &AliasPathAddObject{}) + if err := m.AliasPathsToAdd[len(m.AliasPathsToAdd)-1].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 *MsgUniversalUpdateCollectionResponse) 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: MsgUniversalUpdateCollectionResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUniversalUpdateCollectionResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", 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 + } + if err := m.CollectionId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalChanges", 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 + } + m.ApprovalChanges = append(m.ApprovalChanges, &ApprovalChange{}) + if err := m.ApprovalChanges[len(m.ApprovalChanges)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ReviewItems", 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.ReviewItems = append(m.ReviewItems, 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 *MsgUpdateCollection) 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: MsgUpdateCollection: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateCollection: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", 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 + } + if err := m.CollectionId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateValidTokenIds", 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.UpdateValidTokenIds = bool(v != 0) + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValidTokenIds", 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 + } + m.ValidTokenIds = append(m.ValidTokenIds, &UintRange{}) + if err := m.ValidTokenIds[len(m.ValidTokenIds)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateCollectionPermissions", 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.UpdateCollectionPermissions = bool(v != 0) + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionPermissions", 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 m.CollectionPermissions == nil { + m.CollectionPermissions = &CollectionPermissions{} + } + if err := m.CollectionPermissions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateManager", 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.UpdateManager = bool(v != 0) + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Manager", 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.Manager = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateCollectionMetadata", 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.UpdateCollectionMetadata = bool(v != 0) + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionMetadata", 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 m.CollectionMetadata == nil { + m.CollectionMetadata = &CollectionMetadata{} + } + if err := m.CollectionMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 11: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateTokenMetadata", 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.UpdateTokenMetadata = bool(v != 0) + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TokenMetadata", 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 + } + m.TokenMetadata = append(m.TokenMetadata, &TokenMetadata{}) + if err := m.TokenMetadata[len(m.TokenMetadata)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 13: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateCustomData", 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.UpdateCustomData = bool(v != 0) + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CustomData", 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.CustomData = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 15: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateCollectionApprovals", 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.UpdateCollectionApprovals = bool(v != 0) + case 16: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionApprovals", 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 + } + m.CollectionApprovals = append(m.CollectionApprovals, &CollectionApproval{}) + if err := m.CollectionApprovals[len(m.CollectionApprovals)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 17: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateStandards", 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.UpdateStandards = bool(v != 0) + case 18: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Standards", 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.Standards = append(m.Standards, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 19: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateIsArchived", 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.UpdateIsArchived = bool(v != 0) + case 20: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IsArchived", 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.IsArchived = bool(v != 0) + case 21: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MintEscrowCoinsToTransfer", 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 + } + m.MintEscrowCoinsToTransfer = append(m.MintEscrowCoinsToTransfer, &types.Coin{}) + if err := m.MintEscrowCoinsToTransfer[len(m.MintEscrowCoinsToTransfer)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 22: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CosmosCoinWrapperPathsToAdd", 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 + } + m.CosmosCoinWrapperPathsToAdd = append(m.CosmosCoinWrapperPathsToAdd, &CosmosCoinWrapperPathAddObject{}) + if err := m.CosmosCoinWrapperPathsToAdd[len(m.CosmosCoinWrapperPathsToAdd)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 23: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Invariants", 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 m.Invariants == nil { + m.Invariants = &InvariantsAddObject{} + } + if err := m.Invariants.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 24: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AliasPathsToAdd", 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 + } + m.AliasPathsToAdd = append(m.AliasPathsToAdd, &AliasPathAddObject{}) + if err := m.AliasPathsToAdd[len(m.AliasPathsToAdd)-1].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 *MsgUpdateCollectionResponse) 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: MsgUpdateCollectionResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateCollectionResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", 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 + } + if err := m.CollectionId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalChanges", 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 + } + m.ApprovalChanges = append(m.ApprovalChanges, &ApprovalChange{}) + if err := m.ApprovalChanges[len(m.ApprovalChanges)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ReviewItems", 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.ReviewItems = append(m.ReviewItems, 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 *MsgCreateCollection) 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: MsgCreateCollection: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCreateCollection: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DefaultBalances", 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 m.DefaultBalances == nil { + m.DefaultBalances = &UserBalanceStore{} + } + if err := m.DefaultBalances.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValidTokenIds", 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 + } + m.ValidTokenIds = append(m.ValidTokenIds, &UintRange{}) + if err := m.ValidTokenIds[len(m.ValidTokenIds)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionPermissions", 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 m.CollectionPermissions == nil { + m.CollectionPermissions = &CollectionPermissions{} + } + if err := m.CollectionPermissions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Manager", 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.Manager = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionMetadata", 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 m.CollectionMetadata == nil { + m.CollectionMetadata = &CollectionMetadata{} + } + if err := m.CollectionMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TokenMetadata", 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 + } + m.TokenMetadata = append(m.TokenMetadata, &TokenMetadata{}) + if err := m.TokenMetadata[len(m.TokenMetadata)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CustomData", 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.CustomData = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionApprovals", 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 + } + m.CollectionApprovals = append(m.CollectionApprovals, &CollectionApproval{}) + if err := m.CollectionApprovals[len(m.CollectionApprovals)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Standards", 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.Standards = append(m.Standards, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 11: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IsArchived", 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.IsArchived = bool(v != 0) + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MintEscrowCoinsToTransfer", 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 + } + m.MintEscrowCoinsToTransfer = append(m.MintEscrowCoinsToTransfer, &types.Coin{}) + if err := m.MintEscrowCoinsToTransfer[len(m.MintEscrowCoinsToTransfer)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CosmosCoinWrapperPathsToAdd", 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 + } + m.CosmosCoinWrapperPathsToAdd = append(m.CosmosCoinWrapperPathsToAdd, &CosmosCoinWrapperPathAddObject{}) + if err := m.CosmosCoinWrapperPathsToAdd[len(m.CosmosCoinWrapperPathsToAdd)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Invariants", 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 m.Invariants == nil { + m.Invariants = &InvariantsAddObject{} + } + if err := m.Invariants.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 15: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AliasPathsToAdd", 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 + } + m.AliasPathsToAdd = append(m.AliasPathsToAdd, &AliasPathAddObject{}) + if err := m.AliasPathsToAdd[len(m.AliasPathsToAdd)-1].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 *MsgCreateCollectionResponse) 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: MsgCreateCollectionResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCreateCollectionResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", 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 + } + if err := m.CollectionId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalChanges", 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 + } + m.ApprovalChanges = append(m.ApprovalChanges, &ApprovalChange{}) + if err := m.ApprovalChanges[len(m.ApprovalChanges)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ReviewItems", 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.ReviewItems = append(m.ReviewItems, 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 *MsgCreateAddressLists) 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: MsgCreateAddressLists: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCreateAddressLists: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AddressLists", 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 + } + m.AddressLists = append(m.AddressLists, &AddressListInput{}) + if err := m.AddressLists[len(m.AddressLists)-1].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 *MsgCreateAddressListsResponse) 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: MsgCreateAddressListsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCreateAddressListsResponse: 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 *MsgTransferTokens) 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: MsgTransferTokens: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgTransferTokens: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", 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 + } + if err := m.CollectionId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Transfers", 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 + } + m.Transfers = append(m.Transfers, &Transfer{}) + if err := m.Transfers[len(m.Transfers)-1].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 *MsgTransferTokensResponse) 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: MsgTransferTokensResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgTransferTokensResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalsUsed", 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 + } + m.ApprovalsUsed = append(m.ApprovalsUsed, &ApprovalUsed{}) + if err := m.ApprovalsUsed[len(m.ApprovalsUsed)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CoinTransfers", 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 + } + m.CoinTransfers = append(m.CoinTransfers, &CoinTransferProto{}) + if err := m.CoinTransfers[len(m.CoinTransfers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BalancesTransferred", 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 + } + m.BalancesTransferred = append(m.BalancesTransferred, &Balance{}) + if err := m.BalancesTransferred[len(m.BalancesTransferred)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ReviewItems", 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.ReviewItems = append(m.ReviewItems, 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 *MsgDeleteCollection) 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: MsgDeleteCollection: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgDeleteCollection: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", 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 + } + if err := m.CollectionId.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 *MsgDeleteCollectionResponse) 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: MsgDeleteCollectionResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgDeleteCollectionResponse: 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 *MsgUpdateUserApprovals) 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: MsgUpdateUserApprovals: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateUserApprovals: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", 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 + } + if err := m.CollectionId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateOutgoingApprovals", 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.UpdateOutgoingApprovals = bool(v != 0) + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OutgoingApprovals", 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 + } + m.OutgoingApprovals = append(m.OutgoingApprovals, &UserOutgoingApproval{}) + if err := m.OutgoingApprovals[len(m.OutgoingApprovals)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateIncomingApprovals", 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.UpdateIncomingApprovals = bool(v != 0) + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IncomingApprovals", 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 + } + m.IncomingApprovals = append(m.IncomingApprovals, &UserIncomingApproval{}) + if err := m.IncomingApprovals[len(m.IncomingApprovals)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateAutoApproveSelfInitiatedOutgoingTransfers", 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.UpdateAutoApproveSelfInitiatedOutgoingTransfers = bool(v != 0) + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AutoApproveSelfInitiatedOutgoingTransfers", 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.AutoApproveSelfInitiatedOutgoingTransfers = bool(v != 0) + case 9: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateAutoApproveSelfInitiatedIncomingTransfers", 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.UpdateAutoApproveSelfInitiatedIncomingTransfers = bool(v != 0) + case 10: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AutoApproveSelfInitiatedIncomingTransfers", 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.AutoApproveSelfInitiatedIncomingTransfers = bool(v != 0) + case 11: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateAutoApproveAllIncomingTransfers", 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.UpdateAutoApproveAllIncomingTransfers = bool(v != 0) + case 12: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AutoApproveAllIncomingTransfers", 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.AutoApproveAllIncomingTransfers = bool(v != 0) + case 13: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field UpdateUserPermissions", 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.UpdateUserPermissions = bool(v != 0) + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UserPermissions", 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 m.UserPermissions == nil { + m.UserPermissions = &UserPermissions{} + } + if err := m.UserPermissions.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 *MsgUpdateUserApprovalsResponse) 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: MsgUpdateUserApprovalsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateUserApprovalsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IncomingChanges", 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 + } + m.IncomingChanges = append(m.IncomingChanges, &ApprovalChange{}) + if err := m.IncomingChanges[len(m.IncomingChanges)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OutgoingChanges", 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 + } + m.OutgoingChanges = append(m.OutgoingChanges, &ApprovalChange{}) + if err := m.OutgoingChanges[len(m.OutgoingChanges)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ReviewItems", 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.ReviewItems = append(m.ReviewItems, 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 *MsgSetIncomingApproval) 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: MsgSetIncomingApproval: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSetIncomingApproval: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", 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 + } + if err := m.CollectionId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Approval", 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 m.Approval == nil { + m.Approval = &UserIncomingApproval{} + } + if err := m.Approval.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 *MsgSetIncomingApprovalResponse) 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: MsgSetIncomingApprovalResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSetIncomingApprovalResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Action", 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.Action = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", 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.Version = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ReviewItems", 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.ReviewItems = append(m.ReviewItems, 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 *MsgDeleteIncomingApproval) 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: MsgDeleteIncomingApproval: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgDeleteIncomingApproval: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", 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 + } + if err := m.CollectionId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalId", 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.ApprovalId = 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 *MsgDeleteIncomingApprovalResponse) 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: MsgDeleteIncomingApprovalResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgDeleteIncomingApprovalResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Found", 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.Found = bool(v != 0) + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", 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.Version = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ReviewItems", 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.ReviewItems = append(m.ReviewItems, 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 *MsgSetOutgoingApproval) 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: MsgSetOutgoingApproval: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSetOutgoingApproval: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", 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 + } + if err := m.CollectionId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Approval", 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 m.Approval == nil { + m.Approval = &UserOutgoingApproval{} + } + if err := m.Approval.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 *MsgSetOutgoingApprovalResponse) 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: MsgSetOutgoingApprovalResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSetOutgoingApprovalResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Action", 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.Action = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", 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.Version = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ReviewItems", 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.ReviewItems = append(m.ReviewItems, 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 *MsgDeleteOutgoingApproval) 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: MsgDeleteOutgoingApproval: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgDeleteOutgoingApproval: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", 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 + } + if err := m.CollectionId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalId", 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.ApprovalId = 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 *MsgDeleteOutgoingApprovalResponse) 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: MsgDeleteOutgoingApprovalResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgDeleteOutgoingApprovalResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Found", 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.Found = bool(v != 0) + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", 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.Version = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ReviewItems", 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.ReviewItems = append(m.ReviewItems, 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 *MsgPurgeApprovals) 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: MsgPurgeApprovals: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgPurgeApprovals: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", 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 + } + if err := m.CollectionId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PurgeExpired", 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.PurgeExpired = bool(v != 0) + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApproverAddress", 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.ApproverAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PurgeCounterpartyApprovals", 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.PurgeCounterpartyApprovals = bool(v != 0) + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalsToPurge", 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 + } + m.ApprovalsToPurge = append(m.ApprovalsToPurge, &ApprovalIdentifierDetails{}) + if err := m.ApprovalsToPurge[len(m.ApprovalsToPurge)-1].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 *MsgPurgeApprovalsResponse) 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: MsgPurgeApprovalsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgPurgeApprovalsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NumPurged", 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 + } + if err := m.NumPurged.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PurgedApprovalIds", 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.PurgedApprovalIds = append(m.PurgedApprovalIds, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ReviewItems", 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.ReviewItems = append(m.ReviewItems, 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 *MsgCreateDynamicStore) 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: MsgCreateDynamicStore: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCreateDynamicStore: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DefaultValue", 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.DefaultValue = bool(v != 0) + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Uri", 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.Uri = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CustomData", 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.CustomData = 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 *MsgCreateDynamicStoreResponse) 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: MsgCreateDynamicStoreResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCreateDynamicStoreResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StoreId", 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 + } + if err := m.StoreId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ReviewItems", 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.ReviewItems = append(m.ReviewItems, 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 *MsgUpdateDynamicStore) 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: MsgUpdateDynamicStore: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateDynamicStore: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StoreId", 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 + } + if err := m.StoreId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DefaultValue", 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.DefaultValue = bool(v != 0) + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field GlobalEnabled", 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.GlobalEnabled = bool(v != 0) + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Uri", 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.Uri = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CustomData", 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.CustomData = 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 *MsgUpdateDynamicStoreResponse) 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: MsgUpdateDynamicStoreResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgUpdateDynamicStoreResponse: 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 *MsgDeleteDynamicStore) 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: MsgDeleteDynamicStore: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgDeleteDynamicStore: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StoreId", 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 + } + if err := m.StoreId.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 *MsgDeleteDynamicStoreResponse) 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: MsgDeleteDynamicStoreResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgDeleteDynamicStoreResponse: 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 *MsgSetDynamicStoreValue) 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: MsgSetDynamicStoreValue: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSetDynamicStoreValue: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StoreId", 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 + } + if err := m.StoreId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Address", 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.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Value", 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.Value = 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 *MsgSetDynamicStoreValueResponse) 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: MsgSetDynamicStoreValueResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSetDynamicStoreValueResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PreviousValue", 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.PreviousValue = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ReviewItems", 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.ReviewItems = append(m.ReviewItems, 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 *MsgSetValidTokenIds) 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: MsgSetValidTokenIds: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSetValidTokenIds: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", 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 + } + if err := m.CollectionId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ValidTokenIds", 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 + } + m.ValidTokenIds = append(m.ValidTokenIds, &UintRange{}) + if err := m.ValidTokenIds[len(m.ValidTokenIds)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CanUpdateValidTokenIds", 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 + } + m.CanUpdateValidTokenIds = append(m.CanUpdateValidTokenIds, &TokenIdsActionPermission{}) + if err := m.CanUpdateValidTokenIds[len(m.CanUpdateValidTokenIds)-1].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 *MsgSetValidTokenIdsResponse) 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: MsgSetValidTokenIdsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSetValidTokenIdsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", 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 + } + if err := m.CollectionId.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 *MsgSetManager) 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: MsgSetManager: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSetManager: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", 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 + } + if err := m.CollectionId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Manager", 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.Manager = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CanUpdateManager", 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 + } + m.CanUpdateManager = append(m.CanUpdateManager, &ActionPermission{}) + if err := m.CanUpdateManager[len(m.CanUpdateManager)-1].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 *MsgSetManagerResponse) 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: MsgSetManagerResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSetManagerResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", 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 + } + if err := m.CollectionId.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 *MsgSetCollectionMetadata) 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: MsgSetCollectionMetadata: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSetCollectionMetadata: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", 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 + } + if err := m.CollectionId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionMetadata", 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 m.CollectionMetadata == nil { + m.CollectionMetadata = &CollectionMetadata{} + } + if err := m.CollectionMetadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CanUpdateCollectionMetadata", 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 + } + m.CanUpdateCollectionMetadata = append(m.CanUpdateCollectionMetadata, &ActionPermission{}) + if err := m.CanUpdateCollectionMetadata[len(m.CanUpdateCollectionMetadata)-1].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 *MsgSetCollectionMetadataResponse) 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: MsgSetCollectionMetadataResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSetCollectionMetadataResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", 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 + } + if err := m.CollectionId.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 *MsgSetTokenMetadata) 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: MsgSetTokenMetadata: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSetTokenMetadata: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", 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 + } + if err := m.CollectionId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TokenMetadata", 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 + } + m.TokenMetadata = append(m.TokenMetadata, &TokenMetadata{}) + if err := m.TokenMetadata[len(m.TokenMetadata)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CanUpdateTokenMetadata", 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 + } + m.CanUpdateTokenMetadata = append(m.CanUpdateTokenMetadata, &TokenIdsActionPermission{}) + if err := m.CanUpdateTokenMetadata[len(m.CanUpdateTokenMetadata)-1].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 *MsgSetTokenMetadataResponse) 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: MsgSetTokenMetadataResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSetTokenMetadataResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", 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 + } + if err := m.CollectionId.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 *MsgSetCustomData) 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: MsgSetCustomData: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSetCustomData: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", 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 + } + if err := m.CollectionId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CustomData", 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.CustomData = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CanUpdateCustomData", 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 + } + m.CanUpdateCustomData = append(m.CanUpdateCustomData, &ActionPermission{}) + if err := m.CanUpdateCustomData[len(m.CanUpdateCustomData)-1].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 *MsgSetCustomDataResponse) 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: MsgSetCustomDataResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSetCustomDataResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", 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 + } + if err := m.CollectionId.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 *MsgSetStandards) 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: MsgSetStandards: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSetStandards: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", 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 + } + if err := m.CollectionId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Standards", 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.Standards = append(m.Standards, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CanUpdateStandards", 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 + } + m.CanUpdateStandards = append(m.CanUpdateStandards, &ActionPermission{}) + if err := m.CanUpdateStandards[len(m.CanUpdateStandards)-1].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 *MsgSetStandardsResponse) 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: MsgSetStandardsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSetStandardsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", 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 + } + if err := m.CollectionId.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 *MsgSetCollectionApprovals) 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: MsgSetCollectionApprovals: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSetCollectionApprovals: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", 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 + } + if err := m.CollectionId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionApprovals", 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 + } + m.CollectionApprovals = append(m.CollectionApprovals, &CollectionApproval{}) + if err := m.CollectionApprovals[len(m.CollectionApprovals)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CanUpdateCollectionApprovals", 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 + } + m.CanUpdateCollectionApprovals = append(m.CanUpdateCollectionApprovals, &CollectionApprovalPermission{}) + if err := m.CanUpdateCollectionApprovals[len(m.CanUpdateCollectionApprovals)-1].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 *MsgSetCollectionApprovalsResponse) 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: MsgSetCollectionApprovalsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSetCollectionApprovalsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", 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 + } + if err := m.CollectionId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalChanges", 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 + } + m.ApprovalChanges = append(m.ApprovalChanges, &ApprovalChange{}) + if err := m.ApprovalChanges[len(m.ApprovalChanges)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ReviewItems", 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.ReviewItems = append(m.ReviewItems, 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 *MsgSetIsArchived) 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: MsgSetIsArchived: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSetIsArchived: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", 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 + } + if err := m.CollectionId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IsArchived", 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.IsArchived = bool(v != 0) + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CanArchiveCollection", 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 + } + m.CanArchiveCollection = append(m.CanArchiveCollection, &ActionPermission{}) + if err := m.CanArchiveCollection[len(m.CanArchiveCollection)-1].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 *MsgSetIsArchivedResponse) 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: MsgSetIsArchivedResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSetIsArchivedResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", 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 + } + if err := m.CollectionId.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 *MsgSetReservedProtocolAddress) 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: MsgSetReservedProtocolAddress: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSetReservedProtocolAddress: 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 Address", 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.Address = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IsReservedProtocol", 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.IsReservedProtocol = 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 *MsgSetReservedProtocolAddressResponse) 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: MsgSetReservedProtocolAddressResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSetReservedProtocolAddressResponse: 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 *MsgCastVote) 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: MsgCastVote: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCastVote: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Creator", 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.Creator = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectionId", 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 + } + if err := m.CollectionId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalLevel", 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.ApprovalLevel = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApproverAddress", 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.ApproverAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalId", 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.ApprovalId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ProposalId", 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.ProposalId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field YesWeight", 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 + } + if err := m.YesWeight.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 *MsgCastVoteResponse) 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: MsgCastVoteResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCastVoteResponse: 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 *ApprovalUsed) 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: ApprovalUsed: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ApprovalUsed: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalId", 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.ApprovalId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalLevel", 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.ApprovalLevel = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApproverAddress", 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.ApproverAddress = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", 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.Version = 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 *CoinTransferProto) 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: CoinTransferProto: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CoinTransferProto: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field From", 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.From = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field To", 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.To = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Amount", 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.Amount = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Denom", 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.Denom = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IsProtocolFee", 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.IsProtocolFee = 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 *ApprovalChange) 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: ApprovalChange: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ApprovalChange: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalId", 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.ApprovalId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ApprovalLevel", 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.ApprovalLevel = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Action", 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.Action = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Version", 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.Version = 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 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/tokenization/types/v29/user_balance_store.pb.go b/x/tokenization/types/v29/user_balance_store.pb.go new file mode 100644 index 00000000..6254719f --- /dev/null +++ b/x/tokenization/types/v29/user_balance_store.pb.go @@ -0,0 +1,677 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: tokenization/v29/user_balance_store.proto + +package v29 + +import ( + fmt "fmt" + _ "github.com/cosmos/gogoproto/gogoproto" + 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 + +// UserBalanceStore is the store for the user balances for a collection. +// +// It consists of a list of balances, a list of approved outgoing transfers, and a list of approved incoming transfers, +// as well as the permissions for updating the approved incoming/outgoing transfers. +// +// Upon initialization, all fields (minus the balances) are set to the defaults specified by the collection. +// +// The outgoing transfers can be used to allow / disallow transfers which are sent from this user. +// If a transfer has no match, then it is disallowed by default, unless from == initiatedBy (i.e. initiated by this user) +// and autoApproveSelfInitiatedOutgoingTransfers is set to true. +// +// The incoming transfers can be used to allow / disallow transfers which are sent to this user. +// If a transfer has no match, then it is disallowed by default, unless to == initiatedBy (i.e. initiated by this user) +// and autoApproveSelfInitiatedIncomingTransfers is set to true. +// +// Note that the user approved transfers are only checked if the collection approved transfers do not specify to override +// the user approved transfers. +// +// The permissions are used to determine whether the user can update the approved incoming/outgoing transfers and auto approvals. +type UserBalanceStore struct { + // The list of balances associated with this user. + Balances []*Balance `protobuf:"bytes,1,rep,name=balances,proto3" json:"balances,omitempty"` + // The list of approved outgoing transfers for this user. + OutgoingApprovals []*UserOutgoingApproval `protobuf:"bytes,2,rep,name=outgoingApprovals,proto3" json:"outgoingApprovals,omitempty"` + // The list of approved incoming transfers for this user. + IncomingApprovals []*UserIncomingApproval `protobuf:"bytes,3,rep,name=incomingApprovals,proto3" json:"incomingApprovals,omitempty"` + // Whether to auto-approve self-initiated outgoing transfers for this user (i.e. from == initiatedBy). + AutoApproveSelfInitiatedOutgoingTransfers bool `protobuf:"varint,4,opt,name=autoApproveSelfInitiatedOutgoingTransfers,proto3" json:"autoApproveSelfInitiatedOutgoingTransfers,omitempty"` + // Whether to auto-approve self-initiated incoming transfers for this user (i.e. to == initiatedBy). + AutoApproveSelfInitiatedIncomingTransfers bool `protobuf:"varint,5,opt,name=autoApproveSelfInitiatedIncomingTransfers,proto3" json:"autoApproveSelfInitiatedIncomingTransfers,omitempty"` + // Whether to auto-approve all incoming transfers by default. + // This is just shorthand for adding an accept everything incoming approval + // with no restrictions. + AutoApproveAllIncomingTransfers bool `protobuf:"varint,6,opt,name=autoApproveAllIncomingTransfers,proto3" json:"autoApproveAllIncomingTransfers,omitempty"` + // The permissions for this user's actions and transfers. + UserPermissions *UserPermissions `protobuf:"bytes,7,opt,name=userPermissions,proto3" json:"userPermissions,omitempty"` +} + +func (m *UserBalanceStore) Reset() { *m = UserBalanceStore{} } +func (m *UserBalanceStore) String() string { return proto.CompactTextString(m) } +func (*UserBalanceStore) ProtoMessage() {} +func (*UserBalanceStore) Descriptor() ([]byte, []int) { + return fileDescriptor_780c01e9fda131c4, []int{0} +} +func (m *UserBalanceStore) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *UserBalanceStore) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_UserBalanceStore.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 *UserBalanceStore) XXX_Merge(src proto.Message) { + xxx_messageInfo_UserBalanceStore.Merge(m, src) +} +func (m *UserBalanceStore) XXX_Size() int { + return m.Size() +} +func (m *UserBalanceStore) XXX_DiscardUnknown() { + xxx_messageInfo_UserBalanceStore.DiscardUnknown(m) +} + +var xxx_messageInfo_UserBalanceStore proto.InternalMessageInfo + +func (m *UserBalanceStore) GetBalances() []*Balance { + if m != nil { + return m.Balances + } + return nil +} + +func (m *UserBalanceStore) GetOutgoingApprovals() []*UserOutgoingApproval { + if m != nil { + return m.OutgoingApprovals + } + return nil +} + +func (m *UserBalanceStore) GetIncomingApprovals() []*UserIncomingApproval { + if m != nil { + return m.IncomingApprovals + } + return nil +} + +func (m *UserBalanceStore) GetAutoApproveSelfInitiatedOutgoingTransfers() bool { + if m != nil { + return m.AutoApproveSelfInitiatedOutgoingTransfers + } + return false +} + +func (m *UserBalanceStore) GetAutoApproveSelfInitiatedIncomingTransfers() bool { + if m != nil { + return m.AutoApproveSelfInitiatedIncomingTransfers + } + return false +} + +func (m *UserBalanceStore) GetAutoApproveAllIncomingTransfers() bool { + if m != nil { + return m.AutoApproveAllIncomingTransfers + } + return false +} + +func (m *UserBalanceStore) GetUserPermissions() *UserPermissions { + if m != nil { + return m.UserPermissions + } + return nil +} + +func init() { + proto.RegisterType((*UserBalanceStore)(nil), "tokenization.v29.UserBalanceStore") +} + +func init() { + proto.RegisterFile("tokenization/v29/user_balance_store.proto", fileDescriptor_780c01e9fda131c4) +} + +var fileDescriptor_780c01e9fda131c4 = []byte{ + // 378 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0x31, 0x4f, 0xf2, 0x40, + 0x18, 0xc7, 0xe9, 0x0b, 0x2f, 0x2f, 0x39, 0x86, 0x17, 0x1b, 0x87, 0xca, 0x50, 0x2a, 0x83, 0x81, + 0xa5, 0x4d, 0x6a, 0x1c, 0x48, 0x5c, 0x60, 0x92, 0x38, 0x68, 0x0a, 0x3a, 0x18, 0x13, 0x72, 0x2d, + 0x47, 0xb9, 0x58, 0xee, 0x9a, 0xbb, 0x2b, 0x51, 0x3f, 0x85, 0x1f, 0x8b, 0x91, 0xd1, 0xd1, 0xc0, + 0x17, 0x31, 0x2d, 0xad, 0x40, 0xcf, 0xa0, 0xdb, 0x93, 0xf6, 0xf7, 0xff, 0x3d, 0x4f, 0x2e, 0x7f, + 0xd0, 0x16, 0xf4, 0x09, 0x11, 0xfc, 0x0a, 0x05, 0xa6, 0xc4, 0x9a, 0xdb, 0x1d, 0x2b, 0xe2, 0x88, + 0x8d, 0x5c, 0x18, 0x40, 0xe2, 0xa1, 0x11, 0x17, 0x94, 0x21, 0x33, 0x64, 0x54, 0x50, 0xb5, 0xb6, + 0x8b, 0x9a, 0x73, 0xbb, 0x53, 0x3f, 0xf6, 0xa9, 0x4f, 0x93, 0x9f, 0x56, 0x3c, 0x6d, 0xb8, 0x7a, + 0x43, 0x52, 0xa6, 0x36, 0x9e, 0x02, 0x4d, 0x09, 0x08, 0x11, 0x9b, 0x61, 0xce, 0x31, 0x25, 0x19, + 0x63, 0x48, 0x0c, 0x0c, 0x43, 0x46, 0xe7, 0x30, 0x48, 0x89, 0xe6, 0xa2, 0x04, 0x6a, 0x77, 0x1c, + 0xb1, 0xde, 0x46, 0x3e, 0x88, 0x2f, 0x55, 0x2f, 0x40, 0x25, 0x5b, 0xa6, 0x29, 0x46, 0xb1, 0x55, + 0xb5, 0x4f, 0xcc, 0xfc, 0xd9, 0x66, 0x9a, 0x70, 0xbe, 0x50, 0x75, 0x08, 0x8e, 0x68, 0x24, 0x7c, + 0x8a, 0x89, 0xdf, 0xcd, 0xd6, 0x68, 0x7f, 0x92, 0xfc, 0x99, 0x9c, 0x8f, 0xb7, 0xde, 0xe4, 0x70, + 0x47, 0x16, 0xc4, 0x56, 0x4c, 0x3c, 0x3a, 0xdb, 0xb3, 0x16, 0x0f, 0x59, 0xfb, 0x39, 0xdc, 0x91, + 0x05, 0xea, 0x23, 0x68, 0xc3, 0x48, 0xd0, 0xcd, 0x07, 0x34, 0x40, 0xc1, 0xa4, 0x4f, 0xb0, 0xc0, + 0x50, 0xa0, 0x71, 0x76, 0xd4, 0x90, 0x41, 0xc2, 0x27, 0x88, 0x71, 0xad, 0x64, 0x28, 0xad, 0x8a, + 0xf3, 0xfb, 0xc0, 0x21, 0x7b, 0x76, 0xdc, 0xd6, 0xfe, 0xf7, 0xb0, 0x5d, 0x0a, 0xa8, 0x57, 0xa0, + 0xb1, 0x03, 0x77, 0x83, 0x40, 0x76, 0x96, 0x13, 0xe7, 0x4f, 0x98, 0x7a, 0x0d, 0xfe, 0xc7, 0x45, + 0xbd, 0xdd, 0x16, 0x47, 0xfb, 0x67, 0x28, 0xad, 0xaa, 0x7d, 0xfa, 0xfd, 0xcb, 0xee, 0x80, 0x4e, + 0x3e, 0xd9, 0xbb, 0x5f, 0xac, 0x74, 0x65, 0xb9, 0xd2, 0x95, 0x8f, 0x95, 0xae, 0xbc, 0xad, 0xf5, + 0xc2, 0x72, 0xad, 0x17, 0xde, 0xd7, 0x7a, 0xe1, 0xe1, 0xd2, 0xc7, 0x62, 0x1a, 0xb9, 0xa6, 0x47, + 0x67, 0x96, 0x8b, 0x85, 0x0b, 0xc7, 0x3e, 0xe2, 0xdb, 0xc9, 0x9b, 0x42, 0x4c, 0xac, 0x67, 0x6b, + 0xaf, 0xac, 0xe2, 0x25, 0x44, 0x3c, 0xae, 0xac, 0x5b, 0x4e, 0x9a, 0x7a, 0xfe, 0x19, 0x00, 0x00, + 0xff, 0xff, 0xce, 0x5c, 0x43, 0x57, 0x65, 0x03, 0x00, 0x00, +} + +func (m *UserBalanceStore) 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 *UserBalanceStore) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *UserBalanceStore) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.UserPermissions != nil { + { + size, err := m.UserPermissions.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintUserBalanceStore(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + if m.AutoApproveAllIncomingTransfers { + i-- + if m.AutoApproveAllIncomingTransfers { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x30 + } + if m.AutoApproveSelfInitiatedIncomingTransfers { + i-- + if m.AutoApproveSelfInitiatedIncomingTransfers { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x28 + } + if m.AutoApproveSelfInitiatedOutgoingTransfers { + i-- + if m.AutoApproveSelfInitiatedOutgoingTransfers { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x20 + } + if len(m.IncomingApprovals) > 0 { + for iNdEx := len(m.IncomingApprovals) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.IncomingApprovals[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintUserBalanceStore(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.OutgoingApprovals) > 0 { + for iNdEx := len(m.OutgoingApprovals) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.OutgoingApprovals[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintUserBalanceStore(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.Balances) > 0 { + for iNdEx := len(m.Balances) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Balances[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintUserBalanceStore(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func encodeVarintUserBalanceStore(dAtA []byte, offset int, v uint64) int { + offset -= sovUserBalanceStore(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *UserBalanceStore) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Balances) > 0 { + for _, e := range m.Balances { + l = e.Size() + n += 1 + l + sovUserBalanceStore(uint64(l)) + } + } + if len(m.OutgoingApprovals) > 0 { + for _, e := range m.OutgoingApprovals { + l = e.Size() + n += 1 + l + sovUserBalanceStore(uint64(l)) + } + } + if len(m.IncomingApprovals) > 0 { + for _, e := range m.IncomingApprovals { + l = e.Size() + n += 1 + l + sovUserBalanceStore(uint64(l)) + } + } + if m.AutoApproveSelfInitiatedOutgoingTransfers { + n += 2 + } + if m.AutoApproveSelfInitiatedIncomingTransfers { + n += 2 + } + if m.AutoApproveAllIncomingTransfers { + n += 2 + } + if m.UserPermissions != nil { + l = m.UserPermissions.Size() + n += 1 + l + sovUserBalanceStore(uint64(l)) + } + return n +} + +func sovUserBalanceStore(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozUserBalanceStore(x uint64) (n int) { + return sovUserBalanceStore(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *UserBalanceStore) 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 ErrIntOverflowUserBalanceStore + } + 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: UserBalanceStore: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: UserBalanceStore: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Balances", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowUserBalanceStore + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthUserBalanceStore + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthUserBalanceStore + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Balances = append(m.Balances, &Balance{}) + if err := m.Balances[len(m.Balances)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OutgoingApprovals", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowUserBalanceStore + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthUserBalanceStore + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthUserBalanceStore + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OutgoingApprovals = append(m.OutgoingApprovals, &UserOutgoingApproval{}) + if err := m.OutgoingApprovals[len(m.OutgoingApprovals)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IncomingApprovals", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowUserBalanceStore + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthUserBalanceStore + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthUserBalanceStore + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.IncomingApprovals = append(m.IncomingApprovals, &UserIncomingApproval{}) + if err := m.IncomingApprovals[len(m.IncomingApprovals)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AutoApproveSelfInitiatedOutgoingTransfers", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowUserBalanceStore + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.AutoApproveSelfInitiatedOutgoingTransfers = bool(v != 0) + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AutoApproveSelfInitiatedIncomingTransfers", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowUserBalanceStore + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.AutoApproveSelfInitiatedIncomingTransfers = bool(v != 0) + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AutoApproveAllIncomingTransfers", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowUserBalanceStore + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.AutoApproveAllIncomingTransfers = bool(v != 0) + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UserPermissions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowUserBalanceStore + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthUserBalanceStore + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthUserBalanceStore + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.UserPermissions == nil { + m.UserPermissions = &UserPermissions{} + } + if err := m.UserPermissions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipUserBalanceStore(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthUserBalanceStore + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipUserBalanceStore(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, ErrIntOverflowUserBalanceStore + } + 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, ErrIntOverflowUserBalanceStore + } + 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, ErrIntOverflowUserBalanceStore + } + 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, ErrInvalidLengthUserBalanceStore + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupUserBalanceStore + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthUserBalanceStore + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthUserBalanceStore = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowUserBalanceStore = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupUserBalanceStore = fmt.Errorf("proto: unexpected end of group") +) From 0b360ad4f8916b58abd53803627a7cfabf2cf9aa Mon Sep 17 00:00:00 2001 From: Trevor Miller Date: Mon, 20 Apr 2026 13:23:38 -0400 Subject: [PATCH 09/24] feat(upgrades): introduce v30 upgrade with new migration logic and update version references This commit updates the application to version 30, introducing a new upgrade handler for the tokenization module. The changes include: - Updated the Makefile to set VERSION to v30. - Replaced references to the previous upgrade version (v29) in the upgrades.go file with v30. - Added a new file for the v30 upgrade logic, which includes a custom upgrade handler for migrating tokenization data. - Updated the tokenization module to reflect the new consensus version of 30. These changes enhance the upgrade process and ensure compatibility with the latest features in the tokenization module. --- Makefile | 2 +- app/upgrades.go | 8 ++++---- app/upgrades/{v29 => v30}/upgrades.go | 4 ++-- docs/static/openapi.yml | 2 +- x/tokenization/keeper/migrations.go | 2 +- x/tokenization/module/module.go | 2 +- 6 files changed, 10 insertions(+), 10 deletions(-) rename app/upgrades/{v29 => v30}/upgrades.go (97%) diff --git a/Makefile b/Makefile index d796423e..ca6d40e0 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ # Version must be provided as a CLI argument -VERSION := v29 +VERSION := v30 # Common ldflags for version information LDFLAGS := -X github.com/cosmos/cosmos-sdk/version.Name=bitbadgeschain \ diff --git a/app/upgrades.go b/app/upgrades.go index 75666d1a..cb338acf 100644 --- a/app/upgrades.go +++ b/app/upgrades.go @@ -3,14 +3,14 @@ package app import ( storetypes "cosmossdk.io/store/types" upgradetypes "cosmossdk.io/x/upgrade/types" - v29 "github.com/bitbadges/bitbadgeschain/app/upgrades/v29" + v30 "github.com/bitbadges/bitbadgeschain/app/upgrades/v30" ) // RegisterUpgradeHandlers registers all upgrade handlers func (app *App) RegisterUpgradeHandlers() { app.UpgradeKeeper.SetUpgradeHandler( - v29.UpgradeName, - v29.CreateUpgradeHandler( + v30.UpgradeName, + v30.CreateUpgradeHandler( app.ModuleManager, app.Configurator(), *app.TokenizationKeeper, @@ -34,7 +34,7 @@ func (app *App) RegisterUpgradeHandlers() { var storeUpgrades *storetypes.StoreUpgrades switch upgradeInfo.Name { - case v29.UpgradeName: + case v30.UpgradeName: storeUpgrades = &storetypes.StoreUpgrades{ Renamed: []storetypes.StoreRename{}, Deleted: []string{}, diff --git a/app/upgrades/v29/upgrades.go b/app/upgrades/v30/upgrades.go similarity index 97% rename from app/upgrades/v29/upgrades.go rename to app/upgrades/v30/upgrades.go index 953da57c..7a5a001f 100644 --- a/app/upgrades/v29/upgrades.go +++ b/app/upgrades/v30/upgrades.go @@ -1,4 +1,4 @@ -package v29 +package v30 import ( "context" @@ -13,7 +13,7 @@ import ( ) const ( - UpgradeName = "v29" + UpgradeName = "v30" ) // This is in a separate function so we can test it locally with a snapshot diff --git a/docs/static/openapi.yml b/docs/static/openapi.yml index b290be72..bc363621 100644 --- a/docs/static/openapi.yml +++ b/docs/static/openapi.yml @@ -1 +1 @@ -{"id":"github.com/bitbadges/bitbadgeschain","consumes":["application/json"],"produces":["application/json"],"swagger":"2.0","info":{"description":"Chain github.com/bitbadges/bitbadgeschain REST API","title":"HTTP API Console","contact":{"name":"github.com/bitbadges/bitbadgeschain"},"version":"version not set"},"paths":{"/anchor.Msg/AddCustomData":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_AddCustomData","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/anchor.MsgAddCustomData"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/anchor.MsgAddCustomDataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/anchor.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.","operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateParams","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/anchor.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/anchor.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/managersplitter":{"get":{"tags":["Query"],"summary":"AllManagerSplitters queries all manager splitters.","operationId":"GithubCombitbadgesbitbadgeschainQuery_AllManagerSplitters","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/managersplitter.QueryAllManagerSplittersResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/managersplitter/params":{"get":{"tags":["Query"],"summary":"Parameters queries the parameters of the module.","operationId":"GithubCombitbadgesbitbadgeschainQuery_ParamsMixin27","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/managersplitter.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/managersplitter/{address}":{"get":{"tags":["Query"],"summary":"ManagerSplitter queries a manager splitter by address.","operationId":"GithubCombitbadgesbitbadgeschainQuery_ManagerSplitter","parameters":[{"type":"string","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/managersplitter.QueryGetManagerSplitterResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/maps/params":{"get":{"tags":["Query"],"summary":"Parameters queries the parameters of the module.","operationId":"GithubCombitbadgesbitbadgeschainQuery_ParamsMixin35","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/maps.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/maps/{mapId}":{"get":{"tags":["Query"],"operationId":"GithubCombitbadgesbitbadgeschainQuery_Map","parameters":[{"type":"string","name":"mapId","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/maps.QueryGetMapResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/maps/{mapId}/{key}":{"get":{"tags":["Query"],"operationId":"GithubCombitbadgesbitbadgeschainQuery_MapValue","parameters":[{"type":"string","name":"mapId","in":"path","required":true},{"type":"string","name":"key","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/maps.QueryGetMapValueResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/sendmanager/balance/{address}/{denom}":{"get":{"tags":["Query"],"summary":"Balance queries the balance of a specific denom for an address with alias routing.\nThis allows querying both standard coins and alias denoms (e.g., badgeslp:).","operationId":"GithubCombitbadgesbitbadgeschainQuery_Balance","parameters":[{"type":"string","description":"address is the address to query balances for.","name":"address","in":"path","required":true},{"type":"string","description":"denom is the specific denomination to query the balance for.","name":"denom","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/sendmanager.QueryBalanceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/sendmanager/params":{"get":{"tags":["Query"],"summary":"Parameters queries the parameters of the module.","operationId":"GithubCombitbadgesbitbadgeschainQuery_ParamsMixin47","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/sendmanager.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/tokenization/get_address_list/{listId}":{"get":{"tags":["Query"],"summary":"Queries an address list by ID.","operationId":"GithubCombitbadgesbitbadgeschainQuery_GetAddressList","parameters":[{"type":"string","name":"listId","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.QueryGetAddressListResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/tokenization/get_all_reserved_protocol_addresses":{"get":{"tags":["Query"],"summary":"Queries all reserved protocol addresses.","operationId":"GithubCombitbadgesbitbadgeschainQuery_GetAllReservedProtocolAddresses","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.QueryGetAllReservedProtocolAddressesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/tokenization/get_approvals_tracker/{collectionId}/{approvalLevel}/{approverAddress}/{amountTrackerId}/{trackerType}/{approvedAddress}":{"get":{"tags":["Query"],"summary":"Queries an approvals tracker by ID.","operationId":"GithubCombitbadgesbitbadgeschainQuery_GetApprovalTracker","parameters":[{"type":"string","name":"collectionId","in":"path","required":true},{"type":"string","description":"\"collection\" or \"incoming\" or \"outgoing\"","name":"approvalLevel","in":"path","required":true},{"type":"string","description":"if approvalLevel is \"collection\", leave blank","name":"approverAddress","in":"path","required":true},{"type":"string","name":"amountTrackerId","in":"path","required":true},{"type":"string","name":"trackerType","in":"path","required":true},{"type":"string","description":"if trackerType is \"overall\", leave blank","name":"approvedAddress","in":"path","required":true},{"type":"string","name":"approvalId","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.QueryGetApprovalTrackerResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/tokenization/get_balance/{collectionId}/{address}":{"get":{"tags":["Query"],"summary":"Queries an addresses balance for a collection, specified by its ID.","operationId":"GithubCombitbadgesbitbadgeschainQuery_GetBalance","parameters":[{"type":"string","name":"collectionId","in":"path","required":true},{"type":"string","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.QueryGetBalanceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/tokenization/get_balance_for_token/{collectionId}/{address}/{tokenId}":{"get":{"tags":["Query"],"summary":"Queries the balance amount for a specific token ID at a specific time.","operationId":"GithubCombitbadgesbitbadgeschainQuery_GetBalanceForToken","parameters":[{"type":"string","name":"collectionId","in":"path","required":true},{"type":"string","name":"address","in":"path","required":true},{"type":"string","name":"tokenId","in":"path","required":true},{"type":"string","description":"Optional - milliseconds since epoch, defaults to current block time","name":"time","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.QueryGetBalanceForTokenResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/tokenization/get_challenge_tracker/{collectionId}/{approvalLevel}/{approverAddress}/{challengeTrackerId}/{leafIndex}":{"get":{"tags":["Query"],"summary":"Queries the number of times a given leaf has been used for a given merkle challenge.","operationId":"GithubCombitbadgesbitbadgeschainQuery_GetChallengeTracker","parameters":[{"type":"string","name":"collectionId","in":"path","required":true},{"type":"string","description":"\"collection\" or \"incoming\" or \"outgoing\"","name":"approvalLevel","in":"path","required":true},{"type":"string","description":"if approvalLevel is \"collection\", leave blank","name":"approverAddress","in":"path","required":true},{"type":"string","name":"challengeTrackerId","in":"path","required":true},{"type":"string","name":"leafIndex","in":"path","required":true},{"type":"string","name":"approvalId","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.QueryGetChallengeTrackerResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/tokenization/get_collection/{collectionId}":{"get":{"tags":["Query"],"summary":"Queries a collection by ID.","operationId":"GithubCombitbadgesbitbadgeschainQuery_GetCollection","parameters":[{"type":"string","name":"collectionId","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.QueryGetCollectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/tokenization/get_collection_stats/{collectionId}":{"get":{"tags":["Query"],"summary":"Queries collection stats (holder count and circulating supply) by collection ID.","operationId":"GithubCombitbadgesbitbadgeschainQuery_GetCollectionStats","parameters":[{"type":"string","name":"collectionId","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.QueryGetCollectionStatsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/tokenization/get_dynamic_store/{storeId}":{"get":{"tags":["Query"],"summary":"Queries a dynamic store by ID.","operationId":"GithubCombitbadgesbitbadgeschainQuery_GetDynamicStore","parameters":[{"type":"string","name":"storeId","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.QueryGetDynamicStoreResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/tokenization/get_dynamic_store_value/{storeId}/{address}":{"get":{"tags":["Query"],"summary":"Queries a dynamic store value by store ID and address.","operationId":"GithubCombitbadgesbitbadgeschainQuery_GetDynamicStoreValue","parameters":[{"type":"string","name":"storeId","in":"path","required":true},{"type":"string","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.QueryGetDynamicStoreValueResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/tokenization/get_eth_signature_tracker/{collectionId}/{approvalLevel}/{approverAddress}/{approvalId}/{challengeTrackerId}/{signature}":{"get":{"tags":["Query"],"summary":"Queries the number of times a given signature has been used for a given ETH signature challenge.","operationId":"GithubCombitbadgesbitbadgeschainQuery_GetETHSignatureTracker","parameters":[{"type":"string","name":"collectionId","in":"path","required":true},{"type":"string","description":"\"collection\" or \"incoming\" or \"outgoing\"","name":"approvalLevel","in":"path","required":true},{"type":"string","description":"if approvalLevel is \"collection\", leave blank","name":"approverAddress","in":"path","required":true},{"type":"string","name":"approvalId","in":"path","required":true},{"type":"string","name":"challengeTrackerId","in":"path","required":true},{"type":"string","name":"signature","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.QueryGetETHSignatureTrackerResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/tokenization/get_vote/{collectionId}/{approvalLevel}/{approverAddress}/{approvalId}/{proposalId}/{voterAddress}":{"get":{"tags":["Query"],"summary":"Queries a vote by collection ID, approval level, approver address, approval ID, proposal ID, and voter address.","operationId":"GithubCombitbadgesbitbadgeschainQuery_GetVote","parameters":[{"type":"string","name":"collectionId","in":"path","required":true},{"type":"string","description":"\"collection\" or \"incoming\" or \"outgoing\"","name":"approvalLevel","in":"path","required":true},{"type":"string","description":"if approvalLevel is \"collection\", leave blank","name":"approverAddress","in":"path","required":true},{"type":"string","name":"approvalId","in":"path","required":true},{"type":"string","name":"proposalId","in":"path","required":true},{"type":"string","name":"voterAddress","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.QueryGetVoteResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/tokenization/get_votes/{collectionId}/{approvalLevel}/{approverAddress}/{approvalId}/{proposalId}":{"get":{"tags":["Query"],"summary":"Queries all votes for a proposal.","operationId":"GithubCombitbadgesbitbadgeschainQuery_GetVotes","parameters":[{"type":"string","name":"collectionId","in":"path","required":true},{"type":"string","description":"\"collection\" or \"incoming\" or \"outgoing\"","name":"approvalLevel","in":"path","required":true},{"type":"string","description":"if approvalLevel is \"collection\", leave blank","name":"approverAddress","in":"path","required":true},{"type":"string","name":"approvalId","in":"path","required":true},{"type":"string","name":"proposalId","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.QueryGetVotesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/tokenization/get_wrappable_balances/{denom}/{address}":{"get":{"tags":["Query"],"summary":"Queries the maximum wrappable amount for a given denom and user address.","operationId":"GithubCombitbadgesbitbadgeschainQuery_GetWrappableBalances","parameters":[{"type":"string","name":"denom","in":"path","required":true},{"type":"string","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.QueryGetWrappableBalancesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/tokenization/is_address_reserved_protocol/{address}":{"get":{"tags":["Query"],"summary":"Queries if an address is a reserved protocol address.","operationId":"GithubCombitbadgesbitbadgeschainQuery_IsAddressReservedProtocol","parameters":[{"type":"string","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.QueryIsAddressReservedProtocolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/tokenization/params":{"get":{"tags":["Query"],"summary":"Parameters queries the parameters of the module.","operationId":"GithubCombitbadgesbitbadgeschainQuery_ParamsMixin66","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadgeschain/anchor/locations/{locationId}":{"get":{"tags":["Query"],"operationId":"GithubCombitbadgesbitbadgeschainQuery_GetValueAtLocation","parameters":[{"type":"string","name":"locationId","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/anchor.QueryGetValueAtLocationResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadgeschain/anchor/params":{"get":{"tags":["Query"],"summary":"Parameters queries the parameters of the module.","operationId":"GithubCombitbadgesbitbadgeschainQuery_Params","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/anchor.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.evm.vm.v1.Msg/RegisterPreinstalls":{"post":{"tags":["Msg"],"summary":"RegisterPreinstalls defines a governance operation for directly registering\npreinstalled contracts in the EVM. The authority is the same as is used for\nParams updates.","operationId":"Erc20Msg_RegisterPreinstalls","parameters":[{"description":"MsgRegisterPreinstalls defines a Msg for creating preinstalls in evm state.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.MsgRegisterPreinstalls"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.MsgRegisterPreinstallsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.evm.vm.v1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defined a governance operation for updating the x/vm module\nparameters. The authority is hard-coded to the Cosmos SDK x/gov module\naccount","operationId":"Erc20Msg_UpdateParams","parameters":[{"description":"MsgUpdateParams defines a Msg for updating the x/vm module parameters.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evm/vm/v1/ethereum_tx":{"post":{"tags":["Msg"],"summary":"EthereumTx defines a method submitting Ethereum transactions.","operationId":"Erc20Msg_EthereumTx","parameters":[{"type":"string","format":"byte","description":"from is the bytes of ethereum signer address. This address value is checked\nagainst the address derived from the signature (V, R, S) using the\nsecp256k1 elliptic curve","name":"from","in":"query"},{"type":"string","format":"byte","description":"raw is the raw ethereum transaction","name":"raw","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.MsgEthereumTxResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/gamm.poolmodels.balancer.Msg/CreateBalancerPool":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CreateBalancerPool","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/gamm.poolmodels.balancer.MsgCreateBalancerPool"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.poolmodels.balancer.MsgCreateBalancerPoolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/gamm.poolmodels.stableswap.Msg/CreateStableswapPool":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CreateStableswapPool","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/gamm.poolmodels.stableswap.MsgCreateStableswapPool"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.poolmodels.stableswap.MsgCreateStableswapPoolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/gamm.poolmodels.stableswap.Msg/StableSwapAdjustScalingFactors":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_StableSwapAdjustScalingFactors","parameters":[{"description":"Sender must be the pool's scaling_factor_governor in order for the tx to\nsucceed. Adjusts stableswap scaling factors.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/gamm.poolmodels.stableswap.MsgStableSwapAdjustScalingFactors"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.poolmodels.stableswap.MsgStableSwapAdjustScalingFactorsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/gamm.v1beta1.Msg/ExitPool":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_ExitPool","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/gamm.v1beta1.MsgExitPool"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.MsgExitPoolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/gamm.v1beta1.Msg/ExitSwapExternAmountOut":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_ExitSwapExternAmountOut","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/gamm.v1beta1.MsgExitSwapExternAmountOut"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.MsgExitSwapExternAmountOutResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/gamm.v1beta1.Msg/ExitSwapShareAmountIn":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_ExitSwapShareAmountIn","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/gamm.v1beta1.MsgExitSwapShareAmountIn"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.MsgExitSwapShareAmountInResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/gamm.v1beta1.Msg/JoinPool":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_JoinPool","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/gamm.v1beta1.MsgJoinPool"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.MsgJoinPoolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/gamm.v1beta1.Msg/JoinSwapExternAmountIn":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_JoinSwapExternAmountIn","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/gamm.v1beta1.MsgJoinSwapExternAmountIn"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.MsgJoinSwapExternAmountInResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/gamm.v1beta1.Msg/JoinSwapShareAmountOut":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_JoinSwapShareAmountOut","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/gamm.v1beta1.MsgJoinSwapShareAmountOut"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.MsgJoinSwapShareAmountOutResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/gamm.v1beta1.Msg/SwapExactAmountIn":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SwapExactAmountIn","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/gamm.v1beta1.MsgSwapExactAmountIn"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.MsgSwapExactAmountInResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/gamm.v1beta1.Msg/SwapExactAmountInWithIBCTransfer":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SwapExactAmountInWithIBCTransfer","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/gamm.v1beta1.MsgSwapExactAmountInWithIBCTransfer"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.MsgSwapExactAmountInWithIBCTransferResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/gamm.v1beta1.Msg/SwapExactAmountOut":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SwapExactAmountOut","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/gamm.v1beta1.MsgSwapExactAmountOut"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.MsgSwapExactAmountOutResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/gamm.v1beta1.Query/CalcJoinPoolNoSwapShares":{"post":{"tags":["Query"],"summary":"Simulates joining pool without a swap. Returns the amount of shares you'd\nget and tokens needed to provide","operationId":"GithubCombitbadgesbitbadgeschainQuery_CalcJoinPoolNoSwapShares","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/gamm.v1beta1.QueryCalcJoinPoolNoSwapSharesRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.QueryCalcJoinPoolNoSwapSharesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibcratelimit.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.","operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateParamsMixin22","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibcratelimit.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibcratelimit.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibcratelimit.Msg/UpdateRateLimit":{"post":{"tags":["Msg"],"summary":"UpdateRateLimit defines a (governance) operation for updating or adding a single rate limit.\nIf a rate limit with the same channel_id and denom exists, it will be updated.\nOtherwise, it will be appended to the list. The authority defaults to the x/gov module account.","operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateRateLimit","parameters":[{"description":"MsgUpdateRateLimit is the Msg/UpdateRateLimit request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibcratelimit.MsgUpdateRateLimit"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibcratelimit.MsgUpdateRateLimitResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/managersplitter.Msg/CreateManagerSplitter":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CreateManagerSplitter","parameters":[{"description":"MsgCreateManagerSplitter creates a new manager splitter entity.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/managersplitter.MsgCreateManagerSplitter"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/managersplitter.MsgCreateManagerSplitterResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/managersplitter.Msg/DeleteManagerSplitter":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_DeleteManagerSplitter","parameters":[{"description":"MsgDeleteManagerSplitter deletes a manager splitter entity.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/managersplitter.MsgDeleteManagerSplitter"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/managersplitter.MsgDeleteManagerSplitterResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/managersplitter.Msg/ExecuteUniversalUpdateCollection":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_ExecuteUniversalUpdateCollection","parameters":[{"description":"MsgExecuteUniversalUpdateCollection executes a UniversalUpdateCollection message\nthrough the manager splitter, checking permissions before execution.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/managersplitter.MsgExecuteUniversalUpdateCollection"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/managersplitter.MsgExecuteUniversalUpdateCollectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/managersplitter.Msg/UpdateManagerSplitter":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateManagerSplitter","parameters":[{"description":"MsgUpdateManagerSplitter updates an existing manager splitter entity.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/managersplitter.MsgUpdateManagerSplitter"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/managersplitter.MsgUpdateManagerSplitterResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/managersplitter.Msg/UpdateParams":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateParamsMixin28","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/managersplitter.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/managersplitter.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/maps.Msg/CreateMap":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CreateMap","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/maps.MsgCreateMap"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/maps.MsgCreateMapResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/maps.Msg/DeleteMap":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_DeleteMap","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/maps.MsgDeleteMap"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/maps.MsgDeleteMapResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/maps.Msg/SetValue":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetValue","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/maps.MsgSetValue"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/maps.MsgSetValueResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/maps.Msg/UpdateMap":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateMap","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/maps.MsgUpdateMap"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/maps.MsgUpdateMapResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/maps.Msg/UpdateParams":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateParamsMixin36","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/maps.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/maps.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/gamm/v1beta1/filtered_pools":{"get":{"tags":["Query"],"summary":"PoolsWithFilter allows you to query specific pools with requested\nparameters","operationId":"GithubCombitbadgesbitbadgeschainQuery_PoolsWithFilter","parameters":[{"type":"string","description":"String of the coins in single string separated by comma. Ex)\n10uatom,100uosmo","name":"min_liquidity","in":"query"},{"type":"string","name":"pool_type","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.QueryPoolsWithFilterResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/gamm/v1beta1/num_pools":{"get":{"tags":["Query"],"summary":"Deprecated: please use the alternative in x/poolmanager","operationId":"GithubCombitbadgesbitbadgeschainQuery_NumPools","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.QueryNumPoolsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/gamm/v1beta1/params":{"get":{"tags":["Query"],"summary":"Params returns gamm module params.","operationId":"GithubCombitbadgesbitbadgeschainQuery_ParamsMixin16","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.ParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/gamm/v1beta1/pool_type/{pool_id}":{"get":{"tags":["Query"],"summary":"PoolType returns the type of the pool.\nReturns \"Balancer\" as a string literal when the pool is a balancer pool.\nErrors if the pool is failed to be type caseted.","operationId":"GithubCombitbadgesbitbadgeschainQuery_PoolType","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.QueryPoolTypeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/gamm/v1beta1/pools":{"get":{"tags":["Query"],"operationId":"GithubCombitbadgesbitbadgeschainQuery_Pools","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.QueryPoolsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/gamm/v1beta1/pools/{pool_id}":{"get":{"tags":["Query"],"summary":"Deprecated: please use the alternative in x/poolmanager","operationId":"GithubCombitbadgesbitbadgeschainQuery_Pool","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.QueryPoolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/gamm/v1beta1/pools/{pool_id}/exit_swap_share_amount_in":{"get":{"tags":["Query"],"operationId":"GithubCombitbadgesbitbadgeschainQuery_CalcExitPoolCoinsFromShares","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true},{"type":"string","name":"share_in_amount","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.QueryCalcExitPoolCoinsFromSharesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/gamm/v1beta1/pools/{pool_id}/join_swap_exact_in":{"get":{"tags":["Query"],"operationId":"GithubCombitbadgesbitbadgeschainQuery_CalcJoinPoolShares","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.QueryCalcJoinPoolSharesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/gamm/v1beta1/pools/{pool_id}/params":{"get":{"tags":["Query"],"operationId":"GithubCombitbadgesbitbadgeschainQuery_PoolParams","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.QueryPoolParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/gamm/v1beta1/pools/{pool_id}/prices":{"get":{"tags":["Query"],"summary":"SpotPrice defines a gRPC query handler that returns the spot price given\na base denomination and a quote denomination.","operationId":"GithubCombitbadgesbitbadgeschainQuery_SpotPrice","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true},{"type":"string","name":"base_asset_denom","in":"query"},{"type":"string","name":"quote_asset_denom","in":"query"},{"type":"boolean","description":"DEPRECATED","name":"withSwapFee","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.QuerySpotPriceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/gamm/v1beta1/pools/{pool_id}/total_pool_liquidity":{"get":{"tags":["Query"],"summary":"Deprecated: please use the alternative in x/poolmanager","operationId":"GithubCombitbadgesbitbadgeschainQuery_TotalPoolLiquidity","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.QueryTotalPoolLiquidityResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/gamm/v1beta1/pools/{pool_id}/total_shares":{"get":{"tags":["Query"],"operationId":"GithubCombitbadgesbitbadgeschainQuery_TotalShares","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.QueryTotalSharesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/gamm/v1beta1/total_liquidity":{"get":{"tags":["Query"],"operationId":"GithubCombitbadgesbitbadgeschainQuery_TotalLiquidity","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.QueryTotalLiquidityResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/gamm/v1beta1/{pool_id}/estimate/swap_exact_amount_in":{"get":{"tags":["Query"],"summary":"Deprecated: please use the alternative in x/poolmanager","operationId":"GithubCombitbadgesbitbadgeschainQuery_EstimateSwapExactAmountIn","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true},{"type":"string","name":"sender","in":"query"},{"type":"string","name":"token_in","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.QuerySwapExactAmountInResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/gamm/v1beta1/{pool_id}/estimate/swap_exact_amount_out":{"get":{"tags":["Query"],"summary":"Deprecated: please use the alternative in x/poolmanager","operationId":"GithubCombitbadgesbitbadgeschainQuery_EstimateSwapExactAmountOut","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true},{"type":"string","name":"sender","in":"query"},{"type":"string","name":"token_out","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.QuerySwapExactAmountOutResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/gamm/v2/pools/{pool_id}/prices":{"get":{"tags":["Query"],"summary":"Deprecated: please use alternate in x/poolmanager","operationId":"GithubCombitbadgesbitbadgeschainQuery_SpotPriceMixin18","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true},{"type":"string","name":"base_asset_denom","in":"query"},{"type":"string","name":"quote_asset_denom","in":"query"},{"type":"boolean","description":"DEPRECATED","name":"withSwapFee","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v2.QuerySpotPriceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/pools/{pool_id}/prices":{"get":{"tags":["Query"],"summary":"SpotPrice defines a gRPC query handler that returns the spot price given\na base denomination and a quote denomination.","operationId":"GithubCombitbadgesbitbadgeschainQuery_SpotPriceMixin39","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true},{"type":"string","name":"base_asset_denom","in":"query"},{"type":"string","name":"quote_asset_denom","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.SpotPriceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/Params":{"get":{"tags":["Query"],"operationId":"GithubCombitbadgesbitbadgeschainQuery_ParamsMixin39","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.ParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/all-pools":{"get":{"tags":["Query"],"summary":"AllPools returns all pools on the Osmosis chain sorted by IDs.","operationId":"GithubCombitbadgesbitbadgeschainQuery_AllPools","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.AllPoolsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/all_registered_alloyed_pools":{"get":{"tags":["Query"],"summary":"AllRegisteredAlloyedPools returns all registered alloyed pools. The\nregistered alloyed pool contains the pool's contract address, along with\nthe current distribution composition of taker fee share denoms within the\nalloyed pool.","operationId":"GithubCombitbadgesbitbadgeschainQuery_AllRegisteredAlloyedPools","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.AllRegisteredAlloyedPoolsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/all_taker_fee_share_accumulators":{"get":{"tags":["Query"],"summary":"AllTakerFeeShareAccumulators returns all taker fee share accumulators. A\ntaker fee share accumulator includes the denom of the denom getting the\ntaker fees, and an accumulated value of coins that the denom has accrued\nsince the last time it was distributed in the epoch prior.","operationId":"GithubCombitbadgesbitbadgeschainQuery_AllTakerFeeShareAccumulators","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.AllTakerFeeShareAccumulatorsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/all_taker_fee_share_agreements":{"get":{"tags":["Query"],"summary":"AllTakerFeeShareAgreements returns all taker fee share agreements.\nA taker fee share agreement includes the denom of the denom getting the\ntaker fees, the percent of the taker fees that the denom gets when it is\nin the route being traded against, and the address that the taker fees are\nsent to at epoch.","operationId":"GithubCombitbadgesbitbadgeschainQuery_AllTakerFeeShareAgreements","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.AllTakerFeeShareAgreementsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/list-pools-by-denom":{"get":{"tags":["Query"],"summary":"ListPoolsByDenom return all pools by denom","operationId":"GithubCombitbadgesbitbadgeschainQuery_ListPoolsByDenom","parameters":[{"type":"string","name":"denom","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.ListPoolsByDenomResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/num_pools":{"get":{"tags":["Query"],"summary":"Returns the total number of pools existing in Osmosis.","operationId":"GithubCombitbadgesbitbadgeschainQuery_NumPoolsMixin39","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.NumPoolsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/pools/{pool_id}":{"get":{"tags":["Query"],"summary":"Pool returns the Pool specified by the pool id","operationId":"GithubCombitbadgesbitbadgeschainQuery_PoolMixin39","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.PoolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/pools/{pool_id}/total_pool_liquidity":{"get":{"tags":["Query"],"summary":"TotalPoolLiquidity returns the total liquidity of the specified pool.","operationId":"GithubCombitbadgesbitbadgeschainQuery_TotalPoolLiquidityMixin39","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.TotalPoolLiquidityResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/pools/{pool_id}/total_volume":{"get":{"tags":["Query"],"summary":"TotalVolumeForPool returns the total volume of the specified pool.","operationId":"GithubCombitbadgesbitbadgeschainQuery_TotalVolumeForPool","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.TotalVolumeForPoolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/total_liquidity":{"get":{"tags":["Query"],"summary":"TotalLiquidity returns the total liquidity across all pools.","operationId":"GithubCombitbadgesbitbadgeschainQuery_TotalLiquidityMixin39","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.TotalLiquidityResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/trading_pair_takerfee":{"get":{"tags":["Query"],"summary":"TradingPairTakerFee returns the taker fee for a given set of denoms","operationId":"GithubCombitbadgesbitbadgeschainQuery_TradingPairTakerFee","parameters":[{"type":"string","name":"denom_0","in":"query"},{"type":"string","name":"denom_1","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.TradingPairTakerFeeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/{denom}/registered_alloyed_pool_from_denom":{"get":{"tags":["Query"],"summary":"RegisteredAlloyedPoolFromDenom returns the registered alloyed pool state\nfrom the given denom. The registered alloyed pool contains the pool's\ncontract address, along with the current distribution composition of taker\nfee share denoms within the alloyed pool.","operationId":"GithubCombitbadgesbitbadgeschainQuery_RegisteredAlloyedPoolFromDenom","parameters":[{"type":"string","name":"denom","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.RegisteredAlloyedPoolFromDenomResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/{denom}/taker_fee_share_agreement_from_denom":{"get":{"tags":["Query"],"summary":"TakerFeeShareAgreementFromDenom returns the taker fee share agreement for a\ngiven denom. A taker fee share agreement includes the denom of the denom\ngetting the taker fees, the percent of the taker fees that the denom gets\nwhen it is in the route being traded against, and the address that the\ntaker fees are sent to at epoch.","operationId":"GithubCombitbadgesbitbadgeschainQuery_TakerFeeShareAgreementFromDenom","parameters":[{"type":"string","name":"denom","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.TakerFeeShareAgreementFromDenomResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/{pool_id}/estimate/single_pool_swap_exact_amount_in":{"get":{"tags":["Query"],"operationId":"GithubCombitbadgesbitbadgeschainQuery_EstimateSinglePoolSwapExactAmountIn","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true},{"type":"string","name":"token_in","in":"query"},{"type":"string","name":"token_out_denom","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.EstimateSwapExactAmountInResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/{pool_id}/estimate/swap_exact_amount_in":{"get":{"tags":["Query"],"summary":"Estimates swap amount out given in.","operationId":"GithubCombitbadgesbitbadgeschainQuery_EstimateSwapExactAmountInMixin39","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true},{"type":"string","description":"DEPRECATED","name":"sender","in":"query"},{"type":"string","name":"token_in","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.EstimateSwapExactAmountInResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/{pool_id}/estimate/swap_exact_amount_in_with_primitive_types":{"get":{"tags":["Query"],"summary":"EstimateSwapExactAmountInWithPrimitiveTypes is an alternative query for\nEstimateSwapExactAmountIn. Supports query via GRPC-Gateway by using\nprimitive types instead of repeated structs. Each index in the\nroutes_pool_id field corresponds to the respective routes_token_out_denom\nvalue, thus they are required to have the same length and are grouped\ntogether as pairs.\nexample usage:\nhttp://0.0.0.0:1317/osmosis/poolmanager/v1beta1/1/estimate/\nswap_exact_amount_in_with_primitive_types?token_in=100000stake\u0026routes_token_out_denom=uatom\n\u0026routes_token_out_denom=uion\u0026routes_pool_id=1\u0026routes_pool_id=2","operationId":"GithubCombitbadgesbitbadgeschainQuery_EstimateSwapExactAmountInWithPrimitiveTypes","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true},{"type":"string","name":"token_in","in":"query"},{"type":"array","items":{"type":"string","format":"uint64"},"collectionFormat":"multi","name":"routes_pool_id","in":"query"},{"type":"array","items":{"type":"string"},"collectionFormat":"multi","name":"routes_token_out_denom","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.EstimateSwapExactAmountInResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/{pool_id}/estimate/swap_exact_amount_out":{"get":{"tags":["Query"],"summary":"Estimates swap amount in given out.","operationId":"GithubCombitbadgesbitbadgeschainQuery_EstimateSwapExactAmountOutMixin39","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true},{"type":"string","description":"DEPRECATED","name":"sender","in":"query"},{"type":"string","name":"token_out","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.EstimateSwapExactAmountOutResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/{pool_id}/estimate/swap_exact_amount_out_with_primitive_types":{"get":{"tags":["Query"],"summary":"Estimates swap amount in given out.","operationId":"GithubCombitbadgesbitbadgeschainQuery_EstimateSwapExactAmountOutWithPrimitiveTypes","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true},{"type":"array","items":{"type":"string","format":"uint64"},"collectionFormat":"multi","name":"routes_pool_id","in":"query"},{"type":"array","items":{"type":"string"},"collectionFormat":"multi","name":"routes_token_in_denom","in":"query"},{"type":"string","name":"token_out","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.EstimateSwapExactAmountOutResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/{pool_id}/estimate_out/single_pool_swap_exact_amount_out":{"get":{"tags":["Query"],"operationId":"GithubCombitbadgesbitbadgeschainQuery_EstimateSinglePoolSwapExactAmountOut","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true},{"type":"string","name":"token_in_denom","in":"query"},{"type":"string","name":"token_out","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.EstimateSwapExactAmountOutResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/{pool_id}/estimate_trade":{"get":{"tags":["Query"],"summary":"EstimateTradeBasedOnPriceImpact returns an estimated trade based on price\nimpact, if a trade cannot be estimated a 0 input and 0 output would be\nreturned.","operationId":"GithubCombitbadgesbitbadgeschainQuery_EstimateTradeBasedOnPriceImpact","parameters":[{"type":"string","format":"uint64","description":"pool_id is the identifier of the liquidity pool that the trade will occur\non.","name":"pool_id","in":"path","required":true},{"type":"string","name":"from_coin.denom","in":"query"},{"type":"string","name":"from_coin.amount","in":"query"},{"type":"string","description":"to_coin_denom is the denom identifier of the token that the user wants to\nbuy.","name":"to_coin_denom","in":"query"},{"type":"string","description":"max_price_impact is the maximum percentage that the user is willing\nto affect the price of the liquidity pool.","name":"max_price_impact","in":"query"},{"type":"string","description":"external_price is an optional external price that the user can enter.\nIt adjusts the MaxPriceImpact as the SpotPrice of a pool can be changed at\nany time.","name":"external_price","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.EstimateTradeBasedOnPriceImpactResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/{pool_id}/registered_alloyed_pool_from_pool_id":{"get":{"tags":["Query"],"summary":"RegisteredAlloyedPoolFromPoolId returns the registered alloyed pool state\nfrom the given pool id. The registered alloyed pool contains the pool's\ncontract address, along with the current distribution composition of taker\nfee share denoms within the alloyed pool.","operationId":"GithubCombitbadgesbitbadgeschainQuery_RegisteredAlloyedPoolFromPoolId","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.RegisteredAlloyedPoolFromPoolIdResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/{takerFeeDenom}/{denom}/taker_fee_share_denoms_to_accrued_value":{"get":{"tags":["Query"],"summary":"TakerFeeShareDenomsToAccruedValue returns the accrued value (as an Int) of\nthe given taker fee denom (the collected fees) for the given fee share\ndenom (the denom with the taker fee share agreement)","operationId":"GithubCombitbadgesbitbadgeschainQuery_TakerFeeShareDenomsToAccruedValue","parameters":[{"type":"string","name":"takerFeeDenom","in":"path","required":true},{"type":"string","name":"denom","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.TakerFeeShareDenomsToAccruedValueResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v2/pools/{pool_id}/prices":{"get":{"tags":["Query"],"summary":"SpotPriceV2 defines a gRPC query handler that returns the spot price given\na base denomination and a quote denomination.\nThe returned spot price has 36 decimal places. However, some of\nmodules perform sig fig rounding so most of the rightmost decimals can be\nzeroes.","operationId":"GithubCombitbadgesbitbadgeschainQuery_SpotPriceV2","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true},{"type":"string","name":"base_asset_denom","in":"query"},{"type":"string","name":"quote_asset_denom","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v2.SpotPriceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poolmanager.v1beta1.Msg/SetDenomPairTakerFee":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetDenomPairTakerFee","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poolmanager.v1beta1.MsgSetDenomPairTakerFee"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.MsgSetDenomPairTakerFeeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poolmanager.v1beta1.Msg/SetTakerFeeShareAgreementForDenom":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetTakerFeeShareAgreementForDenom","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poolmanager.v1beta1.MsgSetTakerFeeShareAgreementForDenom"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.MsgSetTakerFeeShareAgreementForDenomResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poolmanager.v1beta1.Msg/SplitRouteSwapExactAmountIn":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SplitRouteSwapExactAmountIn","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poolmanager.v1beta1.MsgSplitRouteSwapExactAmountIn"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.MsgSplitRouteSwapExactAmountInResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poolmanager.v1beta1.Msg/SplitRouteSwapExactAmountOut":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SplitRouteSwapExactAmountOut","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poolmanager.v1beta1.MsgSplitRouteSwapExactAmountOut"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.MsgSplitRouteSwapExactAmountOutResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poolmanager.v1beta1.Msg/SwapExactAmountIn":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SwapExactAmountInMixin43","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poolmanager.v1beta1.MsgSwapExactAmountIn"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.MsgSwapExactAmountInResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poolmanager.v1beta1.Msg/SwapExactAmountOut":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SwapExactAmountOutMixin43","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poolmanager.v1beta1.MsgSwapExactAmountOut"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.MsgSwapExactAmountOutResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/sendmanager.Msg/SendWithAliasRouting":{"post":{"tags":["Msg"],"summary":"SendWithAliasRouting defines a message for sending coins with alias denom routing.\nThis allows sending both standard coins and alias denoms (e.g., badgeslp:) through the sendmanager.","operationId":"GithubCombitbadgesbitbadgeschainMsg_SendWithAliasRouting","parameters":[{"description":"MsgSendWithAliasRouting defines a message for sending coins with alias denom routing.\nThis message mirrors cosmos bank MsgSend but routes through sendmanager to handle\nboth standard coins and alias denoms (e.g., badgeslp:).","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/sendmanager.MsgSendWithAliasRouting"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/sendmanager.MsgSendWithAliasRoutingResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/sendmanager.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.","operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateParamsMixin48","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/sendmanager.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/sendmanager.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/CastVote":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CastVote","parameters":[{"description":"MsgCastVote allows a voter to cast or update their vote for a voting challenge.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgCastVote"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgCastVoteResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/CreateAddressLists":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CreateAddressLists","parameters":[{"description":"MsgCreateAddressLists is used to create address lists.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgCreateAddressLists"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgCreateAddressListsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/CreateCollection":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CreateCollection","parameters":[{"description":"MsgCreateCollection is used to create a new collection.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgCreateCollection"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgCreateCollectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/CreateDynamicStore":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CreateDynamicStore","parameters":[{"description":"MsgCreateDynamicStore is used to create a new dynamic store.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgCreateDynamicStore"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgCreateDynamicStoreResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/DeleteCollection":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_DeleteCollection","parameters":[{"description":"MsgDeleteCollection is used to delete a collection.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgDeleteCollection"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgDeleteCollectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/DeleteDynamicStore":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_DeleteDynamicStore","parameters":[{"description":"MsgDeleteDynamicStore is used to delete a dynamic store.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgDeleteDynamicStore"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgDeleteDynamicStoreResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/DeleteIncomingApproval":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_DeleteIncomingApproval","parameters":[{"description":"MsgDeleteIncomingApproval is a helper message to delete a single incoming approval.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgDeleteIncomingApproval"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgDeleteIncomingApprovalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/DeleteOutgoingApproval":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_DeleteOutgoingApproval","parameters":[{"description":"MsgDeleteOutgoingApproval is a helper message to delete a single outgoing approval.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgDeleteOutgoingApproval"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgDeleteOutgoingApprovalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/PurgeApprovals":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_PurgeApprovals","parameters":[{"description":"MsgPurgeApprovals is a helper message to purge expired approvals.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgPurgeApprovals"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgPurgeApprovalsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/SetCollectionApprovals":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetCollectionApprovals","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgSetCollectionApprovals"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgSetCollectionApprovalsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/SetCollectionMetadata":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetCollectionMetadata","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgSetCollectionMetadata"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgSetCollectionMetadataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/SetCustomData":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetCustomData","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgSetCustomData"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgSetCustomDataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/SetDynamicStoreValue":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetDynamicStoreValue","parameters":[{"description":"MsgSetDynamicStoreValue is used to set a boolean value for a specific address in a dynamic store.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgSetDynamicStoreValue"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgSetDynamicStoreValueResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/SetIncomingApproval":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetIncomingApproval","parameters":[{"description":"MsgSetIncomingApproval is a helper message to set a single incoming approval.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgSetIncomingApproval"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgSetIncomingApprovalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/SetIsArchived":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetIsArchived","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgSetIsArchived"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgSetIsArchivedResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/SetManager":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetManager","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgSetManager"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgSetManagerResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/SetOutgoingApproval":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetOutgoingApproval","parameters":[{"description":"MsgSetOutgoingApproval is a helper message to set a single outgoing approval.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgSetOutgoingApproval"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgSetOutgoingApprovalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/SetReservedProtocolAddress":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetReservedProtocolAddress","parameters":[{"description":"MsgSetReservedProtocolAddress sets or unsets a reserved protocol address (governance-only).","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgSetReservedProtocolAddress"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgSetReservedProtocolAddressResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/SetStandards":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetStandards","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgSetStandards"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgSetStandardsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/SetTokenMetadata":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetTokenMetadata","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgSetTokenMetadata"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgSetTokenMetadataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/SetValidTokenIds":{"post":{"tags":["Msg"],"summary":"Helper message types for UniversalUpdateCollection subsets","operationId":"GithubCombitbadgesbitbadgeschainMsg_SetValidTokenIds","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgSetValidTokenIds"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgSetValidTokenIdsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/TransferTokens":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_TransferTokens","parameters":[{"description":"MsgTransferTokens is used to transfer tokens.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgTransferTokens"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgTransferTokensResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/UniversalUpdateCollection":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UniversalUpdateCollection","parameters":[{"description":"MsgUniversalUpdateCollection is used to define MsgServer types for all requests and responses for Msgs of the tokens module.\nIt is a universal interface that can be used for both creating and updating collections.\nWe have it defined for legacy purposes, but it is recommended to use MsgCreateCollection and MsgUpdateCollection instead.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgUniversalUpdateCollection"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgUniversalUpdateCollectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/UpdateCollection":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateCollection","parameters":[{"description":"MsgUpdateCollection is used to update a collection.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgUpdateCollection"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgUpdateCollectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/UpdateDynamicStore":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateDynamicStore","parameters":[{"description":"MsgUpdateDynamicStore is used to update an existing dynamic store.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgUpdateDynamicStore"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgUpdateDynamicStoreResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.","operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateParamsMixin69","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/UpdateUserApprovals":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateUserApprovals","parameters":[{"description":"MsgUpdateUserApprovals is used to update user approvals.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgUpdateUserApprovals"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgUpdateUserApprovalsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/CastVote":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CastVoteMixin89","parameters":[{"description":"MsgCastVote allows a voter to cast or update their vote for a voting challenge.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgCastVote"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgCastVoteResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/CreateAddressLists":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CreateAddressListsMixin89","parameters":[{"description":"MsgCreateAddressLists is used to create address lists.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgCreateAddressLists"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgCreateAddressListsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/CreateCollection":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CreateCollectionMixin89","parameters":[{"description":"MsgCreateCollection is used to create a new collection.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgCreateCollection"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgCreateCollectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/CreateDynamicStore":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CreateDynamicStoreMixin89","parameters":[{"description":"MsgCreateDynamicStore is used to create a new dynamic store.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgCreateDynamicStore"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgCreateDynamicStoreResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/DeleteCollection":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_DeleteCollectionMixin89","parameters":[{"description":"MsgDeleteCollection is used to delete a collection.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgDeleteCollection"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgDeleteCollectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/DeleteDynamicStore":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_DeleteDynamicStoreMixin89","parameters":[{"description":"MsgDeleteDynamicStore is used to delete a dynamic store.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgDeleteDynamicStore"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgDeleteDynamicStoreResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/DeleteIncomingApproval":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_DeleteIncomingApprovalMixin89","parameters":[{"description":"MsgDeleteIncomingApproval is a helper message to delete a single incoming approval.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgDeleteIncomingApproval"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgDeleteIncomingApprovalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/DeleteOutgoingApproval":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_DeleteOutgoingApprovalMixin89","parameters":[{"description":"MsgDeleteOutgoingApproval is a helper message to delete a single outgoing approval.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgDeleteOutgoingApproval"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgDeleteOutgoingApprovalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/PurgeApprovals":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_PurgeApprovalsMixin89","parameters":[{"description":"MsgPurgeApprovals is a helper message to purge expired approvals.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgPurgeApprovals"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgPurgeApprovalsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/SetCollectionApprovals":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetCollectionApprovalsMixin89","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgSetCollectionApprovals"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgSetCollectionApprovalsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/SetCollectionMetadata":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetCollectionMetadataMixin89","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgSetCollectionMetadata"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgSetCollectionMetadataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/SetCustomData":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetCustomDataMixin89","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgSetCustomData"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgSetCustomDataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/SetDynamicStoreValue":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetDynamicStoreValueMixin89","parameters":[{"description":"MsgSetDynamicStoreValue is used to set a boolean value for a specific address in a dynamic store.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgSetDynamicStoreValue"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgSetDynamicStoreValueResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/SetIncomingApproval":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetIncomingApprovalMixin89","parameters":[{"description":"MsgSetIncomingApproval is a helper message to set a single incoming approval.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgSetIncomingApproval"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgSetIncomingApprovalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/SetIsArchived":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetIsArchivedMixin89","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgSetIsArchived"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgSetIsArchivedResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/SetManager":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetManagerMixin89","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgSetManager"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgSetManagerResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/SetOutgoingApproval":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetOutgoingApprovalMixin89","parameters":[{"description":"MsgSetOutgoingApproval is a helper message to set a single outgoing approval.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgSetOutgoingApproval"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgSetOutgoingApprovalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/SetReservedProtocolAddress":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetReservedProtocolAddressMixin89","parameters":[{"description":"MsgSetReservedProtocolAddress sets or unsets a reserved protocol address (governance-only).","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgSetReservedProtocolAddress"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgSetReservedProtocolAddressResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/SetStandards":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetStandardsMixin89","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgSetStandards"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgSetStandardsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/SetTokenMetadata":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetTokenMetadataMixin89","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgSetTokenMetadata"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgSetTokenMetadataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/SetValidTokenIds":{"post":{"tags":["Msg"],"summary":"Helper message types for UniversalUpdateCollection subsets","operationId":"GithubCombitbadgesbitbadgeschainMsg_SetValidTokenIdsMixin89","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgSetValidTokenIds"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgSetValidTokenIdsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/TransferTokens":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_TransferTokensMixin89","parameters":[{"description":"MsgTransferTokens is used to transfer tokens.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgTransferTokens"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgTransferTokensResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/UniversalUpdateCollection":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UniversalUpdateCollectionMixin89","parameters":[{"description":"MsgUniversalUpdateCollection is used to define MsgServer types for all requests and responses for Msgs of the tokens module.\nIt is a universal interface that can be used for both creating and updating collections.\nWe have it defined for legacy purposes, but it is recommended to use MsgCreateCollection and MsgUpdateCollection instead.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgUniversalUpdateCollection"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgUniversalUpdateCollectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/UpdateCollection":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateCollectionMixin89","parameters":[{"description":"MsgUpdateCollection is used to update a collection.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgUpdateCollection"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgUpdateCollectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/UpdateDynamicStore":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateDynamicStoreMixin89","parameters":[{"description":"MsgUpdateDynamicStore is used to update an existing dynamic store.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgUpdateDynamicStore"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgUpdateDynamicStoreResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.","operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateParamsMixin89","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/UpdateUserApprovals":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateUserApprovalsMixin89","parameters":[{"description":"MsgUpdateUserApprovals is used to update user approvals.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgUpdateUserApprovals"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgUpdateUserApprovalsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/CastVote":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CastVoteMixin109","parameters":[{"description":"MsgCastVote allows a voter to cast or update their vote for a voting challenge.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgCastVote"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgCastVoteResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/CreateAddressLists":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CreateAddressListsMixin109","parameters":[{"description":"MsgCreateAddressLists is used to create address lists.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgCreateAddressLists"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgCreateAddressListsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/CreateCollection":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CreateCollectionMixin109","parameters":[{"description":"MsgCreateCollection is used to create a new collection.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgCreateCollection"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgCreateCollectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/CreateDynamicStore":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CreateDynamicStoreMixin109","parameters":[{"description":"MsgCreateDynamicStore is used to create a new dynamic store.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgCreateDynamicStore"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgCreateDynamicStoreResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/DeleteCollection":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_DeleteCollectionMixin109","parameters":[{"description":"MsgDeleteCollection is used to delete a collection.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgDeleteCollection"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgDeleteCollectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/DeleteDynamicStore":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_DeleteDynamicStoreMixin109","parameters":[{"description":"MsgDeleteDynamicStore is used to delete a dynamic store.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgDeleteDynamicStore"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgDeleteDynamicStoreResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/DeleteIncomingApproval":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_DeleteIncomingApprovalMixin109","parameters":[{"description":"MsgDeleteIncomingApproval is a helper message to delete a single incoming approval.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgDeleteIncomingApproval"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgDeleteIncomingApprovalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/DeleteOutgoingApproval":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_DeleteOutgoingApprovalMixin109","parameters":[{"description":"MsgDeleteOutgoingApproval is a helper message to delete a single outgoing approval.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgDeleteOutgoingApproval"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgDeleteOutgoingApprovalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/PurgeApprovals":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_PurgeApprovalsMixin109","parameters":[{"description":"MsgPurgeApprovals is a helper message to purge expired approvals.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgPurgeApprovals"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgPurgeApprovalsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/SetCollectionApprovals":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetCollectionApprovalsMixin109","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgSetCollectionApprovals"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgSetCollectionApprovalsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/SetCollectionMetadata":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetCollectionMetadataMixin109","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgSetCollectionMetadata"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgSetCollectionMetadataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/SetCustomData":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetCustomDataMixin109","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgSetCustomData"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgSetCustomDataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/SetDynamicStoreValue":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetDynamicStoreValueMixin109","parameters":[{"description":"MsgSetDynamicStoreValue is used to set a boolean value for a specific address in a dynamic store.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgSetDynamicStoreValue"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgSetDynamicStoreValueResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/SetIncomingApproval":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetIncomingApprovalMixin109","parameters":[{"description":"MsgSetIncomingApproval is a helper message to set a single incoming approval.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgSetIncomingApproval"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgSetIncomingApprovalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/SetIsArchived":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetIsArchivedMixin109","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgSetIsArchived"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgSetIsArchivedResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/SetManager":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetManagerMixin109","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgSetManager"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgSetManagerResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/SetOutgoingApproval":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetOutgoingApprovalMixin109","parameters":[{"description":"MsgSetOutgoingApproval is a helper message to set a single outgoing approval.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgSetOutgoingApproval"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgSetOutgoingApprovalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/SetReservedProtocolAddress":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetReservedProtocolAddressMixin109","parameters":[{"description":"MsgSetReservedProtocolAddress sets or unsets a reserved protocol address (governance-only).","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgSetReservedProtocolAddress"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgSetReservedProtocolAddressResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/SetStandards":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetStandardsMixin109","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgSetStandards"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgSetStandardsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/SetTokenMetadata":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetTokenMetadataMixin109","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgSetTokenMetadata"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgSetTokenMetadataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/SetValidTokenIds":{"post":{"tags":["Msg"],"summary":"Helper message types for UniversalUpdateCollection subsets","operationId":"GithubCombitbadgesbitbadgeschainMsg_SetValidTokenIdsMixin109","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgSetValidTokenIds"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgSetValidTokenIdsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/TransferTokens":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_TransferTokensMixin109","parameters":[{"description":"MsgTransferTokens is used to transfer tokens.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgTransferTokens"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgTransferTokensResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/UniversalUpdateCollection":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UniversalUpdateCollectionMixin109","parameters":[{"description":"MsgUniversalUpdateCollection is used to define MsgServer types for all requests and responses for Msgs of the tokens module.\nIt is a universal interface that can be used for both creating and updating collections.\nWe have it defined for legacy purposes, but it is recommended to use MsgCreateCollection and MsgUpdateCollection instead.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgUniversalUpdateCollection"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgUniversalUpdateCollectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/UpdateCollection":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateCollectionMixin109","parameters":[{"description":"MsgUpdateCollection is used to update a collection.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgUpdateCollection"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgUpdateCollectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/UpdateDynamicStore":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateDynamicStoreMixin109","parameters":[{"description":"MsgUpdateDynamicStore is used to update an existing dynamic store.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgUpdateDynamicStore"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgUpdateDynamicStoreResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.","operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateParamsMixin109","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/UpdateUserApprovals":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateUserApprovalsMixin109","parameters":[{"description":"MsgUpdateUserApprovals is used to update user approvals.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgUpdateUserApprovals"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgUpdateUserApprovalsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}}},"definitions":{"anchor.AnchorData":{"type":"object","properties":{"creator":{"type":"string"},"data":{"type":"string"},"timestamp":{"type":"string"}}},"anchor.MsgAddCustomData":{"type":"object","properties":{"creator":{"type":"string"},"data":{"type":"string"}}},"anchor.MsgAddCustomDataResponse":{"type":"object","properties":{"locationId":{"description":"ID of the anchor location.","type":"string"}}},"anchor.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"NOTE: All parameters must be supplied.","$ref":"#/definitions/anchor.Params"}}},"anchor.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"anchor.Params":{"description":"Params defines the parameters for the module.","type":"object"},"anchor.QueryGetValueAtLocationResponse":{"type":"object","properties":{"anchorData":{"$ref":"#/definitions/anchor.AnchorData"}}},"anchor.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params holds all the parameters of this module.","$ref":"#/definitions/anchor.Params"}}},"cosmos.base.query.v1beta1.PageRequest":{"description":"message SomeRequest {\n Foo some_parameter = 1;\n PageRequest pagination = 2;\n }","type":"object","title":"PageRequest is to be embedded in gRPC request messages for efficient\npagination. Ex:","properties":{"count_total":{"description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","type":"boolean"},"key":{"description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","type":"string","format":"byte"},"limit":{"description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","type":"string","format":"uint64"},"offset":{"description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","type":"string","format":"uint64"},"reverse":{"description":"reverse is set to true if results are to be returned in the descending order.","type":"boolean"}}},"cosmos.base.query.v1beta1.PageResponse":{"description":"PageResponse is to be embedded in gRPC response messages where the\ncorresponding request message has used PageRequest.\n\n message SomeResponse {\n repeated Bar results = 1;\n PageResponse page = 2;\n }","type":"object","properties":{"next_key":{"description":"next_key is the key to be passed to PageRequest.key to\nquery the next page most efficiently. It will be empty if\nthere are no more results.","type":"string","format":"byte"},"total":{"type":"string","format":"uint64","title":"total is total number of results available if PageRequest.count_total\nwas set, its value is undefined otherwise"}}},"cosmos.base.v1beta1.Coin":{"description":"Coin defines a token with a denomination and an amount.\n\nNOTE: The amount field is an Int which implements the custom method\nsignatures required by gogoproto.","type":"object","properties":{"amount":{"type":"string"},"denom":{"type":"string"}}},"cosmos.evm.vm.v1.AccessControl":{"type":"object","title":"AccessControl defines the permission policy of the EVM\nfor creating and calling contracts","properties":{"call":{"title":"call defines the permission policy for calling contracts","$ref":"#/definitions/cosmos.evm.vm.v1.AccessControlType"},"create":{"title":"create defines the permission policy for creating contracts","$ref":"#/definitions/cosmos.evm.vm.v1.AccessControlType"}}},"cosmos.evm.vm.v1.AccessControlType":{"type":"object","title":"AccessControlType defines the permission type for policies","properties":{"access_control_list":{"type":"array","title":"access_control_list defines defines different things depending on the\nAccessType:\n- ACCESS_TYPE_PERMISSIONLESS: list of addresses that are blocked from\nperforming the operation\n- ACCESS_TYPE_RESTRICTED: ignored\n- ACCESS_TYPE_PERMISSIONED: list of addresses that are allowed to perform\nthe operation","items":{"type":"string"}},"access_type":{"title":"access_type defines which type of permission is required for the operation","$ref":"#/definitions/cosmos.evm.vm.v1.AccessType"}}},"cosmos.evm.vm.v1.AccessType":{"description":"- ACCESS_TYPE_PERMISSIONLESS: ACCESS_TYPE_PERMISSIONLESS does not restrict the operation to anyone\n - ACCESS_TYPE_RESTRICTED: ACCESS_TYPE_RESTRICTED restrict the operation to anyone\n - ACCESS_TYPE_PERMISSIONED: ACCESS_TYPE_PERMISSIONED only allows the operation for specific addresses","type":"string","title":"AccessType defines the types of permissions for the operations","default":"ACCESS_TYPE_PERMISSIONLESS","enum":["ACCESS_TYPE_PERMISSIONLESS","ACCESS_TYPE_RESTRICTED","ACCESS_TYPE_PERMISSIONED"]},"cosmos.evm.vm.v1.ExtendedDenomOptions":{"type":"object","properties":{"extended_denom":{"type":"string"}}},"cosmos.evm.vm.v1.Log":{"description":"Log represents an protobuf compatible Ethereum Log that defines a contract\nlog event. These events are generated by the LOG opcode and stored/indexed by\nthe node.\n\nNOTE: address, topics and data are consensus fields. The rest of the fields\nare derived, i.e. filled in by the nodes, but not secured by consensus.","type":"object","properties":{"address":{"type":"string","title":"address of the contract that generated the event"},"block_hash":{"type":"string","title":"block_hash of the block in which the transaction was included"},"block_number":{"type":"string","format":"uint64","title":"block_number of the block in which the transaction was included"},"block_timestamp":{"type":"string","format":"uint64","title":"block_timestamp is the timestamp of the block in which the transaction was"},"data":{"type":"string","format":"byte","title":"data which is supplied by the contract, usually ABI-encoded"},"index":{"type":"string","format":"uint64","title":"index of the log in the block"},"removed":{"description":"removed is true if this log was reverted due to a chain\nreorganisation. You must pay attention to this field if you receive logs\nthrough a filter query.","type":"boolean"},"topics":{"description":"topics is a list of topics provided by the contract.","type":"array","items":{"type":"string"}},"tx_hash":{"type":"string","title":"tx_hash is the transaction hash"},"tx_index":{"type":"string","format":"uint64","title":"tx_index of the transaction in the block"}}},"cosmos.evm.vm.v1.MsgEthereumTxResponse":{"description":"MsgEthereumTxResponse defines the Msg/EthereumTx response type.","type":"object","properties":{"block_hash":{"type":"string","format":"byte","title":"include the block hash for json-rpc to use"},"block_timestamp":{"type":"string","format":"uint64","title":"include the block timestamp for json-rpc to use"},"gas_used":{"type":"string","format":"uint64","title":"gas_used specifies how much gas was consumed by the transaction"},"hash":{"type":"string","title":"hash of the ethereum transaction in hex format. This hash differs from the\nCometBFT sha256 hash of the transaction bytes. See\nhttps://github.com/tendermint/tendermint/issues/6539 for reference"},"logs":{"description":"logs contains the transaction hash and the proto-compatible ethereum\nlogs.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.evm.vm.v1.Log"}},"max_used_gas":{"type":"string","format":"uint64","title":"max_used_gas specifies the gas consumed by the transaction, not including refunds"},"ret":{"type":"string","format":"byte","title":"ret is the returned data from evm function (result or data supplied with\nrevert opcode)"},"vm_error":{"type":"string","title":"vm_error is the error returned by vm execution"}}},"cosmos.evm.vm.v1.MsgRegisterPreinstalls":{"description":"MsgRegisterPreinstalls defines a Msg for creating preinstalls in evm state.","type":"object","properties":{"authority":{"description":"authority is the address of the governance account.","type":"string"},"preinstalls":{"description":"preinstalls defines the preinstalls to create.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.evm.vm.v1.Preinstall"}}}},"cosmos.evm.vm.v1.MsgRegisterPreinstallsResponse":{"description":"MsgRegisterPreinstallsResponse defines the response structure for executing a\nMsgRegisterPreinstalls message.","type":"object"},"cosmos.evm.vm.v1.MsgUpdateParams":{"description":"MsgUpdateParams defines a Msg for updating the x/vm module parameters.","type":"object","properties":{"authority":{"description":"authority is the address of the governance account.","type":"string"},"params":{"description":"params defines the x/vm parameters to update.\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.evm.vm.v1.Params"}}},"cosmos.evm.vm.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"cosmos.evm.vm.v1.Params":{"type":"object","title":"Params defines the EVM module parameters","properties":{"access_control":{"title":"access_control defines the permission policy of the EVM","$ref":"#/definitions/cosmos.evm.vm.v1.AccessControl"},"active_static_precompiles":{"type":"array","title":"active_static_precompiles defines the slice of hex addresses of the\nprecompiled contracts that are active","items":{"type":"string"}},"evm_channels":{"type":"array","title":"evm_channels is the list of channel identifiers from EVM compatible chains","items":{"type":"string"}},"evm_denom":{"description":"evm_denom represents the token denomination used to run the EVM state\ntransitions.","type":"string"},"extended_denom_options":{"$ref":"#/definitions/cosmos.evm.vm.v1.ExtendedDenomOptions"},"extra_eips":{"type":"array","title":"extra_eips defines the additional EIPs for the vm.Config","items":{"type":"string","format":"int64"}},"history_serve_window":{"type":"string","format":"uint64"}}},"cosmos.evm.vm.v1.Preinstall":{"type":"object","title":"Preinstall defines a contract that is preinstalled on-chain with a specific\ncontract address and bytecode","properties":{"address":{"type":"string","title":"address in hex format of the preinstall contract"},"code":{"type":"string","title":"code in hex format for the preinstall contract"},"name":{"type":"string","title":"name of the preinstall contract"}}},"gamm.poolmodels.balancer.MsgCreateBalancerPool":{"type":"object","title":"===================== MsgCreatePool","properties":{"pool_assets":{"type":"array","items":{"type":"object","$ref":"#/definitions/gamm.poolmodels.balancer.PoolAsset"}},"pool_params":{"$ref":"#/definitions/gamm.poolmodels.balancer.PoolParams"},"sender":{"type":"string"}}},"gamm.poolmodels.balancer.MsgCreateBalancerPoolResponse":{"type":"object","title":"Returns the poolID","properties":{"pool_id":{"type":"string","format":"uint64"}}},"gamm.poolmodels.balancer.PoolAsset":{"description":"Pool asset is an internal struct that combines the amount of the\ntoken in the pool, and its balancer weight.\nThis is an awkward packaging of data,\nand should be revisited in a future state migration.","type":"object","properties":{"token":{"description":"Coins we are talking about,\nthe denomination must be unique amongst all PoolAssets for this pool.","$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"weight":{"type":"string","title":"Weight that is not normalized. This weight must be less than 2^50"}}},"gamm.poolmodels.balancer.PoolParams":{"description":"PoolParams defined the parameters that will be managed by the pool\ngovernance in the future. This params are not managed by the chain\ngovernance. Instead they will be managed by the token holders of the pool.","type":"object","properties":{"exit_fee":{"type":"string","title":"N.B.: exit fee is disabled during pool creation in x/poolmanager. While old\npools can maintain a non-zero fee. No new pool can be created with non-zero\nfee anymore"},"swap_fee":{"type":"string"}}},"gamm.poolmodels.stableswap.MsgCreateStableswapPool":{"type":"object","title":"===================== MsgCreatePool","properties":{"future_pool_governor":{"type":"string"},"initial_pool_liquidity":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"pool_params":{"$ref":"#/definitions/gamm.poolmodels.stableswap.PoolParams"},"scaling_factor_controller":{"type":"string"},"scaling_factors":{"type":"array","items":{"type":"string","format":"uint64"}},"sender":{"type":"string"}}},"gamm.poolmodels.stableswap.MsgCreateStableswapPoolResponse":{"description":"Returns a poolID with custom poolName.","type":"object","properties":{"pool_id":{"type":"string","format":"uint64"}}},"gamm.poolmodels.stableswap.MsgStableSwapAdjustScalingFactors":{"description":"Sender must be the pool's scaling_factor_governor in order for the tx to\nsucceed. Adjusts stableswap scaling factors.","type":"object","properties":{"pool_id":{"type":"string","format":"uint64"},"scaling_factors":{"type":"array","items":{"type":"string","format":"uint64"}},"sender":{"type":"string"}}},"gamm.poolmodels.stableswap.MsgStableSwapAdjustScalingFactorsResponse":{"type":"object"},"gamm.poolmodels.stableswap.PoolParams":{"description":"PoolParams defined the parameters that will be managed by the pool\ngovernance in the future. This params are not managed by the chain\ngovernance. Instead they will be managed by the token holders of the pool.\nThe pool's token holders are specified in future_pool_governor.","type":"object","properties":{"exit_fee":{"type":"string","title":"N.B.: exit fee is disabled during pool creation in x/poolmanager. While old\npools can maintain a non-zero fee. No new pool can be created with non-zero\nfee anymore"},"swap_fee":{"type":"string"}}},"gamm.v1beta1.IBCTransferInfo":{"type":"object","title":"===================== IBC Transfer Info","properties":{"memo":{"type":"string"},"receiver":{"type":"string"},"source_channel":{"type":"string"},"timeout_timestamp":{"type":"string","format":"uint64"}}},"gamm.v1beta1.MsgExitPool":{"type":"object","title":"===================== MsgExitPool","properties":{"pool_id":{"type":"string","format":"uint64"},"sender":{"type":"string"},"share_in_amount":{"type":"string"},"token_out_mins":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"gamm.v1beta1.MsgExitPoolResponse":{"type":"object","properties":{"token_out":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"gamm.v1beta1.MsgExitSwapExternAmountOut":{"type":"object","title":"===================== MsgExitSwapExternAmountOut","properties":{"pool_id":{"type":"string","format":"uint64"},"sender":{"type":"string"},"share_in_max_amount":{"type":"string"},"token_out":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"gamm.v1beta1.MsgExitSwapExternAmountOutResponse":{"type":"object","properties":{"share_in_amount":{"type":"string"}}},"gamm.v1beta1.MsgExitSwapShareAmountIn":{"type":"object","title":"===================== MsgExitSwapShareAmountIn","properties":{"pool_id":{"type":"string","format":"uint64"},"sender":{"type":"string"},"share_in_amount":{"type":"string"},"token_out_denom":{"type":"string"},"token_out_min_amount":{"type":"string"}}},"gamm.v1beta1.MsgExitSwapShareAmountInResponse":{"type":"object","properties":{"token_out_amount":{"type":"string"}}},"gamm.v1beta1.MsgJoinPool":{"type":"object","title":"===================== MsgJoinPool\nThis is really MsgJoinPoolNoSwap","properties":{"pool_id":{"type":"string","format":"uint64"},"sender":{"type":"string"},"share_out_amount":{"type":"string"},"token_in_maxs":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"gamm.v1beta1.MsgJoinPoolResponse":{"type":"object","properties":{"share_out_amount":{"type":"string"},"token_in":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"gamm.v1beta1.MsgJoinSwapExternAmountIn":{"type":"object","title":"===================== MsgJoinSwapExternAmountIn\nTODO: Rename to MsgJoinSwapExactAmountIn","properties":{"pool_id":{"type":"string","format":"uint64"},"sender":{"type":"string"},"share_out_min_amount":{"type":"string","title":"repeated cosmos.base.v1beta1.Coin tokensIn = 5 [\n (gogoproto.moretags) = \"yaml:\\\"tokens_in\\\"\",\n (gogoproto.nullable) = false\n ];"},"token_in":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"gamm.v1beta1.MsgJoinSwapExternAmountInResponse":{"type":"object","properties":{"share_out_amount":{"type":"string"}}},"gamm.v1beta1.MsgJoinSwapShareAmountOut":{"type":"object","title":"===================== MsgJoinSwapShareAmountOut","properties":{"pool_id":{"type":"string","format":"uint64"},"sender":{"type":"string"},"share_out_amount":{"type":"string"},"token_in_denom":{"type":"string"},"token_in_max_amount":{"type":"string"}}},"gamm.v1beta1.MsgJoinSwapShareAmountOutResponse":{"type":"object","properties":{"token_in_amount":{"type":"string"}}},"gamm.v1beta1.MsgSwapExactAmountIn":{"type":"object","title":"===================== MsgSwapExactAmountIn","properties":{"affiliates":{"type":"array","title":"affiliates are optional fee recipients that receive fees calculated from token_out_min_amount","items":{"type":"object","$ref":"#/definitions/poolmanager.v1beta1.Affiliate"}},"routes":{"type":"array","items":{"type":"object","$ref":"#/definitions/poolmanager.v1beta1.SwapAmountInRoute"}},"sender":{"type":"string"},"token_in":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"token_out_min_amount":{"type":"string"}}},"gamm.v1beta1.MsgSwapExactAmountInResponse":{"type":"object","properties":{"token_out_amount":{"type":"string"}}},"gamm.v1beta1.MsgSwapExactAmountInWithIBCTransfer":{"type":"object","title":"===================== MsgSwapExactAmountInWithIBCTransfer","properties":{"affiliates":{"type":"array","title":"affiliates are optional fee recipients that receive fees calculated from token_out_min_amount","items":{"type":"object","$ref":"#/definitions/poolmanager.v1beta1.Affiliate"}},"ibc_transfer_info":{"$ref":"#/definitions/gamm.v1beta1.IBCTransferInfo"},"routes":{"type":"array","items":{"type":"object","$ref":"#/definitions/poolmanager.v1beta1.SwapAmountInRoute"}},"sender":{"type":"string"},"token_in":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"token_out_min_amount":{"type":"string"}}},"gamm.v1beta1.MsgSwapExactAmountInWithIBCTransferResponse":{"type":"object","properties":{"token_out_amount":{"type":"string"}}},"gamm.v1beta1.MsgSwapExactAmountOut":{"type":"object","properties":{"routes":{"type":"array","items":{"type":"object","$ref":"#/definitions/poolmanager.v1beta1.SwapAmountOutRoute"}},"sender":{"type":"string"},"token_in_max_amount":{"type":"string"},"token_out":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"gamm.v1beta1.MsgSwapExactAmountOutResponse":{"type":"object","properties":{"token_in_amount":{"type":"string"}}},"gamm.v1beta1.Params":{"type":"object","title":"Params holds parameters for the incentives module"},"gamm.v1beta1.ParamsResponse":{"type":"object","properties":{"params":{"$ref":"#/definitions/gamm.v1beta1.Params"}}},"gamm.v1beta1.QueryCalcExitPoolCoinsFromSharesResponse":{"type":"object","properties":{"tokens_out":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"gamm.v1beta1.QueryCalcJoinPoolNoSwapSharesRequest":{"type":"object","title":"=============================== CalcJoinPoolNoSwapShares","properties":{"pool_id":{"type":"string","format":"uint64"},"tokens_in":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"gamm.v1beta1.QueryCalcJoinPoolNoSwapSharesResponse":{"type":"object","properties":{"shares_out":{"type":"string"},"tokens_out":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"gamm.v1beta1.QueryCalcJoinPoolSharesResponse":{"type":"object","properties":{"share_out_amount":{"type":"string"},"tokens_out":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"gamm.v1beta1.QueryNumPoolsResponse":{"type":"object","properties":{"num_pools":{"type":"string","format":"uint64"}}},"gamm.v1beta1.QueryPoolParamsResponse":{"type":"object","properties":{"params":{"$ref":"#/definitions/google.protobuf.Any"}}},"gamm.v1beta1.QueryPoolResponse":{"type":"object","title":"Deprecated: please use the alternative in x/poolmanager","properties":{"pool":{"$ref":"#/definitions/google.protobuf.Any"}}},"gamm.v1beta1.QueryPoolTypeResponse":{"type":"object","properties":{"pool_type":{"type":"string"}}},"gamm.v1beta1.QueryPoolsResponse":{"type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"pools":{"type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}}}},"gamm.v1beta1.QueryPoolsWithFilterResponse":{"type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"pools":{"type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}}}},"gamm.v1beta1.QuerySpotPriceResponse":{"description":"QuerySpotPriceResponse defines the gRPC response structure for a SpotPrice\nquery.","type":"object","properties":{"spot_price":{"type":"string","title":"String of the Dec. Ex) 10.203uatom"}}},"gamm.v1beta1.QuerySwapExactAmountInResponse":{"type":"object","properties":{"token_out_amount":{"type":"string"}}},"gamm.v1beta1.QuerySwapExactAmountOutResponse":{"type":"object","properties":{"token_in_amount":{"type":"string"}}},"gamm.v1beta1.QueryTotalLiquidityResponse":{"type":"object","properties":{"liquidity":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"gamm.v1beta1.QueryTotalPoolLiquidityResponse":{"type":"object","title":"Deprecated: please use the alternative in x/poolmanager","properties":{"liquidity":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"gamm.v1beta1.QueryTotalSharesResponse":{"type":"object","properties":{"total_shares":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"gamm.v2.QuerySpotPriceResponse":{"type":"object","title":"Deprecated: please use alternate in x/poolmanager","properties":{"spot_price":{"type":"string","title":"String of the Dec. Ex) 10.203uatom"}}},"google.protobuf.Any":{"type":"object","properties":{"@type":{"type":"string"}},"additionalProperties":{}},"google.rpc.Status":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"details":{"type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"message":{"type":"string"}}},"ibcratelimit.AddressLimit":{"type":"object","title":"AddressLimit defines limits per address","properties":{"max_amount":{"type":"string","title":"max_amount is the maximum total amount allowed per address in the timeframe\nValue is represented as an integer (e.g., \"1000000\" = 1,000,000 tokens)\nIf set to 0, amount limit is disabled"},"max_transfers":{"type":"string","format":"int64","title":"max_transfers is the maximum number of transfers allowed per address in the timeframe\nIf set to 0, transfer count limit is disabled"},"timeframe_duration":{"type":"string","format":"int64","title":"timeframe_duration is the duration of the timeframe"},"timeframe_type":{"title":"timeframe_type defines the type of timeframe (block, hour, day)","$ref":"#/definitions/ibcratelimit.TimeframeType"}}},"ibcratelimit.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the module parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/ibcratelimit.Params"}}},"ibcratelimit.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"ibcratelimit.MsgUpdateRateLimit":{"description":"MsgUpdateRateLimit is the Msg/UpdateRateLimit request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"rate_limit":{"description":"rate_limit defines the rate limit configuration to update or add.\nIf a rate limit with the same channel_id and denom exists, it will be updated.\nOtherwise, it will be appended to the list.","$ref":"#/definitions/ibcratelimit.RateLimitConfig"}}},"ibcratelimit.MsgUpdateRateLimitResponse":{"description":"MsgUpdateRateLimitResponse defines the response structure for executing a\nMsgUpdateRateLimit message.","type":"object"},"ibcratelimit.Params":{"description":"Params defines the parameters for the module.","type":"object","properties":{"rate_limits":{"type":"array","title":"rate_limits is an array of rate limit configurations\nEach configuration can specify channel_id, denom, and various limit types (supply_shift_limits, unique_sender_limits, address_limits)\nConfigurations are checked in order, and the first matching config is used\nIf no config matches, the transfer is allowed (no rate limit)","items":{"type":"object","$ref":"#/definitions/ibcratelimit.RateLimitConfig"}}}},"ibcratelimit.RateLimitConfig":{"type":"object","title":"RateLimitConfig defines a rate limit configuration for a specific channel and denom","properties":{"address_limits":{"type":"array","title":"address_limits defines per-address transfer limits\nAll limits are checked, and the transfer is rejected if any limit would be exceeded","items":{"type":"object","$ref":"#/definitions/ibcratelimit.AddressLimit"}},"channel_id":{"type":"string","title":"channel_id is the IBC channel ID this rate limit applies to\nIf empty, applies to all channels"},"denom":{"type":"string","title":"denom is the denomination this rate limit applies to\nMust be specified (empty denoms are not allowed)"},"supply_shift_limits":{"type":"array","title":"supply_shift_limits defines multiple timeframe limits for supply shift\nAll limits are checked, and the transfer is rejected if any limit would be exceeded","items":{"type":"object","$ref":"#/definitions/ibcratelimit.TimeframeLimit"}},"unique_sender_limits":{"type":"array","title":"unique_sender_limits defines limits on unique senders per channel\nAll limits are checked, and the transfer is rejected if any limit would be exceeded","items":{"type":"object","$ref":"#/definitions/ibcratelimit.UniqueSenderLimit"}}}},"ibcratelimit.TimeframeLimit":{"type":"object","title":"TimeframeLimit defines a limit for a specific timeframe","properties":{"max_amount":{"type":"string","title":"max_amount is the maximum absolute amount of supply change allowed in this timeframe\nValue is represented as an integer (e.g., \"1000000\" = 1,000,000 tokens)\nIf set to 0, this limit is disabled"},"timeframe_duration":{"type":"string","format":"int64","title":"timeframe_duration is the duration of the timeframe\nFor BLOCK: number of blocks\nFor HOUR: number of hours (will be converted to blocks using block time)\nFor DAY: number of days (will be converted to blocks using block time)"},"timeframe_type":{"title":"timeframe_type defines the type of timeframe (block, hour, day)","$ref":"#/definitions/ibcratelimit.TimeframeType"}}},"ibcratelimit.TimeframeType":{"description":"- TIMEFRAME_TYPE_BLOCK: Duration in blocks\n - TIMEFRAME_TYPE_HOUR: Duration in hours (converted to blocks using block time)\n - TIMEFRAME_TYPE_DAY: Duration in days (converted to blocks using block time)","type":"string","title":"TimeframeType defines the type of timeframe","default":"TIMEFRAME_TYPE_UNSPECIFIED","enum":["TIMEFRAME_TYPE_UNSPECIFIED","TIMEFRAME_TYPE_BLOCK","TIMEFRAME_TYPE_HOUR","TIMEFRAME_TYPE_DAY"]},"ibcratelimit.UniqueSenderLimit":{"type":"object","title":"UniqueSenderLimit defines limits on unique senders per channel","properties":{"max_unique_senders":{"type":"string","format":"int64","title":"max_unique_senders is the maximum number of unique senders allowed in the timeframe\nIf set to 0, this limit is disabled"},"timeframe_duration":{"type":"string","format":"int64","title":"timeframe_duration is the duration of the timeframe"},"timeframe_type":{"title":"timeframe_type defines the type of timeframe (block, hour, day)","$ref":"#/definitions/ibcratelimit.TimeframeType"}}},"managersplitter.ManagerSplitter":{"description":"ManagerSplitter defines the manager splitter entity.","type":"object","properties":{"address":{"description":"The module address of this manager splitter (derived from module name + ID).","type":"string"},"admin":{"description":"Permanent and static admin address. Has full control and can always execute all permissions.","type":"string"},"permissions":{"description":"Permissions mapping each CollectionPermission field to execution criteria.","$ref":"#/definitions/managersplitter.ManagerSplitterPermissions"}}},"managersplitter.ManagerSplitterPermissions":{"description":"ManagerSplitterPermissions mirrors the CollectionPermissions structure\nbut maps each permission to criteria for execution.","type":"object","properties":{"canAddMoreAliasPaths":{"description":"Permissions related to adding more alias paths to the collection.","$ref":"#/definitions/managersplitter.PermissionCriteria"},"canAddMoreCosmosCoinWrapperPaths":{"description":"Permissions related to adding more cosmos coin wrapper paths to the collection.","$ref":"#/definitions/managersplitter.PermissionCriteria"},"canArchiveCollection":{"description":"Permissions related to archiving the collection.","$ref":"#/definitions/managersplitter.PermissionCriteria"},"canDeleteCollection":{"description":"Permissions related to deleting the collection.","$ref":"#/definitions/managersplitter.PermissionCriteria"},"canUpdateCollectionApprovals":{"description":"Permissions related to updating collection approvals.","$ref":"#/definitions/managersplitter.PermissionCriteria"},"canUpdateCollectionMetadata":{"description":"Permissions related to updating the metadata of the collection.","$ref":"#/definitions/managersplitter.PermissionCriteria"},"canUpdateCustomData":{"description":"Permissions related to updating custom data for the collection.","$ref":"#/definitions/managersplitter.PermissionCriteria"},"canUpdateManager":{"description":"Permissions related to updating the collection's manager.","$ref":"#/definitions/managersplitter.PermissionCriteria"},"canUpdateStandards":{"description":"Permissions related to updating standards for the collection.","$ref":"#/definitions/managersplitter.PermissionCriteria"},"canUpdateTokenMetadata":{"description":"Permissions related to updating token metadata for specific tokens.","$ref":"#/definitions/managersplitter.PermissionCriteria"},"canUpdateValidTokenIds":{"description":"Permissions related to creating more tokens for the collection.","$ref":"#/definitions/managersplitter.PermissionCriteria"}}},"managersplitter.MsgCreateManagerSplitter":{"description":"MsgCreateManagerSplitter creates a new manager splitter entity.","type":"object","properties":{"admin":{"description":"Admin address creating the entity.","type":"string"},"permissions":{"description":"Permissions mapping each CollectionPermission field to execution criteria.","$ref":"#/definitions/managersplitter.ManagerSplitterPermissions"}}},"managersplitter.MsgCreateManagerSplitterResponse":{"description":"MsgCreateManagerSplitterResponse is the response to MsgCreateManagerSplitter.","type":"object","properties":{"address":{"description":"The address of the created manager splitter.","type":"string"}}},"managersplitter.MsgDeleteManagerSplitter":{"description":"MsgDeleteManagerSplitter deletes a manager splitter entity.","type":"object","properties":{"address":{"description":"Address of the manager splitter to delete.","type":"string"},"admin":{"description":"Admin address deleting the entity.","type":"string"}}},"managersplitter.MsgDeleteManagerSplitterResponse":{"description":"MsgDeleteManagerSplitterResponse is the response to MsgDeleteManagerSplitter.","type":"object"},"managersplitter.MsgExecuteUniversalUpdateCollection":{"description":"MsgExecuteUniversalUpdateCollection executes a UniversalUpdateCollection message\nthrough the manager splitter, checking permissions before execution.","type":"object","properties":{"executor":{"description":"Address executing the message (must be approved or admin).","type":"string"},"managerSplitterAddress":{"description":"Address of the manager splitter to execute through.","type":"string"},"universalUpdateCollectionMsg":{"description":"The UniversalUpdateCollection message to execute.","$ref":"#/definitions/tokenization.MsgUniversalUpdateCollection"}}},"managersplitter.MsgExecuteUniversalUpdateCollectionResponse":{"description":"MsgExecuteUniversalUpdateCollectionResponse is the response to MsgExecuteUniversalUpdateCollection.","type":"object","properties":{"collectionId":{"description":"ID of the collection that was updated.","type":"string"}}},"managersplitter.MsgUpdateManagerSplitter":{"description":"MsgUpdateManagerSplitter updates an existing manager splitter entity.","type":"object","properties":{"address":{"description":"Address of the manager splitter to update.","type":"string"},"admin":{"description":"Admin address updating the entity.","type":"string"},"permissions":{"description":"New permissions to set.","$ref":"#/definitions/managersplitter.ManagerSplitterPermissions"}}},"managersplitter.MsgUpdateManagerSplitterResponse":{"description":"MsgUpdateManagerSplitterResponse is the response to MsgUpdateManagerSplitter.","type":"object"},"managersplitter.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the module parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/managersplitter.Params"}}},"managersplitter.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"managersplitter.Params":{"description":"Params defines the parameters for the module.","type":"object"},"managersplitter.PermissionCriteria":{"description":"PermissionCriteria defines the criteria for executing a permission.\nCurrently supports approved addresses (whitelist).","type":"object","properties":{"approvedAddresses":{"description":"List of approved addresses that can execute this permission.","type":"array","items":{"type":"string"}}}},"managersplitter.QueryAllManagerSplittersResponse":{"description":"QueryAllManagerSplittersResponse is response type for the Query/AllManagerSplitters RPC method.","type":"object","properties":{"managerSplitters":{"type":"array","items":{"type":"object","$ref":"#/definitions/managersplitter.ManagerSplitter"}},"pagination":{"$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"managersplitter.QueryGetManagerSplitterResponse":{"description":"QueryGetManagerSplitterResponse is response type for the Query/ManagerSplitter RPC method.","type":"object","properties":{"managerSplitter":{"$ref":"#/definitions/managersplitter.ManagerSplitter"}}},"managersplitter.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params holds all the parameters of this module.","$ref":"#/definitions/managersplitter.Params"}}},"maps.ActionPermission":{"description":"ActionPermission defines the permissions for performing an action.\n\nThis is simple and straightforward as the only thing we need to check is the permitted/forbidden times.","type":"object","properties":{"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/maps.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/maps.UintRange"}}}},"maps.Map":{"type":"object","properties":{"creator":{"type":"string"},"defaultValue":{"type":"string"},"inheritManagerFrom":{"type":"string"},"manager":{"type":"string"},"mapId":{"type":"string"},"metadata":{"$ref":"#/definitions/maps.Metadata"},"permissions":{"$ref":"#/definitions/maps.MapPermissions"},"updateCriteria":{"title":"config options that will not change at all","$ref":"#/definitions/maps.MapUpdateCriteria"},"valueOptions":{"$ref":"#/definitions/maps.ValueOptions"}}},"maps.MapPermissions":{"type":"object","properties":{"canDeleteMap":{"type":"array","items":{"type":"object","$ref":"#/definitions/maps.ActionPermission"}},"canUpdateManager":{"type":"array","items":{"type":"object","$ref":"#/definitions/maps.ActionPermission"}},"canUpdateMetadata":{"type":"array","items":{"type":"object","$ref":"#/definitions/maps.ActionPermission"}}}},"maps.MapUpdateCriteria":{"type":"object","properties":{"collectionId":{"type":"string","title":"ID slots are only updatable by token ID owner of this collection (\u003e1 balance at current time)"},"creatorOnly":{"type":"boolean","title":"Keys are address based and can only be updated by that respective address"},"firstComeFirstServe":{"description":"Claim slots. Can unclaim by setting to blank. Uses lastSetBy.","type":"boolean"},"managerOnly":{"type":"boolean","title":"All ID slots are only updatable by manager"}}},"maps.Metadata":{"description":"This message defines the metadata for the map.\nThe interpretation of this metadata should follow the map standard.","type":"object","properties":{"customData":{"description":"Custom data or additional information related to the map metadata.","type":"string"},"uri":{"description":"The URI (Uniform Resource Identifier) associated with the map metadata.","type":"string"}}},"maps.MsgCreateMap":{"type":"object","properties":{"creator":{"type":"string"},"defaultValue":{"type":"string"},"inheritManagerFrom":{"type":"string"},"manager":{"type":"string"},"mapId":{"type":"string"},"metadata":{"$ref":"#/definitions/maps.Metadata"},"permissions":{"$ref":"#/definitions/maps.MapPermissions"},"updateCriteria":{"title":"config options that will not change at all","$ref":"#/definitions/maps.MapUpdateCriteria"},"valueOptions":{"$ref":"#/definitions/maps.ValueOptions"}}},"maps.MsgCreateMapResponse":{"type":"object"},"maps.MsgDeleteMap":{"type":"object","properties":{"creator":{"type":"string"},"mapId":{"type":"string"}}},"maps.MsgDeleteMapResponse":{"type":"object"},"maps.MsgSetValue":{"type":"object","properties":{"creator":{"type":"string"},"key":{"type":"string"},"mapId":{"type":"string"},"options":{"$ref":"#/definitions/maps.SetOptions"},"value":{"type":"string"}}},"maps.MsgSetValueResponse":{"type":"object"},"maps.MsgUpdateMap":{"type":"object","properties":{"creator":{"type":"string"},"manager":{"type":"string"},"mapId":{"type":"string"},"metadata":{"$ref":"#/definitions/maps.Metadata"},"permissions":{"$ref":"#/definitions/maps.MapPermissions"},"updateManager":{"type":"boolean"},"updateMetadata":{"type":"boolean"},"updatePermissions":{"type":"boolean"}}},"maps.MsgUpdateMapResponse":{"type":"object"},"maps.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the module parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/maps.Params"}}},"maps.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"maps.Params":{"description":"Params defines the parameters for the module.","type":"object"},"maps.QueryGetMapResponse":{"type":"object","properties":{"map":{"$ref":"#/definitions/maps.Map"}}},"maps.QueryGetMapValueResponse":{"type":"object","properties":{"value":{"$ref":"#/definitions/maps.ValueStore"}}},"maps.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params holds all the parameters of this module.","$ref":"#/definitions/maps.Params"}}},"maps.SetOptions":{"type":"object","properties":{"useMostRecentCollectionId":{"type":"boolean"}}},"maps.UintRange":{"description":"The UintRange is a range of IDs from some start to some end (inclusive).\n\nuintRanges are one of the core types used in the BitBadgesChain module.\nThey are used for everything from token IDs to time ranges to min/max balance amounts.\n\nSee the BitBadges documentation for more information.","type":"object","properties":{"end":{"description":"The ending value of the range (inclusive).","type":"string"},"start":{"description":"The starting value of the range (inclusive).","type":"string"}}},"maps.ValueOptions":{"type":"object","properties":{"expectAddress":{"type":"boolean"},"expectBoolean":{"type":"boolean"},"expectUint":{"type":"boolean"},"expectUri":{"type":"boolean"},"noDuplicates":{"type":"boolean"},"permanentOnceSet":{"type":"boolean"}}},"maps.ValueStore":{"type":"object","properties":{"key":{"type":"string"},"lastSetBy":{"type":"string"},"value":{"type":"string"}}},"poolmanager.v1beta1.Affiliate":{"type":"object","title":"===================== Affiliate\nAffiliate represents an affiliate fee recipient","properties":{"address":{"type":"string","title":"address is the affiliate recipient address"},"basis_points_fee":{"type":"string","title":"basis_points_fee is the fee in basis points (1/10000, e.g., 100 = 1%)"}}},"poolmanager.v1beta1.AllPoolsResponse":{"type":"object","properties":{"pools":{"type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}}}},"poolmanager.v1beta1.AllRegisteredAlloyedPoolsResponse":{"type":"object","properties":{"contract_states":{"type":"array","items":{"type":"object","$ref":"#/definitions/poolmanager.v1beta1.AlloyContractTakerFeeShareState"}}}},"poolmanager.v1beta1.AllTakerFeeShareAccumulatorsResponse":{"type":"object","properties":{"taker_fee_skim_accumulators":{"type":"array","items":{"type":"object","$ref":"#/definitions/poolmanager.v1beta1.TakerFeeSkimAccumulator"}}}},"poolmanager.v1beta1.AllTakerFeeShareAgreementsResponse":{"type":"object","properties":{"taker_fee_share_agreements":{"type":"array","items":{"type":"object","$ref":"#/definitions/poolmanager.v1beta1.TakerFeeShareAgreement"}}}},"poolmanager.v1beta1.AlloyContractTakerFeeShareState":{"description":"AlloyContractTakerFeeShareState contains the contract address of the alloyed\nasset pool, along with the adjusted taker fee share agreements for any asset\nwithin the alloyed asset pool that has a taker fee share agreement. If for\ninstance there are two denoms, and denomA makes up 50 percent and denomB\nmakes up 50 percent, and denom A has a taker fee share agreement with a skim\npercent of 10%, then the adjusted taker fee share agreement for denomA will\nbe 5%.","type":"object","properties":{"contract_address":{"description":"contract_address is the address of the alloyed asset pool contract.","type":"string"},"taker_fee_share_agreements":{"description":"taker_fee_share_agreements is the adjusted taker fee share agreements for\nany asset within the alloyed asset pool that has a taker fee share\nagreement.","type":"array","items":{"type":"object","$ref":"#/definitions/poolmanager.v1beta1.TakerFeeShareAgreement"}}}},"poolmanager.v1beta1.DenomPairTakerFee":{"type":"object","properties":{"denom0":{"description":"DEPRECATED: Now that we are using uni-directional trading pairs, we are\nusing tokenInDenom and tokenOutDenom instead of denom0 and denom1 to\nprevent confusion.","type":"string"},"denom1":{"type":"string"},"taker_fee":{"type":"string"},"tokenInDenom":{"type":"string"},"tokenOutDenom":{"type":"string"}}},"poolmanager.v1beta1.EstimateSwapExactAmountInResponse":{"type":"object","properties":{"token_out_amount":{"type":"string"}}},"poolmanager.v1beta1.EstimateSwapExactAmountOutResponse":{"type":"object","properties":{"token_in_amount":{"type":"string"}}},"poolmanager.v1beta1.EstimateTradeBasedOnPriceImpactResponse":{"description":"EstimateTradeBasedOnPriceImpactResponse represents the response data\nfor an estimated trade based on price impact. If a trade fails to be\nestimated the response would be 0,0 for input_coin and output_coin and will\nnot error.","type":"object","properties":{"input_coin":{"description":"input_coin is the actual input amount that would be tradeable\nunder the specified price impact.","$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"output_coin":{"description":"output_coin is the amount of tokens of the ToCoinDenom type\nthat will be received for the actual InputCoin trade.","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"poolmanager.v1beta1.ListPoolsByDenomResponse":{"type":"object","properties":{"pools":{"type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}}}},"poolmanager.v1beta1.MsgSetDenomPairTakerFee":{"type":"object","title":"===================== MsgSetDenomPairTakerFee","properties":{"denom_pair_taker_fee":{"type":"array","items":{"type":"object","$ref":"#/definitions/poolmanager.v1beta1.DenomPairTakerFee"}},"sender":{"type":"string"}}},"poolmanager.v1beta1.MsgSetDenomPairTakerFeeResponse":{"type":"object","properties":{"success":{"type":"boolean"}}},"poolmanager.v1beta1.MsgSetTakerFeeShareAgreementForDenom":{"type":"object","title":"===================== MsgSetTakerFeeShareAgreementForDenom","properties":{"denom":{"description":"denom is the denom that the taker fee share agreement is being set for.\nEx. If this is set to \"nBTC\", then any trade route that includes \"nBTC\"\nwill have the skim_percent skimmed from the taker fees and sent to the\nskim_address.","type":"string"},"sender":{"type":"string"},"skim_address":{"description":"skim_address is the address belonging to the respective bridge provider\nthat the skimmed taker fees will be sent to at the end of each epoch.","type":"string"},"skim_percent":{"description":"skim_percent is the percentage of taker fees that will be skimmed for the\nbridge provider, in the event that the bridge provider's denom is included\nin the swap route.","type":"string"}}},"poolmanager.v1beta1.MsgSetTakerFeeShareAgreementForDenomResponse":{"type":"object"},"poolmanager.v1beta1.MsgSplitRouteSwapExactAmountIn":{"type":"object","title":"===================== MsgSplitRouteSwapExactAmountIn","properties":{"routes":{"type":"array","items":{"type":"object","$ref":"#/definitions/poolmanager.v1beta1.SwapAmountInSplitRoute"}},"sender":{"type":"string"},"token_in_denom":{"type":"string"},"token_out_min_amount":{"type":"string"}}},"poolmanager.v1beta1.MsgSplitRouteSwapExactAmountInResponse":{"type":"object","properties":{"token_out_amount":{"type":"string"}}},"poolmanager.v1beta1.MsgSplitRouteSwapExactAmountOut":{"type":"object","title":"===================== MsgSplitRouteSwapExactAmountOut","properties":{"routes":{"type":"array","items":{"type":"object","$ref":"#/definitions/poolmanager.v1beta1.SwapAmountOutSplitRoute"}},"sender":{"type":"string"},"token_in_max_amount":{"type":"string"},"token_out_denom":{"type":"string"}}},"poolmanager.v1beta1.MsgSplitRouteSwapExactAmountOutResponse":{"type":"object","properties":{"token_in_amount":{"type":"string"}}},"poolmanager.v1beta1.MsgSwapExactAmountIn":{"type":"object","title":"===================== MsgSwapExactAmountIn","properties":{"routes":{"type":"array","items":{"type":"object","$ref":"#/definitions/poolmanager.v1beta1.SwapAmountInRoute"}},"sender":{"type":"string"},"token_in":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"token_out_min_amount":{"type":"string"}}},"poolmanager.v1beta1.MsgSwapExactAmountInResponse":{"type":"object","properties":{"token_out_amount":{"type":"string"}}},"poolmanager.v1beta1.MsgSwapExactAmountOut":{"type":"object","title":"===================== MsgSwapExactAmountOut","properties":{"routes":{"type":"array","items":{"type":"object","$ref":"#/definitions/poolmanager.v1beta1.SwapAmountOutRoute"}},"sender":{"type":"string"},"token_in_max_amount":{"type":"string"},"token_out":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"poolmanager.v1beta1.MsgSwapExactAmountOutResponse":{"type":"object","properties":{"token_in_amount":{"type":"string"}}},"poolmanager.v1beta1.NumPoolsResponse":{"type":"object","properties":{"num_pools":{"type":"string","format":"uint64"}}},"poolmanager.v1beta1.Params":{"type":"object","title":"Params holds parameters for the poolmanager module","properties":{"taker_fee_params":{"description":"taker_fee_params is the container of taker fee parameters.","$ref":"#/definitions/poolmanager.v1beta1.TakerFeeParams"}}},"poolmanager.v1beta1.ParamsResponse":{"type":"object","properties":{"params":{"$ref":"#/definitions/poolmanager.v1beta1.Params"}}},"poolmanager.v1beta1.PoolResponse":{"type":"object","properties":{"pool":{"$ref":"#/definitions/google.protobuf.Any"}}},"poolmanager.v1beta1.RegisteredAlloyedPoolFromDenomResponse":{"type":"object","properties":{"contract_state":{"$ref":"#/definitions/poolmanager.v1beta1.AlloyContractTakerFeeShareState"}}},"poolmanager.v1beta1.RegisteredAlloyedPoolFromPoolIdResponse":{"type":"object","properties":{"contract_state":{"$ref":"#/definitions/poolmanager.v1beta1.AlloyContractTakerFeeShareState"}}},"poolmanager.v1beta1.SpotPriceResponse":{"description":"SpotPriceResponse defines the gRPC response structure for a SpotPrice\nquery.","type":"object","properties":{"spot_price":{"type":"string","title":"String of the Dec. Ex) 10.203uatom"}}},"poolmanager.v1beta1.SwapAmountInRoute":{"type":"object","properties":{"pool_id":{"type":"string","format":"uint64"},"token_out_denom":{"type":"string"}}},"poolmanager.v1beta1.SwapAmountInSplitRoute":{"type":"object","properties":{"pools":{"type":"array","items":{"type":"object","$ref":"#/definitions/poolmanager.v1beta1.SwapAmountInRoute"}},"token_in_amount":{"type":"string"}}},"poolmanager.v1beta1.SwapAmountOutRoute":{"type":"object","properties":{"pool_id":{"type":"string","format":"uint64"},"token_in_denom":{"type":"string"}}},"poolmanager.v1beta1.SwapAmountOutSplitRoute":{"type":"object","properties":{"pools":{"type":"array","items":{"type":"object","$ref":"#/definitions/poolmanager.v1beta1.SwapAmountOutRoute"}},"token_out_amount":{"type":"string"}}},"poolmanager.v1beta1.TakerFeeDistributionPercentage":{"description":"TakerFeeDistributionPercentage defines what percent of the taker fee category\ngets distributed to the available categories.","type":"object","properties":{"community_pool":{"type":"string"},"staking_rewards":{"type":"string"}}},"poolmanager.v1beta1.TakerFeeParams":{"description":"TakerFeeParams consolidates the taker fee parameters for the poolmanager.","type":"object","properties":{"admin_addresses":{"description":"admin_addresses is a list of addresses that are allowed to set and remove\ncustom taker fees for denom pairs. Governance also has the ability to set\nand remove custom taker fees for denom pairs, but with the normal\ngovernance delay.","type":"array","items":{"type":"string"}},"community_pool_denom_to_swap_non_whitelisted_assets_to":{"description":"community_pool_denom_to_swap_non_whitelisted_assets_to is the denom that\nnon-whitelisted taker fees will be swapped to before being sent to\nthe community pool.","type":"string"},"community_pool_denom_whitelist":{"description":"community_pool_denom_whitelist is a list of denoms that should be sent\ndirectly to the community pool instead of being swapped to the\n`community_pool_denom_to_swap_non_whitelisted_assets_to`.","type":"array","items":{"type":"string"}},"default_taker_fee":{"description":"default_taker_fee is the fee used when creating a new pool that doesn't\nfall under a custom pool taker fee or stableswap taker fee category.","type":"string"},"non_osmo_taker_fee_distribution":{"description":"non_osmo_taker_fee_distribution defines the distribution of taker fees\ngenerated in non-OSMO. As of this writing, it has two categories:\n- staking_rewards: the percent of the taker fee that gets swapped to OSMO\n and then distributed to stakers.\n- community_pool: the percent of the taker fee that gets sent to the\n community pool. Note: If the non-OSMO asset is an authorized_quote_denom,\n that denom is sent directly to the community pool. Otherwise, it is\n swapped to the community_pool_denom_to_swap_non_whitelisted_assets_to and\n then sent to the community pool as that denom.","$ref":"#/definitions/poolmanager.v1beta1.TakerFeeDistributionPercentage"},"osmo_taker_fee_distribution":{"description":"osmo_taker_fee_distribution defines the distribution of taker fees\ngenerated in OSMO. As of this writing, it has two categories:\n- staking_rewards: the percent of the taker fee that gets distributed to\n stakers.\n- community_pool: the percent of the taker fee that gets sent to the\n community pool.","$ref":"#/definitions/poolmanager.v1beta1.TakerFeeDistributionPercentage"},"reduced_fee_whitelist":{"description":"reduced_fee_whitelist is a list of addresses that are\nallowed to pay a reduce taker fee when performing a swap\n(i.e. swap without paying the taker fee).\nIt is intended to be used for integrators who meet qualifying factors\nthat are approved by governance.\nInitially, the taker fee is allowed to be bypassed completely. However\nIn the future, we will charge a reduced taker fee instead of no fee at all.","type":"array","items":{"type":"string"}}}},"poolmanager.v1beta1.TakerFeeShareAgreement":{"description":"TakerFeeShareAgreement represents the agreement between the Osmosis protocol\nand a specific denom to share a certain percent of taker fees generated in\nany route that contains said denom. For example, if the agreement specifies a\n10% skim_percent, this means 10% of the taker fees generated in a swap route\ncontaining the specified denom will be sent to the address specified\nin the skim_address field at the end of each epoch. These skim_percents are\nadditive, so if three taker fee agreements have skim percents of 10%, 20%,\nand 30%, the total skim percent for the route will be 60%.","type":"object","properties":{"denom":{"description":"denom is the denom that has the taker fee share agreement.","type":"string"},"skim_address":{"description":"skim_address is the address belonging to the respective denom\nthat the skimmed taker fees will be sent to at the end of each epoch.","type":"string"},"skim_percent":{"description":"skim_percent is the percentage of taker fees that will be skimmed for the\ndenom, in the event that the denom is included in the swap route.","type":"string"}}},"poolmanager.v1beta1.TakerFeeShareAgreementFromDenomResponse":{"type":"object","properties":{"taker_fee_share_agreement":{"$ref":"#/definitions/poolmanager.v1beta1.TakerFeeShareAgreement"}}},"poolmanager.v1beta1.TakerFeeShareDenomsToAccruedValueResponse":{"type":"object","properties":{"amount":{"type":"string"}}},"poolmanager.v1beta1.TakerFeeSkimAccumulator":{"description":"TakerFeeSkimAccumulator accumulates the total skimmed taker fees for each\ndenom that has a taker fee share agreement.","type":"object","properties":{"denom":{"description":"denom is the denom that has the taker fee share agreement.","type":"string"},"skimmed_taker_fees":{"description":"skimmed_taker_fees is the total skimmed taker fees for the denom.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"poolmanager.v1beta1.TotalLiquidityResponse":{"type":"object","properties":{"liquidity":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"poolmanager.v1beta1.TotalPoolLiquidityResponse":{"type":"object","properties":{"liquidity":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"poolmanager.v1beta1.TotalVolumeForPoolResponse":{"type":"object","properties":{"volume":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"poolmanager.v1beta1.TradingPairTakerFeeResponse":{"type":"object","properties":{"taker_fee":{"type":"string"}}},"poolmanager.v2.SpotPriceResponse":{"description":"SpotPriceResponse defines the gRPC response structure for a SpotPrice\nquery.","type":"object","properties":{"spot_price":{"type":"string","title":"String of the BigDec. Ex) 10.203uatom"}}},"sendmanager.MsgSendWithAliasRouting":{"description":"MsgSendWithAliasRouting defines a message for sending coins with alias denom routing.\nThis message mirrors cosmos bank MsgSend but routes through sendmanager to handle\nboth standard coins and alias denoms (e.g., badgeslp:).","type":"object","properties":{"amount":{"description":"amount is the list of coins to send.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"from_address":{"description":"from_address is the address of the account sending the coins.","type":"string"},"to_address":{"description":"to_address is the address of the account receiving the coins.","type":"string"}}},"sendmanager.MsgSendWithAliasRoutingResponse":{"description":"MsgSendWithAliasRoutingResponse defines the response structure for executing a\nMsgSendWithAliasRouting message.","type":"object"},"sendmanager.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the module parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/sendmanager.Params"}}},"sendmanager.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"sendmanager.Params":{"description":"Params defines the parameters for the module.","type":"object"},"sendmanager.QueryBalanceResponse":{"description":"QueryBalanceResponse is response type for the Query/Balance RPC method.","type":"object","properties":{"balance":{"description":"balance is the balance of the specified denom for the address.","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"sendmanager.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params holds all the parameters of this module.","$ref":"#/definitions/sendmanager.Params"}}},"tokenization.ActionPermission":{"description":"ActionPermission defines the permissions for performing an action.\n\nThis is simple and straightforward as the only thing we need to check is the permitted/forbidden times.","type":"object","properties":{"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}}}},"tokenization.AddressChecks":{"type":"object","title":"AddressChecks defines checks for address types (EVM contract, liquidity pool, etc.)","properties":{"mustBeEvmContract":{"description":"Require the address to be an EVM contract (has code).","type":"boolean"},"mustBeLiquidityPool":{"description":"Require the address to be a liquidity pool.","type":"boolean"},"mustNotBeEvmContract":{"description":"Require the address to not be an EVM contract (no code).","type":"boolean"},"mustNotBeLiquidityPool":{"description":"Require the address to not be a liquidity pool.","type":"boolean"}}},"tokenization.AddressList":{"type":"object","title":"An AddressList is a list of addresses that are referenced by an ID.\nAddressLists are used in defining approvals ia a reusbale identifier. \nNote: We also support a reserved ID system by string ID; \"Mint\", \"!Mint\"","properties":{"addresses":{"description":"List of addresses included in the list.","type":"array","items":{"type":"string"}},"createdBy":{"description":"The user or entity who created the address list.","type":"string"},"customData":{"description":"Custom arbitrary data or additional information related to the address list.","type":"string"},"listId":{"description":"Unique identifier for the address list.","type":"string"},"uri":{"description":"URI (Uniform Resource Identifier) associated with the address list to provide metadata, if applicable.","type":"string"},"whitelist":{"description":"Indicates whether the list includes the specified addresses (true) or excludes them (false).","type":"boolean"}}},"tokenization.AddressListInput":{"description":"AddressListInput is used for creating address lists via MsgCreateAddressLists.\nIt contains all fields from AddressList except createdBy, which is automatically set from the message creator.","type":"object","properties":{"addresses":{"description":"List of addresses included in the list.","type":"array","items":{"type":"string"}},"customData":{"description":"Custom arbitrary data or additional information related to the address list.","type":"string"},"listId":{"description":"Unique identifier for the address list.","type":"string"},"uri":{"description":"URI (Uniform Resource Identifier) associated with the address list to provide metadata, if applicable.","type":"string"},"whitelist":{"description":"Indicates whether the list includes the specified addresses (true) or excludes them (false).","type":"boolean"}}},"tokenization.AliasPath":{"type":"object","properties":{"conversion":{"description":"The conversion between cosmos coin and token balances.","$ref":"#/definitions/tokenization.ConversionWithoutDenom"},"denom":{"description":"The denomination (denom) to be used for the alias.","type":"string"},"denomUnits":{"description":"Denomination units for the alias. Defines how the coin can be displayed with different decimal places and symbols.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.DenomUnit"}},"metadata":{"description":"The metadata for this alias path.","$ref":"#/definitions/tokenization.PathMetadata"},"symbol":{"description":"The symbol for the alias (e.g., \"BADGE\", \"NFT\"). Used for display purposes. Note that this may not be the default.","type":"string"}}},"tokenization.AliasPathAddObject":{"type":"object","properties":{"conversion":{"$ref":"#/definitions/tokenization.ConversionWithoutDenom"},"denom":{"type":"string"},"denomUnits":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.DenomUnit"}},"metadata":{"description":"The metadata for this alias path.","$ref":"#/definitions/tokenization.PathMetadata"},"symbol":{"type":"string"}}},"tokenization.AltTimeChecks":{"type":"object","title":"AltTimeChecks defines alternative time-based checks for approval denial.\nIf the transfer time falls within any of the specified offline hours or days, the approval is denied.\nUses UTC timezone for neutral timezone approach.\nofflineHours: ranges of hours (0-23) when transfers should be denied\nofflineDays: ranges of days (0-6, where 0=Sunday, 1=Monday, ..., 6=Saturday) when transfers should be denied","properties":{"offlineDays":{"description":"Days (0-6, where 0=Sunday, 1=Monday, ..., 6=Saturday) when transfers should be denied.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"offlineDaysOfMonth":{"description":"Days of month (1-31) when transfers should be denied.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"offlineHours":{"description":"Hours (0-23) when transfers should be denied.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"offlineMonths":{"description":"Months (1-12, where 1=January, 12=December) when transfers should be denied.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"offlineWeeksOfYear":{"description":"Weeks of year (1-52) when transfers should be denied. Uses ISO 8601 week numbering.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"timezoneOffsetMinutes":{"description":"Timezone offset magnitude in minutes from UTC. Default 0 = UTC. Examples: 300 for EST (UTC-5), 330 for IST (UTC+5:30).\nAll time checks are evaluated after applying this offset to the block time.","type":"string"},"timezoneOffsetNegative":{"type":"boolean","title":"If true, the timezone offset is subtracted (west of UTC). If false, it is added (east of UTC).\nExample: EST (UTC-5) = timezoneOffsetMinutes: 300, timezoneOffsetNegative: true"}}},"tokenization.ApprovalAmounts":{"description":"ApprovalAmounts defines approval amounts per unique \"from,\" \"to,\" and/or \"initiated by\" address.\nIf any of these are nil or \"0\", we assume unlimited approvals.\nIf they are set to a value, then the running tally of the amounts transferred for the specified token IDs and ownership times \nmust not exceed the corresponding value.","type":"object","properties":{"amountTrackerId":{"description":"The ID of the amount tracker associated with this approval.\nWe use this ID to track the number of transfers and amounts transferred.","type":"string"},"overallApprovalAmount":{"description":"Overall approval amount.","type":"string"},"perFromAddressApprovalAmount":{"description":"Approval amount per \"from\" address.","type":"string"},"perInitiatedByAddressApprovalAmount":{"description":"Approval amount per \"initiated by\" address.","type":"string"},"perToAddressApprovalAmount":{"description":"Approval amount per \"to\" address.","type":"string"},"resetTimeIntervals":{"description":"Time intervals to reset the trackers at.","$ref":"#/definitions/tokenization.ResetTimeIntervals"}}},"tokenization.ApprovalChange":{"description":"ApprovalChange represents a change to an approval (created, edited, or deleted).","type":"object","properties":{"action":{"type":"string"},"approvalId":{"type":"string"},"approvalLevel":{"type":"string"},"version":{"type":"string"}}},"tokenization.ApprovalCriteria":{"description":"ApprovalCriteria defines the criteria for approving transfers.\nAll criteria must be satisfied for the approval to be considered valid.","type":"object","properties":{"allowBackedMinting":{"description":"If true, this collection approval allows backed minting operations (CosmosCoinBackedPath).\nWhen false, this approval cannot be used for transfers involving backed minting addresses.\nThis prevents accidental allowances when toListIds is \"All\".","type":"boolean"},"allowSpecialWrapping":{"description":"If true, this collection approval allows special wrapping operations (CosmosCoinWrapperPath).\nWhen false, this approval cannot be used for transfers involving wrapping addresses.\nThis prevents accidental allowances when toListIds is \"All\".","type":"boolean"},"altTimeChecks":{"description":"Alternative time-based checks for approval denial (offline hours/days). Defines time periods\nduring which this approval should be denied, such as specific hours of the day or days of the week.","$ref":"#/definitions/tokenization.AltTimeChecks"},"approvalAmounts":{"description":"Threshold limit of amounts that can be transferred using this approval. Tracks cumulative amounts\ntransferred and enforces maximum limits per approval.","$ref":"#/definitions/tokenization.ApprovalAmounts"},"autoDeletionOptions":{"description":"Auto-deletion options for this approval. Defines conditions under which this approval should be\nautomatically deleted (e.g., after a certain number of uses or time period).","$ref":"#/definitions/tokenization.AutoDeletionOptions"},"coinTransfers":{"description":"The sdk.Coins that need to be transferred for approval. Defines required coin transfers (e.g., fees,\nroyalties) that must be executed alongside the token transfer for the approval to be valid.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.CoinTransfer"}},"dynamicStoreChallenges":{"description":"Dynamic store challenges that the initiator must pass for approval. The initiator must provide\nvalid proofs that satisfy all specified dynamic store challenges (e.g., key-value store lookups).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.DynamicStoreChallenge"}},"ethSignatureChallenges":{"description":"ETH signature challenges that the initiator must pass for approval. The initiator must provide\nvalid Ethereum signatures for all specified challenges. Each signature can only be used once.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ETHSignatureChallenge"}},"evmQueryChallenges":{"description":"EVM query challenges that must pass for approval. Read-only contract queries\nthat verify external EVM state (e.g., token ownership in another contract).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.EVMQueryChallenge"}},"initiatorChecks":{"description":"Address checks for the initiator of the transfer. Validates that the initiator address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.AddressChecks"},"maxNumTransfers":{"description":"Maximum number of transfers that can be processed using this approval. Tracks the count of transfers\nand enforces the limit to prevent exceeding the allowed number of uses.","$ref":"#/definitions/tokenization.MaxNumTransfers"},"merkleChallenges":{"description":"Merkle challenges that must be satisfied for approval. The initiator must provide valid Merkle proofs\nthat satisfy all specified challenges. Each challenge requires a proof that leads to a specific root hash.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.MerkleChallenge"}},"mustOwnTokens":{"description":"Must own tokens for approval. Defines token ownership requirements that must be satisfied for\nthe approval to be valid. The initiator must own the specified tokens at the specified ownership times.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.MustOwnTokens"}},"mustPrioritize":{"description":"If true, this approval must be explicitly prioritized in PrioritizedApprovals to be used.\nThis allows fine-grained control over which approvals are applied when multiple approvals could match.","type":"boolean"},"overridesFromOutgoingApprovals":{"description":"Overrides the user's outgoing approvals for approval. If true, this collection-level approval\ntakes precedence over any outgoing approvals defined by the sender, allowing the collection to\ncontrol outgoing transfer behavior.","type":"boolean"},"overridesToIncomingApprovals":{"description":"Overrides the user's incoming approvals for approval. If true, this collection-level approval\ntakes precedence over any incoming approvals defined by the recipient, allowing the collection to\ncontrol incoming transfer behavior.","type":"boolean"},"predeterminedBalances":{"description":"Predetermined balances that must be used for each approval. Defines the exact token amounts and IDs\nthat can be transferred when using this approval.","$ref":"#/definitions/tokenization.PredeterminedBalances"},"recipientChecks":{"description":"Address checks for the recipient of the transfer. Validates that the recipient address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.AddressChecks"},"requireFromDoesNotEqualInitiatedBy":{"description":"Require the \"from\" address to not be equal to the \"initiated by\" address for approval.\nIf true, transfers where the sender equals the initiator are forbidden.","type":"boolean"},"requireFromEqualsInitiatedBy":{"description":"Require the \"from\" address to be equal to the \"initiated by\" address for approval.\nIf true, only transfers where the sender matches the initiator are allowed.","type":"boolean"},"requireToDoesNotEqualInitiatedBy":{"description":"Require the \"to\" address to not be equal to the \"initiated by\" address for approval.\nIf true, transfers where the recipient equals the initiator are forbidden.","type":"boolean"},"requireToEqualsInitiatedBy":{"description":"Require the \"to\" address to be equal to the \"initiated by\" address for approval.\nIf true, only transfers where the recipient matches the initiator are allowed.","type":"boolean"},"senderChecks":{"description":"Address checks for the sender of the transfer. Validates that the sender address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.AddressChecks"},"userApprovalSettings":{"description":"Issuer-imposed constraints on user-level coin transfers. Propagated to user-level approvals\nduring greedy transfer matching (same pattern as userRoyalties). Only applicable on collection-level approvals.\nIf conflicting settings across multiple matched approvals, the transfer is rejected (like royalties).","$ref":"#/definitions/tokenization.UserApprovalSettings"},"votingChallenges":{"description":"Voting challenges that must be satisfied for approval. The initiator must provide\nvalid votes that meet the quorum threshold for all specified challenges.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.VotingChallenge"}}}},"tokenization.ApprovalIdentifierDetails":{"description":"ApprovalIdentifierDetails defines the details to identify a specific approval.","type":"object","properties":{"approvalId":{"description":"The ID of the approval.","type":"string"},"approvalLevel":{"description":"The level of the approval. Can be \"collection\", \"incoming\", or \"outgoing\".","type":"string"},"approverAddress":{"description":"The address of the approver. Leave blank \"\" if approvalLevel == \"collection\".","type":"string"},"version":{"description":"The version of the approval.","type":"string"}}},"tokenization.ApprovalTracker":{"description":"ApprovalTracker defines the tracker for approvals. This tracks the cumulative number of transfers and associated balances transferred.","type":"object","properties":{"amounts":{"description":"Cumulative balances associated with the transfers that have been processed.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.Balance"}},"lastUpdatedAt":{"description":"Last updated at time.","type":"string"},"numTransfers":{"description":"The number of transfers that have been processed.","type":"string"}}},"tokenization.ApprovalUsed":{"description":"ApprovalUsed represents an approval that was consumed during a transfer.","type":"object","properties":{"approvalId":{"type":"string"},"approvalLevel":{"type":"string"},"approverAddress":{"type":"string"},"version":{"type":"string"}}},"tokenization.AutoDeletionOptions":{"description":"AutoDeletionOptions defines the options for auto-deletion of approvals.","type":"object","properties":{"afterOneUse":{"type":"boolean","title":"After one use?"},"afterOverallMaxNumTransfers":{"type":"boolean","title":"After overall max number of uses threshold is met?"},"allowCounterpartyPurge":{"type":"boolean","title":"Allow counterparty to purge this approval if they are the only initiator"},"allowPurgeIfExpired":{"type":"boolean","title":"Allow others to call PurgeApprovals on behalf of this approval owner"}}},"tokenization.Balance":{"description":"Balance represents the balance of a token for a specific user.\nThe user amounts xAmount of a token specified for the time ranges specified.\n\nExample: User A owns x10 of token IDs 1-10 from 1/1/2020 to 1/1/2021.\n\nIf times or tokenIDs have len \u003e 1, then the user owns all token IDs specified for all time ranges specified.","type":"object","properties":{"amount":{"description":"The amount of the token owned by the user.","type":"string"},"ownershipTimes":{"description":"The time ranges during which the user owns the token.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"tokenIds":{"description":"The token IDs for which the user owns the token.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}}}},"tokenization.CoinTransfer":{"type":"object","properties":{"coins":{"description":"The sdk.Coins to be transferred.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"overrideFromWithApproverAddress":{"description":"By default, the from address is the initiator of the transaction.\nIf this is set to true, we will override the from address with the approver address.\nNote: This is not applicable for collection approvals (since approverAddress == '').","type":"boolean"},"overrideToWithInitiator":{"description":"By default, the to address is what is specified in the coin transfer.\nIf this is set to true, we will override the to address with the initiator of the transaction.","type":"boolean"},"to":{"description":"The address of the recipient of the transfer.","type":"string"}}},"tokenization.CoinTransferProto":{"description":"CoinTransferProto represents a coin transfer that occurred during a transaction.","type":"object","properties":{"amount":{"type":"string"},"denom":{"type":"string"},"from":{"type":"string"},"isProtocolFee":{"type":"boolean"},"to":{"type":"string"}}},"tokenization.CollectionApproval":{"type":"object","title":"CollectionApproval defines the rules for the approval of a transfer on the collection level","properties":{"approvalCriteria":{"description":"The criteria that must be met for this approval to be considered.","$ref":"#/definitions/tokenization.ApprovalCriteria"},"approvalId":{"description":"The ID of this approval. Must be unique per level (i.e. collection, outgoing, incoming).","type":"string"},"customData":{"description":"Arbitrary custom data associated with this approval.","type":"string"},"fromListId":{"description":"The list ID for the sender of the transfer.","type":"string"},"initiatedByListId":{"description":"The list ID for the user who initiated the transfer.","type":"string"},"ownershipTimes":{"description":"The allowed range of ownership times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"toListId":{"description":"The list ID for the recipient of the transfer.","type":"string"},"tokenIds":{"description":"The allowed range of token IDs for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"transferTimes":{"description":"The allowed range of transfer times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"uri":{"description":"The URI associated with this approval, optionally providing metadata about the approval.","type":"string"},"version":{"description":"Version of the approval. Maintained internally.","type":"string"}}},"tokenization.CollectionApprovalPermission":{"description":"CollectionApprovalPermission defines what collection approved transfers can be updated vs. are locked.\n\nEach transfer is broken down to a (from, to, initiatedBy, transferTime, tokenId) tuple.\nFor a transfer to match, we need to match ALL of the fields in the combination. \nThese are determined by the fromListId, toListId, initiatedByListId, transferTimes, tokenIds fields.\nAddressLists are used for (from, to, initiatedBy) which are a permanent list of addresses identified by an ID (see AddressLists). \n\npermanentlyPermitted/ForbiddenTimes: when can the manager execute this permission?\n\nEx: Let's say we are updating the transferability for the transfer tuple (\"AllWithoutMint\", \"AllWithoutMint\", \"AllWithoutMint\", 10, 1000).\nWe would check to find the FIRST CollectionApprovalPermission that matches this combination.\nIf we find a match, we would check the permitted/forbidden times to see if we can execute this permission (default is ALLOWED).\n\nEx: So if you wanted to freeze the transferability to enforce that token ID 1 will always be transferable, you could set\nthe combination (\"AllWithoutMint\", \"AllWithoutMint\", \"AllWithoutMint\", \"All Transfer Times\", 1) to always be forbidden.","type":"object","properties":{"approvalId":{"description":"Identifier for the approvalId. You can use \"All\" or \"!approvalId\" for shorthand.\nIf you use \"All\", this approval will match to all approvalIds.\nIf you use \"!approvalId\", this approval will match to all approvalIds except for approvalId.\nIf you use \"approvalId\", this approval will match to only the specified approvalId and fail on all others.","type":"string"},"fromListId":{"description":"Identifier for the sender list.","type":"string"},"initiatedByListId":{"description":"Identifier for the initiator list (who is approved?).","type":"string"},"ownershipTimes":{"description":"Specifies the ownership times for the tokens in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"toListId":{"description":"Identifier for the recipient list.","type":"string"},"tokenIds":{"description":"Specifies the token IDs involved in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"transferTimes":{"description":"Specifies the times when the transfer can occur.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}}}},"tokenization.CollectionInvariants":{"description":"CollectionInvariants defines the invariants that apply to a collection.","type":"object","properties":{"cosmosCoinBackedPath":{"description":"The IBC backed (sdk.coin) path for the collection. Only one path is allowed.","$ref":"#/definitions/tokenization.CosmosCoinBackedPath"},"disablePoolCreation":{"description":"If true, disallows pool creation with this collection's assets.\nWhen true, any attempt to create a pool with tokenization assets from this collection will fail.","type":"boolean"},"evmQueryChallenges":{"type":"array","title":"EVM query invariants that must pass after all transfers complete.\nThese are checked once per message after all balance updates, with access to ALL recipient addresses.\nPlaceholders: $sender, $recipients (comma-separated), $initiator, $collectionId, $recipient","items":{"type":"object","$ref":"#/definitions/tokenization.EVMQueryChallenge"}},"maxSupplyPerId":{"description":"Maximum supply per token ID. Checked against Total address balances after transfers complete.\nA value of 0 means no limit (unlimited).","type":"string"},"noCustomOwnershipTimes":{"description":"If true, all ownership times must be full ranges [{ start: 1, end: GoMaxUInt64 }].\nThis prevents time-based restrictions on token ownership.","type":"boolean"},"noForcefulPostMintTransfers":{"description":"If true, disallows any collection approvals that have overridesFromOutgoingApprovals or overridesToIncomingApprovals set to true.\nThis prevents forceful transfers that bypass user-level approvals.\nThis only applies to transfers where the from address does not equal \"Mint\".","type":"boolean"}}},"tokenization.CollectionMetadata":{"description":"This message defines the metadata for the collection.\nThe interpretation of this metadata should follow the collection standard.","type":"object","properties":{"customData":{"description":"Custom data or additional information related to the collection metadata.","type":"string"},"uri":{"description":"The URI (Uniform Resource Identifier) associated with the collection metadata.","type":"string"}}},"tokenization.CollectionPermissions":{"description":"CollectionPermissions defines the permissions for the collection (i.e., what the manager can and cannot do).\n\nThere are three types of permissions for a collection: ActionPermission, TokenIdsActionPermission, and CollectionApprovalPermission.\n\nThe permission type allows fine-grained access control for each action.\n- ActionPermission: defines when the manager can perform an action or update a field.\n- TokenIdsActionPermission: defines when the manager can perform an action for specific tokens\n- CollectionApprovalPermission: defines when the manager can update the transferability of the collection and what transfers can be updated vs. locked.\n\nNote there are a few different times here which could get confusing:\n- permanentlyPermitted/ForbiddenTimes - the times that a permission can be performed\n- transferTimes - the times that a transfer occurs\n- ownershipTimes - the times when a token is owned by a user\n\nThe permitted/permanentlyForbiddenTimes are used to determine when a permission can be executed.\nOnce a time is set to be permitted or forbidden, it is PERMANENT and cannot be changed.\nIf a time is not set to be permitted or forbidden, it is considered NEUTRAL and can be updated but is ALLOWED by default.\n\nIMPORTANT: We take first-match only for the permissions. This means that if you forbid time T in array index 0 and permit time T in index 1, \nwe will only check the first permission (forbid time T) and not the second permission (permit time T).","type":"object","properties":{"canAddMoreAliasPaths":{"description":"Permissions related to adding more alias paths to the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ActionPermission"}},"canAddMoreCosmosCoinWrapperPaths":{"description":"Permissions related to adding more cosmos coin wrapper paths to the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ActionPermission"}},"canArchiveCollection":{"description":"Permissions related to archiving the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ActionPermission"}},"canDeleteCollection":{"description":"Permissions related to deleting the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ActionPermission"}},"canUpdateCollectionApprovals":{"description":"Permissions related to updating collection approvals.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.CollectionApprovalPermission"}},"canUpdateCollectionMetadata":{"description":"Permissions related to updating the metadata of the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ActionPermission"}},"canUpdateCustomData":{"description":"Permissions related to updating custom data for the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ActionPermission"}},"canUpdateManager":{"description":"Permissions related to updating the collection's manager.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ActionPermission"}},"canUpdateStandards":{"description":"Permissions related to updating standards for the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ActionPermission"}},"canUpdateTokenMetadata":{"description":"Permissions related to updating token metadata for specific tokens.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.TokenIdsActionPermission"}},"canUpdateValidTokenIds":{"description":"Permissions related to creating more tokens for the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.TokenIdsActionPermission"}}}},"tokenization.CollectionStats":{"description":"CollectionStats tracks aggregated statistics for a collection.","type":"object","properties":{"balances":{"type":"array","title":"Tracks circulating supply as Balance[] for proper range handling","items":{"type":"object","$ref":"#/definitions/tokenization.Balance"}},"holderCount":{"type":"string"}}},"tokenization.Conversion":{"description":"Conversion defines a bidirectional conversion between a cosmos coin (with denom) and token balances.","type":"object","properties":{"sideA":{"description":"Side A: The cosmos coin side of the conversion (amount + denom).","$ref":"#/definitions/tokenization.ConversionSideAWithDenom"},"sideB":{"description":"Side B: The token balances side of the conversion.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.Balance"}}}},"tokenization.ConversionSideA":{"description":"ConversionSideA represents the cosmos coin amount side of a conversion without denomination.","type":"object","properties":{"amount":{"description":"The amount of the cosmos coin (0 decimals).","type":"string"}}},"tokenization.ConversionSideAWithDenom":{"description":"ConversionSideAWithDenom represents the cosmos coin side of a conversion with denomination.","type":"object","properties":{"amount":{"description":"The amount of the cosmos coin (0 decimals).","type":"string"},"denom":{"description":"The denomination of the cosmos coin.","type":"string"}}},"tokenization.ConversionWithoutDenom":{"description":"ConversionWithoutDenom defines a bidirectional conversion between a cosmos coin amount (without denom) and token balances.\nThe denom is stored at the base level (e.g., in AliasPath or CosmosCoinWrapperPath).","type":"object","properties":{"sideA":{"description":"Side A: The cosmos coin amount side of the conversion (amount only, denom stored separately).","$ref":"#/definitions/tokenization.ConversionSideA"},"sideB":{"description":"Side B: The token balances side of the conversion.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.Balance"}}}},"tokenization.CosmosCoinBackedPath":{"type":"object","properties":{"address":{"description":"The address associated with this backed path. Used for routing and escrowing IBC tokens.","type":"string"},"conversion":{"description":"The conversion between IBC cosmos coin and token balances.","$ref":"#/definitions/tokenization.Conversion"}}},"tokenization.CosmosCoinBackedPathAddObject":{"type":"object","properties":{"conversion":{"$ref":"#/definitions/tokenization.Conversion"}}},"tokenization.CosmosCoinWrapperPath":{"type":"object","properties":{"address":{"description":"The BitBadges address associated with this wrapper path. Used for routing and identifying the wrapper.","type":"string"},"allowOverrideWithAnyValidToken":{"description":"If true, allows this wrapper path to be used with any valid token ID in the collection via an {id} placeholder.","type":"boolean"},"conversion":{"description":"The conversion between cosmos coin and token balances.","$ref":"#/definitions/tokenization.ConversionWithoutDenom"},"denom":{"description":"The denomination (denom) to be used for the wrapped coin or the alias denom.","type":"string"},"denomUnits":{"description":"Denomination units for the wrapped coin. Defines how the coin can be displayed with different\ndecimal places and symbols (e.g., base unit, display unit). You can specify which is the default display unit (base level or one of these).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.DenomUnit"}},"metadata":{"description":"The metadata for this wrapper path.","$ref":"#/definitions/tokenization.PathMetadata"},"symbol":{"description":"The symbol for the wrapped coin (e.g., \"BADGE\", \"NFT\"). Used for display purposes. Note that this may not be the default.","type":"string"}}},"tokenization.CosmosCoinWrapperPathAddObject":{"type":"object","properties":{"allowOverrideWithAnyValidToken":{"type":"boolean"},"conversion":{"$ref":"#/definitions/tokenization.ConversionWithoutDenom"},"denom":{"type":"string"},"denomUnits":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.DenomUnit"}},"metadata":{"description":"The metadata for this wrapper path.","$ref":"#/definitions/tokenization.PathMetadata"},"symbol":{"type":"string"}}},"tokenization.DenomUnit":{"type":"object","properties":{"decimals":{"description":"The number of decimal places for this unit. Defines the precision of the unit.","type":"string"},"isDefaultDisplay":{"description":"If true, this is the default display unit. Only one unit should be marked as the default display unit.\nThis unit will be used by default when displaying the coin amount. If none are marked default, we use the base level.","type":"boolean"},"metadata":{"description":"The metadata for this denomination unit.","$ref":"#/definitions/tokenization.PathMetadata"},"symbol":{"description":"The symbol for this unit (e.g., \"BADGE\", \"nBADGE\"). Used for display purposes.","type":"string"}}},"tokenization.DynamicStore":{"description":"A DynamicStore is a flexible storage object that can store arbitrary data.\nIt is identified by a unique ID assigned by the blockchain, which is a uint64 that increments.\nDynamic stores are created by users and can only be updated or deleted by their creator.\nThey provide a way to store custom data on-chain with proper access control.","type":"object","properties":{"createdBy":{"description":"The address of the creator of this dynamic store.","type":"string"},"customData":{"description":"Custom data field for storing arbitrary data associated with this dynamic store.","type":"string"},"defaultValue":{"description":"The default value for uninitialized addresses (true/false).","type":"boolean"},"globalEnabled":{"description":"Global kill switch state (defaults to true on creation, can be toggled via UpdateDynamicStore).\nWhen false, all approvals using this store via DynamicStoreChallenge will fail immediately.","type":"boolean"},"storeId":{"description":"The unique identifier for this dynamic store. This is assigned by the blockchain.","type":"string"},"uri":{"description":"URI for additional metadata or resources associated with this dynamic store.","type":"string"}}},"tokenization.DynamicStoreChallenge":{"description":"DynamicStoreChallenge defines a challenge that requires the initiator to pass a dynamic store check.","type":"object","properties":{"ownershipCheckParty":{"description":"The party to check ownership for. Options are \"initiator\", \"sender\", \"recipient\", or any valid bb1 address.\nIf a valid bb1 address is provided, ownership will be checked for that specific address.\nThis enables use cases like halt tokens where ownership is checked for an arbitrary address (e.g., halt token owner).\nDefaults to \"initiator\" if empty or if the value is not a recognized option or valid bb1 address.","type":"string"},"storeId":{"description":"The ID of the dynamic store to check.","type":"string"}}},"tokenization.DynamicStoreValue":{"description":"A DynamicStoreValue stores a boolean value for a specific address in a dynamic store.\nThis allows the creator to set true/false values per address that can be checked during approval.","type":"object","properties":{"address":{"description":"The address for which this value is stored.","type":"string"},"storeId":{"description":"The unique identifier for this dynamic store.","type":"string"},"value":{"description":"The boolean value (true/false).","type":"boolean"}}},"tokenization.ETHSignatureChallenge":{"description":"ETHSignatureChallenge defines a rule for the approval in the form of an Ethereum signature challenge.\n\nAn ETH signature challenge is a challenge where the user must provide a valid Ethereum signature for a specific nonce.\nThe signature scheme is ETHSign(nonce + \"-\" + initiatorAddress + \"-\" + collectionId + \"-\" + approverAddress + \"-\" + approvalLevel + \"-\" + approvalId + \"-\" + challengeId) and each signature can only be used once.\nAll challenges must be met with valid solutions for the transfer to be approved.\n\nIMPORTANT: We track the usage of each signature to prevent replay attacks. Each signature can only be used once.\nIf you update the challenge ID, then the used signatures tracker will reset and start a new tally.\nWe recommend using a unique challenge ID for each challenge to prevent overlap and unexpected behavior.","type":"object","properties":{"challengeTrackerId":{"description":"The ID of this ETH signature challenge for tracking the number of uses per signature.","type":"string"},"customData":{"description":"Arbitrary custom data associated with this ETH signature challenge.","type":"string"},"signer":{"description":"The Ethereum address that must sign the nonce for verification.","type":"string"},"uri":{"description":"The URI associated with this ETH signature challenge, optionally providing metadata about the challenge.","type":"string"}}},"tokenization.ETHSignatureProof":{"description":"ETHSignatureProof represents an Ethereum signature proof for a challenge.","type":"object","properties":{"nonce":{"description":"The nonce that was signed. The signature scheme is ETHSign(nonce + \"-\" + initiatorAddress + \"-\" + collectionId + \"-\" + approverAddress + \"-\" + approvalLevel + \"-\" + approvalId + \"-\" + challengeId).","type":"string"},"signature":{"description":"The Ethereum signature of the nonce.","type":"string"}}},"tokenization.EVMQueryChallenge":{"description":"EVMQueryChallenge defines a rule for approval via read-only EVM contract query.\n\nThe challenge executes a staticcall to the specified contract with the given calldata.\nThe result is compared against the expected result (if provided) or checked for non-zero return.\n\nIMPORTANT: This is read-only and cannot modify state. The query is executed with a gas limit\nto prevent DoS attacks. All results are deterministic since EVM state is consistent within a block.","type":"object","properties":{"calldata":{"type":"string","title":"ABI-encoded function selector + arguments (hex string without 0x prefix)\nExample: \"70a08231000000000000000000000000{address}\" for balanceOf(address)\nCan use placeholders: $initiator, $sender, $recipient (replaced at runtime)"},"comparisonOperator":{"description":"Comparison operator: \"eq\" (equals), \"ne\" (not equals), \"gt\" (greater than), \"gte\", \"lt\", \"lte\"\nOnly \"eq\" and \"ne\" work for non-numeric types. Default is \"eq\".","type":"string"},"contractAddress":{"type":"string","title":"The EVM contract address to query (0x format or bb1 format)"},"customData":{"type":"string","title":"Arbitrary custom data"},"expectedResult":{"description":"Expected return value (hex string without 0x prefix). If empty, any non-error result passes.\nFor boolean checks, use \"0000...0001\" for true.","type":"string"},"gasLimit":{"type":"string","title":"Gas limit for the query (default 100000, max 500000)"},"uri":{"type":"string","title":"The URI associated with this challenge (metadata)"}}},"tokenization.IncomingApprovalCriteria":{"description":"IncomingApprovalCriteria defines the criteria for approving incoming transfers.\nThis is used for user-level incoming approvals and only includes fields relevant to incoming transfers.\nAll criteria must be satisfied for the approval to be considered valid.","type":"object","properties":{"altTimeChecks":{"description":"Alternative time-based checks for approval denial (offline hours/days). Defines time periods\nduring which this approval should be denied, such as specific hours of the day or days of the week.","$ref":"#/definitions/tokenization.AltTimeChecks"},"approvalAmounts":{"description":"Threshold limit of amounts that can be transferred using this approval. Tracks cumulative amounts\ntransferred and enforces maximum limits per approval.","$ref":"#/definitions/tokenization.ApprovalAmounts"},"autoDeletionOptions":{"description":"Auto-deletion options for this approval. Defines conditions under which this approval should be\nautomatically deleted (e.g., after a certain number of uses or time period).","$ref":"#/definitions/tokenization.AutoDeletionOptions"},"coinTransfers":{"description":"The sdk.Coins that need to be transferred for approval. Defines required coin transfers (e.g., fees,\nroyalties) that must be executed alongside the token transfer for the approval to be valid.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.CoinTransfer"}},"dynamicStoreChallenges":{"description":"Dynamic store challenges that the initiator must pass for approval. The initiator must provide\nvalid proofs that satisfy all specified dynamic store challenges (e.g., key-value store lookups).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.DynamicStoreChallenge"}},"ethSignatureChallenges":{"description":"ETH signature challenges that the initiator must pass for approval. The initiator must provide\nvalid Ethereum signatures for all specified challenges. Each signature can only be used once.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ETHSignatureChallenge"}},"evmQueryChallenges":{"description":"EVM query challenges that must pass for approval. Read-only contract queries\nthat verify external EVM state (e.g., token ownership in another contract).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.EVMQueryChallenge"}},"initiatorChecks":{"description":"Address checks for the initiator of the transfer. Validates that the initiator address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.AddressChecks"},"maxNumTransfers":{"description":"Maximum number of transfers that can be processed using this approval. Tracks the count of transfers\nand enforces the limit to prevent exceeding the allowed number of uses.","$ref":"#/definitions/tokenization.MaxNumTransfers"},"merkleChallenges":{"description":"Merkle challenges that must be satisfied for approval. The initiator must provide valid Merkle proofs\nthat satisfy all specified challenges. Each challenge requires a proof that leads to a specific root hash.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.MerkleChallenge"}},"mustOwnTokens":{"description":"Must own tokens for approval. Defines token ownership requirements that must be satisfied for\nthe approval to be valid. The initiator must own the specified tokens at the specified ownership times.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.MustOwnTokens"}},"mustPrioritize":{"description":"If true, this approval must be explicitly prioritized in PrioritizedApprovals to be used.\nThis allows fine-grained control over which approvals are applied when multiple approvals could match.","type":"boolean"},"predeterminedBalances":{"description":"Predetermined balances that must be used for each approval. Defines the exact token amounts and IDs\nthat can be transferred when using this approval.","$ref":"#/definitions/tokenization.PredeterminedBalances"},"requireFromDoesNotEqualInitiatedBy":{"description":"Require the \"from\" address to not be equal to the \"initiated by\" address for approval.\nIf true, transfers where the sender equals the initiator are forbidden.","type":"boolean"},"requireFromEqualsInitiatedBy":{"description":"Require the \"from\" address to be equal to the \"initiated by\" address for approval.\nIf true, only transfers where the sender matches the initiator are allowed.","type":"boolean"},"senderChecks":{"description":"Address checks for the sender of the transfer. Validates that the sender address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).\nNote: No recipient checks are included for incoming approvals since the recipient is the user themselves.","$ref":"#/definitions/tokenization.AddressChecks"},"votingChallenges":{"description":"Voting challenges that must be satisfied for approval. The initiator must provide\nvalid votes that meet the quorum threshold for all specified challenges.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.VotingChallenge"}}}},"tokenization.IncrementedBalances":{"description":"IncrementedBalances represents balances that are incremented by specific amounts, according to the order calculation method.","type":"object","properties":{"allowAmountScaling":{"description":"When true, the actual transfer can be any evenly divisible integer multiple (\u003e=1x) of startBalances.\napprovalCriteria.coinTransfers are scaled by the same multiplier.\nAll other IncrementedBalances fields must be zero/false/nil when this is true.","type":"boolean"},"allowOverrideTimestamp":{"description":"Whether to allow overriding the timestamp for the balances (only applicable with durationFromTimestamp set).","type":"boolean"},"allowOverrideWithAnyValidToken":{"type":"boolean","title":"Allow override of any valid ID"},"durationFromTimestamp":{"description":"The amount of unix milliseconds to approve starting from now. Incompatible with incrementOwnershipTimesBy.","type":"string"},"incrementOwnershipTimesBy":{"description":"The amount by which to increment ownership times. Incompatible with approveStartingFromNowBy.","type":"string"},"incrementTokenIdsBy":{"description":"The amount by which to increment token IDs.","type":"string"},"maxScalingMultiplier":{"description":"Maximum allowed scaling multiplier. Must be \u003e 0 when allowAmountScaling is true.\nThe chain rejects transfers where the computed multiplier exceeds this cap.\nIgnored (set to \"0\") when allowAmountScaling is false.","type":"string"},"recurringOwnershipTimes":{"description":"Recurring ownership times.","$ref":"#/definitions/tokenization.RecurringOwnershipTimes"},"startBalances":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.Balance"}}}},"tokenization.InvariantsAddObject":{"description":"InvariantsAddObject is used for adding invariants without specifying addresses.\nAddresses are generated by the keeper and stored in the collection.","type":"object","properties":{"cosmosCoinBackedPath":{"description":"The IBC backed (sdk.coin) path for the collection. Only one path is allowed.\nAddress will be generated by the keeper.","$ref":"#/definitions/tokenization.CosmosCoinBackedPathAddObject"},"disablePoolCreation":{"description":"If true, disallows pool creation with this collection's assets.\nWhen true, any attempt to create a pool with tokenization assets from this collection will fail.","type":"boolean"},"evmQueryChallenges":{"type":"array","title":"EVM query invariants that must pass after all transfers complete.\nThese are checked once per message after all balance updates, with access to ALL recipient addresses.\nPlaceholders: $sender, $recipients (comma-separated), $initiator, $collectionId, $recipient","items":{"type":"object","$ref":"#/definitions/tokenization.EVMQueryChallenge"}},"maxSupplyPerId":{"description":"Maximum supply per token ID. Checked against Total address balances after transfers complete.\nA value of 0 means no limit (unlimited).","type":"string"},"noCustomOwnershipTimes":{"description":"If true, all ownership times must be full ranges [{ start: 1, end: GoMaxUInt64 }].\nThis prevents time-based restrictions on token ownership.","type":"boolean"},"noForcefulPostMintTransfers":{"description":"If true, disallows any collection approvals that have overridesFromOutgoingApprovals or overridesToIncomingApprovals set to true.\nThis prevents forceful transfers that bypass user-level approvals.\nThis only applies to transfers where the from address does not equal \"Mint\".","type":"boolean"}}},"tokenization.ManualBalances":{"description":"ManualBalances represents a list of manual balances entered for the predetermined balances criteria. Order is calculated according to the calculation method set.","type":"object","properties":{"balances":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.Balance"}}}},"tokenization.MaxNumTransfers":{"description":"MaxNumTransfers defines the maximum number of transfers per unique \"from,\" \"to,\" and/or \"initiated by\" address.\nIf any of these are nil or \"0\", we assume unlimited approvals.\nIf they are set to a value, then the running tally of the number of transfers for the specified token IDs and ownership times\nmust not exceed the corresponding value.","type":"object","properties":{"amountTrackerId":{"description":"The ID of the amount tracker associated with this approval.\nWe use this ID to track the number of transfers and amounts transferred.","type":"string"},"overallMaxNumTransfers":{"description":"Overall maximum number of transfers.","type":"string"},"perFromAddressMaxNumTransfers":{"description":"Maximum number of transfers per \"from\" address.","type":"string"},"perInitiatedByAddressMaxNumTransfers":{"description":"Maximum number of transfers per \"initiated by\" address.","type":"string"},"perToAddressMaxNumTransfers":{"description":"Maximum number of transfers per \"to\" address.","type":"string"},"resetTimeIntervals":{"description":"Time intervals to reset the trackers at.","$ref":"#/definitions/tokenization.ResetTimeIntervals"}}},"tokenization.MerkleChallenge":{"description":"Challenges define a rule for the approval in the form of a Merkle challenge.\n\nA Merkle challenge is a challenge where the user must provide a Merkle proof to a Merkle tree. If they provide a valid proof,\nthen the challenge is met. All challenges must be met with valid solutions for the transfer to be approved.\n\nIMPORTANT: Merkle challenges currently are limited to SHA256 hashes. See documentation for MerkleChallenge for more details and tutorials.\n\nIMPORTANT: We track the number of uses per leaf according to the challengeTrackerId specified by the parent approval of this challenge.\nIf you update the challenge ID, then the used leaves tracker will reset and start a new tally.\nWe recommend using a unique challenge ID for each challenge to prevent overlap and unexpected behavior.","type":"object","properties":{"challengeTrackerId":{"description":"The ID of this Merkle challenge for tracking the number of uses per leaf.","type":"string"},"customData":{"description":"Arbitrary custom data associated with this Merkle challenge.","type":"string"},"expectedProofLength":{"description":"The expected length of the Merkle path for verification. Used to prevent Merkle path truncation attacks.","type":"string"},"leafSigner":{"description":"Ethereum address that must sign the leaf. Used to protect against man-in-the-middle attacks.\nSignature scheme: sign(leaf + \"-\" + creatorAddress), verified using elliptic curve signature verification.","type":"string"},"maxUsesPerLeaf":{"description":"The maximum number of times each leaf can be used. Must be 1 if useCreatorAddressAsLeaf is false to prevent replay attacks.","type":"string"},"root":{"description":"The root hash of the Merkle tree to which the Merkle path must lead for verification.","type":"string"},"uri":{"description":"The URI associated with this Merkle challenge, optionally providing metadata about the challenge.","type":"string"},"useCreatorAddressAsLeaf":{"description":"If true, we will override the user's leaf for their proof with their creator address. Used for whitelist trees where all leaves are valid BitBadges addresses.","type":"boolean"}}},"tokenization.MerklePathItem":{"description":"MerklePathItem represents an item in a Merkle path.","type":"object","properties":{"aunt":{"description":"The hash of the sibling node (aunt) in the Merkle path.","type":"string"},"onRight":{"description":"Indicates whether the aunt node is on the right side of the path.","type":"boolean"}}},"tokenization.MerkleProof":{"description":"MerkleProof represents a Merkle proof, consistent with Tendermint/Crypto Merkle tree.","type":"object","properties":{"aunts":{"description":"List of Merkle path items (aunts) that make up the proof.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.MerklePathItem"}},"leaf":{"description":"The hash of the leaf node for which the proof is generated.","type":"string"},"leafSignature":{"description":"The signature of the leaf node tying the address to the leaf node.","type":"string"}}},"tokenization.MsgCastVote":{"description":"MsgCastVote allows a voter to cast or update their vote for a voting challenge.","type":"object","properties":{"approvalId":{"description":"The approval ID.","type":"string"},"approvalLevel":{"description":"The approval level (\"collection\", \"incoming\", or \"outgoing\").","type":"string"},"approverAddress":{"description":"The approver address (empty string for collection-level approvals).","type":"string"},"collectionId":{"description":"The collection ID for the voting challenge.","type":"string"},"creator":{"description":"The address of the voter casting the vote.","type":"string"},"proposalId":{"description":"The proposal ID (challenge ID) from the VotingChallenge.","type":"string"},"yesWeight":{"description":"The percentage weight (0-100) allocated to \"yes\" vote.\nThe remaining percentage (100 - yesWeight) is allocated to \"no\" vote.\nExample: yesWeight=70 means 70% yes, 30% no.","type":"string"}}},"tokenization.MsgCastVoteResponse":{"type":"object"},"tokenization.MsgCreateAddressLists":{"description":"MsgCreateAddressLists is used to create address lists.","type":"object","properties":{"addressLists":{"description":"Address lists to create. The createdBy field will be automatically set to the creator address.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.AddressListInput"}},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.MsgCreateAddressListsResponse":{"description":"MsgCreateAddressListsResponse is the response to MsgCreateAddressLists.","type":"object"},"tokenization.MsgCreateCollection":{"description":"MsgCreateCollection is used to create a new collection.","type":"object","properties":{"aliasPathsToAdd":{"description":"Alias (non-wrapping) paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.AliasPathAddObject"}},"collectionApprovals":{"description":"Collection approvals.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.CollectionApproval"}},"collectionMetadata":{"description":"Collection metadata.","$ref":"#/definitions/tokenization.CollectionMetadata"},"collectionPermissions":{"description":"Collection permissions.","$ref":"#/definitions/tokenization.CollectionPermissions"},"cosmosCoinWrapperPathsToAdd":{"description":"IBC wrapper paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.CosmosCoinWrapperPathAddObject"}},"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"Custom data.","type":"string"},"defaultBalances":{"title":"The default balances for the user","$ref":"#/definitions/tokenization.UserBalanceStore"},"invariants":{"description":"Collection-level invariants that cannot be broken.\nAddresses are generated by the keeper and stored in the collection.","$ref":"#/definitions/tokenization.InvariantsAddObject"},"isArchived":{"description":"isArchived flag.","type":"boolean"},"manager":{"description":"Manager address.","type":"string"},"mintEscrowCoinsToTransfer":{"description":"Coins to be transferred to the mint escrow address.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"standards":{"description":"Standards entries.","type":"array","items":{"type":"string"}},"tokenMetadata":{"description":"Token metadata entries.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.TokenMetadata"}},"validTokenIds":{"type":"array","title":"New token IDs to add to this collection","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}}}},"tokenization.MsgCreateCollectionResponse":{"description":"MsgCreateCollectionResponse is the response to MsgCreateCollection.","type":"object","properties":{"approvalChanges":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ApprovalChange"}},"collectionId":{"description":"ID of the collection.","type":"string"},"reviewItems":{"type":"array","items":{"type":"string"}}}},"tokenization.MsgCreateDynamicStore":{"description":"MsgCreateDynamicStore is used to create a new dynamic store.","type":"object","properties":{"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"Custom data field for storing arbitrary data associated with this dynamic store.","type":"string"},"defaultValue":{"description":"The default value for uninitialized addresses (true/false).","type":"boolean"},"uri":{"description":"URI for additional metadata or resources associated with this dynamic store.","type":"string"}}},"tokenization.MsgCreateDynamicStoreResponse":{"description":"MsgCreateDynamicStoreResponse is the response to MsgCreateDynamicStore.","type":"object","properties":{"reviewItems":{"type":"array","items":{"type":"string"}},"storeId":{"description":"ID of the dynamic store.","type":"string"}}},"tokenization.MsgDeleteCollection":{"description":"MsgDeleteCollection is used to delete a collection.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.MsgDeleteCollectionResponse":{"description":"MsgDeleteCollectionResponse is the response to MsgDeleteCollection.","type":"object"},"tokenization.MsgDeleteDynamicStore":{"description":"MsgDeleteDynamicStore is used to delete a dynamic store.","type":"object","properties":{"creator":{"description":"Address of the creator.","type":"string"},"storeId":{"description":"ID of the dynamic store to delete.","type":"string"}}},"tokenization.MsgDeleteDynamicStoreResponse":{"description":"MsgDeleteDynamicStoreResponse is the response to MsgDeleteDynamicStore.","type":"object"},"tokenization.MsgDeleteIncomingApproval":{"description":"MsgDeleteIncomingApproval is a helper message to delete a single incoming approval.","type":"object","properties":{"approvalId":{"description":"The ID of the approval to delete.","type":"string"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.MsgDeleteIncomingApprovalResponse":{"description":"MsgDeleteIncomingApprovalResponse is the response to MsgDeleteIncomingApproval.","type":"object","properties":{"found":{"type":"boolean"},"reviewItems":{"type":"array","items":{"type":"string"}},"version":{"type":"string"}}},"tokenization.MsgDeleteOutgoingApproval":{"description":"MsgDeleteOutgoingApproval is a helper message to delete a single outgoing approval.","type":"object","properties":{"approvalId":{"description":"The ID of the approval to delete.","type":"string"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.MsgDeleteOutgoingApprovalResponse":{"description":"MsgDeleteOutgoingApprovalResponse is the response to MsgDeleteOutgoingApproval.","type":"object","properties":{"found":{"type":"boolean"},"reviewItems":{"type":"array","items":{"type":"string"}},"version":{"type":"string"}}},"tokenization.MsgPurgeApprovals":{"description":"MsgPurgeApprovals is a helper message to purge expired approvals.","type":"object","properties":{"approvalsToPurge":{"description":"Specific approvals to purge. If empty, purges all applicable approvals based on other flags.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ApprovalIdentifierDetails"}},"approverAddress":{"description":"Address of the user whose approvals to purge. If empty, defaults to creator.","type":"string"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"purgeCounterpartyApprovals":{"description":"Whether to purge counterparty approvals (approvals where the creator is the only initiator).","type":"boolean"},"purgeExpired":{"description":"Whether to purge expired approvals (approvals with no future valid transfer times).","type":"boolean"}}},"tokenization.MsgPurgeApprovalsResponse":{"description":"MsgPurgeApprovalsResponse is the response to MsgPurgeApprovals.","type":"object","properties":{"numPurged":{"description":"Number of approvals purged.","type":"string"},"purgedApprovalIds":{"type":"array","items":{"type":"string"}},"reviewItems":{"type":"array","items":{"type":"string"}}}},"tokenization.MsgSetCollectionApprovals":{"type":"object","title":"MsgSetCollectionApprovals sets the collection approvals and canUpdateCollectionApprovals permission","properties":{"canUpdateCollectionApprovals":{"type":"array","title":"Permission to update collection approvals","items":{"type":"object","$ref":"#/definitions/tokenization.CollectionApprovalPermission"}},"collectionApprovals":{"description":"New collection approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.CollectionApproval"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.MsgSetCollectionApprovalsResponse":{"description":"MsgSetCollectionApprovalsResponse is the response to MsgSetCollectionApprovals.","type":"object","properties":{"approvalChanges":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ApprovalChange"}},"collectionId":{"description":"ID of the collection.","type":"string"},"reviewItems":{"type":"array","items":{"type":"string"}}}},"tokenization.MsgSetCollectionMetadata":{"type":"object","title":"MsgSetCollectionMetadata sets the collection metadata and canUpdateCollectionMetadata permission","properties":{"canUpdateCollectionMetadata":{"type":"array","title":"Permission to update collection metadata","items":{"type":"object","$ref":"#/definitions/tokenization.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"collectionMetadata":{"description":"New collection metadata to set.","$ref":"#/definitions/tokenization.CollectionMetadata"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.MsgSetCollectionMetadataResponse":{"description":"MsgSetCollectionMetadataResponse is the response to MsgSetCollectionMetadata.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.MsgSetCustomData":{"type":"object","title":"MsgSetCustomData sets the custom data and canUpdateCustomData permission","properties":{"canUpdateCustomData":{"type":"array","title":"Permission to update custom data","items":{"type":"object","$ref":"#/definitions/tokenization.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"New custom data to set.","type":"string"}}},"tokenization.MsgSetCustomDataResponse":{"description":"MsgSetCustomDataResponse is the response to MsgSetCustomData.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.MsgSetDynamicStoreValue":{"description":"MsgSetDynamicStoreValue is used to set a boolean value for a specific address in a dynamic store.","type":"object","properties":{"address":{"description":"The address for which to set the value.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"storeId":{"description":"ID of the dynamic store.","type":"string"},"value":{"description":"The boolean value to set (true/false).","type":"boolean"}}},"tokenization.MsgSetDynamicStoreValueResponse":{"description":"MsgSetDynamicStoreValueResponse is the response to MsgSetDynamicStoreValue.","type":"object","properties":{"previousValue":{"type":"string"},"reviewItems":{"type":"array","items":{"type":"string"}}}},"tokenization.MsgSetIncomingApproval":{"description":"MsgSetIncomingApproval is a helper message to set a single incoming approval.","type":"object","properties":{"approval":{"description":"The incoming approval to set.","$ref":"#/definitions/tokenization.UserIncomingApproval"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.MsgSetIncomingApprovalResponse":{"description":"MsgSetIncomingApprovalResponse is the response to MsgSetIncomingApproval.","type":"object","properties":{"action":{"type":"string"},"reviewItems":{"type":"array","items":{"type":"string"}},"version":{"type":"string"}}},"tokenization.MsgSetIsArchived":{"type":"object","title":"MsgSetIsArchived sets the isArchived and canArchiveCollection permission","properties":{"canArchiveCollection":{"type":"array","title":"Permission to archive collection","items":{"type":"object","$ref":"#/definitions/tokenization.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"isArchived":{"description":"New isArchived to set.","type":"boolean"}}},"tokenization.MsgSetIsArchivedResponse":{"description":"MsgSetIsArchivedResponse is the response to MsgSetIsArchived.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.MsgSetManager":{"type":"object","title":"MsgSetManager sets the manager and canUpdateManager permission","properties":{"canUpdateManager":{"type":"array","title":"Permission to update manager","items":{"type":"object","$ref":"#/definitions/tokenization.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"manager":{"description":"New manager to set.","type":"string"}}},"tokenization.MsgSetManagerResponse":{"description":"MsgSetManagerResponse is the response to MsgSetManager.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.MsgSetOutgoingApproval":{"description":"MsgSetOutgoingApproval is a helper message to set a single outgoing approval.","type":"object","properties":{"approval":{"description":"The outgoing approval to set.","$ref":"#/definitions/tokenization.UserOutgoingApproval"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.MsgSetOutgoingApprovalResponse":{"description":"MsgSetOutgoingApprovalResponse is the response to MsgSetOutgoingApproval.","type":"object","properties":{"action":{"type":"string"},"reviewItems":{"type":"array","items":{"type":"string"}},"version":{"type":"string"}}},"tokenization.MsgSetReservedProtocolAddress":{"description":"MsgSetReservedProtocolAddress sets or unsets a reserved protocol address (governance-only).","type":"object","properties":{"address":{"description":"Address to set or unset as reserved protocol address.","type":"string"},"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"isReservedProtocol":{"description":"Whether the address should be a reserved protocol address (true) or not (false).","type":"boolean"}}},"tokenization.MsgSetReservedProtocolAddressResponse":{"description":"MsgSetReservedProtocolAddressResponse is the response to MsgSetReservedProtocolAddress.","type":"object"},"tokenization.MsgSetStandards":{"type":"object","title":"MsgSetStandards sets the standards and canUpdateStandards permission","properties":{"canUpdateStandards":{"type":"array","title":"Permission to update standards","items":{"type":"object","$ref":"#/definitions/tokenization.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"standards":{"description":"New standards to set.","type":"array","items":{"type":"string"}}}},"tokenization.MsgSetStandardsResponse":{"description":"MsgSetStandardsResponse is the response to MsgSetStandards.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.MsgSetTokenMetadata":{"type":"object","title":"MsgSetTokenMetadata sets the token metadata and canUpdateTokenMetadata permission","properties":{"canUpdateTokenMetadata":{"type":"array","title":"Permission to update token metadata","items":{"type":"object","$ref":"#/definitions/tokenization.TokenIdsActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"tokenMetadata":{"description":"New token metadata to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.TokenMetadata"}}}},"tokenization.MsgSetTokenMetadataResponse":{"description":"MsgSetTokenMetadataResponse is the response to MsgSetTokenMetadata.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.MsgSetValidTokenIds":{"type":"object","title":"MsgSetValidTokenIds sets the validTokenIds and canUpdateValidTokenIds permission","properties":{"canUpdateValidTokenIds":{"type":"array","title":"Permission to update valid token IDs","items":{"type":"object","$ref":"#/definitions/tokenization.TokenIdsActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"validTokenIds":{"type":"array","title":"New token IDs to add to this collection","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}}}},"tokenization.MsgSetValidTokenIdsResponse":{"description":"MsgSetValidTokenIdsResponse is the response to MsgSetValidTokenIds.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.MsgTransferTokens":{"description":"MsgTransferTokens is used to transfer tokens.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"transfers":{"description":"Transfers to execute.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.Transfer"}}}},"tokenization.MsgTransferTokensResponse":{"description":"MsgTransferTokensResponse is the response to MsgTransferTokens.","type":"object","properties":{"approvalsUsed":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ApprovalUsed"}},"balancesTransferred":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.Balance"}},"coinTransfers":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.CoinTransferProto"}},"reviewItems":{"type":"array","items":{"type":"string"}}}},"tokenization.MsgUniversalUpdateCollection":{"description":"MsgUniversalUpdateCollection is used to define MsgServer types for all requests and responses for Msgs of the tokens module.\nIt is a universal interface that can be used for both creating and updating collections.\nWe have it defined for legacy purposes, but it is recommended to use MsgCreateCollection and MsgUpdateCollection instead.","type":"object","properties":{"aliasPathsToAdd":{"description":"Alias (non-wrapping) paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.AliasPathAddObject"}},"collectionApprovals":{"description":"New collection approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.CollectionApproval"}},"collectionId":{"description":"ID of the collection (0 for new collection).","type":"string"},"collectionMetadata":{"description":"New collection metadata to set.","$ref":"#/definitions/tokenization.CollectionMetadata"},"collectionPermissions":{"description":"New collection permissions to set.","$ref":"#/definitions/tokenization.CollectionPermissions"},"cosmosCoinWrapperPathsToAdd":{"description":"IBC wrapper paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.CosmosCoinWrapperPathAddObject"}},"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"New custom data to set.","type":"string"},"defaultBalances":{"title":"The default balances for the user","$ref":"#/definitions/tokenization.UserBalanceStore"},"invariants":{"description":"Collection-level invariants that cannot be broken.\nThese are set upon genesis and cannot be modified.\nAddresses are generated by the keeper and stored in the collection.","$ref":"#/definitions/tokenization.InvariantsAddObject"},"isArchived":{"description":"New isArchived to set.","type":"boolean"},"manager":{"description":"New manager to set.","type":"string"},"mintEscrowCoinsToTransfer":{"description":"Coins to be transferred to the mint escrow address.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"standards":{"description":"New standards to set.","type":"array","items":{"type":"string"}},"tokenMetadata":{"description":"New token metadata to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.TokenMetadata"}},"updateCollectionApprovals":{"description":"Indicates if collection approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCollectionMetadata":{"description":"Indicates if the collection metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCollectionPermissions":{"description":"Indicates if collection permissions should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCustomData":{"description":"Indicates if the custom data should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateIsArchived":{"description":"Indicates if the isArchived should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateManager":{"description":"Indicates if the manager should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateStandards":{"description":"Indicates if the standards should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateTokenMetadata":{"description":"Indicates if the token metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateValidTokenIds":{"description":"Indicates if the valid token IDs should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"validTokenIds":{"type":"array","title":"New token IDs to add to this collection","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}}}},"tokenization.MsgUniversalUpdateCollectionResponse":{"description":"MsgUniversalUpdateCollectionResponse is the response to MsgUniversalUpdateCollection.","type":"object","properties":{"approvalChanges":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ApprovalChange"}},"collectionId":{"description":"ID of the collection.","type":"string"},"reviewItems":{"type":"array","items":{"type":"string"}}}},"tokenization.MsgUpdateCollection":{"description":"MsgUpdateCollection is used to update a collection.","type":"object","properties":{"aliasPathsToAdd":{"description":"Alias (non-wrapping) paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.AliasPathAddObject"}},"collectionApprovals":{"description":"New collection approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.CollectionApproval"}},"collectionId":{"description":"ID of the collection (0 for new collection).","type":"string"},"collectionMetadata":{"description":"New collection metadata to set.","$ref":"#/definitions/tokenization.CollectionMetadata"},"collectionPermissions":{"description":"New collection permissions to set.","$ref":"#/definitions/tokenization.CollectionPermissions"},"cosmosCoinWrapperPathsToAdd":{"description":"IBC wrapper paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.CosmosCoinWrapperPathAddObject"}},"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"New custom data to set.","type":"string"},"invariants":{"description":"Collection-level invariants that cannot be broken.\nThese are set upon genesis and cannot be modified.\nAddresses are generated by the keeper and stored in the collection.","$ref":"#/definitions/tokenization.InvariantsAddObject"},"isArchived":{"description":"New isArchived to set.","type":"boolean"},"manager":{"description":"New manager to set.","type":"string"},"mintEscrowCoinsToTransfer":{"description":"Coins to be transferred to the mint escrow address.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"standards":{"description":"New standards to set.","type":"array","items":{"type":"string"}},"tokenMetadata":{"description":"New token metadata to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.TokenMetadata"}},"updateCollectionApprovals":{"description":"Indicates if collection approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCollectionMetadata":{"description":"Indicates if the collection metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCollectionPermissions":{"description":"Indicates if collection permissions should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCustomData":{"description":"Indicates if the custom data should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateIsArchived":{"description":"Indicates if the isArchived should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateManager":{"description":"Indicates if the manager should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateStandards":{"description":"Indicates if the standards should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateTokenMetadata":{"description":"Indicates if the token metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateValidTokenIds":{"description":"Indicates if the valid token IDs should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"validTokenIds":{"type":"array","title":"New token IDs to add to this collection","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}}}},"tokenization.MsgUpdateCollectionResponse":{"description":"MsgUpdateCollectionResponse is the response to MsgUpdateCollection.","type":"object","properties":{"approvalChanges":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ApprovalChange"}},"collectionId":{"description":"ID of the collection.","type":"string"},"reviewItems":{"type":"array","items":{"type":"string"}}}},"tokenization.MsgUpdateDynamicStore":{"description":"MsgUpdateDynamicStore is used to update an existing dynamic store.","type":"object","properties":{"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"Custom data field for storing arbitrary data associated with this dynamic store.","type":"string"},"defaultValue":{"description":"The new default value for uninitialized addresses (true/false).","type":"boolean"},"globalEnabled":{"description":"The global kill switch state (true = enabled, false = disabled/halted).\nCallers should query the current value first if they want to keep it unchanged.","type":"boolean"},"storeId":{"description":"ID of the dynamic store to update.","type":"string"},"uri":{"description":"URI for additional metadata or resources associated with this dynamic store.","type":"string"}}},"tokenization.MsgUpdateDynamicStoreResponse":{"description":"MsgUpdateDynamicStoreResponse is the response to MsgUpdateDynamicStore.","type":"object"},"tokenization.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the module parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/tokenization.Params"}}},"tokenization.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"tokenization.MsgUpdateUserApprovals":{"description":"MsgUpdateUserApprovals is used to update user approvals.","type":"object","properties":{"autoApproveAllIncomingTransfers":{"description":"Auto-approve setting for all incoming transfers.","type":"boolean"},"autoApproveSelfInitiatedIncomingTransfers":{"description":"Auto-approve setting for self-initiated incoming transfers.","type":"boolean"},"autoApproveSelfInitiatedOutgoingTransfers":{"description":"Auto-approve setting for self-initiated outgoing transfers.","type":"boolean"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"incomingApprovals":{"description":"New incoming approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UserIncomingApproval"}},"outgoingApprovals":{"description":"New outgoing approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UserOutgoingApproval"}},"updateAutoApproveAllIncomingTransfers":{"description":"Indicates if auto-approve settings for all incoming transfers should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateAutoApproveSelfInitiatedIncomingTransfers":{"description":"Indicates if auto-approve settings for self-initiated incoming transfers should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateAutoApproveSelfInitiatedOutgoingTransfers":{"description":"Indicates if auto-approve settings for self-initiated outgoing transfers should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateIncomingApprovals":{"description":"Indicates if incoming approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateOutgoingApprovals":{"description":"Indicates if outgoing approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateUserPermissions":{"description":"Indicates if user permissions should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"userPermissions":{"description":"New user permissions to set.","$ref":"#/definitions/tokenization.UserPermissions"}}},"tokenization.MsgUpdateUserApprovalsResponse":{"description":"MsgUpdateUserApprovalsResponse is the response to MsgUpdateUserApprovals.","type":"object","properties":{"incomingChanges":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ApprovalChange"}},"outgoingChanges":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ApprovalChange"}},"reviewItems":{"type":"array","items":{"type":"string"}}}},"tokenization.MustOwnTokens":{"description":"MustOwnTokens represents a condition where a user must own specific tokens\nto be approved to transfer.\n\n- collectionId: The ID of the collection for the tokens that must be owned\n- amountRange: The range of amounts the user must own (min to max)\n- ownershipTimes: The time ranges during which the user must own the tokens.\n- tokenIds: The token IDs the user must own.\n- overrideWithCurrentTime: If true, auto override ownershipTimes with the current time.\n- mustSatisfyForAllAssets: If true, the user must own all specified tokens; otherwise, owning any one for \u003e= 1 millisecond is sufficient.","type":"object","properties":{"amountRange":{"description":"The range of amounts the user must own (min to max).","$ref":"#/definitions/tokenization.UintRange"},"collectionId":{"description":"The ID of the collection.","type":"string"},"mustSatisfyForAllAssets":{"description":"If true, the user must meet ownership requirements for all specified tokens; else, must meet requirements for any single token.","type":"boolean"},"overrideWithCurrentTime":{"description":"If true, override ownershipTimes with the current time.","type":"boolean"},"ownershipCheckParty":{"description":"The party to check ownership for. Options are \"initiator\", \"sender\", \"recipient\", or any valid bb1 address.\nIf a valid bb1 address is provided, ownership will be checked for that specific address.\nThis enables use cases like halt tokens where ownership is checked for an arbitrary address (e.g., halt token owner).\nDefaults to \"initiator\" if empty or if the value is not a recognized option or valid bb1 address.","type":"string"},"ownershipTimes":{"description":"The time ranges during which the user must own the tokens.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"tokenIds":{"description":"The token IDs the user must own.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}}}},"tokenization.OutgoingApprovalCriteria":{"description":"OutgoingApprovalCriteria defines the criteria for approving outgoing transfers.\nThis is used for user-level outgoing approvals and only includes fields relevant to outgoing transfers.\nAll criteria must be satisfied for the approval to be considered valid.","type":"object","properties":{"altTimeChecks":{"description":"Alternative time-based checks for approval denial (offline hours/days). Defines time periods\nduring which this approval should be denied, such as specific hours of the day or days of the week.","$ref":"#/definitions/tokenization.AltTimeChecks"},"approvalAmounts":{"description":"Threshold limit of amounts that can be transferred using this approval. Tracks cumulative amounts\ntransferred and enforces maximum limits per approval.","$ref":"#/definitions/tokenization.ApprovalAmounts"},"autoDeletionOptions":{"description":"Auto-deletion options for this approval. Defines conditions under which this approval should be\nautomatically deleted (e.g., after a certain number of uses or time period).","$ref":"#/definitions/tokenization.AutoDeletionOptions"},"coinTransfers":{"description":"The sdk.Coins that need to be transferred for approval. Defines required coin transfers (e.g., fees,\nroyalties) that must be executed alongside the token transfer for the approval to be valid.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.CoinTransfer"}},"dynamicStoreChallenges":{"description":"Dynamic store challenges that the initiator must pass for approval. The initiator must provide\nvalid proofs that satisfy all specified dynamic store challenges (e.g., key-value store lookups).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.DynamicStoreChallenge"}},"ethSignatureChallenges":{"description":"ETH signature challenges that the initiator must pass for approval. The initiator must provide\nvalid Ethereum signatures for all specified challenges. Each signature can only be used once.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ETHSignatureChallenge"}},"evmQueryChallenges":{"description":"EVM query challenges that must pass for approval. Read-only contract queries\nthat verify external EVM state (e.g., token ownership in another contract).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.EVMQueryChallenge"}},"initiatorChecks":{"description":"Address checks for the initiator of the transfer. Validates that the initiator address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.AddressChecks"},"maxNumTransfers":{"description":"Maximum number of transfers that can be processed using this approval. Tracks the count of transfers\nand enforces the limit to prevent exceeding the allowed number of uses.","$ref":"#/definitions/tokenization.MaxNumTransfers"},"merkleChallenges":{"description":"Merkle challenges that must be satisfied for approval. The initiator must provide valid Merkle proofs\nthat satisfy all specified challenges. Each challenge requires a proof that leads to a specific root hash.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.MerkleChallenge"}},"mustOwnTokens":{"description":"Must own tokens for approval. Defines token ownership requirements that must be satisfied for\nthe approval to be valid. The initiator must own the specified tokens at the specified ownership times.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.MustOwnTokens"}},"mustPrioritize":{"description":"If true, this approval must be explicitly prioritized in PrioritizedApprovals to be used.\nThis allows fine-grained control over which approvals are applied when multiple approvals could match.","type":"boolean"},"predeterminedBalances":{"description":"Predetermined balances that must be used for each approval. Defines the exact token amounts and IDs\nthat can be transferred when using this approval.","$ref":"#/definitions/tokenization.PredeterminedBalances"},"recipientChecks":{"description":"Address checks for the recipient of the transfer. Validates that the recipient address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).\nNote: No sender checks are included for outgoing approvals since the sender is the user themselves.","$ref":"#/definitions/tokenization.AddressChecks"},"requireToDoesNotEqualInitiatedBy":{"description":"Require the \"to\" address to not be equal to the \"initiated by\" address for approval.\nIf true, transfers where the recipient equals the initiator are forbidden.","type":"boolean"},"requireToEqualsInitiatedBy":{"description":"Require the \"to\" address to be equal to the \"initiated by\" address for approval.\nIf true, only transfers where the recipient matches the initiator are allowed.","type":"boolean"},"votingChallenges":{"description":"Voting challenges that must be satisfied for approval. The initiator must provide\nvalid votes that meet the quorum threshold for all specified challenges.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.VotingChallenge"}}}},"tokenization.Params":{"description":"Params defines the parameters for the module.","type":"object","properties":{"affiliate_percentage":{"type":"string","title":"affiliate_percentage defines the percentage of the transfer amount that goes to the affiliate"},"allowed_denoms":{"type":"array","title":"allowed_denoms defines the list of denoms that are allowed to be used in coin_transfers","items":{"type":"string"}}}},"tokenization.PathMetadata":{"description":"This message defines the metadata for paths (alias paths and cosmos coin wrapper paths).\nThe interpretation of this metadata should follow the collection standard.","type":"object","properties":{"customData":{"description":"Custom data or additional information related to the path metadata.","type":"string"},"uri":{"description":"The URI (Uniform Resource Identifier) associated with the path metadata.","type":"string"}}},"tokenization.PrecalculateBalancesFromApprovalDetails":{"description":"PrecalculateBalancesFromApprovalDetails defines the details for precalculating balances from an approval.","type":"object","properties":{"approvalId":{"description":"The ID of the approval.","type":"string"},"approvalLevel":{"description":"The level of the approval. Can be \"collection\", \"incoming\", or \"outgoing\".","type":"string"},"approverAddress":{"description":"The address of the approver. Leave blank \"\" if approvalLevel == \"collection\".","type":"string"},"precalculationOptions":{"description":"The options for precalculating the balances.","$ref":"#/definitions/tokenization.PrecalculationOptions"},"version":{"description":"The version of the approval.","type":"string"}}},"tokenization.PrecalculationOptions":{"description":"PrecalculationOptions defines the options for precalculating the balances.","type":"object","properties":{"overrideTimestamp":{"description":"The timestamp to override with when calculating the balances.","type":"string"},"scalingMultiplier":{"description":"When \u003e 0 and allowAmountScaling is true on the approval, all precalculated balance amounts\nare multiplied by this value. Must be \u003c= maxScalingMultiplier. 0 means no scaling (returns 1x base).","type":"string"},"tokenIdsOverride":{"description":"The IDs to override for the transfer. Only applicable if using this option in precalculation.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}}}},"tokenization.PredeterminedBalances":{"description":"PredeterminedBalances represents balances with predetermined order calculation.","type":"object","properties":{"incrementedBalances":{"description":"Balances that have a starting amount and increment. If this is nil, then we use the manual balances.","$ref":"#/definitions/tokenization.IncrementedBalances"},"manualBalances":{"description":"Manual balances that can be entered. If this is nil, then we use the incremented balances.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ManualBalances"}},"orderCalculationMethod":{"description":"The method to calculate the order of predetermined balances.","$ref":"#/definitions/tokenization.PredeterminedOrderCalculationMethod"}}},"tokenization.PredeterminedOrderCalculationMethod":{"description":"PredeterminedOrderCalculationMethod defines the method to calculate predetermined balances order.","type":"object","properties":{"challengeTrackerId":{"description":"If useMerkleChallengeLeafIndex is set, then this is the ID of the challenge tracker associated with this calculation method.","type":"string"},"useMerkleChallengeLeafIndex":{"description":"Use the Merkle challenge leaf index to calculate the order. Ex: Transfer that uses leaf index 0 gets the first balance, transfer that uses leaf index 1 gets the second balance, etc.","type":"boolean"},"useOverallNumTransfers":{"description":"Use the overall number of transfers to calculate the order. Ex: First transfer gets the first balance, second transfer gets the second balance, etc.","type":"boolean"},"usePerFromAddressNumTransfers":{"description":"Use the number of transfers per \"from\" address to calculate the order. Ex: First transfer from address A gets the first balance, second transfer from address A gets the second balance, etc.","type":"boolean"},"usePerInitiatedByAddressNumTransfers":{"description":"Use the number of transfers per \"initiated by\" address to calculate the order. Ex: First transfer initiated by address A gets the first balance, second transfer initiated by address A gets the second balance, etc.","type":"boolean"},"usePerToAddressNumTransfers":{"description":"Use the number of transfers per \"to\" address to calculate the order. Ex: First transfer to address A gets the first balance, second transfer to address A gets the second balance, etc.","type":"boolean"}}},"tokenization.QueryGetAddressListResponse":{"type":"object","properties":{"list":{"$ref":"#/definitions/tokenization.AddressList"}}},"tokenization.QueryGetAllReservedProtocolAddressesResponse":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string"}}}},"tokenization.QueryGetApprovalTrackerResponse":{"type":"object","properties":{"tracker":{"$ref":"#/definitions/tokenization.ApprovalTracker"}}},"tokenization.QueryGetBalanceForTokenResponse":{"type":"object","properties":{"balance":{"type":"string"}}},"tokenization.QueryGetBalanceResponse":{"type":"object","properties":{"balance":{"$ref":"#/definitions/tokenization.UserBalanceStore"}}},"tokenization.QueryGetChallengeTrackerResponse":{"type":"object","properties":{"numUsed":{"type":"string"}}},"tokenization.QueryGetCollectionResponse":{"type":"object","properties":{"collection":{"$ref":"#/definitions/tokenization.TokenCollection"}}},"tokenization.QueryGetCollectionStatsResponse":{"type":"object","properties":{"stats":{"$ref":"#/definitions/tokenization.CollectionStats"}}},"tokenization.QueryGetDynamicStoreResponse":{"type":"object","properties":{"store":{"$ref":"#/definitions/tokenization.DynamicStore"}}},"tokenization.QueryGetDynamicStoreValueResponse":{"type":"object","properties":{"value":{"$ref":"#/definitions/tokenization.DynamicStoreValue"}}},"tokenization.QueryGetETHSignatureTrackerResponse":{"type":"object","properties":{"numUsed":{"type":"string"}}},"tokenization.QueryGetVoteResponse":{"type":"object","properties":{"vote":{"$ref":"#/definitions/tokenization.VoteProof"}}},"tokenization.QueryGetVotesResponse":{"type":"object","properties":{"votes":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.VoteProof"}}}},"tokenization.QueryGetWrappableBalancesResponse":{"type":"object","properties":{"amount":{"type":"string"}}},"tokenization.QueryIsAddressReservedProtocolResponse":{"type":"object","properties":{"isReservedProtocol":{"type":"boolean"}}},"tokenization.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params holds all the parameters of this module.","$ref":"#/definitions/tokenization.Params"}}},"tokenization.RecurringOwnershipTimes":{"description":"RecurringOwnershipTimes represents a list of recurring ownership times.","type":"object","properties":{"chargePeriodLength":{"type":"string","title":"Grace period length where you can charge the next interval (nextStartTime - chargePeriodLength) until (nextStartTime) = charge period"},"intervalLength":{"description":"The interval length in unix milliseconds.","type":"string"},"startTime":{"description":"The original start time of the first interval.","type":"string"}}},"tokenization.ResetTimeIntervals":{"description":"Time intervals to reset the trackers at.","type":"object","properties":{"intervalLength":{"description":"Interval length in unix milliseconds.","type":"string"},"startTime":{"description":"Original start time of the first interval.","type":"string"}}},"tokenization.TokenCollection":{"description":"A TokenCollection is the top-level object for a collection of tokens. \nIt defines everything about the collection, such as the manager, metadata, etc.\n\nAll collections are identified by a collectionId assigned by the blockchain, which is a uint64 that increments (i.e. the first collection has ID 1).\n\nAll collections can have a manager who is responsible for managing the collection and can be granted certain admin\npermissions, such as the ability to mint new tokens.\n\nCollections may have different balance types: standard vs. off-chain - indexed vs. inherited.vs off-chain - non-indexed vs non-public.\n\nSee documentation for more details.","type":"object","properties":{"aliasPaths":{"description":"The alias (non-wrapping) paths for the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.AliasPath"}},"collectionApprovals":{"description":"Transferability of the collection for collections with standard balances, subject to changes over time.\nOverrides user approvals for a transfer if specified.\nTransfer must satisfy both user and collection-level approvals.\nOnly applicable to on-chain balances.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.CollectionApproval"}},"collectionId":{"description":"The unique identifier for this collection. This is assigned by the blockchain. First collection has ID 1.","type":"string"},"collectionMetadata":{"description":"The metadata for the collection itself.","$ref":"#/definitions/tokenization.CollectionMetadata"},"collectionPermissions":{"description":"Permissions that define what the manager of the collection can do or not do.","$ref":"#/definitions/tokenization.CollectionPermissions"},"cosmosCoinWrapperPaths":{"description":"The IBC wrapper (sdk.coin) paths for the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.CosmosCoinWrapperPath"}},"createdBy":{"description":"The user or entity who created the collection.","type":"string"},"customData":{"description":"An arbitrary field that can store any data.","type":"string"},"defaultBalances":{"description":"The default store of a balance / approvals for a user, upon genesis.","$ref":"#/definitions/tokenization.UserBalanceStore"},"invariants":{"description":"Collection-level invariants that cannot be broken.\nThese are set upon genesis and cannot be modified.","$ref":"#/definitions/tokenization.CollectionInvariants"},"isArchived":{"description":"Whether the collection is archived or not.\nWhen archived, it becomes read-only, and no transactions can be processed until it is unarchived.","type":"boolean"},"manager":{"description":"The address of the manager of this collection.","type":"string"},"mintEscrowAddress":{"description":"The generated address of the collection. Also used to escrow Mint balances.","type":"string"},"standards":{"description":"Standards that define how to interpret the fields of the collection.","type":"array","items":{"type":"string"}},"tokenMetadata":{"description":"The metadata for each token in the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.TokenMetadata"}},"validTokenIds":{"description":"The valid token IDs for this collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}}}},"tokenization.TokenIdsActionPermission":{"description":"TokenIdsActionPermission defines the permissions for performing an action for specific tokens.\nCurrently, this is only used for creating new tokens.\n\nEx: If you want to lock the ability to create new tokens for tokenIds [1,2] at ownershipTimes 1/1/2020 - 1/1/2021, \nyou could set the combination (tokenIds: [1,2], ownershipTimes: [1/1/2020 - 1/1/2021]) to always be forbidden.","type":"object","properties":{"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"tokenIds":{"description":"Specifies the token IDs involved in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}}}},"tokenization.TokenMetadata":{"description":"This message defines the metadata for specific token IDs.\nThe interpretation of this metadata should follow the collection standard.","type":"object","properties":{"customData":{"description":"Custom data or additional information related to the token metadata.","type":"string"},"tokenIds":{"description":"The token IDs to which this metadata applies.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"uri":{"description":"The URI (Uniform Resource Identifier) associated with the token metadata.","type":"string"}}},"tokenization.Transfer":{"description":"Transfer defines the details of a transfer of tokens.","type":"object","properties":{"balances":{"description":"The balances to be transferred.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.Balance"}},"ethSignatureProofs":{"description":"The ETH signature proofs / solutions for all ETH signature challenges required for the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ETHSignatureProof"}},"from":{"description":"The address of the sender of the transfer.","type":"string"},"memo":{"description":"The memo for the transfer.","type":"string"},"merkleProofs":{"description":"The Merkle proofs / solutions for all Merkle challenges required for the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.MerkleProof"}},"onlyCheckPrioritizedCollectionApprovals":{"description":"Whether to only check prioritized approvals for the transfer. \nIf true, we will only check the prioritized approvals and fail if none of them match (i.e. do not check any non-prioritized approvals).\nIf false, we will check the prioritized approvals first and then scan through the rest of the approvals.","type":"boolean"},"onlyCheckPrioritizedIncomingApprovals":{"description":"Whether to only check prioritized approvals for the transfer. \nIf true, we will only check the prioritized approvals and fail if none of them match (i.e. do not check any non-prioritized approvals).\nIf false, we will check the prioritized approvals first and then scan through the rest of the approvals.","type":"boolean"},"onlyCheckPrioritizedOutgoingApprovals":{"description":"Whether to only check prioritized approvals for the transfer. \nIf true, we will only check the prioritized approvals and fail if none of them match (i.e. do not check any non-prioritized approvals).\nIf false, we will check the prioritized approvals first and then scan through the rest of the approvals.","type":"boolean"},"precalculateBalancesFromApproval":{"description":"If defined, we will use the predeterminedBalances from the specified approval to calculate the balances at execution time.\nWe will override the balances field with the precalculated balances. Only applicable for approvals with predeterminedBalances set.","$ref":"#/definitions/tokenization.PrecalculateBalancesFromApprovalDetails"},"prioritizedApprovals":{"description":"The prioritized approvals for the transfer. By default, we scan linearly through the approvals and use the first match.\nThis field can be used to prioritize specific approvals and scan through them first.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ApprovalIdentifierDetails"}},"toAddresses":{"description":"The addresses of the recipients of the transfer.","type":"array","items":{"type":"string"}}}},"tokenization.UintRange":{"description":"The UintRange is a range of IDs from some start to some end (inclusive).\nuintRanges are one of the core types used.\n\nThey are used for everything from token IDs to time ranges to min/max balance amounts.\n\nSee the BitBadges documentation for more information.","type":"object","properties":{"end":{"description":"The ending value of the range (inclusive).","type":"string"},"start":{"description":"The starting value of the range (inclusive).","type":"string"}}},"tokenization.UserApprovalSettings":{"description":"UserApprovalSettings defines issuer-imposed constraints on user-level approvals.\nSet on collection-level ApprovalCriteria and propagated to user-level approvals\nduring greedy transfer matching. Each balance slice carries its own settings.","type":"object","properties":{"allowedDenoms":{"description":"Restricts which denoms user-level coinTransfers can reference (beyond params-level AllowedDenoms).\nIf empty, all params-allowed denoms are permitted.","type":"array","items":{"type":"string"}},"disableUserCoinTransfers":{"description":"If true, user-level approvals cannot trigger coinTransfers at all for transfers matched by this collection approval.","type":"boolean"},"userRoyalties":{"description":"User-level royalties to enforce for transfers matched by this collection approval.","$ref":"#/definitions/tokenization.UserRoyalties"}}},"tokenization.UserBalanceStore":{"description":"UserBalanceStore is the store for the user balances for a collection.\n\nIt consists of a list of balances, a list of approved outgoing transfers, and a list of approved incoming transfers,\nas well as the permissions for updating the approved incoming/outgoing transfers.\n\nUpon initialization, all fields (minus the balances) are set to the defaults specified by the collection.\n\nThe outgoing transfers can be used to allow / disallow transfers which are sent from this user.\nIf a transfer has no match, then it is disallowed by default, unless from == initiatedBy (i.e. initiated by this user)\nand autoApproveSelfInitiatedOutgoingTransfers is set to true.\n\nThe incoming transfers can be used to allow / disallow transfers which are sent to this user.\nIf a transfer has no match, then it is disallowed by default, unless to == initiatedBy (i.e. initiated by this user)\nand autoApproveSelfInitiatedIncomingTransfers is set to true.\n\nNote that the user approved transfers are only checked if the collection approved transfers do not specify to override\nthe user approved transfers. \n\nThe permissions are used to determine whether the user can update the approved incoming/outgoing transfers and auto approvals.","type":"object","properties":{"autoApproveAllIncomingTransfers":{"description":"Whether to auto-approve all incoming transfers by default. \nThis is just shorthand for adding an accept everything incoming approval\nwith no restrictions.","type":"boolean"},"autoApproveSelfInitiatedIncomingTransfers":{"description":"Whether to auto-approve self-initiated incoming transfers for this user (i.e. to == initiatedBy).","type":"boolean"},"autoApproveSelfInitiatedOutgoingTransfers":{"description":"Whether to auto-approve self-initiated outgoing transfers for this user (i.e. from == initiatedBy).","type":"boolean"},"balances":{"description":"The list of balances associated with this user.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.Balance"}},"incomingApprovals":{"description":"The list of approved incoming transfers for this user.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UserIncomingApproval"}},"outgoingApprovals":{"description":"The list of approved outgoing transfers for this user.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UserOutgoingApproval"}},"userPermissions":{"description":"The permissions for this user's actions and transfers.","$ref":"#/definitions/tokenization.UserPermissions"}}},"tokenization.UserIncomingApproval":{"description":"UserIncomingApproval defines the rules for the approval of an incoming transfer to a user.","type":"object","properties":{"approvalCriteria":{"description":"The criteria that must be met for this approval to be considered.","$ref":"#/definitions/tokenization.IncomingApprovalCriteria"},"approvalId":{"description":"The ID of this approval. Must be unique per level (i.e. collection, outgoing, incoming).","type":"string"},"customData":{"description":"Arbitrary custom data associated with this approval.","type":"string"},"fromListId":{"description":"The list ID for the sender of the transfer.","type":"string"},"initiatedByListId":{"description":"The list ID for the user who initiated the transfer.","type":"string"},"ownershipTimes":{"description":"The allowed range of ownership times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"tokenIds":{"description":"The allowed range of token IDs for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"transferTimes":{"description":"The allowed range of transfer times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"uri":{"description":"The URI associated with this approval, optionally providing metadata about the approval.","type":"string"},"version":{"description":"Version of the approval. Maintained internally.","type":"string"}}},"tokenization.UserIncomingApprovalPermission":{"description":"UserIncomingApprovalPermission defines the permissions for updating the user's approved incoming transfers.\n\nSee CollectionApprovalPermission for more details. This is equivalent without the toListId field because that is always the user.","type":"object","properties":{"approvalId":{"description":"Identifier for the approvalId. You can use \"All\" or \"!approvalId\" for shorthand.\nIf you use \"All\", this approval will match to all approvalIds.\nIf you use \"!approvalId\", this approval will match to all approvalIds except for approvalId.\nIf you use \"approvalId\", this approval will match to only the specified approvalId and fail on all others.","type":"string"},"fromListId":{"description":"Identifier for the sender list.","type":"string"},"initiatedByListId":{"description":"Identifier for the initiator list (who is approved?).","type":"string"},"ownershipTimes":{"description":"Specifies the ownership times for the tokens in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"tokenIds":{"description":"Specifies the token IDs involved in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"transferTimes":{"description":"Specifies the times when the transfer can occur.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}}}},"tokenization.UserOutgoingApproval":{"description":"UserOutgoingApproval defines the rules for the approval of an outgoing transfer from a user.","type":"object","properties":{"approvalCriteria":{"description":"The criteria that must be met for this approval to be considered.","$ref":"#/definitions/tokenization.OutgoingApprovalCriteria"},"approvalId":{"description":"The ID of this approval. Must be unique per level (i.e. collection, outgoing, incoming).","type":"string"},"customData":{"description":"Arbitrary custom data associated with this approval.","type":"string"},"initiatedByListId":{"description":"The list ID for the user who initiated the transfer.","type":"string"},"ownershipTimes":{"description":"The allowed range of ownership times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"toListId":{"description":"The list ID for the recipient of the transfer.","type":"string"},"tokenIds":{"description":"The allowed range of token IDs for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"transferTimes":{"description":"The allowed range of transfer times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"uri":{"description":"The URI associated with this approval, optionally providing metadata about the approval.","type":"string"},"version":{"description":"Version of the approval. Maintained internally.","type":"string"}}},"tokenization.UserOutgoingApprovalPermission":{"description":"UserOutgoingApprovalPermission defines the permissions for updating the user's approved outgoing transfers.","type":"object","properties":{"approvalId":{"description":"Identifier for the approvalId. You can use \"All\" or \"!approvalId\" for shorthand.\nIf you use \"All\", this approval will match to all approvalIds.\nIf you use \"!approvalId\", this approval will match to all approvalIds except for approvalId.\nIf you use \"approvalId\", this approval will match to only the specified approvalId and fail on all others.","type":"string"},"initiatedByListId":{"description":"Identifier for the initiator list (who is approved?).","type":"string"},"ownershipTimes":{"description":"Specifies the ownership times for the tokens in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"toListId":{"description":"Identifier for the recipient list.","type":"string"},"tokenIds":{"description":"Specifies the token IDs involved in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"transferTimes":{"description":"Specifies the times when the transfer can occur.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}}}},"tokenization.UserPermissions":{"description":"UserPermissions defines the permissions for the user about their approvals (i.e., what the user can and cannot do).\n\nSee CollectionPermissions for more details on the different types of permissions.\n\ncanUpdateOutgoingApprovals and canUpdateOutgoingApprovals follow the same as the canUpdateCollectionApprovals in CollectionPermissions,\nbut certain fields are removed because they are not relevant to the user.","type":"object","properties":{"canUpdateAutoApproveAllIncomingTransfers":{"description":"Permissions related to updating auto-approval settings for all incoming transfers (whether they are allowed by default).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ActionPermission"}},"canUpdateAutoApproveSelfInitiatedIncomingTransfers":{"description":"Permissions related to updating auto-approval settings for self-initiated incoming transfers (whether they are allowed by default).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ActionPermission"}},"canUpdateAutoApproveSelfInitiatedOutgoingTransfers":{"description":"Permissions related to updating auto-approval settings for self-initiated outgoing transfers (whether they are allowed by default).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ActionPermission"}},"canUpdateIncomingApprovals":{"description":"Permissions related to updating the user's approved incoming transfers.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UserIncomingApprovalPermission"}},"canUpdateOutgoingApprovals":{"description":"Permissions related to updating the user's approved outgoing transfers.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UserOutgoingApprovalPermission"}}}},"tokenization.UserRoyalties":{"description":"UserRoyalties defines the royalties for a user.","type":"object","properties":{"payoutAddress":{"description":"Payout address for the royalties.","type":"string"},"percentage":{"description":"Percentage of the transfer amount to apply as royalties. 1 to 10000 represents basis points.","type":"string"}}},"tokenization.VoteProof":{"description":"VoteProof represents a vote cast for a voting challenge.","type":"object","properties":{"proposalId":{"description":"The proposal ID this vote is for.","type":"string"},"votedAt":{"description":"Timestamp (unix ms) when this vote was cast. Set automatically by the chain.","type":"string"},"voter":{"description":"The address of the voter casting the vote.","type":"string"},"yesWeight":{"description":"The percentage weight (0-100) allocated to \"yes\" vote.\nThe remaining percentage (100 - yesWeight) is allocated to \"no\" vote.\nExample: yesWeight=70 means 70% yes, 30% no.","type":"string"}}},"tokenization.Voter":{"description":"Voter defines a voter with their address and weight.","type":"object","properties":{"address":{"description":"The address of the voter.","type":"string"},"weight":{"description":"The weight of this voter's vote.","type":"string"}}},"tokenization.VotingChallenge":{"description":"VotingChallenge defines a rule for approval in the form of a voting/multi-sig challenge.\nRequires a weighted quorum threshold to be met through votes from specified voters.\nAll challenges must be met with valid solutions for the transfer to be approved.\n\nIMPORTANT: Votes are stored separately and can be updated. The threshold is calculated as a percentage\nof total possible weight (all voters), not just voted weight. If you update the proposal ID, then the\nvote tracker will reset and start a new tally. We recommend using a unique proposal ID for each challenge\nto prevent overlap and unexpected behavior.","type":"object","properties":{"customData":{"description":"Arbitrary custom data associated with this voting challenge.","type":"string"},"delayAfterQuorum":{"description":"Mandatory delay in milliseconds after quorum is reached before the transfer can execute.\nIf set, the transfer will fail until: now \u003e= quorumReachedTimestamp + delayAfterQuorum.\nDuring the delay, signers can remove their votes to cancel (quorum drops = delay resets).","type":"string"},"proposalId":{"type":"string","title":"The ID of this voting challenge for tracking votes (scoped like challengeTrackerId).\nFormat: collectionId-approverAddress-approvalLevel-approvalId-challengeId"},"quorumThreshold":{"description":"The quorum threshold as a percentage (0-100) of total possible weight that must vote \"yes\".\nExample: 50 means 50% of total voter weight must vote yes for approval.","type":"string"},"resetAfterExecution":{"description":"If true, all votes for this challenge are cleared after a successful transfer execution.\nThis makes the challenge reusable (e.g., for vault withdrawals that need fresh approval each time).","type":"boolean"},"uri":{"description":"The URI associated with this voting challenge.","type":"string"},"voters":{"description":"List of voters with their weights. Each voter can cast a weighted vote.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.Voter"}}}},"tokenization.v27.ActionPermission":{"description":"ActionPermission defines the permissions for performing an action.\n\nThis is simple and straightforward as the only thing we need to check is the permitted/forbidden times.","type":"object","properties":{"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}}}},"tokenization.v27.AddressChecks":{"type":"object","title":"AddressChecks defines checks for address types (EVM contract, liquidity pool, etc.)","properties":{"mustBeEvmContract":{"description":"Require the address to be an EVM contract (has code).","type":"boolean"},"mustBeLiquidityPool":{"description":"Require the address to be a liquidity pool.","type":"boolean"},"mustNotBeEvmContract":{"description":"Require the address to not be an EVM contract (no code).","type":"boolean"},"mustNotBeLiquidityPool":{"description":"Require the address to not be a liquidity pool.","type":"boolean"}}},"tokenization.v27.AddressListInput":{"description":"AddressListInput is used for creating address lists via MsgCreateAddressLists.\nIt contains all fields from AddressList except createdBy, which is automatically set from the message creator.","type":"object","properties":{"addresses":{"description":"List of addresses included in the list.","type":"array","items":{"type":"string"}},"customData":{"description":"Custom arbitrary data or additional information related to the address list.","type":"string"},"listId":{"description":"Unique identifier for the address list.","type":"string"},"uri":{"description":"URI (Uniform Resource Identifier) associated with the address list to provide metadata, if applicable.","type":"string"},"whitelist":{"description":"Indicates whether the list includes the specified addresses (true) or excludes them (false).","type":"boolean"}}},"tokenization.v27.AliasPathAddObject":{"type":"object","properties":{"conversion":{"$ref":"#/definitions/tokenization.v27.ConversionWithoutDenom"},"denom":{"type":"string"},"denomUnits":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.DenomUnit"}},"metadata":{"description":"The metadata for this alias path.","$ref":"#/definitions/tokenization.v27.PathMetadata"},"symbol":{"type":"string"}}},"tokenization.v27.AltTimeChecks":{"type":"object","title":"AltTimeChecks defines alternative time-based checks for approval denial.\nIf the transfer time falls within any of the specified offline hours or days, the approval is denied.\nUses UTC timezone for neutral timezone approach.\nofflineHours: ranges of hours (0-23) when transfers should be denied\nofflineDays: ranges of days (0-6, where 0=Sunday, 1=Monday, ..., 6=Saturday) when transfers should be denied","properties":{"offlineDays":{"description":"Days (0-6, where 0=Sunday, 1=Monday, ..., 6=Saturday) when transfers should be denied. Uses UTC timezone.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"offlineHours":{"description":"Hours (0-23) when transfers should be denied. Uses UTC timezone.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}}}},"tokenization.v27.ApprovalAmounts":{"description":"ApprovalAmounts defines approval amounts per unique \"from,\" \"to,\" and/or \"initiated by\" address.\nIf any of these are nil or \"0\", we assume unlimited approvals.\nIf they are set to a value, then the running tally of the amounts transferred for the specified token IDs and ownership times \nmust not exceed the corresponding value.","type":"object","properties":{"amountTrackerId":{"description":"The ID of the amount tracker associated with this approval.\nWe use this ID to track the number of transfers and amounts transferred.","type":"string"},"overallApprovalAmount":{"description":"Overall approval amount.","type":"string"},"perFromAddressApprovalAmount":{"description":"Approval amount per \"from\" address.","type":"string"},"perInitiatedByAddressApprovalAmount":{"description":"Approval amount per \"initiated by\" address.","type":"string"},"perToAddressApprovalAmount":{"description":"Approval amount per \"to\" address.","type":"string"},"resetTimeIntervals":{"description":"Time intervals to reset the trackers at.","$ref":"#/definitions/tokenization.v27.ResetTimeIntervals"}}},"tokenization.v27.ApprovalCriteria":{"description":"ApprovalCriteria defines the criteria for approving transfers.\nAll criteria must be satisfied for the approval to be considered valid.","type":"object","properties":{"allowBackedMinting":{"description":"If true, this collection approval allows backed minting operations (CosmosCoinBackedPath).\nWhen false, this approval cannot be used for transfers involving backed minting addresses.\nThis prevents accidental allowances when toListIds is \"All\".","type":"boolean"},"allowSpecialWrapping":{"description":"If true, this collection approval allows special wrapping operations (CosmosCoinWrapperPath).\nWhen false, this approval cannot be used for transfers involving wrapping addresses.\nThis prevents accidental allowances when toListIds is \"All\".","type":"boolean"},"altTimeChecks":{"description":"Alternative time-based checks for approval denial (offline hours/days). Defines time periods\nduring which this approval should be denied, such as specific hours of the day or days of the week.","$ref":"#/definitions/tokenization.v27.AltTimeChecks"},"approvalAmounts":{"description":"Threshold limit of amounts that can be transferred using this approval. Tracks cumulative amounts\ntransferred and enforces maximum limits per approval.","$ref":"#/definitions/tokenization.v27.ApprovalAmounts"},"autoDeletionOptions":{"description":"Auto-deletion options for this approval. Defines conditions under which this approval should be\nautomatically deleted (e.g., after a certain number of uses or time period).","$ref":"#/definitions/tokenization.v27.AutoDeletionOptions"},"coinTransfers":{"description":"The sdk.Coins that need to be transferred for approval. Defines required coin transfers (e.g., fees,\nroyalties) that must be executed alongside the token transfer for the approval to be valid.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.CoinTransfer"}},"dynamicStoreChallenges":{"description":"Dynamic store challenges that the initiator must pass for approval. The initiator must provide\nvalid proofs that satisfy all specified dynamic store challenges (e.g., key-value store lookups).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.DynamicStoreChallenge"}},"ethSignatureChallenges":{"description":"ETH signature challenges that the initiator must pass for approval. The initiator must provide\nvalid Ethereum signatures for all specified challenges. Each signature can only be used once.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ETHSignatureChallenge"}},"evmQueryChallenges":{"description":"EVM query challenges that must pass for approval. Read-only contract queries\nthat verify external EVM state (e.g., token ownership in another contract).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.EVMQueryChallenge"}},"initiatorChecks":{"description":"Address checks for the initiator of the transfer. Validates that the initiator address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.v27.AddressChecks"},"maxNumTransfers":{"description":"Maximum number of transfers that can be processed using this approval. Tracks the count of transfers\nand enforces the limit to prevent exceeding the allowed number of uses.","$ref":"#/definitions/tokenization.v27.MaxNumTransfers"},"merkleChallenges":{"description":"Merkle challenges that must be satisfied for approval. The initiator must provide valid Merkle proofs\nthat satisfy all specified challenges. Each challenge requires a proof that leads to a specific root hash.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.MerkleChallenge"}},"mustOwnTokens":{"description":"Must own tokens for approval. Defines token ownership requirements that must be satisfied for\nthe approval to be valid. The initiator must own the specified tokens at the specified ownership times.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.MustOwnTokens"}},"mustPrioritize":{"description":"If true, this approval must be explicitly prioritized in PrioritizedApprovals to be used.\nThis allows fine-grained control over which approvals are applied when multiple approvals could match.","type":"boolean"},"overridesFromOutgoingApprovals":{"description":"Overrides the user's outgoing approvals for approval. If true, this collection-level approval\ntakes precedence over any outgoing approvals defined by the sender, allowing the collection to\ncontrol outgoing transfer behavior.","type":"boolean"},"overridesToIncomingApprovals":{"description":"Overrides the user's incoming approvals for approval. If true, this collection-level approval\ntakes precedence over any incoming approvals defined by the recipient, allowing the collection to\ncontrol incoming transfer behavior.","type":"boolean"},"predeterminedBalances":{"description":"Predetermined balances that must be used for each approval. Defines the exact token amounts and IDs\nthat can be transferred when using this approval.","$ref":"#/definitions/tokenization.v27.PredeterminedBalances"},"recipientChecks":{"description":"Address checks for the recipient of the transfer. Validates that the recipient address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.v27.AddressChecks"},"requireFromDoesNotEqualInitiatedBy":{"description":"Require the \"from\" address to not be equal to the \"initiated by\" address for approval.\nIf true, transfers where the sender equals the initiator are forbidden.","type":"boolean"},"requireFromEqualsInitiatedBy":{"description":"Require the \"from\" address to be equal to the \"initiated by\" address for approval.\nIf true, only transfers where the sender matches the initiator are allowed.","type":"boolean"},"requireToDoesNotEqualInitiatedBy":{"description":"Require the \"to\" address to not be equal to the \"initiated by\" address for approval.\nIf true, transfers where the recipient equals the initiator are forbidden.","type":"boolean"},"requireToEqualsInitiatedBy":{"description":"Require the \"to\" address to be equal to the \"initiated by\" address for approval.\nIf true, only transfers where the recipient matches the initiator are allowed.","type":"boolean"},"senderChecks":{"description":"Address checks for the sender of the transfer. Validates that the sender address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.v27.AddressChecks"},"userRoyalties":{"description":"User level royalties to apply to the transfer. Defines the percentage and payout address for\nroyalties that should be collected when this approval is used for a transfer.","$ref":"#/definitions/tokenization.v27.UserRoyalties"},"votingChallenges":{"description":"Voting challenges that must be satisfied for approval. The initiator must provide\nvalid votes that meet the quorum threshold for all specified challenges.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.VotingChallenge"}}}},"tokenization.v27.ApprovalIdentifierDetails":{"description":"ApprovalIdentifierDetails defines the details to identify a specific approval.","type":"object","properties":{"approvalId":{"description":"The ID of the approval.","type":"string"},"approvalLevel":{"description":"The level of the approval. Can be \"collection\", \"incoming\", or \"outgoing\".","type":"string"},"approverAddress":{"description":"The address of the approver. Leave blank \"\" if approvalLevel == \"collection\".","type":"string"},"version":{"description":"The version of the approval.","type":"string"}}},"tokenization.v27.AutoDeletionOptions":{"description":"AutoDeletionOptions defines the options for auto-deletion of approvals.","type":"object","properties":{"afterOneUse":{"type":"boolean","title":"After one use?"},"afterOverallMaxNumTransfers":{"type":"boolean","title":"After overall max number of uses threshold is met?"},"allowCounterpartyPurge":{"type":"boolean","title":"Allow counterparty to purge this approval if they are the only initiator"},"allowPurgeIfExpired":{"type":"boolean","title":"Allow others to call PurgeApprovals on behalf of this approval owner"}}},"tokenization.v27.Balance":{"description":"Balance represents the balance of a token for a specific user.\nThe user amounts xAmount of a token specified for the time ranges specified.\n\nExample: User A owns x10 of token IDs 1-10 from 1/1/2020 to 1/1/2021.\n\nIf times or tokenIDs have len \u003e 1, then the user owns all token IDs specified for all time ranges specified.","type":"object","properties":{"amount":{"description":"The amount of the token owned by the user.","type":"string"},"ownershipTimes":{"description":"The time ranges during which the user owns the token.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"tokenIds":{"description":"The token IDs for which the user owns the token.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}}}},"tokenization.v27.CoinTransfer":{"type":"object","properties":{"coins":{"description":"The sdk.Coins to be transferred.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"overrideFromWithApproverAddress":{"description":"By default, the from address is the initiator of the transaction.\nIf this is set to true, we will override the from address with the approver address.\nNote: This is not applicable for collection approvals (since approverAddress == '').","type":"boolean"},"overrideToWithInitiator":{"description":"By default, the to address is what is specified in the coin transfer.\nIf this is set to true, we will override the to address with the initiator of the transaction.","type":"boolean"},"to":{"description":"The address of the recipient of the transfer.","type":"string"}}},"tokenization.v27.CollectionApproval":{"type":"object","title":"CollectionApproval defines the rules for the approval of a transfer on the collection level","properties":{"approvalCriteria":{"description":"The criteria that must be met for this approval to be considered.","$ref":"#/definitions/tokenization.v27.ApprovalCriteria"},"approvalId":{"description":"The ID of this approval. Must be unique per level (i.e. collection, outgoing, incoming).","type":"string"},"customData":{"description":"Arbitrary custom data associated with this approval.","type":"string"},"fromListId":{"description":"The list ID for the sender of the transfer.","type":"string"},"initiatedByListId":{"description":"The list ID for the user who initiated the transfer.","type":"string"},"ownershipTimes":{"description":"The allowed range of ownership times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"toListId":{"description":"The list ID for the recipient of the transfer.","type":"string"},"tokenIds":{"description":"The allowed range of token IDs for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"transferTimes":{"description":"The allowed range of transfer times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"uri":{"description":"The URI associated with this approval, optionally providing metadata about the approval.","type":"string"},"version":{"description":"Version of the approval. Maintained internally.","type":"string"}}},"tokenization.v27.CollectionApprovalPermission":{"description":"CollectionApprovalPermission defines what collection approved transfers can be updated vs. are locked.\n\nEach transfer is broken down to a (from, to, initiatedBy, transferTime, tokenId) tuple.\nFor a transfer to match, we need to match ALL of the fields in the combination. \nThese are determined by the fromListId, toListId, initiatedByListId, transferTimes, tokenIds fields.\nAddressLists are used for (from, to, initiatedBy) which are a permanent list of addresses identified by an ID (see AddressLists). \n\npermanentlyPermitted/ForbiddenTimes: when can the manager execute this permission?\n\nEx: Let's say we are updating the transferability for the transfer tuple (\"AllWithoutMint\", \"AllWithoutMint\", \"AllWithoutMint\", 10, 1000).\nWe would check to find the FIRST CollectionApprovalPermission that matches this combination.\nIf we find a match, we would check the permitted/forbidden times to see if we can execute this permission (default is ALLOWED).\n\nEx: So if you wanted to freeze the transferability to enforce that token ID 1 will always be transferable, you could set\nthe combination (\"AllWithoutMint\", \"AllWithoutMint\", \"AllWithoutMint\", \"All Transfer Times\", 1) to always be forbidden.","type":"object","properties":{"approvalId":{"description":"Identifier for the approvalId. You can use \"All\" or \"!approvalId\" for shorthand.\nIf you use \"All\", this approval will match to all approvalIds.\nIf you use \"!approvalId\", this approval will match to all approvalIds except for approvalId.\nIf you use \"approvalId\", this approval will match to only the specified approvalId and fail on all others.","type":"string"},"fromListId":{"description":"Identifier for the sender list.","type":"string"},"initiatedByListId":{"description":"Identifier for the initiator list (who is approved?).","type":"string"},"ownershipTimes":{"description":"Specifies the ownership times for the tokens in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"toListId":{"description":"Identifier for the recipient list.","type":"string"},"tokenIds":{"description":"Specifies the token IDs involved in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"transferTimes":{"description":"Specifies the times when the transfer can occur.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}}}},"tokenization.v27.CollectionMetadata":{"description":"This message defines the metadata for the collection.\nThe interpretation of this metadata should follow the collection standard.","type":"object","properties":{"customData":{"description":"Custom data or additional information related to the collection metadata.","type":"string"},"uri":{"description":"The URI (Uniform Resource Identifier) associated with the collection metadata.","type":"string"}}},"tokenization.v27.CollectionPermissions":{"description":"CollectionPermissions defines the permissions for the collection (i.e., what the manager can and cannot do).\n\nThere are three types of permissions for a collection: ActionPermission, TokenIdsActionPermission, and CollectionApprovalPermission.\n\nThe permission type allows fine-grained access control for each action.\n- ActionPermission: defines when the manager can perform an action or update a field.\n- TokenIdsActionPermission: defines when the manager can perform an action for specific tokens\n- CollectionApprovalPermission: defines when the manager can update the transferability of the collection and what transfers can be updated vs. locked.\n\nNote there are a few different times here which could get confusing:\n- permanentlyPermitted/ForbiddenTimes - the times that a permission can be performed\n- transferTimes - the times that a transfer occurs\n- ownershipTimes - the times when a token is owned by a user\n\nThe permitted/permanentlyForbiddenTimes are used to determine when a permission can be executed.\nOnce a time is set to be permitted or forbidden, it is PERMANENT and cannot be changed.\nIf a time is not set to be permitted or forbidden, it is considered NEUTRAL and can be updated but is ALLOWED by default.\n\nIMPORTANT: We take first-match only for the permissions. This means that if you forbid time T in array index 0 and permit time T in index 1, \nwe will only check the first permission (forbid time T) and not the second permission (permit time T).","type":"object","properties":{"canAddMoreAliasPaths":{"description":"Permissions related to adding more alias paths to the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ActionPermission"}},"canAddMoreCosmosCoinWrapperPaths":{"description":"Permissions related to adding more cosmos coin wrapper paths to the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ActionPermission"}},"canArchiveCollection":{"description":"Permissions related to archiving the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ActionPermission"}},"canDeleteCollection":{"description":"Permissions related to deleting the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ActionPermission"}},"canUpdateCollectionApprovals":{"description":"Permissions related to updating collection approvals.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.CollectionApprovalPermission"}},"canUpdateCollectionMetadata":{"description":"Permissions related to updating the metadata of the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ActionPermission"}},"canUpdateCustomData":{"description":"Permissions related to updating custom data for the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ActionPermission"}},"canUpdateManager":{"description":"Permissions related to updating the collection's manager.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ActionPermission"}},"canUpdateStandards":{"description":"Permissions related to updating standards for the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ActionPermission"}},"canUpdateTokenMetadata":{"description":"Permissions related to updating token metadata for specific tokens.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.TokenIdsActionPermission"}},"canUpdateValidTokenIds":{"description":"Permissions related to creating more tokens for the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.TokenIdsActionPermission"}}}},"tokenization.v27.Conversion":{"description":"Conversion defines a bidirectional conversion between a cosmos coin (with denom) and token balances.","type":"object","properties":{"sideA":{"description":"Side A: The cosmos coin side of the conversion (amount + denom).","$ref":"#/definitions/tokenization.v27.ConversionSideAWithDenom"},"sideB":{"description":"Side B: The token balances side of the conversion.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.Balance"}}}},"tokenization.v27.ConversionSideA":{"description":"ConversionSideA represents the cosmos coin amount side of a conversion without denomination.","type":"object","properties":{"amount":{"description":"The amount of the cosmos coin (0 decimals).","type":"string"}}},"tokenization.v27.ConversionSideAWithDenom":{"description":"ConversionSideAWithDenom represents the cosmos coin side of a conversion with denomination.","type":"object","properties":{"amount":{"description":"The amount of the cosmos coin (0 decimals).","type":"string"},"denom":{"description":"The denomination of the cosmos coin.","type":"string"}}},"tokenization.v27.ConversionWithoutDenom":{"description":"ConversionWithoutDenom defines a bidirectional conversion between a cosmos coin amount (without denom) and token balances.\nThe denom is stored at the base level (e.g., in AliasPath or CosmosCoinWrapperPath).","type":"object","properties":{"sideA":{"description":"Side A: The cosmos coin amount side of the conversion (amount only, denom stored separately).","$ref":"#/definitions/tokenization.v27.ConversionSideA"},"sideB":{"description":"Side B: The token balances side of the conversion.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.Balance"}}}},"tokenization.v27.CosmosCoinBackedPathAddObject":{"type":"object","properties":{"conversion":{"$ref":"#/definitions/tokenization.v27.Conversion"}}},"tokenization.v27.CosmosCoinWrapperPathAddObject":{"type":"object","properties":{"allowOverrideWithAnyValidToken":{"type":"boolean"},"conversion":{"$ref":"#/definitions/tokenization.v27.ConversionWithoutDenom"},"denom":{"type":"string"},"denomUnits":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.DenomUnit"}},"metadata":{"description":"The metadata for this wrapper path.","$ref":"#/definitions/tokenization.v27.PathMetadata"},"symbol":{"type":"string"}}},"tokenization.v27.DenomUnit":{"type":"object","properties":{"decimals":{"description":"The number of decimal places for this unit. Defines the precision of the unit.","type":"string"},"isDefaultDisplay":{"description":"If true, this is the default display unit. Only one unit should be marked as the default display unit.\nThis unit will be used by default when displaying the coin amount. If none are marked default, we use the base level.","type":"boolean"},"metadata":{"description":"The metadata for this denomination unit.","$ref":"#/definitions/tokenization.v27.PathMetadata"},"symbol":{"description":"The symbol for this unit (e.g., \"BADGE\", \"nBADGE\"). Used for display purposes.","type":"string"}}},"tokenization.v27.DynamicStoreChallenge":{"description":"DynamicStoreChallenge defines a challenge that requires the initiator to pass a dynamic store check.","type":"object","properties":{"ownershipCheckParty":{"description":"The party to check ownership for. Options are \"initiator\", \"sender\", \"recipient\", or any valid bb1 address.\nIf a valid bb1 address is provided, ownership will be checked for that specific address.\nThis enables use cases like halt tokens where ownership is checked for an arbitrary address (e.g., halt token owner).\nDefaults to \"initiator\" if empty or if the value is not a recognized option or valid bb1 address.","type":"string"},"storeId":{"description":"The ID of the dynamic store to check.","type":"string"}}},"tokenization.v27.ETHSignatureChallenge":{"description":"ETHSignatureChallenge defines a rule for the approval in the form of an Ethereum signature challenge.\n\nAn ETH signature challenge is a challenge where the user must provide a valid Ethereum signature for a specific nonce.\nThe signature scheme is ETHSign(nonce + \"-\" + initiatorAddress + \"-\" + collectionId + \"-\" + approverAddress + \"-\" + approvalLevel + \"-\" + approvalId + \"-\" + challengeId) and each signature can only be used once.\nAll challenges must be met with valid solutions for the transfer to be approved.\n\nIMPORTANT: We track the usage of each signature to prevent replay attacks. Each signature can only be used once.\nIf you update the challenge ID, then the used signatures tracker will reset and start a new tally.\nWe recommend using a unique challenge ID for each challenge to prevent overlap and unexpected behavior.","type":"object","properties":{"challengeTrackerId":{"description":"The ID of this ETH signature challenge for tracking the number of uses per signature.","type":"string"},"customData":{"description":"Arbitrary custom data associated with this ETH signature challenge.","type":"string"},"signer":{"description":"The Ethereum address that must sign the nonce for verification.","type":"string"},"uri":{"description":"The URI associated with this ETH signature challenge, optionally providing metadata about the challenge.","type":"string"}}},"tokenization.v27.ETHSignatureProof":{"description":"ETHSignatureProof represents an Ethereum signature proof for a challenge.","type":"object","properties":{"nonce":{"description":"The nonce that was signed. The signature scheme is ETHSign(nonce + \"-\" + initiatorAddress + \"-\" + collectionId + \"-\" + approverAddress + \"-\" + approvalLevel + \"-\" + approvalId + \"-\" + challengeId).","type":"string"},"signature":{"description":"The Ethereum signature of the nonce.","type":"string"}}},"tokenization.v27.EVMQueryChallenge":{"description":"EVMQueryChallenge defines a rule for approval via read-only EVM contract query.\n\nThe challenge executes a staticcall to the specified contract with the given calldata.\nThe result is compared against the expected result (if provided) or checked for non-zero return.\n\nIMPORTANT: This is read-only and cannot modify state. The query is executed with a gas limit\nto prevent DoS attacks. All results are deterministic since EVM state is consistent within a block.","type":"object","properties":{"calldata":{"type":"string","title":"ABI-encoded function selector + arguments (hex string without 0x prefix)\nExample: \"70a08231000000000000000000000000{address}\" for balanceOf(address)\nCan use placeholders: $initiator, $sender, $recipient (replaced at runtime)"},"comparisonOperator":{"description":"Comparison operator: \"eq\" (equals), \"ne\" (not equals), \"gt\" (greater than), \"gte\", \"lt\", \"lte\"\nOnly \"eq\" and \"ne\" work for non-numeric types. Default is \"eq\".","type":"string"},"contractAddress":{"type":"string","title":"The EVM contract address to query (0x format or bb1 format)"},"customData":{"type":"string","title":"Arbitrary custom data"},"expectedResult":{"description":"Expected return value (hex string without 0x prefix). If empty, any non-error result passes.\nFor boolean checks, use \"0000...0001\" for true.","type":"string"},"gasLimit":{"type":"string","title":"Gas limit for the query (default 100000, max 500000)"},"uri":{"type":"string","title":"The URI associated with this challenge (metadata)"}}},"tokenization.v27.IncomingApprovalCriteria":{"description":"IncomingApprovalCriteria defines the criteria for approving incoming transfers.\nThis is used for user-level incoming approvals and only includes fields relevant to incoming transfers.\nAll criteria must be satisfied for the approval to be considered valid.","type":"object","properties":{"altTimeChecks":{"description":"Alternative time-based checks for approval denial (offline hours/days). Defines time periods\nduring which this approval should be denied, such as specific hours of the day or days of the week.","$ref":"#/definitions/tokenization.v27.AltTimeChecks"},"approvalAmounts":{"description":"Threshold limit of amounts that can be transferred using this approval. Tracks cumulative amounts\ntransferred and enforces maximum limits per approval.","$ref":"#/definitions/tokenization.v27.ApprovalAmounts"},"autoDeletionOptions":{"description":"Auto-deletion options for this approval. Defines conditions under which this approval should be\nautomatically deleted (e.g., after a certain number of uses or time period).","$ref":"#/definitions/tokenization.v27.AutoDeletionOptions"},"coinTransfers":{"description":"The sdk.Coins that need to be transferred for approval. Defines required coin transfers (e.g., fees,\nroyalties) that must be executed alongside the token transfer for the approval to be valid.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.CoinTransfer"}},"dynamicStoreChallenges":{"description":"Dynamic store challenges that the initiator must pass for approval. The initiator must provide\nvalid proofs that satisfy all specified dynamic store challenges (e.g., key-value store lookups).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.DynamicStoreChallenge"}},"ethSignatureChallenges":{"description":"ETH signature challenges that the initiator must pass for approval. The initiator must provide\nvalid Ethereum signatures for all specified challenges. Each signature can only be used once.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ETHSignatureChallenge"}},"evmQueryChallenges":{"description":"EVM query challenges that must pass for approval. Read-only contract queries\nthat verify external EVM state (e.g., token ownership in another contract).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.EVMQueryChallenge"}},"initiatorChecks":{"description":"Address checks for the initiator of the transfer. Validates that the initiator address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.v27.AddressChecks"},"maxNumTransfers":{"description":"Maximum number of transfers that can be processed using this approval. Tracks the count of transfers\nand enforces the limit to prevent exceeding the allowed number of uses.","$ref":"#/definitions/tokenization.v27.MaxNumTransfers"},"merkleChallenges":{"description":"Merkle challenges that must be satisfied for approval. The initiator must provide valid Merkle proofs\nthat satisfy all specified challenges. Each challenge requires a proof that leads to a specific root hash.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.MerkleChallenge"}},"mustOwnTokens":{"description":"Must own tokens for approval. Defines token ownership requirements that must be satisfied for\nthe approval to be valid. The initiator must own the specified tokens at the specified ownership times.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.MustOwnTokens"}},"mustPrioritize":{"description":"If true, this approval must be explicitly prioritized in PrioritizedApprovals to be used.\nThis allows fine-grained control over which approvals are applied when multiple approvals could match.","type":"boolean"},"predeterminedBalances":{"description":"Predetermined balances that must be used for each approval. Defines the exact token amounts and IDs\nthat can be transferred when using this approval.","$ref":"#/definitions/tokenization.v27.PredeterminedBalances"},"requireFromDoesNotEqualInitiatedBy":{"description":"Require the \"from\" address to not be equal to the \"initiated by\" address for approval.\nIf true, transfers where the sender equals the initiator are forbidden.","type":"boolean"},"requireFromEqualsInitiatedBy":{"description":"Require the \"from\" address to be equal to the \"initiated by\" address for approval.\nIf true, only transfers where the sender matches the initiator are allowed.","type":"boolean"},"senderChecks":{"description":"Address checks for the sender of the transfer. Validates that the sender address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).\nNote: No recipient checks are included for incoming approvals since the recipient is the user themselves.","$ref":"#/definitions/tokenization.v27.AddressChecks"},"votingChallenges":{"description":"Voting challenges that must be satisfied for approval. The initiator must provide\nvalid votes that meet the quorum threshold for all specified challenges.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.VotingChallenge"}}}},"tokenization.v27.IncrementedBalances":{"description":"IncrementedBalances represents balances that are incremented by specific amounts, according to the order calculation method.","type":"object","properties":{"allowOverrideTimestamp":{"description":"Whether to allow overriding the timestamp for the balances (only applicable with durationFromTimestamp set).","type":"boolean"},"allowOverrideWithAnyValidToken":{"type":"boolean","title":"Allow override of any valid ID"},"durationFromTimestamp":{"description":"The amount of unix milliseconds to approve starting from now. Incompatible with incrementOwnershipTimesBy.","type":"string"},"incrementOwnershipTimesBy":{"description":"The amount by which to increment ownership times. Incompatible with approveStartingFromNowBy.","type":"string"},"incrementTokenIdsBy":{"description":"The amount by which to increment token IDs.","type":"string"},"recurringOwnershipTimes":{"description":"Recurring ownership times.","$ref":"#/definitions/tokenization.v27.RecurringOwnershipTimes"},"startBalances":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.Balance"}}}},"tokenization.v27.InvariantsAddObject":{"description":"InvariantsAddObject is used for adding invariants without specifying addresses.\nAddresses are generated by the keeper and stored in the collection.","type":"object","properties":{"cosmosCoinBackedPath":{"description":"The IBC backed (sdk.coin) path for the collection. Only one path is allowed.\nAddress will be generated by the keeper.","$ref":"#/definitions/tokenization.v27.CosmosCoinBackedPathAddObject"},"disablePoolCreation":{"description":"If true, disallows pool creation with this collection's assets.\nWhen true, any attempt to create a pool with tokenization assets from this collection will fail.","type":"boolean"},"evmQueryChallenges":{"type":"array","title":"EVM query invariants that must pass after all transfers complete.\nThese are checked once per message after all balance updates, with access to ALL recipient addresses.\nPlaceholders: $sender, $recipients (comma-separated), $initiator, $collectionId, $recipient","items":{"type":"object","$ref":"#/definitions/tokenization.v27.EVMQueryChallenge"}},"maxSupplyPerId":{"description":"Maximum supply per token ID. Checked against Total address balances after transfers complete.\nA value of 0 means no limit (unlimited).","type":"string"},"noCustomOwnershipTimes":{"description":"If true, all ownership times must be full ranges [{ start: 1, end: GoMaxUInt64 }].\nThis prevents time-based restrictions on token ownership.","type":"boolean"},"noForcefulPostMintTransfers":{"description":"If true, disallows any collection approvals that have overridesFromOutgoingApprovals or overridesToIncomingApprovals set to true.\nThis prevents forceful transfers that bypass user-level approvals.\nThis only applies to transfers where the from address does not equal \"Mint\".","type":"boolean"}}},"tokenization.v27.ManualBalances":{"description":"ManualBalances represents a list of manual balances entered for the predetermined balances criteria. Order is calculated according to the calculation method set.","type":"object","properties":{"balances":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.Balance"}}}},"tokenization.v27.MaxNumTransfers":{"description":"MaxNumTransfers defines the maximum number of transfers per unique \"from,\" \"to,\" and/or \"initiated by\" address.\nIf any of these are nil or \"0\", we assume unlimited approvals.\nIf they are set to a value, then the running tally of the number of transfers for the specified token IDs and ownership times\nmust not exceed the corresponding value.","type":"object","properties":{"amountTrackerId":{"description":"The ID of the amount tracker associated with this approval.\nWe use this ID to track the number of transfers and amounts transferred.","type":"string"},"overallMaxNumTransfers":{"description":"Overall maximum number of transfers.","type":"string"},"perFromAddressMaxNumTransfers":{"description":"Maximum number of transfers per \"from\" address.","type":"string"},"perInitiatedByAddressMaxNumTransfers":{"description":"Maximum number of transfers per \"initiated by\" address.","type":"string"},"perToAddressMaxNumTransfers":{"description":"Maximum number of transfers per \"to\" address.","type":"string"},"resetTimeIntervals":{"description":"Time intervals to reset the trackers at.","$ref":"#/definitions/tokenization.v27.ResetTimeIntervals"}}},"tokenization.v27.MerkleChallenge":{"description":"Challenges define a rule for the approval in the form of a Merkle challenge.\n\nA Merkle challenge is a challenge where the user must provide a Merkle proof to a Merkle tree. If they provide a valid proof,\nthen the challenge is met. All challenges must be met with valid solutions for the transfer to be approved.\n\nIMPORTANT: Merkle challenges currently are limited to SHA256 hashes. See documentation for MerkleChallenge for more details and tutorials.\n\nIMPORTANT: We track the number of uses per leaf according to the challengeTrackerId specified by the parent approval of this challenge.\nIf you update the challenge ID, then the used leaves tracker will reset and start a new tally.\nWe recommend using a unique challenge ID for each challenge to prevent overlap and unexpected behavior.","type":"object","properties":{"challengeTrackerId":{"description":"The ID of this Merkle challenge for tracking the number of uses per leaf.","type":"string"},"customData":{"description":"Arbitrary custom data associated with this Merkle challenge.","type":"string"},"expectedProofLength":{"description":"The expected length of the Merkle path for verification. Used to prevent Merkle path truncation attacks.","type":"string"},"leafSigner":{"description":"Ethereum address that must sign the leaf. Used to protect against man-in-the-middle attacks.\nSignature scheme: sign(leaf + \"-\" + creatorAddress), verified using elliptic curve signature verification.","type":"string"},"maxUsesPerLeaf":{"description":"The maximum number of times each leaf can be used. Must be 1 if useCreatorAddressAsLeaf is false to prevent replay attacks.","type":"string"},"root":{"description":"The root hash of the Merkle tree to which the Merkle path must lead for verification.","type":"string"},"uri":{"description":"The URI associated with this Merkle challenge, optionally providing metadata about the challenge.","type":"string"},"useCreatorAddressAsLeaf":{"description":"If true, we will override the user's leaf for their proof with their creator address. Used for whitelist trees where all leaves are valid BitBadges addresses.","type":"boolean"}}},"tokenization.v27.MerklePathItem":{"description":"MerklePathItem represents an item in a Merkle path.","type":"object","properties":{"aunt":{"description":"The hash of the sibling node (aunt) in the Merkle path.","type":"string"},"onRight":{"description":"Indicates whether the aunt node is on the right side of the path.","type":"boolean"}}},"tokenization.v27.MerkleProof":{"description":"MerkleProof represents a Merkle proof, consistent with Tendermint/Crypto Merkle tree.","type":"object","properties":{"aunts":{"description":"List of Merkle path items (aunts) that make up the proof.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.MerklePathItem"}},"leaf":{"description":"The hash of the leaf node for which the proof is generated.","type":"string"},"leafSignature":{"description":"The signature of the leaf node tying the address to the leaf node.","type":"string"}}},"tokenization.v27.MsgCastVote":{"description":"MsgCastVote allows a voter to cast or update their vote for a voting challenge.","type":"object","properties":{"approvalId":{"description":"The approval ID.","type":"string"},"approvalLevel":{"description":"The approval level (\"collection\", \"incoming\", or \"outgoing\").","type":"string"},"approverAddress":{"description":"The approver address (empty string for collection-level approvals).","type":"string"},"collectionId":{"description":"The collection ID for the voting challenge.","type":"string"},"creator":{"description":"The address of the voter casting the vote.","type":"string"},"proposalId":{"description":"The proposal ID (challenge ID) from the VotingChallenge.","type":"string"},"yesWeight":{"description":"The percentage weight (0-100) allocated to \"yes\" vote.\nThe remaining percentage (100 - yesWeight) is allocated to \"no\" vote.\nExample: yesWeight=70 means 70% yes, 30% no.","type":"string"}}},"tokenization.v27.MsgCastVoteResponse":{"type":"object"},"tokenization.v27.MsgCreateAddressLists":{"description":"MsgCreateAddressLists is used to create address lists.","type":"object","properties":{"addressLists":{"description":"Address lists to create. The createdBy field will be automatically set to the creator address.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.AddressListInput"}},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v27.MsgCreateAddressListsResponse":{"description":"MsgCreateAddressListsResponse is the response to MsgCreateAddressLists.","type":"object"},"tokenization.v27.MsgCreateCollection":{"description":"MsgCreateCollection is used to create a new collection.","type":"object","properties":{"aliasPathsToAdd":{"description":"Alias (non-wrapping) paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.AliasPathAddObject"}},"collectionApprovals":{"description":"Collection approvals.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.CollectionApproval"}},"collectionMetadata":{"description":"Collection metadata.","$ref":"#/definitions/tokenization.v27.CollectionMetadata"},"collectionPermissions":{"description":"Collection permissions.","$ref":"#/definitions/tokenization.v27.CollectionPermissions"},"cosmosCoinWrapperPathsToAdd":{"description":"IBC wrapper paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.CosmosCoinWrapperPathAddObject"}},"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"Custom data.","type":"string"},"defaultBalances":{"title":"The default balances for the user","$ref":"#/definitions/tokenization.v27.UserBalanceStore"},"invariants":{"description":"Collection-level invariants that cannot be broken.\nAddresses are generated by the keeper and stored in the collection.","$ref":"#/definitions/tokenization.v27.InvariantsAddObject"},"isArchived":{"description":"isArchived flag.","type":"boolean"},"manager":{"description":"Manager address.","type":"string"},"mintEscrowCoinsToTransfer":{"description":"Coins to be transferred to the mint escrow address.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"standards":{"description":"Standards entries.","type":"array","items":{"type":"string"}},"tokenMetadata":{"description":"Token metadata entries.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.TokenMetadata"}},"validTokenIds":{"type":"array","title":"New token IDs to add to this collection","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}}}},"tokenization.v27.MsgCreateCollectionResponse":{"description":"MsgCreateCollectionResponse is the response to MsgCreateCollection.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v27.MsgCreateDynamicStore":{"description":"MsgCreateDynamicStore is used to create a new dynamic store.","type":"object","properties":{"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"Custom data field for storing arbitrary data associated with this dynamic store.","type":"string"},"defaultValue":{"description":"The default value for uninitialized addresses (true/false).","type":"boolean"},"uri":{"description":"URI for additional metadata or resources associated with this dynamic store.","type":"string"}}},"tokenization.v27.MsgCreateDynamicStoreResponse":{"description":"MsgCreateDynamicStoreResponse is the response to MsgCreateDynamicStore.","type":"object","properties":{"storeId":{"description":"ID of the dynamic store.","type":"string"}}},"tokenization.v27.MsgDeleteCollection":{"description":"MsgDeleteCollection is used to delete a collection.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v27.MsgDeleteCollectionResponse":{"description":"MsgDeleteCollectionResponse is the response to MsgDeleteCollection.","type":"object"},"tokenization.v27.MsgDeleteDynamicStore":{"description":"MsgDeleteDynamicStore is used to delete a dynamic store.","type":"object","properties":{"creator":{"description":"Address of the creator.","type":"string"},"storeId":{"description":"ID of the dynamic store to delete.","type":"string"}}},"tokenization.v27.MsgDeleteDynamicStoreResponse":{"description":"MsgDeleteDynamicStoreResponse is the response to MsgDeleteDynamicStore.","type":"object"},"tokenization.v27.MsgDeleteIncomingApproval":{"description":"MsgDeleteIncomingApproval is a helper message to delete a single incoming approval.","type":"object","properties":{"approvalId":{"description":"The ID of the approval to delete.","type":"string"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v27.MsgDeleteIncomingApprovalResponse":{"description":"MsgDeleteIncomingApprovalResponse is the response to MsgDeleteIncomingApproval.","type":"object"},"tokenization.v27.MsgDeleteOutgoingApproval":{"description":"MsgDeleteOutgoingApproval is a helper message to delete a single outgoing approval.","type":"object","properties":{"approvalId":{"description":"The ID of the approval to delete.","type":"string"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v27.MsgDeleteOutgoingApprovalResponse":{"description":"MsgDeleteOutgoingApprovalResponse is the response to MsgDeleteOutgoingApproval.","type":"object"},"tokenization.v27.MsgPurgeApprovals":{"description":"MsgPurgeApprovals is a helper message to purge expired approvals.","type":"object","properties":{"approvalsToPurge":{"description":"Specific approvals to purge. If empty, purges all applicable approvals based on other flags.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ApprovalIdentifierDetails"}},"approverAddress":{"description":"Address of the user whose approvals to purge. If empty, defaults to creator.","type":"string"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"purgeCounterpartyApprovals":{"description":"Whether to purge counterparty approvals (approvals where the creator is the only initiator).","type":"boolean"},"purgeExpired":{"description":"Whether to purge expired approvals (approvals with no future valid transfer times).","type":"boolean"}}},"tokenization.v27.MsgPurgeApprovalsResponse":{"description":"MsgPurgeApprovalsResponse is the response to MsgPurgeApprovals.","type":"object","properties":{"numPurged":{"description":"Number of approvals purged.","type":"string"}}},"tokenization.v27.MsgSetCollectionApprovals":{"type":"object","title":"MsgSetCollectionApprovals sets the collection approvals and canUpdateCollectionApprovals permission","properties":{"canUpdateCollectionApprovals":{"type":"array","title":"Permission to update collection approvals","items":{"type":"object","$ref":"#/definitions/tokenization.v27.CollectionApprovalPermission"}},"collectionApprovals":{"description":"New collection approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.CollectionApproval"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v27.MsgSetCollectionApprovalsResponse":{"description":"MsgSetCollectionApprovalsResponse is the response to MsgSetCollectionApprovals.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v27.MsgSetCollectionMetadata":{"type":"object","title":"MsgSetCollectionMetadata sets the collection metadata and canUpdateCollectionMetadata permission","properties":{"canUpdateCollectionMetadata":{"type":"array","title":"Permission to update collection metadata","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"collectionMetadata":{"description":"New collection metadata to set.","$ref":"#/definitions/tokenization.v27.CollectionMetadata"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v27.MsgSetCollectionMetadataResponse":{"description":"MsgSetCollectionMetadataResponse is the response to MsgSetCollectionMetadata.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v27.MsgSetCustomData":{"type":"object","title":"MsgSetCustomData sets the custom data and canUpdateCustomData permission","properties":{"canUpdateCustomData":{"type":"array","title":"Permission to update custom data","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"New custom data to set.","type":"string"}}},"tokenization.v27.MsgSetCustomDataResponse":{"description":"MsgSetCustomDataResponse is the response to MsgSetCustomData.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v27.MsgSetDynamicStoreValue":{"description":"MsgSetDynamicStoreValue is used to set a boolean value for a specific address in a dynamic store.","type":"object","properties":{"address":{"description":"The address for which to set the value.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"storeId":{"description":"ID of the dynamic store.","type":"string"},"value":{"description":"The boolean value to set (true/false).","type":"boolean"}}},"tokenization.v27.MsgSetDynamicStoreValueResponse":{"description":"MsgSetDynamicStoreValueResponse is the response to MsgSetDynamicStoreValue.","type":"object"},"tokenization.v27.MsgSetIncomingApproval":{"description":"MsgSetIncomingApproval is a helper message to set a single incoming approval.","type":"object","properties":{"approval":{"description":"The incoming approval to set.","$ref":"#/definitions/tokenization.v27.UserIncomingApproval"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v27.MsgSetIncomingApprovalResponse":{"description":"MsgSetIncomingApprovalResponse is the response to MsgSetIncomingApproval.","type":"object"},"tokenization.v27.MsgSetIsArchived":{"type":"object","title":"MsgSetIsArchived sets the isArchived and canArchiveCollection permission","properties":{"canArchiveCollection":{"type":"array","title":"Permission to archive collection","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"isArchived":{"description":"New isArchived to set.","type":"boolean"}}},"tokenization.v27.MsgSetIsArchivedResponse":{"description":"MsgSetIsArchivedResponse is the response to MsgSetIsArchived.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v27.MsgSetManager":{"type":"object","title":"MsgSetManager sets the manager and canUpdateManager permission","properties":{"canUpdateManager":{"type":"array","title":"Permission to update manager","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"manager":{"description":"New manager to set.","type":"string"}}},"tokenization.v27.MsgSetManagerResponse":{"description":"MsgSetManagerResponse is the response to MsgSetManager.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v27.MsgSetOutgoingApproval":{"description":"MsgSetOutgoingApproval is a helper message to set a single outgoing approval.","type":"object","properties":{"approval":{"description":"The outgoing approval to set.","$ref":"#/definitions/tokenization.v27.UserOutgoingApproval"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v27.MsgSetOutgoingApprovalResponse":{"description":"MsgSetOutgoingApprovalResponse is the response to MsgSetOutgoingApproval.","type":"object"},"tokenization.v27.MsgSetReservedProtocolAddress":{"description":"MsgSetReservedProtocolAddress sets or unsets a reserved protocol address (governance-only).","type":"object","properties":{"address":{"description":"Address to set or unset as reserved protocol address.","type":"string"},"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"isReservedProtocol":{"description":"Whether the address should be a reserved protocol address (true) or not (false).","type":"boolean"}}},"tokenization.v27.MsgSetReservedProtocolAddressResponse":{"description":"MsgSetReservedProtocolAddressResponse is the response to MsgSetReservedProtocolAddress.","type":"object"},"tokenization.v27.MsgSetStandards":{"type":"object","title":"MsgSetStandards sets the standards and canUpdateStandards permission","properties":{"canUpdateStandards":{"type":"array","title":"Permission to update standards","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"standards":{"description":"New standards to set.","type":"array","items":{"type":"string"}}}},"tokenization.v27.MsgSetStandardsResponse":{"description":"MsgSetStandardsResponse is the response to MsgSetStandards.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v27.MsgSetTokenMetadata":{"type":"object","title":"MsgSetTokenMetadata sets the token metadata and canUpdateTokenMetadata permission","properties":{"canUpdateTokenMetadata":{"type":"array","title":"Permission to update token metadata","items":{"type":"object","$ref":"#/definitions/tokenization.v27.TokenIdsActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"tokenMetadata":{"description":"New token metadata to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.TokenMetadata"}}}},"tokenization.v27.MsgSetTokenMetadataResponse":{"description":"MsgSetTokenMetadataResponse is the response to MsgSetTokenMetadata.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v27.MsgSetValidTokenIds":{"type":"object","title":"MsgSetValidTokenIds sets the validTokenIds and canUpdateValidTokenIds permission","properties":{"canUpdateValidTokenIds":{"type":"array","title":"Permission to update valid token IDs","items":{"type":"object","$ref":"#/definitions/tokenization.v27.TokenIdsActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"validTokenIds":{"type":"array","title":"New token IDs to add to this collection","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}}}},"tokenization.v27.MsgSetValidTokenIdsResponse":{"description":"MsgSetValidTokenIdsResponse is the response to MsgSetValidTokenIds.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v27.MsgTransferTokens":{"description":"MsgTransferTokens is used to transfer tokens.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"transfers":{"description":"Transfers to execute.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.Transfer"}}}},"tokenization.v27.MsgTransferTokensResponse":{"description":"MsgTransferTokensResponse is the response to MsgTransferTokens.","type":"object"},"tokenization.v27.MsgUniversalUpdateCollection":{"description":"MsgUniversalUpdateCollection is used to define MsgServer types for all requests and responses for Msgs of the tokens module.\nIt is a universal interface that can be used for both creating and updating collections.\nWe have it defined for legacy purposes, but it is recommended to use MsgCreateCollection and MsgUpdateCollection instead.","type":"object","properties":{"aliasPathsToAdd":{"description":"Alias (non-wrapping) paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.AliasPathAddObject"}},"collectionApprovals":{"description":"New collection approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.CollectionApproval"}},"collectionId":{"description":"ID of the collection (0 for new collection).","type":"string"},"collectionMetadata":{"description":"New collection metadata to set.","$ref":"#/definitions/tokenization.v27.CollectionMetadata"},"collectionPermissions":{"description":"New collection permissions to set.","$ref":"#/definitions/tokenization.v27.CollectionPermissions"},"cosmosCoinWrapperPathsToAdd":{"description":"IBC wrapper paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.CosmosCoinWrapperPathAddObject"}},"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"New custom data to set.","type":"string"},"defaultBalances":{"title":"The default balances for the user","$ref":"#/definitions/tokenization.v27.UserBalanceStore"},"invariants":{"description":"Collection-level invariants that cannot be broken.\nThese are set upon genesis and cannot be modified.\nAddresses are generated by the keeper and stored in the collection.","$ref":"#/definitions/tokenization.v27.InvariantsAddObject"},"isArchived":{"description":"New isArchived to set.","type":"boolean"},"manager":{"description":"New manager to set.","type":"string"},"mintEscrowCoinsToTransfer":{"description":"Coins to be transferred to the mint escrow address.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"standards":{"description":"New standards to set.","type":"array","items":{"type":"string"}},"tokenMetadata":{"description":"New token metadata to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.TokenMetadata"}},"updateCollectionApprovals":{"description":"Indicates if collection approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCollectionMetadata":{"description":"Indicates if the collection metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCollectionPermissions":{"description":"Indicates if collection permissions should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCustomData":{"description":"Indicates if the custom data should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateIsArchived":{"description":"Indicates if the isArchived should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateManager":{"description":"Indicates if the manager should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateStandards":{"description":"Indicates if the standards should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateTokenMetadata":{"description":"Indicates if the token metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateValidTokenIds":{"description":"Indicates if the valid token IDs should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"validTokenIds":{"type":"array","title":"New token IDs to add to this collection","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}}}},"tokenization.v27.MsgUniversalUpdateCollectionResponse":{"description":"MsgUniversalUpdateCollectionResponse is the response to MsgUniversalUpdateCollection.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v27.MsgUpdateCollection":{"description":"MsgUpdateCollection is used to update a collection.","type":"object","properties":{"aliasPathsToAdd":{"description":"Alias (non-wrapping) paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.AliasPathAddObject"}},"collectionApprovals":{"description":"New collection approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.CollectionApproval"}},"collectionId":{"description":"ID of the collection (0 for new collection).","type":"string"},"collectionMetadata":{"description":"New collection metadata to set.","$ref":"#/definitions/tokenization.v27.CollectionMetadata"},"collectionPermissions":{"description":"New collection permissions to set.","$ref":"#/definitions/tokenization.v27.CollectionPermissions"},"cosmosCoinWrapperPathsToAdd":{"description":"IBC wrapper paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.CosmosCoinWrapperPathAddObject"}},"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"New custom data to set.","type":"string"},"invariants":{"description":"Collection-level invariants that cannot be broken.\nThese are set upon genesis and cannot be modified.\nAddresses are generated by the keeper and stored in the collection.","$ref":"#/definitions/tokenization.v27.InvariantsAddObject"},"isArchived":{"description":"New isArchived to set.","type":"boolean"},"manager":{"description":"New manager to set.","type":"string"},"mintEscrowCoinsToTransfer":{"description":"Coins to be transferred to the mint escrow address.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"standards":{"description":"New standards to set.","type":"array","items":{"type":"string"}},"tokenMetadata":{"description":"New token metadata to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.TokenMetadata"}},"updateCollectionApprovals":{"description":"Indicates if collection approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCollectionMetadata":{"description":"Indicates if the collection metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCollectionPermissions":{"description":"Indicates if collection permissions should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCustomData":{"description":"Indicates if the custom data should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateIsArchived":{"description":"Indicates if the isArchived should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateManager":{"description":"Indicates if the manager should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateStandards":{"description":"Indicates if the standards should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateTokenMetadata":{"description":"Indicates if the token metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateValidTokenIds":{"description":"Indicates if the valid token IDs should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"validTokenIds":{"type":"array","title":"New token IDs to add to this collection","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}}}},"tokenization.v27.MsgUpdateCollectionResponse":{"description":"MsgUpdateCollectionResponse is the response to MsgUpdateCollection.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v27.MsgUpdateDynamicStore":{"description":"MsgUpdateDynamicStore is used to update an existing dynamic store.","type":"object","properties":{"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"Custom data field for storing arbitrary data associated with this dynamic store.","type":"string"},"defaultValue":{"description":"The new default value for uninitialized addresses (true/false).","type":"boolean"},"globalEnabled":{"description":"The global kill switch state (true = enabled, false = disabled/halted).\nCallers should query the current value first if they want to keep it unchanged.","type":"boolean"},"storeId":{"description":"ID of the dynamic store to update.","type":"string"},"uri":{"description":"URI for additional metadata or resources associated with this dynamic store.","type":"string"}}},"tokenization.v27.MsgUpdateDynamicStoreResponse":{"description":"MsgUpdateDynamicStoreResponse is the response to MsgUpdateDynamicStore.","type":"object"},"tokenization.v27.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the module parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/tokenization.v27.Params"}}},"tokenization.v27.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"tokenization.v27.MsgUpdateUserApprovals":{"description":"MsgUpdateUserApprovals is used to update user approvals.","type":"object","properties":{"autoApproveAllIncomingTransfers":{"description":"Auto-approve setting for all incoming transfers.","type":"boolean"},"autoApproveSelfInitiatedIncomingTransfers":{"description":"Auto-approve setting for self-initiated incoming transfers.","type":"boolean"},"autoApproveSelfInitiatedOutgoingTransfers":{"description":"Auto-approve setting for self-initiated outgoing transfers.","type":"boolean"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"incomingApprovals":{"description":"New incoming approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UserIncomingApproval"}},"outgoingApprovals":{"description":"New outgoing approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UserOutgoingApproval"}},"updateAutoApproveAllIncomingTransfers":{"description":"Indicates if auto-approve settings for all incoming transfers should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateAutoApproveSelfInitiatedIncomingTransfers":{"description":"Indicates if auto-approve settings for self-initiated incoming transfers should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateAutoApproveSelfInitiatedOutgoingTransfers":{"description":"Indicates if auto-approve settings for self-initiated outgoing transfers should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateIncomingApprovals":{"description":"Indicates if incoming approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateOutgoingApprovals":{"description":"Indicates if outgoing approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateUserPermissions":{"description":"Indicates if user permissions should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"userPermissions":{"description":"New user permissions to set.","$ref":"#/definitions/tokenization.v27.UserPermissions"}}},"tokenization.v27.MsgUpdateUserApprovalsResponse":{"description":"MsgUpdateUserApprovalsResponse is the response to MsgUpdateUserApprovals.","type":"object"},"tokenization.v27.MustOwnTokens":{"description":"MustOwnTokens represents a condition where a user must own specific tokens\nto be approved to transfer.\n\n- collectionId: The ID of the collection for the tokens that must be owned\n- amountRange: The range of amounts the user must own (min to max)\n- ownershipTimes: The time ranges during which the user must own the tokens.\n- tokenIds: The token IDs the user must own.\n- overrideWithCurrentTime: If true, auto override ownershipTimes with the current time.\n- mustSatisfyForAllAssets: If true, the user must own all specified tokens; otherwise, owning any one for \u003e= 1 millisecond is sufficient.","type":"object","properties":{"amountRange":{"description":"The range of amounts the user must own (min to max).","$ref":"#/definitions/tokenization.v27.UintRange"},"collectionId":{"description":"The ID of the collection.","type":"string"},"mustSatisfyForAllAssets":{"description":"If true, the user must meet ownership requirements for all specified tokens; else, must meet requirements for any single token.","type":"boolean"},"overrideWithCurrentTime":{"description":"If true, override ownershipTimes with the current time.","type":"boolean"},"ownershipCheckParty":{"description":"The party to check ownership for. Options are \"initiator\", \"sender\", \"recipient\", or any valid bb1 address.\nIf a valid bb1 address is provided, ownership will be checked for that specific address.\nThis enables use cases like halt tokens where ownership is checked for an arbitrary address (e.g., halt token owner).\nDefaults to \"initiator\" if empty or if the value is not a recognized option or valid bb1 address.","type":"string"},"ownershipTimes":{"description":"The time ranges during which the user must own the tokens.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"tokenIds":{"description":"The token IDs the user must own.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}}}},"tokenization.v27.OutgoingApprovalCriteria":{"description":"OutgoingApprovalCriteria defines the criteria for approving outgoing transfers.\nThis is used for user-level outgoing approvals and only includes fields relevant to outgoing transfers.\nAll criteria must be satisfied for the approval to be considered valid.","type":"object","properties":{"altTimeChecks":{"description":"Alternative time-based checks for approval denial (offline hours/days). Defines time periods\nduring which this approval should be denied, such as specific hours of the day or days of the week.","$ref":"#/definitions/tokenization.v27.AltTimeChecks"},"approvalAmounts":{"description":"Threshold limit of amounts that can be transferred using this approval. Tracks cumulative amounts\ntransferred and enforces maximum limits per approval.","$ref":"#/definitions/tokenization.v27.ApprovalAmounts"},"autoDeletionOptions":{"description":"Auto-deletion options for this approval. Defines conditions under which this approval should be\nautomatically deleted (e.g., after a certain number of uses or time period).","$ref":"#/definitions/tokenization.v27.AutoDeletionOptions"},"coinTransfers":{"description":"The sdk.Coins that need to be transferred for approval. Defines required coin transfers (e.g., fees,\nroyalties) that must be executed alongside the token transfer for the approval to be valid.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.CoinTransfer"}},"dynamicStoreChallenges":{"description":"Dynamic store challenges that the initiator must pass for approval. The initiator must provide\nvalid proofs that satisfy all specified dynamic store challenges (e.g., key-value store lookups).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.DynamicStoreChallenge"}},"ethSignatureChallenges":{"description":"ETH signature challenges that the initiator must pass for approval. The initiator must provide\nvalid Ethereum signatures for all specified challenges. Each signature can only be used once.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ETHSignatureChallenge"}},"evmQueryChallenges":{"description":"EVM query challenges that must pass for approval. Read-only contract queries\nthat verify external EVM state (e.g., token ownership in another contract).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.EVMQueryChallenge"}},"initiatorChecks":{"description":"Address checks for the initiator of the transfer. Validates that the initiator address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.v27.AddressChecks"},"maxNumTransfers":{"description":"Maximum number of transfers that can be processed using this approval. Tracks the count of transfers\nand enforces the limit to prevent exceeding the allowed number of uses.","$ref":"#/definitions/tokenization.v27.MaxNumTransfers"},"merkleChallenges":{"description":"Merkle challenges that must be satisfied for approval. The initiator must provide valid Merkle proofs\nthat satisfy all specified challenges. Each challenge requires a proof that leads to a specific root hash.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.MerkleChallenge"}},"mustOwnTokens":{"description":"Must own tokens for approval. Defines token ownership requirements that must be satisfied for\nthe approval to be valid. The initiator must own the specified tokens at the specified ownership times.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.MustOwnTokens"}},"mustPrioritize":{"description":"If true, this approval must be explicitly prioritized in PrioritizedApprovals to be used.\nThis allows fine-grained control over which approvals are applied when multiple approvals could match.","type":"boolean"},"predeterminedBalances":{"description":"Predetermined balances that must be used for each approval. Defines the exact token amounts and IDs\nthat can be transferred when using this approval.","$ref":"#/definitions/tokenization.v27.PredeterminedBalances"},"recipientChecks":{"description":"Address checks for the recipient of the transfer. Validates that the recipient address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).\nNote: No sender checks are included for outgoing approvals since the sender is the user themselves.","$ref":"#/definitions/tokenization.v27.AddressChecks"},"requireToDoesNotEqualInitiatedBy":{"description":"Require the \"to\" address to not be equal to the \"initiated by\" address for approval.\nIf true, transfers where the recipient equals the initiator are forbidden.","type":"boolean"},"requireToEqualsInitiatedBy":{"description":"Require the \"to\" address to be equal to the \"initiated by\" address for approval.\nIf true, only transfers where the recipient matches the initiator are allowed.","type":"boolean"},"votingChallenges":{"description":"Voting challenges that must be satisfied for approval. The initiator must provide\nvalid votes that meet the quorum threshold for all specified challenges.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.VotingChallenge"}}}},"tokenization.v27.Params":{"description":"Params defines the parameters for the module.","type":"object","properties":{"affiliate_percentage":{"type":"string","title":"affiliate_percentage defines the percentage of the transfer amount that goes to the affiliate"},"allowed_denoms":{"type":"array","title":"allowed_denoms defines the list of denoms that are allowed to be used in coin_transfers","items":{"type":"string"}}}},"tokenization.v27.PathMetadata":{"description":"This message defines the metadata for paths (alias paths and cosmos coin wrapper paths).\nThe interpretation of this metadata should follow the collection standard.","type":"object","properties":{"customData":{"description":"Custom data or additional information related to the path metadata.","type":"string"},"uri":{"description":"The URI (Uniform Resource Identifier) associated with the path metadata.","type":"string"}}},"tokenization.v27.PrecalculateBalancesFromApprovalDetails":{"description":"PrecalculateBalancesFromApprovalDetails defines the details for precalculating balances from an approval.","type":"object","properties":{"approvalId":{"description":"The ID of the approval.","type":"string"},"approvalLevel":{"description":"The level of the approval. Can be \"collection\", \"incoming\", or \"outgoing\".","type":"string"},"approverAddress":{"description":"The address of the approver. Leave blank \"\" if approvalLevel == \"collection\".","type":"string"},"precalculationOptions":{"description":"The options for precalculating the balances.","$ref":"#/definitions/tokenization.v27.PrecalculationOptions"},"version":{"description":"The version of the approval.","type":"string"}}},"tokenization.v27.PrecalculationOptions":{"description":"PrecalculationOptions defines the options for precalculating the balances.","type":"object","properties":{"overrideTimestamp":{"description":"The timestamp to override with when calculating the balances.","type":"string"},"tokenIdsOverride":{"description":"The IDs to override for the transfer. Only applicable if using this option in precalculation.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}}}},"tokenization.v27.PredeterminedBalances":{"description":"PredeterminedBalances represents balances with predetermined order calculation.","type":"object","properties":{"incrementedBalances":{"description":"Balances that have a starting amount and increment. If this is nil, then we use the manual balances.","$ref":"#/definitions/tokenization.v27.IncrementedBalances"},"manualBalances":{"description":"Manual balances that can be entered. If this is nil, then we use the incremented balances.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ManualBalances"}},"orderCalculationMethod":{"description":"The method to calculate the order of predetermined balances.","$ref":"#/definitions/tokenization.v27.PredeterminedOrderCalculationMethod"}}},"tokenization.v27.PredeterminedOrderCalculationMethod":{"description":"PredeterminedOrderCalculationMethod defines the method to calculate predetermined balances order.","type":"object","properties":{"challengeTrackerId":{"description":"If useMerkleChallengeLeafIndex is set, then this is the ID of the challenge tracker associated with this calculation method.","type":"string"},"useMerkleChallengeLeafIndex":{"description":"Use the Merkle challenge leaf index to calculate the order. Ex: Transfer that uses leaf index 0 gets the first balance, transfer that uses leaf index 1 gets the second balance, etc.","type":"boolean"},"useOverallNumTransfers":{"description":"Use the overall number of transfers to calculate the order. Ex: First transfer gets the first balance, second transfer gets the second balance, etc.","type":"boolean"},"usePerFromAddressNumTransfers":{"description":"Use the number of transfers per \"from\" address to calculate the order. Ex: First transfer from address A gets the first balance, second transfer from address A gets the second balance, etc.","type":"boolean"},"usePerInitiatedByAddressNumTransfers":{"description":"Use the number of transfers per \"initiated by\" address to calculate the order. Ex: First transfer initiated by address A gets the first balance, second transfer initiated by address A gets the second balance, etc.","type":"boolean"},"usePerToAddressNumTransfers":{"description":"Use the number of transfers per \"to\" address to calculate the order. Ex: First transfer to address A gets the first balance, second transfer to address A gets the second balance, etc.","type":"boolean"}}},"tokenization.v27.RecurringOwnershipTimes":{"description":"RecurringOwnershipTimes represents a list of recurring ownership times.","type":"object","properties":{"chargePeriodLength":{"type":"string","title":"Grace period length where you can charge the next interval (nextStartTime - chargePeriodLength) until (nextStartTime) = charge period"},"intervalLength":{"description":"The interval length in unix milliseconds.","type":"string"},"startTime":{"description":"The original start time of the first interval.","type":"string"}}},"tokenization.v27.ResetTimeIntervals":{"description":"Time intervals to reset the trackers at.","type":"object","properties":{"intervalLength":{"description":"Interval length in unix milliseconds.","type":"string"},"startTime":{"description":"Original start time of the first interval.","type":"string"}}},"tokenization.v27.TokenIdsActionPermission":{"description":"TokenIdsActionPermission defines the permissions for performing an action for specific tokens.\nCurrently, this is only used for creating new tokens.\n\nEx: If you want to lock the ability to create new tokens for tokenIds [1,2] at ownershipTimes 1/1/2020 - 1/1/2021, \nyou could set the combination (tokenIds: [1,2], ownershipTimes: [1/1/2020 - 1/1/2021]) to always be forbidden.","type":"object","properties":{"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"tokenIds":{"description":"Specifies the token IDs involved in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}}}},"tokenization.v27.TokenMetadata":{"description":"This message defines the metadata for specific token IDs.\nThe interpretation of this metadata should follow the collection standard.","type":"object","properties":{"customData":{"description":"Custom data or additional information related to the token metadata.","type":"string"},"tokenIds":{"description":"The token IDs to which this metadata applies.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"uri":{"description":"The URI (Uniform Resource Identifier) associated with the token metadata.","type":"string"}}},"tokenization.v27.Transfer":{"description":"Transfer defines the details of a transfer of tokens.","type":"object","properties":{"balances":{"description":"The balances to be transferred.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.Balance"}},"ethSignatureProofs":{"description":"The ETH signature proofs / solutions for all ETH signature challenges required for the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ETHSignatureProof"}},"from":{"description":"The address of the sender of the transfer.","type":"string"},"memo":{"description":"The memo for the transfer.","type":"string"},"merkleProofs":{"description":"The Merkle proofs / solutions for all Merkle challenges required for the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.MerkleProof"}},"onlyCheckPrioritizedCollectionApprovals":{"description":"Whether to only check prioritized approvals for the transfer. \nIf true, we will only check the prioritized approvals and fail if none of them match (i.e. do not check any non-prioritized approvals).\nIf false, we will check the prioritized approvals first and then scan through the rest of the approvals.","type":"boolean"},"onlyCheckPrioritizedIncomingApprovals":{"description":"Whether to only check prioritized approvals for the transfer. \nIf true, we will only check the prioritized approvals and fail if none of them match (i.e. do not check any non-prioritized approvals).\nIf false, we will check the prioritized approvals first and then scan through the rest of the approvals.","type":"boolean"},"onlyCheckPrioritizedOutgoingApprovals":{"description":"Whether to only check prioritized approvals for the transfer. \nIf true, we will only check the prioritized approvals and fail if none of them match (i.e. do not check any non-prioritized approvals).\nIf false, we will check the prioritized approvals first and then scan through the rest of the approvals.","type":"boolean"},"precalculateBalancesFromApproval":{"description":"If defined, we will use the predeterminedBalances from the specified approval to calculate the balances at execution time.\nWe will override the balances field with the precalculated balances. Only applicable for approvals with predeterminedBalances set.","$ref":"#/definitions/tokenization.v27.PrecalculateBalancesFromApprovalDetails"},"prioritizedApprovals":{"description":"The prioritized approvals for the transfer. By default, we scan linearly through the approvals and use the first match.\nThis field can be used to prioritize specific approvals and scan through them first.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ApprovalIdentifierDetails"}},"toAddresses":{"description":"The addresses of the recipients of the transfer.","type":"array","items":{"type":"string"}}}},"tokenization.v27.UintRange":{"description":"The UintRange is a range of IDs from some start to some end (inclusive).\nuintRanges are one of the core types used.\n\nThey are used for everything from token IDs to time ranges to min/max balance amounts.\n\nSee the BitBadges documentation for more information.","type":"object","properties":{"end":{"description":"The ending value of the range (inclusive).","type":"string"},"start":{"description":"The starting value of the range (inclusive).","type":"string"}}},"tokenization.v27.UserBalanceStore":{"description":"UserBalanceStore is the store for the user balances for a collection.\n\nIt consists of a list of balances, a list of approved outgoing transfers, and a list of approved incoming transfers,\nas well as the permissions for updating the approved incoming/outgoing transfers.\n\nUpon initialization, all fields (minus the balances) are set to the defaults specified by the collection.\n\nThe outgoing transfers can be used to allow / disallow transfers which are sent from this user.\nIf a transfer has no match, then it is disallowed by default, unless from == initiatedBy (i.e. initiated by this user)\nand autoApproveSelfInitiatedOutgoingTransfers is set to true.\n\nThe incoming transfers can be used to allow / disallow transfers which are sent to this user.\nIf a transfer has no match, then it is disallowed by default, unless to == initiatedBy (i.e. initiated by this user)\nand autoApproveSelfInitiatedIncomingTransfers is set to true.\n\nNote that the user approved transfers are only checked if the collection approved transfers do not specify to override\nthe user approved transfers. \n\nThe permissions are used to determine whether the user can update the approved incoming/outgoing transfers and auto approvals.","type":"object","properties":{"autoApproveAllIncomingTransfers":{"description":"Whether to auto-approve all incoming transfers by default. \nThis is just shorthand for adding an accept everything incoming approval\nwith no restrictions.","type":"boolean"},"autoApproveSelfInitiatedIncomingTransfers":{"description":"Whether to auto-approve self-initiated incoming transfers for this user (i.e. to == initiatedBy).","type":"boolean"},"autoApproveSelfInitiatedOutgoingTransfers":{"description":"Whether to auto-approve self-initiated outgoing transfers for this user (i.e. from == initiatedBy).","type":"boolean"},"balances":{"description":"The list of balances associated with this user.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.Balance"}},"incomingApprovals":{"description":"The list of approved incoming transfers for this user.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UserIncomingApproval"}},"outgoingApprovals":{"description":"The list of approved outgoing transfers for this user.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UserOutgoingApproval"}},"userPermissions":{"description":"The permissions for this user's actions and transfers.","$ref":"#/definitions/tokenization.v27.UserPermissions"}}},"tokenization.v27.UserIncomingApproval":{"description":"UserIncomingApproval defines the rules for the approval of an incoming transfer to a user.","type":"object","properties":{"approvalCriteria":{"description":"The criteria that must be met for this approval to be considered.","$ref":"#/definitions/tokenization.v27.IncomingApprovalCriteria"},"approvalId":{"description":"The ID of this approval. Must be unique per level (i.e. collection, outgoing, incoming).","type":"string"},"customData":{"description":"Arbitrary custom data associated with this approval.","type":"string"},"fromListId":{"description":"The list ID for the sender of the transfer.","type":"string"},"initiatedByListId":{"description":"The list ID for the user who initiated the transfer.","type":"string"},"ownershipTimes":{"description":"The allowed range of ownership times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"tokenIds":{"description":"The allowed range of token IDs for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"transferTimes":{"description":"The allowed range of transfer times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"uri":{"description":"The URI associated with this approval, optionally providing metadata about the approval.","type":"string"},"version":{"description":"Version of the approval. Maintained internally.","type":"string"}}},"tokenization.v27.UserIncomingApprovalPermission":{"description":"UserIncomingApprovalPermission defines the permissions for updating the user's approved incoming transfers.\n\nSee CollectionApprovalPermission for more details. This is equivalent without the toListId field because that is always the user.","type":"object","properties":{"approvalId":{"description":"Identifier for the approvalId. You can use \"All\" or \"!approvalId\" for shorthand.\nIf you use \"All\", this approval will match to all approvalIds.\nIf you use \"!approvalId\", this approval will match to all approvalIds except for approvalId.\nIf you use \"approvalId\", this approval will match to only the specified approvalId and fail on all others.","type":"string"},"fromListId":{"description":"Identifier for the sender list.","type":"string"},"initiatedByListId":{"description":"Identifier for the initiator list (who is approved?).","type":"string"},"ownershipTimes":{"description":"Specifies the ownership times for the tokens in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"tokenIds":{"description":"Specifies the token IDs involved in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"transferTimes":{"description":"Specifies the times when the transfer can occur.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}}}},"tokenization.v27.UserOutgoingApproval":{"description":"UserOutgoingApproval defines the rules for the approval of an outgoing transfer from a user.","type":"object","properties":{"approvalCriteria":{"description":"The criteria that must be met for this approval to be considered.","$ref":"#/definitions/tokenization.v27.OutgoingApprovalCriteria"},"approvalId":{"description":"The ID of this approval. Must be unique per level (i.e. collection, outgoing, incoming).","type":"string"},"customData":{"description":"Arbitrary custom data associated with this approval.","type":"string"},"initiatedByListId":{"description":"The list ID for the user who initiated the transfer.","type":"string"},"ownershipTimes":{"description":"The allowed range of ownership times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"toListId":{"description":"The list ID for the recipient of the transfer.","type":"string"},"tokenIds":{"description":"The allowed range of token IDs for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"transferTimes":{"description":"The allowed range of transfer times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"uri":{"description":"The URI associated with this approval, optionally providing metadata about the approval.","type":"string"},"version":{"description":"Version of the approval. Maintained internally.","type":"string"}}},"tokenization.v27.UserOutgoingApprovalPermission":{"description":"UserOutgoingApprovalPermission defines the permissions for updating the user's approved outgoing transfers.","type":"object","properties":{"approvalId":{"description":"Identifier for the approvalId. You can use \"All\" or \"!approvalId\" for shorthand.\nIf you use \"All\", this approval will match to all approvalIds.\nIf you use \"!approvalId\", this approval will match to all approvalIds except for approvalId.\nIf you use \"approvalId\", this approval will match to only the specified approvalId and fail on all others.","type":"string"},"initiatedByListId":{"description":"Identifier for the initiator list (who is approved?).","type":"string"},"ownershipTimes":{"description":"Specifies the ownership times for the tokens in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"toListId":{"description":"Identifier for the recipient list.","type":"string"},"tokenIds":{"description":"Specifies the token IDs involved in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"transferTimes":{"description":"Specifies the times when the transfer can occur.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}}}},"tokenization.v27.UserPermissions":{"description":"UserPermissions defines the permissions for the user about their approvals (i.e., what the user can and cannot do).\n\nSee CollectionPermissions for more details on the different types of permissions.\n\ncanUpdateOutgoingApprovals and canUpdateOutgoingApprovals follow the same as the canUpdateCollectionApprovals in CollectionPermissions,\nbut certain fields are removed because they are not relevant to the user.","type":"object","properties":{"canUpdateAutoApproveAllIncomingTransfers":{"description":"Permissions related to updating auto-approval settings for all incoming transfers (whether they are allowed by default).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ActionPermission"}},"canUpdateAutoApproveSelfInitiatedIncomingTransfers":{"description":"Permissions related to updating auto-approval settings for self-initiated incoming transfers (whether they are allowed by default).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ActionPermission"}},"canUpdateAutoApproveSelfInitiatedOutgoingTransfers":{"description":"Permissions related to updating auto-approval settings for self-initiated outgoing transfers (whether they are allowed by default).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ActionPermission"}},"canUpdateIncomingApprovals":{"description":"Permissions related to updating the user's approved incoming transfers.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UserIncomingApprovalPermission"}},"canUpdateOutgoingApprovals":{"description":"Permissions related to updating the user's approved outgoing transfers.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UserOutgoingApprovalPermission"}}}},"tokenization.v27.UserRoyalties":{"description":"UserRoyalties defines the royalties for a user.","type":"object","properties":{"payoutAddress":{"description":"Payout address for the royalties.","type":"string"},"percentage":{"description":"Percentage of the transfer amount to apply as royalties. 1 to 10000 represents basis points.","type":"string"}}},"tokenization.v27.Voter":{"description":"Voter defines a voter with their address and weight.","type":"object","properties":{"address":{"description":"The address of the voter.","type":"string"},"weight":{"description":"The weight of this voter's vote.","type":"string"}}},"tokenization.v27.VotingChallenge":{"description":"VotingChallenge defines a rule for approval in the form of a voting/multi-sig challenge.\nRequires a weighted quorum threshold to be met through votes from specified voters.\nAll challenges must be met with valid solutions for the transfer to be approved.\n\nIMPORTANT: Votes are stored separately and can be updated. The threshold is calculated as a percentage\nof total possible weight (all voters), not just voted weight. If you update the proposal ID, then the\nvote tracker will reset and start a new tally. We recommend using a unique proposal ID for each challenge\nto prevent overlap and unexpected behavior.","type":"object","properties":{"customData":{"description":"Arbitrary custom data associated with this voting challenge.","type":"string"},"proposalId":{"type":"string","title":"The ID of this voting challenge for tracking votes (scoped like challengeTrackerId).\nFormat: collectionId-approverAddress-approvalLevel-approvalId-challengeId"},"quorumThreshold":{"description":"The quorum threshold as a percentage (0-100) of total possible weight that must vote \"yes\".\nExample: 50 means 50% of total voter weight must vote yes for approval.","type":"string"},"uri":{"description":"The URI associated with this voting challenge.","type":"string"},"voters":{"description":"List of voters with their weights. Each voter can cast a weighted vote.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.Voter"}}}},"tokenization.v28.ActionPermission":{"description":"ActionPermission defines the permissions for performing an action.\n\nThis is simple and straightforward as the only thing we need to check is the permitted/forbidden times.","type":"object","properties":{"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}}}},"tokenization.v28.AddressChecks":{"type":"object","title":"AddressChecks defines checks for address types (EVM contract, liquidity pool, etc.)","properties":{"mustBeEvmContract":{"description":"Require the address to be an EVM contract (has code).","type":"boolean"},"mustBeLiquidityPool":{"description":"Require the address to be a liquidity pool.","type":"boolean"},"mustNotBeEvmContract":{"description":"Require the address to not be an EVM contract (no code).","type":"boolean"},"mustNotBeLiquidityPool":{"description":"Require the address to not be a liquidity pool.","type":"boolean"}}},"tokenization.v28.AddressListInput":{"description":"AddressListInput is used for creating address lists via MsgCreateAddressLists.\nIt contains all fields from AddressList except createdBy, which is automatically set from the message creator.","type":"object","properties":{"addresses":{"description":"List of addresses included in the list.","type":"array","items":{"type":"string"}},"customData":{"description":"Custom arbitrary data or additional information related to the address list.","type":"string"},"listId":{"description":"Unique identifier for the address list.","type":"string"},"uri":{"description":"URI (Uniform Resource Identifier) associated with the address list to provide metadata, if applicable.","type":"string"},"whitelist":{"description":"Indicates whether the list includes the specified addresses (true) or excludes them (false).","type":"boolean"}}},"tokenization.v28.AliasPathAddObject":{"type":"object","properties":{"conversion":{"$ref":"#/definitions/tokenization.v28.ConversionWithoutDenom"},"denom":{"type":"string"},"denomUnits":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.DenomUnit"}},"metadata":{"description":"The metadata for this alias path.","$ref":"#/definitions/tokenization.v28.PathMetadata"},"symbol":{"type":"string"}}},"tokenization.v28.AltTimeChecks":{"type":"object","title":"AltTimeChecks defines alternative time-based checks for approval denial.\nIf the transfer time falls within any of the specified offline hours or days, the approval is denied.\nUses UTC timezone for neutral timezone approach.\nofflineHours: ranges of hours (0-23) when transfers should be denied\nofflineDays: ranges of days (0-6, where 0=Sunday, 1=Monday, ..., 6=Saturday) when transfers should be denied","properties":{"offlineDays":{"description":"Days (0-6, where 0=Sunday, 1=Monday, ..., 6=Saturday) when transfers should be denied. Uses UTC timezone.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"offlineHours":{"description":"Hours (0-23) when transfers should be denied. Uses UTC timezone.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}}}},"tokenization.v28.ApprovalAmounts":{"description":"ApprovalAmounts defines approval amounts per unique \"from,\" \"to,\" and/or \"initiated by\" address.\nIf any of these are nil or \"0\", we assume unlimited approvals.\nIf they are set to a value, then the running tally of the amounts transferred for the specified token IDs and ownership times \nmust not exceed the corresponding value.","type":"object","properties":{"amountTrackerId":{"description":"The ID of the amount tracker associated with this approval.\nWe use this ID to track the number of transfers and amounts transferred.","type":"string"},"overallApprovalAmount":{"description":"Overall approval amount.","type":"string"},"perFromAddressApprovalAmount":{"description":"Approval amount per \"from\" address.","type":"string"},"perInitiatedByAddressApprovalAmount":{"description":"Approval amount per \"initiated by\" address.","type":"string"},"perToAddressApprovalAmount":{"description":"Approval amount per \"to\" address.","type":"string"},"resetTimeIntervals":{"description":"Time intervals to reset the trackers at.","$ref":"#/definitions/tokenization.v28.ResetTimeIntervals"}}},"tokenization.v28.ApprovalCriteria":{"description":"ApprovalCriteria defines the criteria for approving transfers.\nAll criteria must be satisfied for the approval to be considered valid.","type":"object","properties":{"allowBackedMinting":{"description":"If true, this collection approval allows backed minting operations (CosmosCoinBackedPath).\nWhen false, this approval cannot be used for transfers involving backed minting addresses.\nThis prevents accidental allowances when toListIds is \"All\".","type":"boolean"},"allowSpecialWrapping":{"description":"If true, this collection approval allows special wrapping operations (CosmosCoinWrapperPath).\nWhen false, this approval cannot be used for transfers involving wrapping addresses.\nThis prevents accidental allowances when toListIds is \"All\".","type":"boolean"},"altTimeChecks":{"description":"Alternative time-based checks for approval denial (offline hours/days). Defines time periods\nduring which this approval should be denied, such as specific hours of the day or days of the week.","$ref":"#/definitions/tokenization.v28.AltTimeChecks"},"approvalAmounts":{"description":"Threshold limit of amounts that can be transferred using this approval. Tracks cumulative amounts\ntransferred and enforces maximum limits per approval.","$ref":"#/definitions/tokenization.v28.ApprovalAmounts"},"autoDeletionOptions":{"description":"Auto-deletion options for this approval. Defines conditions under which this approval should be\nautomatically deleted (e.g., after a certain number of uses or time period).","$ref":"#/definitions/tokenization.v28.AutoDeletionOptions"},"coinTransfers":{"description":"The sdk.Coins that need to be transferred for approval. Defines required coin transfers (e.g., fees,\nroyalties) that must be executed alongside the token transfer for the approval to be valid.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.CoinTransfer"}},"dynamicStoreChallenges":{"description":"Dynamic store challenges that the initiator must pass for approval. The initiator must provide\nvalid proofs that satisfy all specified dynamic store challenges (e.g., key-value store lookups).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.DynamicStoreChallenge"}},"ethSignatureChallenges":{"description":"ETH signature challenges that the initiator must pass for approval. The initiator must provide\nvalid Ethereum signatures for all specified challenges. Each signature can only be used once.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ETHSignatureChallenge"}},"evmQueryChallenges":{"description":"EVM query challenges that must pass for approval. Read-only contract queries\nthat verify external EVM state (e.g., token ownership in another contract).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.EVMQueryChallenge"}},"initiatorChecks":{"description":"Address checks for the initiator of the transfer. Validates that the initiator address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.v28.AddressChecks"},"maxNumTransfers":{"description":"Maximum number of transfers that can be processed using this approval. Tracks the count of transfers\nand enforces the limit to prevent exceeding the allowed number of uses.","$ref":"#/definitions/tokenization.v28.MaxNumTransfers"},"merkleChallenges":{"description":"Merkle challenges that must be satisfied for approval. The initiator must provide valid Merkle proofs\nthat satisfy all specified challenges. Each challenge requires a proof that leads to a specific root hash.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.MerkleChallenge"}},"mustOwnTokens":{"description":"Must own tokens for approval. Defines token ownership requirements that must be satisfied for\nthe approval to be valid. The initiator must own the specified tokens at the specified ownership times.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.MustOwnTokens"}},"mustPrioritize":{"description":"If true, this approval must be explicitly prioritized in PrioritizedApprovals to be used.\nThis allows fine-grained control over which approvals are applied when multiple approvals could match.","type":"boolean"},"overridesFromOutgoingApprovals":{"description":"Overrides the user's outgoing approvals for approval. If true, this collection-level approval\ntakes precedence over any outgoing approvals defined by the sender, allowing the collection to\ncontrol outgoing transfer behavior.","type":"boolean"},"overridesToIncomingApprovals":{"description":"Overrides the user's incoming approvals for approval. If true, this collection-level approval\ntakes precedence over any incoming approvals defined by the recipient, allowing the collection to\ncontrol incoming transfer behavior.","type":"boolean"},"predeterminedBalances":{"description":"Predetermined balances that must be used for each approval. Defines the exact token amounts and IDs\nthat can be transferred when using this approval.","$ref":"#/definitions/tokenization.v28.PredeterminedBalances"},"recipientChecks":{"description":"Address checks for the recipient of the transfer. Validates that the recipient address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.v28.AddressChecks"},"requireFromDoesNotEqualInitiatedBy":{"description":"Require the \"from\" address to not be equal to the \"initiated by\" address for approval.\nIf true, transfers where the sender equals the initiator are forbidden.","type":"boolean"},"requireFromEqualsInitiatedBy":{"description":"Require the \"from\" address to be equal to the \"initiated by\" address for approval.\nIf true, only transfers where the sender matches the initiator are allowed.","type":"boolean"},"requireToDoesNotEqualInitiatedBy":{"description":"Require the \"to\" address to not be equal to the \"initiated by\" address for approval.\nIf true, transfers where the recipient equals the initiator are forbidden.","type":"boolean"},"requireToEqualsInitiatedBy":{"description":"Require the \"to\" address to be equal to the \"initiated by\" address for approval.\nIf true, only transfers where the recipient matches the initiator are allowed.","type":"boolean"},"senderChecks":{"description":"Address checks for the sender of the transfer. Validates that the sender address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.v28.AddressChecks"},"userRoyalties":{"description":"User level royalties to apply to the transfer. Defines the percentage and payout address for\nroyalties that should be collected when this approval is used for a transfer.","$ref":"#/definitions/tokenization.v28.UserRoyalties"},"votingChallenges":{"description":"Voting challenges that must be satisfied for approval. The initiator must provide\nvalid votes that meet the quorum threshold for all specified challenges.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.VotingChallenge"}}}},"tokenization.v28.ApprovalIdentifierDetails":{"description":"ApprovalIdentifierDetails defines the details to identify a specific approval.","type":"object","properties":{"approvalId":{"description":"The ID of the approval.","type":"string"},"approvalLevel":{"description":"The level of the approval. Can be \"collection\", \"incoming\", or \"outgoing\".","type":"string"},"approverAddress":{"description":"The address of the approver. Leave blank \"\" if approvalLevel == \"collection\".","type":"string"},"version":{"description":"The version of the approval.","type":"string"}}},"tokenization.v28.AutoDeletionOptions":{"description":"AutoDeletionOptions defines the options for auto-deletion of approvals.","type":"object","properties":{"afterOneUse":{"type":"boolean","title":"After one use?"},"afterOverallMaxNumTransfers":{"type":"boolean","title":"After overall max number of uses threshold is met?"},"allowCounterpartyPurge":{"type":"boolean","title":"Allow counterparty to purge this approval if they are the only initiator"},"allowPurgeIfExpired":{"type":"boolean","title":"Allow others to call PurgeApprovals on behalf of this approval owner"}}},"tokenization.v28.Balance":{"description":"Balance represents the balance of a token for a specific user.\nThe user amounts xAmount of a token specified for the time ranges specified.\n\nExample: User A owns x10 of token IDs 1-10 from 1/1/2020 to 1/1/2021.\n\nIf times or tokenIDs have len \u003e 1, then the user owns all token IDs specified for all time ranges specified.","type":"object","properties":{"amount":{"description":"The amount of the token owned by the user.","type":"string"},"ownershipTimes":{"description":"The time ranges during which the user owns the token.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"tokenIds":{"description":"The token IDs for which the user owns the token.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}}}},"tokenization.v28.CoinTransfer":{"type":"object","properties":{"coins":{"description":"The sdk.Coins to be transferred.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"overrideFromWithApproverAddress":{"description":"By default, the from address is the initiator of the transaction.\nIf this is set to true, we will override the from address with the approver address.\nNote: This is not applicable for collection approvals (since approverAddress == '').","type":"boolean"},"overrideToWithInitiator":{"description":"By default, the to address is what is specified in the coin transfer.\nIf this is set to true, we will override the to address with the initiator of the transaction.","type":"boolean"},"to":{"description":"The address of the recipient of the transfer.","type":"string"}}},"tokenization.v28.CollectionApproval":{"type":"object","title":"CollectionApproval defines the rules for the approval of a transfer on the collection level","properties":{"approvalCriteria":{"description":"The criteria that must be met for this approval to be considered.","$ref":"#/definitions/tokenization.v28.ApprovalCriteria"},"approvalId":{"description":"The ID of this approval. Must be unique per level (i.e. collection, outgoing, incoming).","type":"string"},"customData":{"description":"Arbitrary custom data associated with this approval.","type":"string"},"fromListId":{"description":"The list ID for the sender of the transfer.","type":"string"},"initiatedByListId":{"description":"The list ID for the user who initiated the transfer.","type":"string"},"ownershipTimes":{"description":"The allowed range of ownership times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"toListId":{"description":"The list ID for the recipient of the transfer.","type":"string"},"tokenIds":{"description":"The allowed range of token IDs for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"transferTimes":{"description":"The allowed range of transfer times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"uri":{"description":"The URI associated with this approval, optionally providing metadata about the approval.","type":"string"},"version":{"description":"Version of the approval. Maintained internally.","type":"string"}}},"tokenization.v28.CollectionApprovalPermission":{"description":"CollectionApprovalPermission defines what collection approved transfers can be updated vs. are locked.\n\nEach transfer is broken down to a (from, to, initiatedBy, transferTime, tokenId) tuple.\nFor a transfer to match, we need to match ALL of the fields in the combination. \nThese are determined by the fromListId, toListId, initiatedByListId, transferTimes, tokenIds fields.\nAddressLists are used for (from, to, initiatedBy) which are a permanent list of addresses identified by an ID (see AddressLists). \n\npermanentlyPermitted/ForbiddenTimes: when can the manager execute this permission?\n\nEx: Let's say we are updating the transferability for the transfer tuple (\"AllWithoutMint\", \"AllWithoutMint\", \"AllWithoutMint\", 10, 1000).\nWe would check to find the FIRST CollectionApprovalPermission that matches this combination.\nIf we find a match, we would check the permitted/forbidden times to see if we can execute this permission (default is ALLOWED).\n\nEx: So if you wanted to freeze the transferability to enforce that token ID 1 will always be transferable, you could set\nthe combination (\"AllWithoutMint\", \"AllWithoutMint\", \"AllWithoutMint\", \"All Transfer Times\", 1) to always be forbidden.","type":"object","properties":{"approvalId":{"description":"Identifier for the approvalId. You can use \"All\" or \"!approvalId\" for shorthand.\nIf you use \"All\", this approval will match to all approvalIds.\nIf you use \"!approvalId\", this approval will match to all approvalIds except for approvalId.\nIf you use \"approvalId\", this approval will match to only the specified approvalId and fail on all others.","type":"string"},"fromListId":{"description":"Identifier for the sender list.","type":"string"},"initiatedByListId":{"description":"Identifier for the initiator list (who is approved?).","type":"string"},"ownershipTimes":{"description":"Specifies the ownership times for the tokens in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"toListId":{"description":"Identifier for the recipient list.","type":"string"},"tokenIds":{"description":"Specifies the token IDs involved in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"transferTimes":{"description":"Specifies the times when the transfer can occur.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}}}},"tokenization.v28.CollectionMetadata":{"description":"This message defines the metadata for the collection.\nThe interpretation of this metadata should follow the collection standard.","type":"object","properties":{"customData":{"description":"Custom data or additional information related to the collection metadata.","type":"string"},"uri":{"description":"The URI (Uniform Resource Identifier) associated with the collection metadata.","type":"string"}}},"tokenization.v28.CollectionPermissions":{"description":"CollectionPermissions defines the permissions for the collection (i.e., what the manager can and cannot do).\n\nThere are three types of permissions for a collection: ActionPermission, TokenIdsActionPermission, and CollectionApprovalPermission.\n\nThe permission type allows fine-grained access control for each action.\n- ActionPermission: defines when the manager can perform an action or update a field.\n- TokenIdsActionPermission: defines when the manager can perform an action for specific tokens\n- CollectionApprovalPermission: defines when the manager can update the transferability of the collection and what transfers can be updated vs. locked.\n\nNote there are a few different times here which could get confusing:\n- permanentlyPermitted/ForbiddenTimes - the times that a permission can be performed\n- transferTimes - the times that a transfer occurs\n- ownershipTimes - the times when a token is owned by a user\n\nThe permitted/permanentlyForbiddenTimes are used to determine when a permission can be executed.\nOnce a time is set to be permitted or forbidden, it is PERMANENT and cannot be changed.\nIf a time is not set to be permitted or forbidden, it is considered NEUTRAL and can be updated but is ALLOWED by default.\n\nIMPORTANT: We take first-match only for the permissions. This means that if you forbid time T in array index 0 and permit time T in index 1, \nwe will only check the first permission (forbid time T) and not the second permission (permit time T).","type":"object","properties":{"canAddMoreAliasPaths":{"description":"Permissions related to adding more alias paths to the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ActionPermission"}},"canAddMoreCosmosCoinWrapperPaths":{"description":"Permissions related to adding more cosmos coin wrapper paths to the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ActionPermission"}},"canArchiveCollection":{"description":"Permissions related to archiving the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ActionPermission"}},"canDeleteCollection":{"description":"Permissions related to deleting the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ActionPermission"}},"canUpdateCollectionApprovals":{"description":"Permissions related to updating collection approvals.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.CollectionApprovalPermission"}},"canUpdateCollectionMetadata":{"description":"Permissions related to updating the metadata of the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ActionPermission"}},"canUpdateCustomData":{"description":"Permissions related to updating custom data for the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ActionPermission"}},"canUpdateManager":{"description":"Permissions related to updating the collection's manager.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ActionPermission"}},"canUpdateStandards":{"description":"Permissions related to updating standards for the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ActionPermission"}},"canUpdateTokenMetadata":{"description":"Permissions related to updating token metadata for specific tokens.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.TokenIdsActionPermission"}},"canUpdateValidTokenIds":{"description":"Permissions related to creating more tokens for the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.TokenIdsActionPermission"}}}},"tokenization.v28.Conversion":{"description":"Conversion defines a bidirectional conversion between a cosmos coin (with denom) and token balances.","type":"object","properties":{"sideA":{"description":"Side A: The cosmos coin side of the conversion (amount + denom).","$ref":"#/definitions/tokenization.v28.ConversionSideAWithDenom"},"sideB":{"description":"Side B: The token balances side of the conversion.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.Balance"}}}},"tokenization.v28.ConversionSideA":{"description":"ConversionSideA represents the cosmos coin amount side of a conversion without denomination.","type":"object","properties":{"amount":{"description":"The amount of the cosmos coin (0 decimals).","type":"string"}}},"tokenization.v28.ConversionSideAWithDenom":{"description":"ConversionSideAWithDenom represents the cosmos coin side of a conversion with denomination.","type":"object","properties":{"amount":{"description":"The amount of the cosmos coin (0 decimals).","type":"string"},"denom":{"description":"The denomination of the cosmos coin.","type":"string"}}},"tokenization.v28.ConversionWithoutDenom":{"description":"ConversionWithoutDenom defines a bidirectional conversion between a cosmos coin amount (without denom) and token balances.\nThe denom is stored at the base level (e.g., in AliasPath or CosmosCoinWrapperPath).","type":"object","properties":{"sideA":{"description":"Side A: The cosmos coin amount side of the conversion (amount only, denom stored separately).","$ref":"#/definitions/tokenization.v28.ConversionSideA"},"sideB":{"description":"Side B: The token balances side of the conversion.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.Balance"}}}},"tokenization.v28.CosmosCoinBackedPathAddObject":{"type":"object","properties":{"conversion":{"$ref":"#/definitions/tokenization.v28.Conversion"}}},"tokenization.v28.CosmosCoinWrapperPathAddObject":{"type":"object","properties":{"allowOverrideWithAnyValidToken":{"type":"boolean"},"conversion":{"$ref":"#/definitions/tokenization.v28.ConversionWithoutDenom"},"denom":{"type":"string"},"denomUnits":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.DenomUnit"}},"metadata":{"description":"The metadata for this wrapper path.","$ref":"#/definitions/tokenization.v28.PathMetadata"},"symbol":{"type":"string"}}},"tokenization.v28.DenomUnit":{"type":"object","properties":{"decimals":{"description":"The number of decimal places for this unit. Defines the precision of the unit.","type":"string"},"isDefaultDisplay":{"description":"If true, this is the default display unit. Only one unit should be marked as the default display unit.\nThis unit will be used by default when displaying the coin amount. If none are marked default, we use the base level.","type":"boolean"},"metadata":{"description":"The metadata for this denomination unit.","$ref":"#/definitions/tokenization.v28.PathMetadata"},"symbol":{"description":"The symbol for this unit (e.g., \"BADGE\", \"nBADGE\"). Used for display purposes.","type":"string"}}},"tokenization.v28.DynamicStoreChallenge":{"description":"DynamicStoreChallenge defines a challenge that requires the initiator to pass a dynamic store check.","type":"object","properties":{"ownershipCheckParty":{"description":"The party to check ownership for. Options are \"initiator\", \"sender\", \"recipient\", or any valid bb1 address.\nIf a valid bb1 address is provided, ownership will be checked for that specific address.\nThis enables use cases like halt tokens where ownership is checked for an arbitrary address (e.g., halt token owner).\nDefaults to \"initiator\" if empty or if the value is not a recognized option or valid bb1 address.","type":"string"},"storeId":{"description":"The ID of the dynamic store to check.","type":"string"}}},"tokenization.v28.ETHSignatureChallenge":{"description":"ETHSignatureChallenge defines a rule for the approval in the form of an Ethereum signature challenge.\n\nAn ETH signature challenge is a challenge where the user must provide a valid Ethereum signature for a specific nonce.\nThe signature scheme is ETHSign(nonce + \"-\" + initiatorAddress + \"-\" + collectionId + \"-\" + approverAddress + \"-\" + approvalLevel + \"-\" + approvalId + \"-\" + challengeId) and each signature can only be used once.\nAll challenges must be met with valid solutions for the transfer to be approved.\n\nIMPORTANT: We track the usage of each signature to prevent replay attacks. Each signature can only be used once.\nIf you update the challenge ID, then the used signatures tracker will reset and start a new tally.\nWe recommend using a unique challenge ID for each challenge to prevent overlap and unexpected behavior.","type":"object","properties":{"challengeTrackerId":{"description":"The ID of this ETH signature challenge for tracking the number of uses per signature.","type":"string"},"customData":{"description":"Arbitrary custom data associated with this ETH signature challenge.","type":"string"},"signer":{"description":"The Ethereum address that must sign the nonce for verification.","type":"string"},"uri":{"description":"The URI associated with this ETH signature challenge, optionally providing metadata about the challenge.","type":"string"}}},"tokenization.v28.ETHSignatureProof":{"description":"ETHSignatureProof represents an Ethereum signature proof for a challenge.","type":"object","properties":{"nonce":{"description":"The nonce that was signed. The signature scheme is ETHSign(nonce + \"-\" + initiatorAddress + \"-\" + collectionId + \"-\" + approverAddress + \"-\" + approvalLevel + \"-\" + approvalId + \"-\" + challengeId).","type":"string"},"signature":{"description":"The Ethereum signature of the nonce.","type":"string"}}},"tokenization.v28.EVMQueryChallenge":{"description":"EVMQueryChallenge defines a rule for approval via read-only EVM contract query.\n\nThe challenge executes a staticcall to the specified contract with the given calldata.\nThe result is compared against the expected result (if provided) or checked for non-zero return.\n\nIMPORTANT: This is read-only and cannot modify state. The query is executed with a gas limit\nto prevent DoS attacks. All results are deterministic since EVM state is consistent within a block.","type":"object","properties":{"calldata":{"type":"string","title":"ABI-encoded function selector + arguments (hex string without 0x prefix)\nExample: \"70a08231000000000000000000000000{address}\" for balanceOf(address)\nCan use placeholders: $initiator, $sender, $recipient (replaced at runtime)"},"comparisonOperator":{"description":"Comparison operator: \"eq\" (equals), \"ne\" (not equals), \"gt\" (greater than), \"gte\", \"lt\", \"lte\"\nOnly \"eq\" and \"ne\" work for non-numeric types. Default is \"eq\".","type":"string"},"contractAddress":{"type":"string","title":"The EVM contract address to query (0x format or bb1 format)"},"customData":{"type":"string","title":"Arbitrary custom data"},"expectedResult":{"description":"Expected return value (hex string without 0x prefix). If empty, any non-error result passes.\nFor boolean checks, use \"0000...0001\" for true.","type":"string"},"gasLimit":{"type":"string","title":"Gas limit for the query (default 100000, max 500000)"},"uri":{"type":"string","title":"The URI associated with this challenge (metadata)"}}},"tokenization.v28.IncomingApprovalCriteria":{"description":"IncomingApprovalCriteria defines the criteria for approving incoming transfers.\nThis is used for user-level incoming approvals and only includes fields relevant to incoming transfers.\nAll criteria must be satisfied for the approval to be considered valid.","type":"object","properties":{"altTimeChecks":{"description":"Alternative time-based checks for approval denial (offline hours/days). Defines time periods\nduring which this approval should be denied, such as specific hours of the day or days of the week.","$ref":"#/definitions/tokenization.v28.AltTimeChecks"},"approvalAmounts":{"description":"Threshold limit of amounts that can be transferred using this approval. Tracks cumulative amounts\ntransferred and enforces maximum limits per approval.","$ref":"#/definitions/tokenization.v28.ApprovalAmounts"},"autoDeletionOptions":{"description":"Auto-deletion options for this approval. Defines conditions under which this approval should be\nautomatically deleted (e.g., after a certain number of uses or time period).","$ref":"#/definitions/tokenization.v28.AutoDeletionOptions"},"coinTransfers":{"description":"The sdk.Coins that need to be transferred for approval. Defines required coin transfers (e.g., fees,\nroyalties) that must be executed alongside the token transfer for the approval to be valid.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.CoinTransfer"}},"dynamicStoreChallenges":{"description":"Dynamic store challenges that the initiator must pass for approval. The initiator must provide\nvalid proofs that satisfy all specified dynamic store challenges (e.g., key-value store lookups).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.DynamicStoreChallenge"}},"ethSignatureChallenges":{"description":"ETH signature challenges that the initiator must pass for approval. The initiator must provide\nvalid Ethereum signatures for all specified challenges. Each signature can only be used once.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ETHSignatureChallenge"}},"evmQueryChallenges":{"description":"EVM query challenges that must pass for approval. Read-only contract queries\nthat verify external EVM state (e.g., token ownership in another contract).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.EVMQueryChallenge"}},"initiatorChecks":{"description":"Address checks for the initiator of the transfer. Validates that the initiator address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.v28.AddressChecks"},"maxNumTransfers":{"description":"Maximum number of transfers that can be processed using this approval. Tracks the count of transfers\nand enforces the limit to prevent exceeding the allowed number of uses.","$ref":"#/definitions/tokenization.v28.MaxNumTransfers"},"merkleChallenges":{"description":"Merkle challenges that must be satisfied for approval. The initiator must provide valid Merkle proofs\nthat satisfy all specified challenges. Each challenge requires a proof that leads to a specific root hash.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.MerkleChallenge"}},"mustOwnTokens":{"description":"Must own tokens for approval. Defines token ownership requirements that must be satisfied for\nthe approval to be valid. The initiator must own the specified tokens at the specified ownership times.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.MustOwnTokens"}},"mustPrioritize":{"description":"If true, this approval must be explicitly prioritized in PrioritizedApprovals to be used.\nThis allows fine-grained control over which approvals are applied when multiple approvals could match.","type":"boolean"},"predeterminedBalances":{"description":"Predetermined balances that must be used for each approval. Defines the exact token amounts and IDs\nthat can be transferred when using this approval.","$ref":"#/definitions/tokenization.v28.PredeterminedBalances"},"requireFromDoesNotEqualInitiatedBy":{"description":"Require the \"from\" address to not be equal to the \"initiated by\" address for approval.\nIf true, transfers where the sender equals the initiator are forbidden.","type":"boolean"},"requireFromEqualsInitiatedBy":{"description":"Require the \"from\" address to be equal to the \"initiated by\" address for approval.\nIf true, only transfers where the sender matches the initiator are allowed.","type":"boolean"},"senderChecks":{"description":"Address checks for the sender of the transfer. Validates that the sender address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).\nNote: No recipient checks are included for incoming approvals since the recipient is the user themselves.","$ref":"#/definitions/tokenization.v28.AddressChecks"},"votingChallenges":{"description":"Voting challenges that must be satisfied for approval. The initiator must provide\nvalid votes that meet the quorum threshold for all specified challenges.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.VotingChallenge"}}}},"tokenization.v28.IncrementedBalances":{"description":"IncrementedBalances represents balances that are incremented by specific amounts, according to the order calculation method.","type":"object","properties":{"allowAmountScaling":{"description":"When true, the actual transfer can be any evenly divisible integer multiple (\u003e=1x) of startBalances.\napprovalCriteria.coinTransfers are scaled by the same multiplier.\nAll other IncrementedBalances fields must be zero/false/nil when this is true.","type":"boolean"},"allowOverrideTimestamp":{"description":"Whether to allow overriding the timestamp for the balances (only applicable with durationFromTimestamp set).","type":"boolean"},"allowOverrideWithAnyValidToken":{"type":"boolean","title":"Allow override of any valid ID"},"durationFromTimestamp":{"description":"The amount of unix milliseconds to approve starting from now. Incompatible with incrementOwnershipTimesBy.","type":"string"},"incrementOwnershipTimesBy":{"description":"The amount by which to increment ownership times. Incompatible with approveStartingFromNowBy.","type":"string"},"incrementTokenIdsBy":{"description":"The amount by which to increment token IDs.","type":"string"},"maxScalingMultiplier":{"description":"Maximum allowed scaling multiplier. Must be \u003e 0 when allowAmountScaling is true.\nThe chain rejects transfers where the computed multiplier exceeds this cap.\nIgnored (set to \"0\") when allowAmountScaling is false.","type":"string"},"recurringOwnershipTimes":{"description":"Recurring ownership times.","$ref":"#/definitions/tokenization.v28.RecurringOwnershipTimes"},"startBalances":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.Balance"}}}},"tokenization.v28.InvariantsAddObject":{"description":"InvariantsAddObject is used for adding invariants without specifying addresses.\nAddresses are generated by the keeper and stored in the collection.","type":"object","properties":{"cosmosCoinBackedPath":{"description":"The IBC backed (sdk.coin) path for the collection. Only one path is allowed.\nAddress will be generated by the keeper.","$ref":"#/definitions/tokenization.v28.CosmosCoinBackedPathAddObject"},"disablePoolCreation":{"description":"If true, disallows pool creation with this collection's assets.\nWhen true, any attempt to create a pool with tokenization assets from this collection will fail.","type":"boolean"},"evmQueryChallenges":{"type":"array","title":"EVM query invariants that must pass after all transfers complete.\nThese are checked once per message after all balance updates, with access to ALL recipient addresses.\nPlaceholders: $sender, $recipients (comma-separated), $initiator, $collectionId, $recipient","items":{"type":"object","$ref":"#/definitions/tokenization.v28.EVMQueryChallenge"}},"maxSupplyPerId":{"description":"Maximum supply per token ID. Checked against Total address balances after transfers complete.\nA value of 0 means no limit (unlimited).","type":"string"},"noCustomOwnershipTimes":{"description":"If true, all ownership times must be full ranges [{ start: 1, end: GoMaxUInt64 }].\nThis prevents time-based restrictions on token ownership.","type":"boolean"},"noForcefulPostMintTransfers":{"description":"If true, disallows any collection approvals that have overridesFromOutgoingApprovals or overridesToIncomingApprovals set to true.\nThis prevents forceful transfers that bypass user-level approvals.\nThis only applies to transfers where the from address does not equal \"Mint\".","type":"boolean"}}},"tokenization.v28.ManualBalances":{"description":"ManualBalances represents a list of manual balances entered for the predetermined balances criteria. Order is calculated according to the calculation method set.","type":"object","properties":{"balances":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.Balance"}}}},"tokenization.v28.MaxNumTransfers":{"description":"MaxNumTransfers defines the maximum number of transfers per unique \"from,\" \"to,\" and/or \"initiated by\" address.\nIf any of these are nil or \"0\", we assume unlimited approvals.\nIf they are set to a value, then the running tally of the number of transfers for the specified token IDs and ownership times\nmust not exceed the corresponding value.","type":"object","properties":{"amountTrackerId":{"description":"The ID of the amount tracker associated with this approval.\nWe use this ID to track the number of transfers and amounts transferred.","type":"string"},"overallMaxNumTransfers":{"description":"Overall maximum number of transfers.","type":"string"},"perFromAddressMaxNumTransfers":{"description":"Maximum number of transfers per \"from\" address.","type":"string"},"perInitiatedByAddressMaxNumTransfers":{"description":"Maximum number of transfers per \"initiated by\" address.","type":"string"},"perToAddressMaxNumTransfers":{"description":"Maximum number of transfers per \"to\" address.","type":"string"},"resetTimeIntervals":{"description":"Time intervals to reset the trackers at.","$ref":"#/definitions/tokenization.v28.ResetTimeIntervals"}}},"tokenization.v28.MerkleChallenge":{"description":"Challenges define a rule for the approval in the form of a Merkle challenge.\n\nA Merkle challenge is a challenge where the user must provide a Merkle proof to a Merkle tree. If they provide a valid proof,\nthen the challenge is met. All challenges must be met with valid solutions for the transfer to be approved.\n\nIMPORTANT: Merkle challenges currently are limited to SHA256 hashes. See documentation for MerkleChallenge for more details and tutorials.\n\nIMPORTANT: We track the number of uses per leaf according to the challengeTrackerId specified by the parent approval of this challenge.\nIf you update the challenge ID, then the used leaves tracker will reset and start a new tally.\nWe recommend using a unique challenge ID for each challenge to prevent overlap and unexpected behavior.","type":"object","properties":{"challengeTrackerId":{"description":"The ID of this Merkle challenge for tracking the number of uses per leaf.","type":"string"},"customData":{"description":"Arbitrary custom data associated with this Merkle challenge.","type":"string"},"expectedProofLength":{"description":"The expected length of the Merkle path for verification. Used to prevent Merkle path truncation attacks.","type":"string"},"leafSigner":{"description":"Ethereum address that must sign the leaf. Used to protect against man-in-the-middle attacks.\nSignature scheme: sign(leaf + \"-\" + creatorAddress), verified using elliptic curve signature verification.","type":"string"},"maxUsesPerLeaf":{"description":"The maximum number of times each leaf can be used. Must be 1 if useCreatorAddressAsLeaf is false to prevent replay attacks.","type":"string"},"root":{"description":"The root hash of the Merkle tree to which the Merkle path must lead for verification.","type":"string"},"uri":{"description":"The URI associated with this Merkle challenge, optionally providing metadata about the challenge.","type":"string"},"useCreatorAddressAsLeaf":{"description":"If true, we will override the user's leaf for their proof with their creator address. Used for whitelist trees where all leaves are valid BitBadges addresses.","type":"boolean"}}},"tokenization.v28.MerklePathItem":{"description":"MerklePathItem represents an item in a Merkle path.","type":"object","properties":{"aunt":{"description":"The hash of the sibling node (aunt) in the Merkle path.","type":"string"},"onRight":{"description":"Indicates whether the aunt node is on the right side of the path.","type":"boolean"}}},"tokenization.v28.MerkleProof":{"description":"MerkleProof represents a Merkle proof, consistent with Tendermint/Crypto Merkle tree.","type":"object","properties":{"aunts":{"description":"List of Merkle path items (aunts) that make up the proof.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.MerklePathItem"}},"leaf":{"description":"The hash of the leaf node for which the proof is generated.","type":"string"},"leafSignature":{"description":"The signature of the leaf node tying the address to the leaf node.","type":"string"}}},"tokenization.v28.MsgCastVote":{"description":"MsgCastVote allows a voter to cast or update their vote for a voting challenge.","type":"object","properties":{"approvalId":{"description":"The approval ID.","type":"string"},"approvalLevel":{"description":"The approval level (\"collection\", \"incoming\", or \"outgoing\").","type":"string"},"approverAddress":{"description":"The approver address (empty string for collection-level approvals).","type":"string"},"collectionId":{"description":"The collection ID for the voting challenge.","type":"string"},"creator":{"description":"The address of the voter casting the vote.","type":"string"},"proposalId":{"description":"The proposal ID (challenge ID) from the VotingChallenge.","type":"string"},"yesWeight":{"description":"The percentage weight (0-100) allocated to \"yes\" vote.\nThe remaining percentage (100 - yesWeight) is allocated to \"no\" vote.\nExample: yesWeight=70 means 70% yes, 30% no.","type":"string"}}},"tokenization.v28.MsgCastVoteResponse":{"type":"object"},"tokenization.v28.MsgCreateAddressLists":{"description":"MsgCreateAddressLists is used to create address lists.","type":"object","properties":{"addressLists":{"description":"Address lists to create. The createdBy field will be automatically set to the creator address.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.AddressListInput"}},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v28.MsgCreateAddressListsResponse":{"description":"MsgCreateAddressListsResponse is the response to MsgCreateAddressLists.","type":"object"},"tokenization.v28.MsgCreateCollection":{"description":"MsgCreateCollection is used to create a new collection.","type":"object","properties":{"aliasPathsToAdd":{"description":"Alias (non-wrapping) paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.AliasPathAddObject"}},"collectionApprovals":{"description":"Collection approvals.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.CollectionApproval"}},"collectionMetadata":{"description":"Collection metadata.","$ref":"#/definitions/tokenization.v28.CollectionMetadata"},"collectionPermissions":{"description":"Collection permissions.","$ref":"#/definitions/tokenization.v28.CollectionPermissions"},"cosmosCoinWrapperPathsToAdd":{"description":"IBC wrapper paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.CosmosCoinWrapperPathAddObject"}},"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"Custom data.","type":"string"},"defaultBalances":{"title":"The default balances for the user","$ref":"#/definitions/tokenization.v28.UserBalanceStore"},"invariants":{"description":"Collection-level invariants that cannot be broken.\nAddresses are generated by the keeper and stored in the collection.","$ref":"#/definitions/tokenization.v28.InvariantsAddObject"},"isArchived":{"description":"isArchived flag.","type":"boolean"},"manager":{"description":"Manager address.","type":"string"},"mintEscrowCoinsToTransfer":{"description":"Coins to be transferred to the mint escrow address.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"standards":{"description":"Standards entries.","type":"array","items":{"type":"string"}},"tokenMetadata":{"description":"Token metadata entries.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.TokenMetadata"}},"validTokenIds":{"type":"array","title":"New token IDs to add to this collection","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}}}},"tokenization.v28.MsgCreateCollectionResponse":{"description":"MsgCreateCollectionResponse is the response to MsgCreateCollection.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v28.MsgCreateDynamicStore":{"description":"MsgCreateDynamicStore is used to create a new dynamic store.","type":"object","properties":{"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"Custom data field for storing arbitrary data associated with this dynamic store.","type":"string"},"defaultValue":{"description":"The default value for uninitialized addresses (true/false).","type":"boolean"},"uri":{"description":"URI for additional metadata or resources associated with this dynamic store.","type":"string"}}},"tokenization.v28.MsgCreateDynamicStoreResponse":{"description":"MsgCreateDynamicStoreResponse is the response to MsgCreateDynamicStore.","type":"object","properties":{"storeId":{"description":"ID of the dynamic store.","type":"string"}}},"tokenization.v28.MsgDeleteCollection":{"description":"MsgDeleteCollection is used to delete a collection.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v28.MsgDeleteCollectionResponse":{"description":"MsgDeleteCollectionResponse is the response to MsgDeleteCollection.","type":"object"},"tokenization.v28.MsgDeleteDynamicStore":{"description":"MsgDeleteDynamicStore is used to delete a dynamic store.","type":"object","properties":{"creator":{"description":"Address of the creator.","type":"string"},"storeId":{"description":"ID of the dynamic store to delete.","type":"string"}}},"tokenization.v28.MsgDeleteDynamicStoreResponse":{"description":"MsgDeleteDynamicStoreResponse is the response to MsgDeleteDynamicStore.","type":"object"},"tokenization.v28.MsgDeleteIncomingApproval":{"description":"MsgDeleteIncomingApproval is a helper message to delete a single incoming approval.","type":"object","properties":{"approvalId":{"description":"The ID of the approval to delete.","type":"string"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v28.MsgDeleteIncomingApprovalResponse":{"description":"MsgDeleteIncomingApprovalResponse is the response to MsgDeleteIncomingApproval.","type":"object"},"tokenization.v28.MsgDeleteOutgoingApproval":{"description":"MsgDeleteOutgoingApproval is a helper message to delete a single outgoing approval.","type":"object","properties":{"approvalId":{"description":"The ID of the approval to delete.","type":"string"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v28.MsgDeleteOutgoingApprovalResponse":{"description":"MsgDeleteOutgoingApprovalResponse is the response to MsgDeleteOutgoingApproval.","type":"object"},"tokenization.v28.MsgPurgeApprovals":{"description":"MsgPurgeApprovals is a helper message to purge expired approvals.","type":"object","properties":{"approvalsToPurge":{"description":"Specific approvals to purge. If empty, purges all applicable approvals based on other flags.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ApprovalIdentifierDetails"}},"approverAddress":{"description":"Address of the user whose approvals to purge. If empty, defaults to creator.","type":"string"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"purgeCounterpartyApprovals":{"description":"Whether to purge counterparty approvals (approvals where the creator is the only initiator).","type":"boolean"},"purgeExpired":{"description":"Whether to purge expired approvals (approvals with no future valid transfer times).","type":"boolean"}}},"tokenization.v28.MsgPurgeApprovalsResponse":{"description":"MsgPurgeApprovalsResponse is the response to MsgPurgeApprovals.","type":"object","properties":{"numPurged":{"description":"Number of approvals purged.","type":"string"}}},"tokenization.v28.MsgSetCollectionApprovals":{"type":"object","title":"MsgSetCollectionApprovals sets the collection approvals and canUpdateCollectionApprovals permission","properties":{"canUpdateCollectionApprovals":{"type":"array","title":"Permission to update collection approvals","items":{"type":"object","$ref":"#/definitions/tokenization.v28.CollectionApprovalPermission"}},"collectionApprovals":{"description":"New collection approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.CollectionApproval"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v28.MsgSetCollectionApprovalsResponse":{"description":"MsgSetCollectionApprovalsResponse is the response to MsgSetCollectionApprovals.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v28.MsgSetCollectionMetadata":{"type":"object","title":"MsgSetCollectionMetadata sets the collection metadata and canUpdateCollectionMetadata permission","properties":{"canUpdateCollectionMetadata":{"type":"array","title":"Permission to update collection metadata","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"collectionMetadata":{"description":"New collection metadata to set.","$ref":"#/definitions/tokenization.v28.CollectionMetadata"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v28.MsgSetCollectionMetadataResponse":{"description":"MsgSetCollectionMetadataResponse is the response to MsgSetCollectionMetadata.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v28.MsgSetCustomData":{"type":"object","title":"MsgSetCustomData sets the custom data and canUpdateCustomData permission","properties":{"canUpdateCustomData":{"type":"array","title":"Permission to update custom data","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"New custom data to set.","type":"string"}}},"tokenization.v28.MsgSetCustomDataResponse":{"description":"MsgSetCustomDataResponse is the response to MsgSetCustomData.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v28.MsgSetDynamicStoreValue":{"description":"MsgSetDynamicStoreValue is used to set a boolean value for a specific address in a dynamic store.","type":"object","properties":{"address":{"description":"The address for which to set the value.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"storeId":{"description":"ID of the dynamic store.","type":"string"},"value":{"description":"The boolean value to set (true/false).","type":"boolean"}}},"tokenization.v28.MsgSetDynamicStoreValueResponse":{"description":"MsgSetDynamicStoreValueResponse is the response to MsgSetDynamicStoreValue.","type":"object"},"tokenization.v28.MsgSetIncomingApproval":{"description":"MsgSetIncomingApproval is a helper message to set a single incoming approval.","type":"object","properties":{"approval":{"description":"The incoming approval to set.","$ref":"#/definitions/tokenization.v28.UserIncomingApproval"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v28.MsgSetIncomingApprovalResponse":{"description":"MsgSetIncomingApprovalResponse is the response to MsgSetIncomingApproval.","type":"object"},"tokenization.v28.MsgSetIsArchived":{"type":"object","title":"MsgSetIsArchived sets the isArchived and canArchiveCollection permission","properties":{"canArchiveCollection":{"type":"array","title":"Permission to archive collection","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"isArchived":{"description":"New isArchived to set.","type":"boolean"}}},"tokenization.v28.MsgSetIsArchivedResponse":{"description":"MsgSetIsArchivedResponse is the response to MsgSetIsArchived.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v28.MsgSetManager":{"type":"object","title":"MsgSetManager sets the manager and canUpdateManager permission","properties":{"canUpdateManager":{"type":"array","title":"Permission to update manager","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"manager":{"description":"New manager to set.","type":"string"}}},"tokenization.v28.MsgSetManagerResponse":{"description":"MsgSetManagerResponse is the response to MsgSetManager.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v28.MsgSetOutgoingApproval":{"description":"MsgSetOutgoingApproval is a helper message to set a single outgoing approval.","type":"object","properties":{"approval":{"description":"The outgoing approval to set.","$ref":"#/definitions/tokenization.v28.UserOutgoingApproval"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v28.MsgSetOutgoingApprovalResponse":{"description":"MsgSetOutgoingApprovalResponse is the response to MsgSetOutgoingApproval.","type":"object"},"tokenization.v28.MsgSetReservedProtocolAddress":{"description":"MsgSetReservedProtocolAddress sets or unsets a reserved protocol address (governance-only).","type":"object","properties":{"address":{"description":"Address to set or unset as reserved protocol address.","type":"string"},"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"isReservedProtocol":{"description":"Whether the address should be a reserved protocol address (true) or not (false).","type":"boolean"}}},"tokenization.v28.MsgSetReservedProtocolAddressResponse":{"description":"MsgSetReservedProtocolAddressResponse is the response to MsgSetReservedProtocolAddress.","type":"object"},"tokenization.v28.MsgSetStandards":{"type":"object","title":"MsgSetStandards sets the standards and canUpdateStandards permission","properties":{"canUpdateStandards":{"type":"array","title":"Permission to update standards","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"standards":{"description":"New standards to set.","type":"array","items":{"type":"string"}}}},"tokenization.v28.MsgSetStandardsResponse":{"description":"MsgSetStandardsResponse is the response to MsgSetStandards.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v28.MsgSetTokenMetadata":{"type":"object","title":"MsgSetTokenMetadata sets the token metadata and canUpdateTokenMetadata permission","properties":{"canUpdateTokenMetadata":{"type":"array","title":"Permission to update token metadata","items":{"type":"object","$ref":"#/definitions/tokenization.v28.TokenIdsActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"tokenMetadata":{"description":"New token metadata to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.TokenMetadata"}}}},"tokenization.v28.MsgSetTokenMetadataResponse":{"description":"MsgSetTokenMetadataResponse is the response to MsgSetTokenMetadata.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v28.MsgSetValidTokenIds":{"type":"object","title":"MsgSetValidTokenIds sets the validTokenIds and canUpdateValidTokenIds permission","properties":{"canUpdateValidTokenIds":{"type":"array","title":"Permission to update valid token IDs","items":{"type":"object","$ref":"#/definitions/tokenization.v28.TokenIdsActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"validTokenIds":{"type":"array","title":"New token IDs to add to this collection","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}}}},"tokenization.v28.MsgSetValidTokenIdsResponse":{"description":"MsgSetValidTokenIdsResponse is the response to MsgSetValidTokenIds.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v28.MsgTransferTokens":{"description":"MsgTransferTokens is used to transfer tokens.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"transfers":{"description":"Transfers to execute.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.Transfer"}}}},"tokenization.v28.MsgTransferTokensResponse":{"description":"MsgTransferTokensResponse is the response to MsgTransferTokens.","type":"object"},"tokenization.v28.MsgUniversalUpdateCollection":{"description":"MsgUniversalUpdateCollection is used to define MsgServer types for all requests and responses for Msgs of the tokens module.\nIt is a universal interface that can be used for both creating and updating collections.\nWe have it defined for legacy purposes, but it is recommended to use MsgCreateCollection and MsgUpdateCollection instead.","type":"object","properties":{"aliasPathsToAdd":{"description":"Alias (non-wrapping) paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.AliasPathAddObject"}},"collectionApprovals":{"description":"New collection approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.CollectionApproval"}},"collectionId":{"description":"ID of the collection (0 for new collection).","type":"string"},"collectionMetadata":{"description":"New collection metadata to set.","$ref":"#/definitions/tokenization.v28.CollectionMetadata"},"collectionPermissions":{"description":"New collection permissions to set.","$ref":"#/definitions/tokenization.v28.CollectionPermissions"},"cosmosCoinWrapperPathsToAdd":{"description":"IBC wrapper paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.CosmosCoinWrapperPathAddObject"}},"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"New custom data to set.","type":"string"},"defaultBalances":{"title":"The default balances for the user","$ref":"#/definitions/tokenization.v28.UserBalanceStore"},"invariants":{"description":"Collection-level invariants that cannot be broken.\nThese are set upon genesis and cannot be modified.\nAddresses are generated by the keeper and stored in the collection.","$ref":"#/definitions/tokenization.v28.InvariantsAddObject"},"isArchived":{"description":"New isArchived to set.","type":"boolean"},"manager":{"description":"New manager to set.","type":"string"},"mintEscrowCoinsToTransfer":{"description":"Coins to be transferred to the mint escrow address.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"standards":{"description":"New standards to set.","type":"array","items":{"type":"string"}},"tokenMetadata":{"description":"New token metadata to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.TokenMetadata"}},"updateCollectionApprovals":{"description":"Indicates if collection approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCollectionMetadata":{"description":"Indicates if the collection metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCollectionPermissions":{"description":"Indicates if collection permissions should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCustomData":{"description":"Indicates if the custom data should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateIsArchived":{"description":"Indicates if the isArchived should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateManager":{"description":"Indicates if the manager should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateStandards":{"description":"Indicates if the standards should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateTokenMetadata":{"description":"Indicates if the token metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateValidTokenIds":{"description":"Indicates if the valid token IDs should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"validTokenIds":{"type":"array","title":"New token IDs to add to this collection","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}}}},"tokenization.v28.MsgUniversalUpdateCollectionResponse":{"description":"MsgUniversalUpdateCollectionResponse is the response to MsgUniversalUpdateCollection.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v28.MsgUpdateCollection":{"description":"MsgUpdateCollection is used to update a collection.","type":"object","properties":{"aliasPathsToAdd":{"description":"Alias (non-wrapping) paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.AliasPathAddObject"}},"collectionApprovals":{"description":"New collection approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.CollectionApproval"}},"collectionId":{"description":"ID of the collection (0 for new collection).","type":"string"},"collectionMetadata":{"description":"New collection metadata to set.","$ref":"#/definitions/tokenization.v28.CollectionMetadata"},"collectionPermissions":{"description":"New collection permissions to set.","$ref":"#/definitions/tokenization.v28.CollectionPermissions"},"cosmosCoinWrapperPathsToAdd":{"description":"IBC wrapper paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.CosmosCoinWrapperPathAddObject"}},"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"New custom data to set.","type":"string"},"invariants":{"description":"Collection-level invariants that cannot be broken.\nThese are set upon genesis and cannot be modified.\nAddresses are generated by the keeper and stored in the collection.","$ref":"#/definitions/tokenization.v28.InvariantsAddObject"},"isArchived":{"description":"New isArchived to set.","type":"boolean"},"manager":{"description":"New manager to set.","type":"string"},"mintEscrowCoinsToTransfer":{"description":"Coins to be transferred to the mint escrow address.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"standards":{"description":"New standards to set.","type":"array","items":{"type":"string"}},"tokenMetadata":{"description":"New token metadata to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.TokenMetadata"}},"updateCollectionApprovals":{"description":"Indicates if collection approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCollectionMetadata":{"description":"Indicates if the collection metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCollectionPermissions":{"description":"Indicates if collection permissions should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCustomData":{"description":"Indicates if the custom data should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateIsArchived":{"description":"Indicates if the isArchived should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateManager":{"description":"Indicates if the manager should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateStandards":{"description":"Indicates if the standards should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateTokenMetadata":{"description":"Indicates if the token metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateValidTokenIds":{"description":"Indicates if the valid token IDs should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"validTokenIds":{"type":"array","title":"New token IDs to add to this collection","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}}}},"tokenization.v28.MsgUpdateCollectionResponse":{"description":"MsgUpdateCollectionResponse is the response to MsgUpdateCollection.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v28.MsgUpdateDynamicStore":{"description":"MsgUpdateDynamicStore is used to update an existing dynamic store.","type":"object","properties":{"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"Custom data field for storing arbitrary data associated with this dynamic store.","type":"string"},"defaultValue":{"description":"The new default value for uninitialized addresses (true/false).","type":"boolean"},"globalEnabled":{"description":"The global kill switch state (true = enabled, false = disabled/halted).\nCallers should query the current value first if they want to keep it unchanged.","type":"boolean"},"storeId":{"description":"ID of the dynamic store to update.","type":"string"},"uri":{"description":"URI for additional metadata or resources associated with this dynamic store.","type":"string"}}},"tokenization.v28.MsgUpdateDynamicStoreResponse":{"description":"MsgUpdateDynamicStoreResponse is the response to MsgUpdateDynamicStore.","type":"object"},"tokenization.v28.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the module parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/tokenization.v28.Params"}}},"tokenization.v28.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"tokenization.v28.MsgUpdateUserApprovals":{"description":"MsgUpdateUserApprovals is used to update user approvals.","type":"object","properties":{"autoApproveAllIncomingTransfers":{"description":"Auto-approve setting for all incoming transfers.","type":"boolean"},"autoApproveSelfInitiatedIncomingTransfers":{"description":"Auto-approve setting for self-initiated incoming transfers.","type":"boolean"},"autoApproveSelfInitiatedOutgoingTransfers":{"description":"Auto-approve setting for self-initiated outgoing transfers.","type":"boolean"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"incomingApprovals":{"description":"New incoming approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UserIncomingApproval"}},"outgoingApprovals":{"description":"New outgoing approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UserOutgoingApproval"}},"updateAutoApproveAllIncomingTransfers":{"description":"Indicates if auto-approve settings for all incoming transfers should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateAutoApproveSelfInitiatedIncomingTransfers":{"description":"Indicates if auto-approve settings for self-initiated incoming transfers should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateAutoApproveSelfInitiatedOutgoingTransfers":{"description":"Indicates if auto-approve settings for self-initiated outgoing transfers should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateIncomingApprovals":{"description":"Indicates if incoming approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateOutgoingApprovals":{"description":"Indicates if outgoing approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateUserPermissions":{"description":"Indicates if user permissions should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"userPermissions":{"description":"New user permissions to set.","$ref":"#/definitions/tokenization.v28.UserPermissions"}}},"tokenization.v28.MsgUpdateUserApprovalsResponse":{"description":"MsgUpdateUserApprovalsResponse is the response to MsgUpdateUserApprovals.","type":"object"},"tokenization.v28.MustOwnTokens":{"description":"MustOwnTokens represents a condition where a user must own specific tokens\nto be approved to transfer.\n\n- collectionId: The ID of the collection for the tokens that must be owned\n- amountRange: The range of amounts the user must own (min to max)\n- ownershipTimes: The time ranges during which the user must own the tokens.\n- tokenIds: The token IDs the user must own.\n- overrideWithCurrentTime: If true, auto override ownershipTimes with the current time.\n- mustSatisfyForAllAssets: If true, the user must own all specified tokens; otherwise, owning any one for \u003e= 1 millisecond is sufficient.","type":"object","properties":{"amountRange":{"description":"The range of amounts the user must own (min to max).","$ref":"#/definitions/tokenization.v28.UintRange"},"collectionId":{"description":"The ID of the collection.","type":"string"},"mustSatisfyForAllAssets":{"description":"If true, the user must meet ownership requirements for all specified tokens; else, must meet requirements for any single token.","type":"boolean"},"overrideWithCurrentTime":{"description":"If true, override ownershipTimes with the current time.","type":"boolean"},"ownershipCheckParty":{"description":"The party to check ownership for. Options are \"initiator\", \"sender\", \"recipient\", or any valid bb1 address.\nIf a valid bb1 address is provided, ownership will be checked for that specific address.\nThis enables use cases like halt tokens where ownership is checked for an arbitrary address (e.g., halt token owner).\nDefaults to \"initiator\" if empty or if the value is not a recognized option or valid bb1 address.","type":"string"},"ownershipTimes":{"description":"The time ranges during which the user must own the tokens.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"tokenIds":{"description":"The token IDs the user must own.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}}}},"tokenization.v28.OutgoingApprovalCriteria":{"description":"OutgoingApprovalCriteria defines the criteria for approving outgoing transfers.\nThis is used for user-level outgoing approvals and only includes fields relevant to outgoing transfers.\nAll criteria must be satisfied for the approval to be considered valid.","type":"object","properties":{"altTimeChecks":{"description":"Alternative time-based checks for approval denial (offline hours/days). Defines time periods\nduring which this approval should be denied, such as specific hours of the day or days of the week.","$ref":"#/definitions/tokenization.v28.AltTimeChecks"},"approvalAmounts":{"description":"Threshold limit of amounts that can be transferred using this approval. Tracks cumulative amounts\ntransferred and enforces maximum limits per approval.","$ref":"#/definitions/tokenization.v28.ApprovalAmounts"},"autoDeletionOptions":{"description":"Auto-deletion options for this approval. Defines conditions under which this approval should be\nautomatically deleted (e.g., after a certain number of uses or time period).","$ref":"#/definitions/tokenization.v28.AutoDeletionOptions"},"coinTransfers":{"description":"The sdk.Coins that need to be transferred for approval. Defines required coin transfers (e.g., fees,\nroyalties) that must be executed alongside the token transfer for the approval to be valid.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.CoinTransfer"}},"dynamicStoreChallenges":{"description":"Dynamic store challenges that the initiator must pass for approval. The initiator must provide\nvalid proofs that satisfy all specified dynamic store challenges (e.g., key-value store lookups).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.DynamicStoreChallenge"}},"ethSignatureChallenges":{"description":"ETH signature challenges that the initiator must pass for approval. The initiator must provide\nvalid Ethereum signatures for all specified challenges. Each signature can only be used once.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ETHSignatureChallenge"}},"evmQueryChallenges":{"description":"EVM query challenges that must pass for approval. Read-only contract queries\nthat verify external EVM state (e.g., token ownership in another contract).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.EVMQueryChallenge"}},"initiatorChecks":{"description":"Address checks for the initiator of the transfer. Validates that the initiator address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.v28.AddressChecks"},"maxNumTransfers":{"description":"Maximum number of transfers that can be processed using this approval. Tracks the count of transfers\nand enforces the limit to prevent exceeding the allowed number of uses.","$ref":"#/definitions/tokenization.v28.MaxNumTransfers"},"merkleChallenges":{"description":"Merkle challenges that must be satisfied for approval. The initiator must provide valid Merkle proofs\nthat satisfy all specified challenges. Each challenge requires a proof that leads to a specific root hash.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.MerkleChallenge"}},"mustOwnTokens":{"description":"Must own tokens for approval. Defines token ownership requirements that must be satisfied for\nthe approval to be valid. The initiator must own the specified tokens at the specified ownership times.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.MustOwnTokens"}},"mustPrioritize":{"description":"If true, this approval must be explicitly prioritized in PrioritizedApprovals to be used.\nThis allows fine-grained control over which approvals are applied when multiple approvals could match.","type":"boolean"},"predeterminedBalances":{"description":"Predetermined balances that must be used for each approval. Defines the exact token amounts and IDs\nthat can be transferred when using this approval.","$ref":"#/definitions/tokenization.v28.PredeterminedBalances"},"recipientChecks":{"description":"Address checks for the recipient of the transfer. Validates that the recipient address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).\nNote: No sender checks are included for outgoing approvals since the sender is the user themselves.","$ref":"#/definitions/tokenization.v28.AddressChecks"},"requireToDoesNotEqualInitiatedBy":{"description":"Require the \"to\" address to not be equal to the \"initiated by\" address for approval.\nIf true, transfers where the recipient equals the initiator are forbidden.","type":"boolean"},"requireToEqualsInitiatedBy":{"description":"Require the \"to\" address to be equal to the \"initiated by\" address for approval.\nIf true, only transfers where the recipient matches the initiator are allowed.","type":"boolean"},"votingChallenges":{"description":"Voting challenges that must be satisfied for approval. The initiator must provide\nvalid votes that meet the quorum threshold for all specified challenges.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.VotingChallenge"}}}},"tokenization.v28.Params":{"description":"Params defines the parameters for the module.","type":"object","properties":{"affiliate_percentage":{"type":"string","title":"affiliate_percentage defines the percentage of the transfer amount that goes to the affiliate"},"allowed_denoms":{"type":"array","title":"allowed_denoms defines the list of denoms that are allowed to be used in coin_transfers","items":{"type":"string"}}}},"tokenization.v28.PathMetadata":{"description":"This message defines the metadata for paths (alias paths and cosmos coin wrapper paths).\nThe interpretation of this metadata should follow the collection standard.","type":"object","properties":{"customData":{"description":"Custom data or additional information related to the path metadata.","type":"string"},"uri":{"description":"The URI (Uniform Resource Identifier) associated with the path metadata.","type":"string"}}},"tokenization.v28.PrecalculateBalancesFromApprovalDetails":{"description":"PrecalculateBalancesFromApprovalDetails defines the details for precalculating balances from an approval.","type":"object","properties":{"approvalId":{"description":"The ID of the approval.","type":"string"},"approvalLevel":{"description":"The level of the approval. Can be \"collection\", \"incoming\", or \"outgoing\".","type":"string"},"approverAddress":{"description":"The address of the approver. Leave blank \"\" if approvalLevel == \"collection\".","type":"string"},"precalculationOptions":{"description":"The options for precalculating the balances.","$ref":"#/definitions/tokenization.v28.PrecalculationOptions"},"version":{"description":"The version of the approval.","type":"string"}}},"tokenization.v28.PrecalculationOptions":{"description":"PrecalculationOptions defines the options for precalculating the balances.","type":"object","properties":{"overrideTimestamp":{"description":"The timestamp to override with when calculating the balances.","type":"string"},"scalingMultiplier":{"description":"When \u003e 0 and allowAmountScaling is true on the approval, all precalculated balance amounts\nare multiplied by this value. Must be \u003c= maxScalingMultiplier. 0 means no scaling (returns 1x base).","type":"string"},"tokenIdsOverride":{"description":"The IDs to override for the transfer. Only applicable if using this option in precalculation.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}}}},"tokenization.v28.PredeterminedBalances":{"description":"PredeterminedBalances represents balances with predetermined order calculation.","type":"object","properties":{"incrementedBalances":{"description":"Balances that have a starting amount and increment. If this is nil, then we use the manual balances.","$ref":"#/definitions/tokenization.v28.IncrementedBalances"},"manualBalances":{"description":"Manual balances that can be entered. If this is nil, then we use the incremented balances.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ManualBalances"}},"orderCalculationMethod":{"description":"The method to calculate the order of predetermined balances.","$ref":"#/definitions/tokenization.v28.PredeterminedOrderCalculationMethod"}}},"tokenization.v28.PredeterminedOrderCalculationMethod":{"description":"PredeterminedOrderCalculationMethod defines the method to calculate predetermined balances order.","type":"object","properties":{"challengeTrackerId":{"description":"If useMerkleChallengeLeafIndex is set, then this is the ID of the challenge tracker associated with this calculation method.","type":"string"},"useMerkleChallengeLeafIndex":{"description":"Use the Merkle challenge leaf index to calculate the order. Ex: Transfer that uses leaf index 0 gets the first balance, transfer that uses leaf index 1 gets the second balance, etc.","type":"boolean"},"useOverallNumTransfers":{"description":"Use the overall number of transfers to calculate the order. Ex: First transfer gets the first balance, second transfer gets the second balance, etc.","type":"boolean"},"usePerFromAddressNumTransfers":{"description":"Use the number of transfers per \"from\" address to calculate the order. Ex: First transfer from address A gets the first balance, second transfer from address A gets the second balance, etc.","type":"boolean"},"usePerInitiatedByAddressNumTransfers":{"description":"Use the number of transfers per \"initiated by\" address to calculate the order. Ex: First transfer initiated by address A gets the first balance, second transfer initiated by address A gets the second balance, etc.","type":"boolean"},"usePerToAddressNumTransfers":{"description":"Use the number of transfers per \"to\" address to calculate the order. Ex: First transfer to address A gets the first balance, second transfer to address A gets the second balance, etc.","type":"boolean"}}},"tokenization.v28.RecurringOwnershipTimes":{"description":"RecurringOwnershipTimes represents a list of recurring ownership times.","type":"object","properties":{"chargePeriodLength":{"type":"string","title":"Grace period length where you can charge the next interval (nextStartTime - chargePeriodLength) until (nextStartTime) = charge period"},"intervalLength":{"description":"The interval length in unix milliseconds.","type":"string"},"startTime":{"description":"The original start time of the first interval.","type":"string"}}},"tokenization.v28.ResetTimeIntervals":{"description":"Time intervals to reset the trackers at.","type":"object","properties":{"intervalLength":{"description":"Interval length in unix milliseconds.","type":"string"},"startTime":{"description":"Original start time of the first interval.","type":"string"}}},"tokenization.v28.TokenIdsActionPermission":{"description":"TokenIdsActionPermission defines the permissions for performing an action for specific tokens.\nCurrently, this is only used for creating new tokens.\n\nEx: If you want to lock the ability to create new tokens for tokenIds [1,2] at ownershipTimes 1/1/2020 - 1/1/2021, \nyou could set the combination (tokenIds: [1,2], ownershipTimes: [1/1/2020 - 1/1/2021]) to always be forbidden.","type":"object","properties":{"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"tokenIds":{"description":"Specifies the token IDs involved in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}}}},"tokenization.v28.TokenMetadata":{"description":"This message defines the metadata for specific token IDs.\nThe interpretation of this metadata should follow the collection standard.","type":"object","properties":{"customData":{"description":"Custom data or additional information related to the token metadata.","type":"string"},"tokenIds":{"description":"The token IDs to which this metadata applies.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"uri":{"description":"The URI (Uniform Resource Identifier) associated with the token metadata.","type":"string"}}},"tokenization.v28.Transfer":{"description":"Transfer defines the details of a transfer of tokens.","type":"object","properties":{"balances":{"description":"The balances to be transferred.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.Balance"}},"ethSignatureProofs":{"description":"The ETH signature proofs / solutions for all ETH signature challenges required for the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ETHSignatureProof"}},"from":{"description":"The address of the sender of the transfer.","type":"string"},"memo":{"description":"The memo for the transfer.","type":"string"},"merkleProofs":{"description":"The Merkle proofs / solutions for all Merkle challenges required for the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.MerkleProof"}},"onlyCheckPrioritizedCollectionApprovals":{"description":"Whether to only check prioritized approvals for the transfer. \nIf true, we will only check the prioritized approvals and fail if none of them match (i.e. do not check any non-prioritized approvals).\nIf false, we will check the prioritized approvals first and then scan through the rest of the approvals.","type":"boolean"},"onlyCheckPrioritizedIncomingApprovals":{"description":"Whether to only check prioritized approvals for the transfer. \nIf true, we will only check the prioritized approvals and fail if none of them match (i.e. do not check any non-prioritized approvals).\nIf false, we will check the prioritized approvals first and then scan through the rest of the approvals.","type":"boolean"},"onlyCheckPrioritizedOutgoingApprovals":{"description":"Whether to only check prioritized approvals for the transfer. \nIf true, we will only check the prioritized approvals and fail if none of them match (i.e. do not check any non-prioritized approvals).\nIf false, we will check the prioritized approvals first and then scan through the rest of the approvals.","type":"boolean"},"precalculateBalancesFromApproval":{"description":"If defined, we will use the predeterminedBalances from the specified approval to calculate the balances at execution time.\nWe will override the balances field with the precalculated balances. Only applicable for approvals with predeterminedBalances set.","$ref":"#/definitions/tokenization.v28.PrecalculateBalancesFromApprovalDetails"},"prioritizedApprovals":{"description":"The prioritized approvals for the transfer. By default, we scan linearly through the approvals and use the first match.\nThis field can be used to prioritize specific approvals and scan through them first.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ApprovalIdentifierDetails"}},"toAddresses":{"description":"The addresses of the recipients of the transfer.","type":"array","items":{"type":"string"}}}},"tokenization.v28.UintRange":{"description":"The UintRange is a range of IDs from some start to some end (inclusive).\nuintRanges are one of the core types used.\n\nThey are used for everything from token IDs to time ranges to min/max balance amounts.\n\nSee the BitBadges documentation for more information.","type":"object","properties":{"end":{"description":"The ending value of the range (inclusive).","type":"string"},"start":{"description":"The starting value of the range (inclusive).","type":"string"}}},"tokenization.v28.UserBalanceStore":{"description":"UserBalanceStore is the store for the user balances for a collection.\n\nIt consists of a list of balances, a list of approved outgoing transfers, and a list of approved incoming transfers,\nas well as the permissions for updating the approved incoming/outgoing transfers.\n\nUpon initialization, all fields (minus the balances) are set to the defaults specified by the collection.\n\nThe outgoing transfers can be used to allow / disallow transfers which are sent from this user.\nIf a transfer has no match, then it is disallowed by default, unless from == initiatedBy (i.e. initiated by this user)\nand autoApproveSelfInitiatedOutgoingTransfers is set to true.\n\nThe incoming transfers can be used to allow / disallow transfers which are sent to this user.\nIf a transfer has no match, then it is disallowed by default, unless to == initiatedBy (i.e. initiated by this user)\nand autoApproveSelfInitiatedIncomingTransfers is set to true.\n\nNote that the user approved transfers are only checked if the collection approved transfers do not specify to override\nthe user approved transfers. \n\nThe permissions are used to determine whether the user can update the approved incoming/outgoing transfers and auto approvals.","type":"object","properties":{"autoApproveAllIncomingTransfers":{"description":"Whether to auto-approve all incoming transfers by default. \nThis is just shorthand for adding an accept everything incoming approval\nwith no restrictions.","type":"boolean"},"autoApproveSelfInitiatedIncomingTransfers":{"description":"Whether to auto-approve self-initiated incoming transfers for this user (i.e. to == initiatedBy).","type":"boolean"},"autoApproveSelfInitiatedOutgoingTransfers":{"description":"Whether to auto-approve self-initiated outgoing transfers for this user (i.e. from == initiatedBy).","type":"boolean"},"balances":{"description":"The list of balances associated with this user.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.Balance"}},"incomingApprovals":{"description":"The list of approved incoming transfers for this user.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UserIncomingApproval"}},"outgoingApprovals":{"description":"The list of approved outgoing transfers for this user.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UserOutgoingApproval"}},"userPermissions":{"description":"The permissions for this user's actions and transfers.","$ref":"#/definitions/tokenization.v28.UserPermissions"}}},"tokenization.v28.UserIncomingApproval":{"description":"UserIncomingApproval defines the rules for the approval of an incoming transfer to a user.","type":"object","properties":{"approvalCriteria":{"description":"The criteria that must be met for this approval to be considered.","$ref":"#/definitions/tokenization.v28.IncomingApprovalCriteria"},"approvalId":{"description":"The ID of this approval. Must be unique per level (i.e. collection, outgoing, incoming).","type":"string"},"customData":{"description":"Arbitrary custom data associated with this approval.","type":"string"},"fromListId":{"description":"The list ID for the sender of the transfer.","type":"string"},"initiatedByListId":{"description":"The list ID for the user who initiated the transfer.","type":"string"},"ownershipTimes":{"description":"The allowed range of ownership times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"tokenIds":{"description":"The allowed range of token IDs for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"transferTimes":{"description":"The allowed range of transfer times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"uri":{"description":"The URI associated with this approval, optionally providing metadata about the approval.","type":"string"},"version":{"description":"Version of the approval. Maintained internally.","type":"string"}}},"tokenization.v28.UserIncomingApprovalPermission":{"description":"UserIncomingApprovalPermission defines the permissions for updating the user's approved incoming transfers.\n\nSee CollectionApprovalPermission for more details. This is equivalent without the toListId field because that is always the user.","type":"object","properties":{"approvalId":{"description":"Identifier for the approvalId. You can use \"All\" or \"!approvalId\" for shorthand.\nIf you use \"All\", this approval will match to all approvalIds.\nIf you use \"!approvalId\", this approval will match to all approvalIds except for approvalId.\nIf you use \"approvalId\", this approval will match to only the specified approvalId and fail on all others.","type":"string"},"fromListId":{"description":"Identifier for the sender list.","type":"string"},"initiatedByListId":{"description":"Identifier for the initiator list (who is approved?).","type":"string"},"ownershipTimes":{"description":"Specifies the ownership times for the tokens in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"tokenIds":{"description":"Specifies the token IDs involved in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"transferTimes":{"description":"Specifies the times when the transfer can occur.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}}}},"tokenization.v28.UserOutgoingApproval":{"description":"UserOutgoingApproval defines the rules for the approval of an outgoing transfer from a user.","type":"object","properties":{"approvalCriteria":{"description":"The criteria that must be met for this approval to be considered.","$ref":"#/definitions/tokenization.v28.OutgoingApprovalCriteria"},"approvalId":{"description":"The ID of this approval. Must be unique per level (i.e. collection, outgoing, incoming).","type":"string"},"customData":{"description":"Arbitrary custom data associated with this approval.","type":"string"},"initiatedByListId":{"description":"The list ID for the user who initiated the transfer.","type":"string"},"ownershipTimes":{"description":"The allowed range of ownership times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"toListId":{"description":"The list ID for the recipient of the transfer.","type":"string"},"tokenIds":{"description":"The allowed range of token IDs for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"transferTimes":{"description":"The allowed range of transfer times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"uri":{"description":"The URI associated with this approval, optionally providing metadata about the approval.","type":"string"},"version":{"description":"Version of the approval. Maintained internally.","type":"string"}}},"tokenization.v28.UserOutgoingApprovalPermission":{"description":"UserOutgoingApprovalPermission defines the permissions for updating the user's approved outgoing transfers.","type":"object","properties":{"approvalId":{"description":"Identifier for the approvalId. You can use \"All\" or \"!approvalId\" for shorthand.\nIf you use \"All\", this approval will match to all approvalIds.\nIf you use \"!approvalId\", this approval will match to all approvalIds except for approvalId.\nIf you use \"approvalId\", this approval will match to only the specified approvalId and fail on all others.","type":"string"},"initiatedByListId":{"description":"Identifier for the initiator list (who is approved?).","type":"string"},"ownershipTimes":{"description":"Specifies the ownership times for the tokens in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"toListId":{"description":"Identifier for the recipient list.","type":"string"},"tokenIds":{"description":"Specifies the token IDs involved in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"transferTimes":{"description":"Specifies the times when the transfer can occur.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}}}},"tokenization.v28.UserPermissions":{"description":"UserPermissions defines the permissions for the user about their approvals (i.e., what the user can and cannot do).\n\nSee CollectionPermissions for more details on the different types of permissions.\n\ncanUpdateOutgoingApprovals and canUpdateOutgoingApprovals follow the same as the canUpdateCollectionApprovals in CollectionPermissions,\nbut certain fields are removed because they are not relevant to the user.","type":"object","properties":{"canUpdateAutoApproveAllIncomingTransfers":{"description":"Permissions related to updating auto-approval settings for all incoming transfers (whether they are allowed by default).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ActionPermission"}},"canUpdateAutoApproveSelfInitiatedIncomingTransfers":{"description":"Permissions related to updating auto-approval settings for self-initiated incoming transfers (whether they are allowed by default).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ActionPermission"}},"canUpdateAutoApproveSelfInitiatedOutgoingTransfers":{"description":"Permissions related to updating auto-approval settings for self-initiated outgoing transfers (whether they are allowed by default).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ActionPermission"}},"canUpdateIncomingApprovals":{"description":"Permissions related to updating the user's approved incoming transfers.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UserIncomingApprovalPermission"}},"canUpdateOutgoingApprovals":{"description":"Permissions related to updating the user's approved outgoing transfers.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UserOutgoingApprovalPermission"}}}},"tokenization.v28.UserRoyalties":{"description":"UserRoyalties defines the royalties for a user.","type":"object","properties":{"payoutAddress":{"description":"Payout address for the royalties.","type":"string"},"percentage":{"description":"Percentage of the transfer amount to apply as royalties. 1 to 10000 represents basis points.","type":"string"}}},"tokenization.v28.Voter":{"description":"Voter defines a voter with their address and weight.","type":"object","properties":{"address":{"description":"The address of the voter.","type":"string"},"weight":{"description":"The weight of this voter's vote.","type":"string"}}},"tokenization.v28.VotingChallenge":{"description":"VotingChallenge defines a rule for approval in the form of a voting/multi-sig challenge.\nRequires a weighted quorum threshold to be met through votes from specified voters.\nAll challenges must be met with valid solutions for the transfer to be approved.\n\nIMPORTANT: Votes are stored separately and can be updated. The threshold is calculated as a percentage\nof total possible weight (all voters), not just voted weight. If you update the proposal ID, then the\nvote tracker will reset and start a new tally. We recommend using a unique proposal ID for each challenge\nto prevent overlap and unexpected behavior.","type":"object","properties":{"customData":{"description":"Arbitrary custom data associated with this voting challenge.","type":"string"},"proposalId":{"type":"string","title":"The ID of this voting challenge for tracking votes (scoped like challengeTrackerId).\nFormat: collectionId-approverAddress-approvalLevel-approvalId-challengeId"},"quorumThreshold":{"description":"The quorum threshold as a percentage (0-100) of total possible weight that must vote \"yes\".\nExample: 50 means 50% of total voter weight must vote yes for approval.","type":"string"},"uri":{"description":"The URI associated with this voting challenge.","type":"string"},"voters":{"description":"List of voters with their weights. Each voter can cast a weighted vote.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.Voter"}}}}},"tags":[{"name":"Query"},{"name":"Msg"}]} \ No newline at end of file +{"id":"github.com/bitbadges/bitbadgeschain","consumes":["application/json"],"produces":["application/json"],"swagger":"2.0","info":{"description":"Chain github.com/bitbadges/bitbadgeschain REST API","title":"HTTP API Console","contact":{"name":"github.com/bitbadges/bitbadgeschain"},"version":"version not set"},"paths":{"/cosmos.evm.vm.v1.Msg/RegisterPreinstalls":{"post":{"tags":["Msg"],"summary":"RegisterPreinstalls defines a governance operation for directly registering\npreinstalled contracts in the EVM. The authority is the same as is used for\nParams updates.","operationId":"Erc20Msg_RegisterPreinstalls","parameters":[{"description":"MsgRegisterPreinstalls defines a Msg for creating preinstalls in evm state.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.MsgRegisterPreinstalls"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.MsgRegisterPreinstallsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.evm.vm.v1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defined a governance operation for updating the x/vm module\nparameters. The authority is hard-coded to the Cosmos SDK x/gov module\naccount","operationId":"Erc20Msg_UpdateParams","parameters":[{"description":"MsgUpdateParams defines a Msg for updating the x/vm module parameters.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evm/vm/v1/ethereum_tx":{"post":{"tags":["Msg"],"summary":"EthereumTx defines a method submitting Ethereum transactions.","operationId":"Erc20Msg_EthereumTx","parameters":[{"type":"string","format":"byte","description":"from is the bytes of ethereum signer address. This address value is checked\nagainst the address derived from the signature (V, R, S) using the\nsecp256k1 elliptic curve","name":"from","in":"query"},{"type":"string","format":"byte","description":"raw is the raw ethereum transaction","name":"raw","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.MsgEthereumTxResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}}},"definitions":{"cosmos.evm.vm.v1.AccessControl":{"type":"object","title":"AccessControl defines the permission policy of the EVM\nfor creating and calling contracts","properties":{"call":{"title":"call defines the permission policy for calling contracts","$ref":"#/definitions/cosmos.evm.vm.v1.AccessControlType"},"create":{"title":"create defines the permission policy for creating contracts","$ref":"#/definitions/cosmos.evm.vm.v1.AccessControlType"}}},"cosmos.evm.vm.v1.AccessControlType":{"type":"object","title":"AccessControlType defines the permission type for policies","properties":{"access_control_list":{"type":"array","title":"access_control_list defines defines different things depending on the\nAccessType:\n- ACCESS_TYPE_PERMISSIONLESS: list of addresses that are blocked from\nperforming the operation\n- ACCESS_TYPE_RESTRICTED: ignored\n- ACCESS_TYPE_PERMISSIONED: list of addresses that are allowed to perform\nthe operation","items":{"type":"string"}},"access_type":{"title":"access_type defines which type of permission is required for the operation","$ref":"#/definitions/cosmos.evm.vm.v1.AccessType"}}},"cosmos.evm.vm.v1.AccessType":{"description":"- ACCESS_TYPE_PERMISSIONLESS: ACCESS_TYPE_PERMISSIONLESS does not restrict the operation to anyone\n - ACCESS_TYPE_RESTRICTED: ACCESS_TYPE_RESTRICTED restrict the operation to anyone\n - ACCESS_TYPE_PERMISSIONED: ACCESS_TYPE_PERMISSIONED only allows the operation for specific addresses","type":"string","title":"AccessType defines the types of permissions for the operations","default":"ACCESS_TYPE_PERMISSIONLESS","enum":["ACCESS_TYPE_PERMISSIONLESS","ACCESS_TYPE_RESTRICTED","ACCESS_TYPE_PERMISSIONED"]},"cosmos.evm.vm.v1.ExtendedDenomOptions":{"type":"object","properties":{"extended_denom":{"type":"string"}}},"cosmos.evm.vm.v1.Log":{"description":"Log represents an protobuf compatible Ethereum Log that defines a contract\nlog event. These events are generated by the LOG opcode and stored/indexed by\nthe node.\n\nNOTE: address, topics and data are consensus fields. The rest of the fields\nare derived, i.e. filled in by the nodes, but not secured by consensus.","type":"object","properties":{"address":{"type":"string","title":"address of the contract that generated the event"},"block_hash":{"type":"string","title":"block_hash of the block in which the transaction was included"},"block_number":{"type":"string","format":"uint64","title":"block_number of the block in which the transaction was included"},"block_timestamp":{"type":"string","format":"uint64","title":"block_timestamp is the timestamp of the block in which the transaction was"},"data":{"type":"string","format":"byte","title":"data which is supplied by the contract, usually ABI-encoded"},"index":{"type":"string","format":"uint64","title":"index of the log in the block"},"removed":{"description":"removed is true if this log was reverted due to a chain\nreorganisation. You must pay attention to this field if you receive logs\nthrough a filter query.","type":"boolean"},"topics":{"description":"topics is a list of topics provided by the contract.","type":"array","items":{"type":"string"}},"tx_hash":{"type":"string","title":"tx_hash is the transaction hash"},"tx_index":{"type":"string","format":"uint64","title":"tx_index of the transaction in the block"}}},"cosmos.evm.vm.v1.MsgEthereumTxResponse":{"description":"MsgEthereumTxResponse defines the Msg/EthereumTx response type.","type":"object","properties":{"block_hash":{"type":"string","format":"byte","title":"include the block hash for json-rpc to use"},"block_timestamp":{"type":"string","format":"uint64","title":"include the block timestamp for json-rpc to use"},"gas_used":{"type":"string","format":"uint64","title":"gas_used specifies how much gas was consumed by the transaction"},"hash":{"type":"string","title":"hash of the ethereum transaction in hex format. This hash differs from the\nCometBFT sha256 hash of the transaction bytes. See\nhttps://github.com/tendermint/tendermint/issues/6539 for reference"},"logs":{"description":"logs contains the transaction hash and the proto-compatible ethereum\nlogs.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.evm.vm.v1.Log"}},"max_used_gas":{"type":"string","format":"uint64","title":"max_used_gas specifies the gas consumed by the transaction, not including refunds"},"ret":{"type":"string","format":"byte","title":"ret is the returned data from evm function (result or data supplied with\nrevert opcode)"},"vm_error":{"type":"string","title":"vm_error is the error returned by vm execution"}}},"cosmos.evm.vm.v1.MsgRegisterPreinstalls":{"description":"MsgRegisterPreinstalls defines a Msg for creating preinstalls in evm state.","type":"object","properties":{"authority":{"description":"authority is the address of the governance account.","type":"string"},"preinstalls":{"description":"preinstalls defines the preinstalls to create.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.evm.vm.v1.Preinstall"}}}},"cosmos.evm.vm.v1.MsgRegisterPreinstallsResponse":{"description":"MsgRegisterPreinstallsResponse defines the response structure for executing a\nMsgRegisterPreinstalls message.","type":"object"},"cosmos.evm.vm.v1.MsgUpdateParams":{"description":"MsgUpdateParams defines a Msg for updating the x/vm module parameters.","type":"object","properties":{"authority":{"description":"authority is the address of the governance account.","type":"string"},"params":{"description":"params defines the x/vm parameters to update.\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.evm.vm.v1.Params"}}},"cosmos.evm.vm.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"cosmos.evm.vm.v1.Params":{"type":"object","title":"Params defines the EVM module parameters","properties":{"access_control":{"title":"access_control defines the permission policy of the EVM","$ref":"#/definitions/cosmos.evm.vm.v1.AccessControl"},"active_static_precompiles":{"type":"array","title":"active_static_precompiles defines the slice of hex addresses of the\nprecompiled contracts that are active","items":{"type":"string"}},"evm_channels":{"type":"array","title":"evm_channels is the list of channel identifiers from EVM compatible chains","items":{"type":"string"}},"evm_denom":{"description":"evm_denom represents the token denomination used to run the EVM state\ntransitions.","type":"string"},"extended_denom_options":{"$ref":"#/definitions/cosmos.evm.vm.v1.ExtendedDenomOptions"},"extra_eips":{"type":"array","title":"extra_eips defines the additional EIPs for the vm.Config","items":{"type":"string","format":"int64"}},"history_serve_window":{"type":"string","format":"uint64"}}},"cosmos.evm.vm.v1.Preinstall":{"type":"object","title":"Preinstall defines a contract that is preinstalled on-chain with a specific\ncontract address and bytecode","properties":{"address":{"type":"string","title":"address in hex format of the preinstall contract"},"code":{"type":"string","title":"code in hex format for the preinstall contract"},"name":{"type":"string","title":"name of the preinstall contract"}}},"google.protobuf.Any":{"description":"`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }","type":"object","properties":{"@type":{"description":"A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.","type":"string"}},"additionalProperties":{}},"google.rpc.Status":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"details":{"type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"message":{"type":"string"}}}},"tags":[{"name":"Msg"}]} \ No newline at end of file diff --git a/x/tokenization/keeper/migrations.go b/x/tokenization/keeper/migrations.go index 2ecc577e..00bc5074 100644 --- a/x/tokenization/keeper/migrations.go +++ b/x/tokenization/keeper/migrations.go @@ -11,7 +11,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" newtypes "github.com/bitbadges/bitbadgeschain/x/tokenization/types" - oldtypes "github.com/bitbadges/bitbadgeschain/x/tokenization/types/v28" + oldtypes "github.com/bitbadges/bitbadgeschain/x/tokenization/types/v29" ) // MigrateTokenizationKeeper migrates the tokenization keeper from v28 to v29. diff --git a/x/tokenization/module/module.go b/x/tokenization/module/module.go index 83cf657b..cd821744 100644 --- a/x/tokenization/module/module.go +++ b/x/tokenization/module/module.go @@ -130,7 +130,7 @@ func NewAppModule( } } -const ConsensusVersion = 29 +const ConsensusVersion = 30 // RegisterServices registers a gRPC query service to respond to the module-specific gRPC queries func (am AppModule) RegisterServices(cfg module.Configurator) { From d709eba169a197501ced4e679db6ee783991d393 Mon Sep 17 00:00:00 2001 From: Trevor Miller Date: Mon, 20 Apr 2026 13:28:10 -0400 Subject: [PATCH 10/24] refactor(cli): consolidate command structure and update installation instructions This commit refactors the command structure of the BitBadges CLI by consolidating multiple forwarder commands (`sdk`, `api`, `builder`) into a single `cli` command. This change simplifies the command usage, allowing all top-level subcommands to be accessed through `bitbadgeschaind cli [args...]`. Additionally, the installation instructions have been updated to reflect the new package name `bitbadges`, replacing previous references to `bitbadgesjs-sdk`. This includes updates in the `.gitignore`, `install.sh`, and documentation files to ensure consistency across the project. Changes include: - Removal of the old `sdk`, `api`, and `builder` command files. - Introduction of a new generic `cli` command. - Updates to installation messages and documentation to use the new package name. - Removal of deprecated modules related to `maps` and `anchor` as part of the v30 upgrade. This refactor enhances usability and prepares the codebase for future expansions of the CLI functionality. --- .github/workflows/release.yml | 2 +- .gitignore | 2 +- app/app.go | 6 - app/app_config.go | 21 -- app/ibc.go | 32 +- app/upgrades.go | 3 +- cmd/bitbadgeschaind/cmd/api_cmd.go | 31 -- cmd/bitbadgeschaind/cmd/cli_cmd.go | 61 ++++ cmd/bitbadgeschaind/cmd/commands.go | 3 +- cmd/bitbadgeschaind/cmd/node_cli.go | 6 +- cmd/bitbadgeschaind/cmd/sdk_cmd.go | 30 -- install.sh | 6 +- x/ibc-rate-limit/hooks/hooks.go | 89 +++++- x/ibc-rate-limit/hooks/refund_test.go | 294 ++++++++++++++++++ x/tokenization/client/cli/help_links.go | 2 +- x/tokenization/keeper/approval_comparison.go | 18 +- x/tokenization/keeper/collection_stats.go | 6 +- .../keeper/collection_stats_test.go | 24 +- x/tokenization/keeper/migrations.go | 55 ---- 19 files changed, 505 insertions(+), 186 deletions(-) delete mode 100644 cmd/bitbadgeschaind/cmd/api_cmd.go create mode 100644 cmd/bitbadgeschaind/cmd/cli_cmd.go delete mode 100644 cmd/bitbadgeschaind/cmd/sdk_cmd.go create mode 100644 x/ibc-rate-limit/hooks/refund_test.go diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2033b11a..2d701a09 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -183,7 +183,7 @@ jobs: **SDK CLI:** ```bash - npm install -g bitbadgesjs-sdk + npm install -g bitbadges ``` ## Binaries diff --git a/.gitignore b/.gitignore index 9c13fffb..2bf159fe 100644 --- a/.gitignore +++ b/.gitignore @@ -41,7 +41,7 @@ output.txt export-genesis.json -bitbadgeschaind +/bitbadgeschaind genesis-test.json diff --git a/app/app.go b/app/app.go index 7e2258b7..1db4ca5a 100644 --- a/app/app.go +++ b/app/app.go @@ -91,12 +91,10 @@ import ( evmtypes "github.com/cosmos/evm/x/vm/types" "github.com/ethereum/go-ethereum/common" - anchormodulekeeper "github.com/bitbadges/bitbadgeschain/x/anchor/keeper" "github.com/bitbadges/bitbadgeschain/x/poolmanager" sendmanagermodulekeeper "github.com/bitbadges/bitbadgeschain/x/sendmanager/keeper" managersplittermodulekeeper "github.com/bitbadges/bitbadgeschain/x/managersplitter/keeper" - mapsmodulekeeper "github.com/bitbadges/bitbadgeschain/x/maps/keeper" approvalcriteria "github.com/bitbadges/bitbadgeschain/x/tokenization/approval_criteria" tokenizationmodulekeeper "github.com/bitbadges/bitbadgeschain/x/tokenization/keeper" "github.com/bitbadges/bitbadgeschain/x/tokenization/types" @@ -168,9 +166,7 @@ type App struct { // IBC Rate Limit IBCRateLimitKeeper ibcratelimitkeeper.Keeper - AnchorKeeper anchormodulekeeper.Keeper TokenizationKeeper *tokenizationmodulekeeper.Keeper - MapsKeeper mapsmodulekeeper.Keeper ManagerSplitterKeeper managersplittermodulekeeper.Keeper GammKeeper gammkeeper.Keeper @@ -296,9 +292,7 @@ func New( &app.FeeGrantKeeper, &app.GroupKeeper, &app.CircuitBreakerKeeper, - &app.AnchorKeeper, &app.TokenizationKeeper, - &app.MapsKeeper, &app.ManagerSplitterKeeper, &app.SendmanagerKeeper, diff --git a/app/app_config.go b/app/app_config.go index 08fae251..6cd514d0 100644 --- a/app/app_config.go +++ b/app/app_config.go @@ -3,9 +3,6 @@ package app import ( "time" - anchormodulev1 "github.com/bitbadges/bitbadgeschain/api/anchor/module" - _ "github.com/bitbadges/bitbadgeschain/x/anchor/module" // import for side-effects - anchormoduletypes "github.com/bitbadges/bitbadgeschain/x/anchor/types" gammtypes "github.com/bitbadges/bitbadgeschain/x/gamm/types" poolmanagertypes "github.com/bitbadges/bitbadgeschain/x/poolmanager/types" _ "github.com/bitbadges/bitbadgeschain/x/sendmanager/module" @@ -61,10 +58,6 @@ import ( _ "github.com/bitbadges/bitbadgeschain/x/tokenization/module" // import for side-effects tokenizationmoduletypes "github.com/bitbadges/bitbadgeschain/x/tokenization/types" - mapsmodulev1 "github.com/bitbadges/bitbadgeschain/api/maps/module" - _ "github.com/bitbadges/bitbadgeschain/x/maps/module" // import for side-effects - mapsmoduletypes "github.com/bitbadges/bitbadgeschain/x/maps/types" - managersplittermodulev1 "github.com/bitbadges/bitbadgeschain/api/managersplitter/module" _ "github.com/bitbadges/bitbadgeschain/x/managersplitter/module" // import for side-effects managersplittermoduletypes "github.com/bitbadges/bitbadgeschain/x/managersplitter/types" @@ -113,9 +106,7 @@ var ( consensustypes.ModuleName, circuittypes.ModuleName, // chain modules - anchormoduletypes.ModuleName, tokenizationmoduletypes.ModuleName, - mapsmoduletypes.ModuleName, managersplittermoduletypes.ModuleName, packetforwardtypes.ModuleName, gammtypes.ModuleName, @@ -147,9 +138,7 @@ var ( icatypes.ModuleName, ibcratelimittypes.ModuleName, // chain modules - anchormoduletypes.ModuleName, tokenizationmoduletypes.ModuleName, - mapsmoduletypes.ModuleName, managersplittermoduletypes.ModuleName, packetforwardtypes.ModuleName, gammtypes.ModuleName, @@ -176,9 +165,7 @@ var ( icatypes.ModuleName, ibcratelimittypes.ModuleName, // chain modules - anchormoduletypes.ModuleName, tokenizationmoduletypes.ModuleName, - mapsmoduletypes.ModuleName, managersplittermoduletypes.ModuleName, packetforwardtypes.ModuleName, gammtypes.ModuleName, @@ -346,18 +333,10 @@ var ( Name: circuittypes.ModuleName, Config: appconfig.WrapAny(&circuitmodulev1.Module{}), }, - { - Name: anchormoduletypes.ModuleName, - Config: appconfig.WrapAny(&anchormodulev1.Module{}), - }, { Name: tokenizationmoduletypes.ModuleName, Config: appconfig.WrapAny(&tokenizationmodulev1.Module{}), }, - { - Name: mapsmoduletypes.ModuleName, - Config: appconfig.WrapAny(&mapsmodulev1.Module{}), - }, { Name: managersplittermoduletypes.ModuleName, Config: appconfig.WrapAny(&managersplittermodulev1.Module{}), diff --git a/app/ibc.go b/app/ibc.go index 7ae41d18..b36e15b6 100644 --- a/app/ibc.go +++ b/app/ibc.go @@ -34,10 +34,6 @@ import ( ibctm "github.com/cosmos/ibc-go/v10/modules/light-clients/07-tendermint" // this line is used by starport scaffolding # ibc/app/import - anchormodule "github.com/bitbadges/bitbadgeschain/x/anchor/module" - anchormoduletypes "github.com/bitbadges/bitbadgeschain/x/anchor/types" - mapsmodule "github.com/bitbadges/bitbadgeschain/x/maps/module" - mapsmoduletypes "github.com/bitbadges/bitbadgeschain/x/maps/types" tokenizationmoduletypes "github.com/bitbadges/bitbadgeschain/x/tokenization/types" tokenizationkeeper "github.com/bitbadges/bitbadgeschain/x/tokenization/keeper" @@ -67,8 +63,10 @@ type CombinedIBCHooks struct { // Implement hook interfaces by delegating to the appropriate hook var ( - _ ibchooks.OnRecvPacketOverrideHooks = &CombinedIBCHooks{} - _ ibchooks.SendPacketOverrideHooks = &CombinedIBCHooks{} + _ ibchooks.OnRecvPacketOverrideHooks = &CombinedIBCHooks{} + _ ibchooks.SendPacketOverrideHooks = &CombinedIBCHooks{} + _ ibchooks.OnAcknowledgementPacketOverrideHooks = &CombinedIBCHooks{} + _ ibchooks.OnTimeoutPacketOverrideHooks = &CombinedIBCHooks{} ) func (h *CombinedIBCHooks) OnRecvPacketOverride(im ibchooks.IBCMiddleware, ctx sdk.Context, channelID string, packet channeltypes.Packet, relayer sdk.AccAddress) ibcexported.Acknowledgement { @@ -104,6 +102,24 @@ func (h *CombinedIBCHooks) SendPacketOverride(i ibchooks.ICS4Middleware, ctx sdk return i.SendPacket(ctx, sourcePort, sourceChannel, timeoutHeight, timeoutTimestamp, data) } +// OnAcknowledgementPacketOverride forwards to the rate-limit hook so that +// failed outbound transfers refund their quota. If no rate-limit hook is +// configured, fall through to the underlying app. +func (h *CombinedIBCHooks) OnAcknowledgementPacketOverride(im ibchooks.IBCMiddleware, ctx sdk.Context, channelID string, packet channeltypes.Packet, acknowledgement []byte, relayer sdk.AccAddress) error { + if h.RateLimitOverrideHooks != nil { + return h.RateLimitOverrideHooks.OnAcknowledgementPacketOverride(im, ctx, channelID, packet, acknowledgement, relayer) + } + return im.App.OnAcknowledgementPacket(ctx, channelID, packet, acknowledgement, relayer) +} + +// OnTimeoutPacketOverride forwards to the rate-limit hook for quota refund on timeout. +func (h *CombinedIBCHooks) OnTimeoutPacketOverride(im ibchooks.IBCMiddleware, ctx sdk.Context, channelID string, packet channeltypes.Packet, relayer sdk.AccAddress) error { + if h.RateLimitOverrideHooks != nil { + return h.RateLimitOverrideHooks.OnTimeoutPacketOverride(im, ctx, channelID, packet, relayer) + } + return im.App.OnTimeoutPacket(ctx, channelID, packet, relayer) +} + // registerIBCModules register IBC keepers and non dependency inject modules. func (app *App) registerIBCModules(appOpts servertypes.AppOptions) error { // set up non depinject support modules store keys @@ -207,10 +223,6 @@ func (app *App) registerIBCModules(appOpts servertypes.AppOptions) error { AddRoute(icacontrollertypes.SubModuleName, icaControllerIBCModule). AddRoute(icahosttypes.SubModuleName, icaHostIBCModule) - anchorIBCModule := anchormodule.NewIBCModule(app.AnchorKeeper) - ibcRouter.AddRoute(anchormoduletypes.ModuleName, anchorIBCModule) - mapsIBCModule := mapsmodule.NewIBCModule(app.MapsKeeper) - ibcRouter.AddRoute(mapsmoduletypes.ModuleName, mapsIBCModule) tokenizationIBCModule := tokenizationmodule.NewIBCModule(app.TokenizationKeeper) ibcRouter.AddRoute(tokenizationmoduletypes.ModuleName, tokenizationIBCModule) diff --git a/app/upgrades.go b/app/upgrades.go index cb338acf..d1b7f24b 100644 --- a/app/upgrades.go +++ b/app/upgrades.go @@ -37,7 +37,8 @@ func (app *App) RegisterUpgradeHandlers() { case v30.UpgradeName: storeUpgrades = &storetypes.StoreUpgrades{ Renamed: []storetypes.StoreRename{}, - Deleted: []string{}, + // v30: remove deprecated x/anchor and x/maps modules + Deleted: []string{"anchor", "maps"}, Added: []string{}, } } diff --git a/cmd/bitbadgeschaind/cmd/api_cmd.go b/cmd/bitbadgeschaind/cmd/api_cmd.go deleted file mode 100644 index 71914275..00000000 --- a/cmd/bitbadgeschaind/cmd/api_cmd.go +++ /dev/null @@ -1,31 +0,0 @@ -package cmd - -import ( - "github.com/spf13/cobra" -) - -// ApiCmd returns a cobra command that delegates to the Node.js bitbadges-cli -// for API-related operations (fetching collections, balances, etc.). -// -// Examples: -// -// bitbadgeschaind api collection get 1 -// bitbadgeschaind api balance query bb1... 1 -func ApiCmd() *cobra.Command { - cmd := &cobra.Command{ - Use: "api [args...]", - Short: "BitBadges off-chain indexer API — collections, balances, claims, DEX (via bitbadges-cli)", - Long: `BitBadges off-chain indexer API client. Delegates to the bitbadges-cli Node.js tool. - -Queries the BitBadges indexer (not the on-chain node). Includes: collections, -balances, claims, plugins, DEX pools, asset pairs, dynamic stores, and 100+ routes. - -Requires: Node.js + bitbadges-cli (npm install -g bitbadgesjs-sdk) -Configure: BITBADGES_API_KEY env var or bitbadges-cli config set apiKey `, - DisableFlagParsing: true, // Pass all flags through to Node.js CLI - RunE: func(cmd *cobra.Command, args []string) error { - return execNodeCLI("api", args) - }, - } - return cmd -} diff --git a/cmd/bitbadgeschaind/cmd/cli_cmd.go b/cmd/bitbadgeschaind/cmd/cli_cmd.go new file mode 100644 index 00000000..0e46817b --- /dev/null +++ b/cmd/bitbadgeschaind/cmd/cli_cmd.go @@ -0,0 +1,61 @@ +package cmd + +import ( + "fmt" + "os" + + "github.com/spf13/cobra" +) + +// CliCmd returns the generic catch-all forwarder to the Node.js +// bitbadges-cli binary. Every top-level JS CLI subcommand is reachable +// through this one command — `bitbadgeschaind cli ` — without +// needing a dedicated Go file per alias. +// +// This is the canonical form going forward. The existing short aliases +// (sdk / api / builder) stay around for one release cycle for backwards +// compat but redirect through this same forwarder. +// +// Examples: +// +// bitbadgeschaind cli sdk review tx.json +// bitbadgeschaind cli api tokens get-collection 1 +// bitbadgeschaind cli builder templates vault --backing-coin USDC +// bitbadgeschaind cli builder create-with-burner --msg-file col.json --manager bb1... +// bitbadgeschaind cli config set apiKey +// +// Any future top-level subcommand added to bitbadges-cli is automatically +// reachable via `bitbadgeschaind cli ` — no Go changes required. +func CliCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "cli [subcommand] [args...]", + Short: "Forward any subcommand to the Node.js bitbadges-cli", + Long: `Generic forwarder for the Node.js bitbadges-cli binary. + +Usage: + bitbadgeschaind cli [args...] + +Where is any top-level bitbadges-cli subcommand: + sdk — SDK analysis, review, interpret, address tools, docs + api — 104+ indexer API routes from your terminal + builder — template builders, create-with-burner, burner wallets, + review/verify/simulate/doctor, session tools, builder tools + config — manage ~/.bitbadges/config.json (base URL, API keys per network) + +New top-level bitbadges-cli subcommands automatically reach here without +needing a Go alias — this wrapper is the single bridge between the chain +binary and the JS CLI going forward. + +Requires: Node.js + bitbadges-cli (npm install -g bitbadges)`, + DisableFlagParsing: true, // Pass all flags through to Node.js CLI + RunE: func(cmd *cobra.Command, args []string) error { + if len(args) == 0 { + fmt.Fprintln(os.Stderr, "Usage: bitbadgeschaind cli [args...]") + fmt.Fprintln(os.Stderr, "Run `bitbadgeschaind cli --help` for the list of subcommands.") + return nil + } + return execNodeCLI(args[0], args[1:]) + }, + } + return cmd +} diff --git a/cmd/bitbadgeschaind/cmd/commands.go b/cmd/bitbadgeschaind/cmd/commands.go index 2de8f83b..73267485 100644 --- a/cmd/bitbadgeschaind/cmd/commands.go +++ b/cmd/bitbadgeschaind/cmd/commands.go @@ -85,8 +85,7 @@ func initRootCmd( queryCommand(), txCommand(), bitbadgesclient.KeyCommands(app.DefaultNodeHome, false), // false = don't default to eth keys, but support them - SdkCmd(), - ApiCmd(), + CliCmd(), // canonical forwarder — `bitbadgeschaind cli [args...]` reaches every bitbadges-cli subcommand ) } diff --git a/cmd/bitbadgeschaind/cmd/node_cli.go b/cmd/bitbadgeschaind/cmd/node_cli.go index 39d566a0..2f59f46b 100644 --- a/cmd/bitbadgeschaind/cmd/node_cli.go +++ b/cmd/bitbadgeschaind/cmd/node_cli.go @@ -13,15 +13,15 @@ import ( func execNodeCLI(subcommand string, args []string) error { cliPath, useNpx := findNodeCLI() if cliPath == "" { - fmt.Fprintln(os.Stderr, "SDK CLI not available. Install with: npm install -g bitbadgesjs-sdk (provides bitbadges-cli command)") + fmt.Fprintln(os.Stderr, "SDK CLI not available. Install with: npm install -g bitbadges (provides bitbadges-cli command)") fmt.Fprintln(os.Stderr, "Or set BITBADGES_SDK_CLI_PATH environment variable.") return nil // Don't error - chain operations should still work } var fullArgs []string if useNpx { - // npx -p bitbadgesjs-sdk bitbadges-cli - fullArgs = append([]string{"-p", "bitbadgesjs-sdk", "bitbadges-cli", subcommand}, args...) + // npx -p bitbadges bitbadges-cli + fullArgs = append([]string{"-p", "bitbadges", "bitbadges-cli", subcommand}, args...) } else { // fullArgs = append([]string{subcommand}, args...) diff --git a/cmd/bitbadgeschaind/cmd/sdk_cmd.go b/cmd/bitbadgeschaind/cmd/sdk_cmd.go deleted file mode 100644 index 9d32aff0..00000000 --- a/cmd/bitbadgeschaind/cmd/sdk_cmd.go +++ /dev/null @@ -1,30 +0,0 @@ -package cmd - -import ( - "github.com/spf13/cobra" -) - -// SdkCmd returns a cobra command that delegates to the Node.js bitbadges-cli -// for SDK analysis and utility operations (review, interpret, address conversion, etc.). -// -// Examples: -// -// bitbadgeschaind sdk review tx.json -// bitbadgeschaind sdk address convert 0x... --to bb1 -func SdkCmd() *cobra.Command { - cmd := &cobra.Command{ - Use: "sdk [args...]", - Short: "BitBadges JS SDK — review, interpret, address tools, docs (via bitbadges-cli)", - Long: `BitBadges JavaScript SDK utilities. Delegates to the bitbadges-cli Node.js tool. - -Includes: collection/transaction review, interpret, address conversion, -alias generation, token lookup, builder skill docs, and more. - -Requires: Node.js + bitbadges-cli (npm install -g bitbadgesjs-sdk)`, - DisableFlagParsing: true, // Pass all flags through to Node.js CLI - RunE: func(cmd *cobra.Command, args []string) error { - return execNodeCLI("sdk", args) - }, - } - return cmd -} diff --git a/install.sh b/install.sh index b7c60cc2..6c9070c6 100755 --- a/install.sh +++ b/install.sh @@ -202,13 +202,13 @@ main() { echo "" if command -v bun >/dev/null 2>&1; then echo "Installing BitBadges SDK CLI (bitbadges-cli) via bun..." - bun install -g bitbadgesjs-sdk 2>&1 | tail -1 + bun install -g bitbadges 2>&1 | tail -1 elif command -v npm >/dev/null 2>&1; then echo "Installing BitBadges SDK CLI (bitbadges-cli) via npm..." - npm install -g bitbadgesjs-sdk 2>&1 | tail -1 + npm install -g bitbadges 2>&1 | tail -1 else echo "npm/bun not found — skipping SDK CLI install. To install later:" - echo " npm install -g bitbadgesjs-sdk" + echo " npm install -g bitbadges" fi if command -v bitbadges-cli >/dev/null 2>&1; then diff --git a/x/ibc-rate-limit/hooks/hooks.go b/x/ibc-rate-limit/hooks/hooks.go index 8d633782..bc2769b8 100644 --- a/x/ibc-rate-limit/hooks/hooks.go +++ b/x/ibc-rate-limit/hooks/hooks.go @@ -16,8 +16,12 @@ import ( ) var ( - _ ibchooks.OnRecvPacketBeforeHooks = &RateLimitHooks{} - _ ibchooks.SendPacketBeforeHooks = &RateLimitHooks{} + _ ibchooks.OnRecvPacketBeforeHooks = &RateLimitHooks{} + _ ibchooks.SendPacketBeforeHooks = &RateLimitHooks{} + _ ibchooks.OnRecvPacketOverrideHooks = &RateLimitOverrideHooks{} + _ ibchooks.SendPacketOverrideHooks = &RateLimitOverrideHooks{} + _ ibchooks.OnAcknowledgementPacketOverrideHooks = &RateLimitOverrideHooks{} + _ ibchooks.OnTimeoutPacketOverrideHooks = &RateLimitOverrideHooks{} ) type RateLimitHooks struct { @@ -204,6 +208,87 @@ func (h *RateLimitOverrideHooks) SendPacketOverride(i ibchooks.ICS4Middleware, c return seq, err } +// OnAcknowledgementPacketOverride refunds outbound quota when the counterparty +// returns an error acknowledgement. A failed ACK means the sent tokens are +// refunded to the sender by the transfer module, so the quota we consumed on +// SendPacket must also be refunded or it is permanently burned. Successful +// ACKs are a no-op — the tracking applied at send time is correct. +func (h *RateLimitOverrideHooks) OnAcknowledgementPacketOverride(im ibchooks.IBCMiddleware, ctx sdk.Context, channelID string, packet channeltypes.Packet, acknowledgement []byte, relayer sdk.AccAddress) error { + // Only refund on error acknowledgements. + var ack channeltypes.Acknowledgement + if err := transfertypes.ModuleCdc.UnmarshalJSON(acknowledgement, &ack); err != nil { + // Malformed ack — let the inner module handle it; do not refund. + return im.App.OnAcknowledgementPacket(ctx, channelID, packet, acknowledgement, relayer) + } + if ack.Success() { + return im.App.OnAcknowledgementPacket(ctx, channelID, packet, acknowledgement, relayer) + } + + h.refundSendTracking(ctx, packet) + return im.App.OnAcknowledgementPacket(ctx, channelID, packet, acknowledgement, relayer) +} + +// OnTimeoutPacketOverride refunds outbound quota on packet timeout. A timeout +// means the packet was never received on the counterparty, so the transfer +// module refunds the coins and we must refund the quota we consumed. +func (h *RateLimitOverrideHooks) OnTimeoutPacketOverride(im ibchooks.IBCMiddleware, ctx sdk.Context, channelID string, packet channeltypes.Packet, relayer sdk.AccAddress) error { + h.refundSendTracking(ctx, packet) + return im.App.OnTimeoutPacket(ctx, channelID, packet, relayer) +} + +// refundSendTracking undoes the tracking performed by updateTrackingAfterTransfer +// for a failed outbound transfer. The outflow was recorded as amount.Neg() on +// the netFlow, so the inverse is to add amount.Abs() back. +func (h *RateLimitOverrideHooks) refundSendTracking(ctx sdk.Context, packet channeltypes.Packet) { + var packetData transfertypes.FungibleTokenPacketData + if err := json.Unmarshal(packet.GetData(), &packetData); err != nil { + return + } + amount, ok := sdkmath.NewIntFromString(packetData.Amount) + if !ok { + return + } + sourceChannel := packet.GetSourceChannel() + denom := extractDenomFromPacketOnSend(packet.GetSourcePort(), sourceChannel, packetData.Denom) + senderAddr := packetData.Sender + + params := h.keeper.GetParams(ctx) + config := params.FindMatchingConfig(sourceChannel, denom) + if config == nil { + return + } + + // Reverse supply shift tracking. Outflow added amount.Neg(); undo by adding amount. + for _, limit := range config.SupplyShiftLimits { + if limit.MaxAmount.IsZero() { + continue + } + flow, _ := h.keeper.GetChannelFlowWithTimeframe(ctx, sourceChannel, denom, limit.TimeframeType, limit.TimeframeDuration) + flow.NetFlow = flow.NetFlow.Add(amount) + h.keeper.SetChannelFlowWithTimeframe(ctx, sourceChannel, denom, limit.TimeframeType, limit.TimeframeDuration, flow) + } + + // Reverse per-address tracking. TotalAmount is tracked as Abs(), so subtract Abs(). + if senderAddr != "" { + for _, limit := range config.AddressLimits { + data, _ := h.keeper.GetAddressTransferData(ctx, senderAddr, sourceChannel, denom, limit.TimeframeType, limit.TimeframeDuration) + if data.TransferCount > 0 { + data.TransferCount-- + } + absAmt := amount.Abs() + if data.TotalAmount.GTE(absAmt) { + data.TotalAmount = data.TotalAmount.Sub(absAmt) + } else { + data.TotalAmount = sdkmath.ZeroInt() + } + h.keeper.SetAddressTransferData(ctx, senderAddr, sourceChannel, denom, limit.TimeframeType, limit.TimeframeDuration, data) + } + } + // Unique-sender tracking is not reversed: we cannot know whether this sender + // had other in-window transfers, and the cost of an over-count is a slightly + // tighter limit, not a quota drain. +} + // updateTrackingAfterTransfer updates all tracking after a successful transfer func (h *RateLimitOverrideHooks) updateTrackingAfterTransfer(ctx sdk.Context, channelID, denom string, amount sdkmath.Int, isInflow bool, senderAddr string) { params := h.keeper.GetParams(ctx) diff --git a/x/ibc-rate-limit/hooks/refund_test.go b/x/ibc-rate-limit/hooks/refund_test.go new file mode 100644 index 00000000..2ff5f65c --- /dev/null +++ b/x/ibc-rate-limit/hooks/refund_test.go @@ -0,0 +1,294 @@ +package hooks + +import ( + "context" + "encoding/json" + "testing" + + "cosmossdk.io/log" + "cosmossdk.io/store" + "cosmossdk.io/store/metrics" + storetypes "cosmossdk.io/store/types" + sdkmath "cosmossdk.io/math" + cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" + dbm "github.com/cosmos/cosmos-db" + "github.com/cosmos/cosmos-sdk/codec" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" + transfertypes "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types" + clienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" + channeltypes "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" + ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported" + "github.com/stretchr/testify/require" + + ibchooks "github.com/bitbadges/bitbadgeschain/x/ibc-hooks" + "github.com/bitbadges/bitbadgeschain/x/ibc-rate-limit/keeper" + ratelimittypes "github.com/bitbadges/bitbadgeschain/x/ibc-rate-limit/types" +) + +// --- test scaffolding ------------------------------------------------------ + +const ( + testChannelID = "channel-0" + testSourcePort = "transfer" + testDenom = "uatom" + testSender = "cosmos1sender000000000000000000000000000000" +) + +// mockBank satisfies ratelimittypes.BankKeeper with no-op behavior. +type mockBank struct{} + +func (mockBank) GetSupply(ctx context.Context, denom string) sdk.Coin { + return sdk.Coin{Denom: denom, Amount: sdkmath.ZeroInt()} +} +func (mockBank) GetAllBalances(ctx context.Context, addr sdk.AccAddress) sdk.Coins { + return sdk.Coins{} +} +func (mockBank) MintCoins(ctx sdk.Context, moduleName string, coins sdk.Coins) error { + return nil +} + +func newTestKeeper(t *testing.T) (keeper.Keeper, sdk.Context) { + t.Helper() + + storeKey := storetypes.NewKVStoreKey(ratelimittypes.StoreKey) + db := dbm.NewMemDB() + stateStore := store.NewCommitMultiStore(db, log.NewNopLogger(), metrics.NewNoOpMetrics()) + stateStore.MountStoreWithDB(storeKey, storetypes.StoreTypeIAVL, db) + require.NoError(t, stateStore.LoadLatestVersion()) + + interfaceRegistry := codectypes.NewInterfaceRegistry() + cdc := codec.NewProtoCodec(interfaceRegistry) + authority := "cosmos1w6t0l7z0yerj49ehnqwqaayxqpe3u7e23edgma" + + k := keeper.NewKeeper(cdc, storeKey, mockBank{}, authority) + ctx := sdk.NewContext(stateStore, cmtproto.Header{Height: 1}, false, log.NewNopLogger()) + + params := ratelimittypes.DefaultParams() + params.RateLimits = []ratelimittypes.RateLimitConfig{{ + ChannelId: testChannelID, + Denom: testDenom, + SupplyShiftLimits: []ratelimittypes.TimeframeLimit{{ + MaxAmount: sdkmath.NewInt(1_000_000), + TimeframeType: ratelimittypes.TimeframeType_TIMEFRAME_TYPE_BLOCK, + TimeframeDuration: 1000, + }}, + AddressLimits: []ratelimittypes.AddressLimit{{ + MaxTransfers: 10, + MaxAmount: sdkmath.NewInt(1_000_000), + TimeframeType: ratelimittypes.TimeframeType_TIMEFRAME_TYPE_BLOCK, + TimeframeDuration: 1000, + }}, + }} + k.SetParams(ctx, params) + return k, ctx +} + +func newTestHooks(t *testing.T) (*RateLimitOverrideHooks, keeper.Keeper, sdk.Context) { + t.Helper() + k, ctx := newTestKeeper(t) + return NewRateLimitOverrideHooks(k), k, ctx +} + +func buildICS20Packet(t *testing.T, amount string) channeltypes.Packet { + t.Helper() + data := transfertypes.FungibleTokenPacketData{ + Denom: testDenom, + Amount: amount, + Sender: testSender, + Receiver: "cosmos1receiver00000000000000000000000000", + } + bz, err := json.Marshal(data) + require.NoError(t, err) + return channeltypes.Packet{ + Sequence: 1, + SourcePort: testSourcePort, + SourceChannel: testChannelID, + DestinationPort: "transfer", + DestinationChannel: "channel-99", + Data: bz, + TimeoutHeight: clienttypes.Height{RevisionNumber: 0, RevisionHeight: 1000}, + TimeoutTimestamp: 0, + } +} + +// seedOutboundTracking simulates the state that updateTrackingAfterTransfer +// would have written after a successful SendPacket: supply-shift NetFlow +// decreased by `amount` and per-address TransferCount/TotalAmount incremented. +func seedOutboundTracking(t *testing.T, k keeper.Keeper, ctx sdk.Context, amount sdkmath.Int) { + t.Helper() + k.SetChannelFlowWithTimeframe(ctx, testChannelID, testDenom, + ratelimittypes.TimeframeType_TIMEFRAME_TYPE_BLOCK, 1000, + ratelimittypes.ChannelFlow{NetFlow: amount.Neg()}) + k.SetAddressTransferData(ctx, testSender, testChannelID, testDenom, + ratelimittypes.TimeframeType_TIMEFRAME_TYPE_BLOCK, 1000, + ratelimittypes.AddressTransferData{ + TransferCount: 1, + TotalAmount: amount, + }) +} + +// --- noop IBC module ------------------------------------------------------- + +// noopIBCModule implements porttypes.IBCModule with no-op behavior. +// Used to satisfy the IBCMiddleware.App interface in override-hook tests. +type noopIBCModule struct{} + +func (noopIBCModule) OnChanOpenInit(sdk.Context, channeltypes.Order, []string, string, string, channeltypes.Counterparty, string) (string, error) { + return "", nil +} +func (noopIBCModule) OnChanOpenTry(sdk.Context, channeltypes.Order, []string, string, string, channeltypes.Counterparty, string) (string, error) { + return "", nil +} +func (noopIBCModule) OnChanOpenAck(sdk.Context, string, string, string, string) error { return nil } +func (noopIBCModule) OnChanOpenConfirm(sdk.Context, string, string) error { return nil } +func (noopIBCModule) OnChanCloseInit(sdk.Context, string, string) error { return nil } +func (noopIBCModule) OnChanCloseConfirm(sdk.Context, string, string) error { return nil } +func (noopIBCModule) OnRecvPacket(sdk.Context, string, channeltypes.Packet, sdk.AccAddress) ibcexported.Acknowledgement { + return nil +} +func (noopIBCModule) OnAcknowledgementPacket(sdk.Context, string, channeltypes.Packet, []byte, sdk.AccAddress) error { + return nil +} +func (noopIBCModule) OnTimeoutPacket(sdk.Context, string, channeltypes.Packet, sdk.AccAddress) error { + return nil +} + +func newTestMiddleware() ibchooks.IBCMiddleware { + return ibchooks.IBCMiddleware{ + App: noopIBCModule{}, + ICS4Middleware: &ibchooks.ICS4Middleware{}, + } +} + +// --- tests ----------------------------------------------------------------- + +func TestRefundSendTracking_ReversesSupplyShiftAndAddress(t *testing.T) { + h, k, ctx := newTestHooks(t) + amount := sdkmath.NewInt(500) + seedOutboundTracking(t, k, ctx, amount) + + h.refundSendTracking(ctx, buildICS20Packet(t, "500")) + + flow, _ := k.GetChannelFlowWithTimeframe(ctx, testChannelID, testDenom, + ratelimittypes.TimeframeType_TIMEFRAME_TYPE_BLOCK, 1000) + require.True(t, flow.NetFlow.IsZero(), "supply-shift NetFlow must be zero after refund, got %s", flow.NetFlow.String()) + + data, _ := k.GetAddressTransferData(ctx, testSender, testChannelID, testDenom, + ratelimittypes.TimeframeType_TIMEFRAME_TYPE_BLOCK, 1000) + require.Equal(t, int64(0), data.TransferCount) + require.True(t, data.TotalAmount.IsZero(), "address TotalAmount must be zero after refund, got %s", data.TotalAmount.String()) +} + +func TestRefundSendTracking_NoConfigIsNoop(t *testing.T) { + h, k, ctx := newTestHooks(t) + + // Use a channel/denom with no configured limits — the hook must early-return + // without panicking or touching unrelated state. + data := transfertypes.FungibleTokenPacketData{ + Denom: "uunknown", + Amount: "100", + Sender: testSender, + Receiver: "cosmos1receiver00000000000000000000000000", + } + bz, err := json.Marshal(data) + require.NoError(t, err) + packet := channeltypes.Packet{ + Sequence: 1, + SourcePort: testSourcePort, + SourceChannel: "channel-99", + Data: bz, + } + + require.NotPanics(t, func() { + h.refundSendTracking(ctx, packet) + }) + + // State for the real channel must be untouched. + flow, found := k.GetChannelFlowWithTimeframe(ctx, testChannelID, testDenom, + ratelimittypes.TimeframeType_TIMEFRAME_TYPE_BLOCK, 1000) + require.False(t, found, "unrelated flow must not be created, got %v", flow) +} + +func TestRefundSendTracking_TotalAmountDoesNotUnderflow(t *testing.T) { + h, k, ctx := newTestHooks(t) + + // Seed with a smaller TotalAmount than the refund amount. The refund path + // must clamp to zero instead of producing a negative TotalAmount (which + // would never happen in practice, but we defend against it). + k.SetAddressTransferData(ctx, testSender, testChannelID, testDenom, + ratelimittypes.TimeframeType_TIMEFRAME_TYPE_BLOCK, 1000, + ratelimittypes.AddressTransferData{ + TransferCount: 0, + TotalAmount: sdkmath.NewInt(100), + }) + + h.refundSendTracking(ctx, buildICS20Packet(t, "500")) + + data, _ := k.GetAddressTransferData(ctx, testSender, testChannelID, testDenom, + ratelimittypes.TimeframeType_TIMEFRAME_TYPE_BLOCK, 1000) + require.True(t, data.TotalAmount.IsZero(), "TotalAmount must clamp to zero, got %s", data.TotalAmount.String()) + require.Equal(t, int64(0), data.TransferCount, "TransferCount must not go below zero") +} + +func TestOnAcknowledgementPacketOverride_SuccessAckDoesNotRefund(t *testing.T) { + h, k, ctx := newTestHooks(t) + amount := sdkmath.NewInt(500) + seedOutboundTracking(t, k, ctx, amount) + + // Build a success ack and send it through the override. + successAck := channeltypes.NewResultAcknowledgement([]byte{0x01}) + ackBz := transfertypes.ModuleCdc.MustMarshalJSON(&successAck) + + err := h.OnAcknowledgementPacketOverride(newTestMiddleware(), ctx, testChannelID, buildICS20Packet(t, "500"), ackBz, sdk.AccAddress{}) + require.NoError(t, err) + + // Tracking must still reflect the outbound transfer — nothing refunded. + flow, _ := k.GetChannelFlowWithTimeframe(ctx, testChannelID, testDenom, + ratelimittypes.TimeframeType_TIMEFRAME_TYPE_BLOCK, 1000) + require.True(t, flow.NetFlow.Equal(amount.Neg()), "success ack must not refund supply-shift, got %s", flow.NetFlow.String()) + + data, _ := k.GetAddressTransferData(ctx, testSender, testChannelID, testDenom, + ratelimittypes.TimeframeType_TIMEFRAME_TYPE_BLOCK, 1000) + require.Equal(t, int64(1), data.TransferCount) + require.True(t, data.TotalAmount.Equal(amount)) +} + +func TestOnAcknowledgementPacketOverride_ErrorAckRefunds(t *testing.T) { + h, k, ctx := newTestHooks(t) + amount := sdkmath.NewInt(500) + seedOutboundTracking(t, k, ctx, amount) + + errorAck := channeltypes.NewErrorAcknowledgement(transfertypes.ErrReceiveDisabled) + ackBz := transfertypes.ModuleCdc.MustMarshalJSON(&errorAck) + + err := h.OnAcknowledgementPacketOverride(newTestMiddleware(), ctx, testChannelID, buildICS20Packet(t, "500"), ackBz, sdk.AccAddress{}) + require.NoError(t, err) + + flow, _ := k.GetChannelFlowWithTimeframe(ctx, testChannelID, testDenom, + ratelimittypes.TimeframeType_TIMEFRAME_TYPE_BLOCK, 1000) + require.True(t, flow.NetFlow.IsZero(), "error ack must refund supply-shift to zero, got %s", flow.NetFlow.String()) + + data, _ := k.GetAddressTransferData(ctx, testSender, testChannelID, testDenom, + ratelimittypes.TimeframeType_TIMEFRAME_TYPE_BLOCK, 1000) + require.Equal(t, int64(0), data.TransferCount) + require.True(t, data.TotalAmount.IsZero()) +} + +func TestOnTimeoutPacketOverride_Refunds(t *testing.T) { + h, k, ctx := newTestHooks(t) + amount := sdkmath.NewInt(500) + seedOutboundTracking(t, k, ctx, amount) + + err := h.OnTimeoutPacketOverride(newTestMiddleware(), ctx, testChannelID, buildICS20Packet(t, "500"), sdk.AccAddress{}) + require.NoError(t, err) + + flow, _ := k.GetChannelFlowWithTimeframe(ctx, testChannelID, testDenom, + ratelimittypes.TimeframeType_TIMEFRAME_TYPE_BLOCK, 1000) + require.True(t, flow.NetFlow.IsZero(), "timeout must refund supply-shift to zero, got %s", flow.NetFlow.String()) + + data, _ := k.GetAddressTransferData(ctx, testSender, testChannelID, testDenom, + ratelimittypes.TimeframeType_TIMEFRAME_TYPE_BLOCK, 1000) + require.Equal(t, int64(0), data.TransferCount) + require.True(t, data.TotalAmount.IsZero()) +} diff --git a/x/tokenization/client/cli/help_links.go b/x/tokenization/client/cli/help_links.go index b9ebe35c..0c2b6954 100644 --- a/x/tokenization/client/cli/help_links.go +++ b/x/tokenization/client/cli/help_links.go @@ -95,7 +95,7 @@ func schemaHelpFooter(protoFile string) string { Schema & Documentation: Proto definition: %s/%s Full OpenAPI spec: %s/docs/static/openapi.yml - SDK CLI docs: bitbadgeschaind sdk docs messages (if SDK CLI is installed)`, + SDK CLI docs: bitbadgeschaind cli sdk docs messages (if SDK CLI is installed)`, protoBaseURL, protoFile, repoBaseURL) } diff --git a/x/tokenization/keeper/approval_comparison.go b/x/tokenization/keeper/approval_comparison.go index 25ff16bd..c04010b8 100644 --- a/x/tokenization/keeper/approval_comparison.go +++ b/x/tokenization/keeper/approval_comparison.go @@ -1,6 +1,8 @@ package keeper import ( + "bytes" + "github.com/bitbadges/bitbadgeschain/x/tokenization/types" "github.com/gogo/protobuf/proto" ) @@ -18,7 +20,11 @@ func compareUintRanges(a, b []*types.UintRange) bool { return true } -// compareApprovalCriteria compares two protobuf messages for equality using marshaling +// compareApprovalCriteria compares two protobuf messages for equality using +// canonical binary marshaling. proto.MarshalTextString is not deterministic +// across gogo/protobuf versions (whitespace, field ordering), so binary Marshal +// is used instead — it is the same encoding used for consensus state and is +// stable across nodes. func compareApprovalCriteria(a, b proto.Message) bool { if (a == nil) != (b == nil) { return false @@ -26,10 +32,12 @@ func compareApprovalCriteria(a, b proto.Message) bool { if a == nil && b == nil { return true } - // Use protobuf text marshaling for comparison (more reliable than string comparison) - aBytes := proto.MarshalTextString(a) - bBytes := proto.MarshalTextString(b) - return aBytes == bBytes + aBytes, errA := proto.Marshal(a) + bBytes, errB := proto.Marshal(b) + if errA != nil || errB != nil { + return false + } + return bytes.Equal(aBytes, bBytes) } // collectionApprovalEqual compares two CollectionApproval objects for equality, diff --git a/x/tokenization/keeper/collection_stats.go b/x/tokenization/keeper/collection_stats.go index 78ff100f..8d5daa32 100644 --- a/x/tokenization/keeper/collection_stats.go +++ b/x/tokenization/keeper/collection_stats.go @@ -77,8 +77,10 @@ func (k Keeper) UpdateCirculatingSupplyOnBacking( var err error if isBacking { - // Backing removes from circulation - stats.Balances, err = types.SubtractBalancesWithZeroForUnderflows(ctx, balances, stats.Balances) + // Backing removes from circulation. Use non-clamping Subtract so any drift + // between stats.Balances and the real balance store surfaces as a loud + // error instead of silently sticking at zero. + stats.Balances, err = types.SubtractBalances(ctx, balances, stats.Balances) if err != nil { return err } diff --git a/x/tokenization/keeper/collection_stats_test.go b/x/tokenization/keeper/collection_stats_test.go index 51d552f1..73adb422 100644 --- a/x/tokenization/keeper/collection_stats_test.go +++ b/x/tokenization/keeper/collection_stats_test.go @@ -211,7 +211,10 @@ func TestCollectionStats_UpdateCirculatingSupplyOnBacking(t *testing.T) { require.True(t, got.Balances[0].Amount.Equal(sdkmath.NewUint(90))) } -func TestCollectionStats_UpdateCirculatingSupplyOnBacking_UnderflowClampsToZero(t *testing.T) { +func TestCollectionStats_UpdateCirculatingSupplyOnBacking_UnderflowErrors(t *testing.T) { + // v30: the backing path now uses non-clamping SubtractBalances. Drift between + // stats.Balances and a backing request must surface as a loud error instead + // of silently sticking at zero, so any upstream accounting bug is caught here. suite := new(TestSuite) suite.SetT(t) suite.SetupTest() @@ -219,7 +222,6 @@ func TestCollectionStats_UpdateCirculatingSupplyOnBacking_UnderflowClampsToZero( k := suite.app.TokenizationKeeper collectionId := sdkmath.NewUint(1) - // Set initial supply err := k.SetCollectionStatsInStore(ctx, collectionId, &types.CollectionStats{ HolderCount: sdkmath.NewUint(1), Balances: []*types.Balance{{ @@ -230,22 +232,20 @@ func TestCollectionStats_UpdateCirculatingSupplyOnBacking_UnderflowClampsToZero( }) require.NoError(t, err) - // Backing more than supply clamps to zero (uses SubtractBalancesWithZeroForUnderflows) + // Attempt to back more than the recorded circulating supply. backingBalances := []*types.Balance{{ - Amount: sdkmath.NewUint(200), // More than 100 + Amount: sdkmath.NewUint(200), // more than 100 TokenIds: []*types.UintRange{{Start: sdkmath.NewUint(1), End: sdkmath.NewUint(1)}}, OwnershipTimes: GetFullUintRanges(), }} err = k.UpdateCirculatingSupplyOnBacking(ctx, collectionId, backingBalances, true) - require.NoError(t, err) - got, _ := k.GetCollectionStatsFromStore(ctx, collectionId) + require.Error(t, err, "backing more than circulating supply must return an error") - // Should clamp to zero - totalSupply := sdkmath.ZeroUint() - for _, bal := range got.Balances { - totalSupply = totalSupply.Add(bal.Amount) - } - require.True(t, totalSupply.IsZero() || got.Balances[0].Amount.IsZero()) + // Stats must not have been mutated by the failed operation. + got, _ := k.GetCollectionStatsFromStore(ctx, collectionId) + require.Len(t, got.Balances, 1) + require.True(t, got.Balances[0].Amount.Equal(sdkmath.NewUint(100)), + "circulating supply must remain unchanged after a failed backing, got %s", got.Balances[0].Amount.String()) } func TestCollectionStats_UpdateHolderCount_NewHolder(t *testing.T) { diff --git a/x/tokenization/keeper/migrations.go b/x/tokenization/keeper/migrations.go index 00bc5074..4b3106ef 100644 --- a/x/tokenization/keeper/migrations.go +++ b/x/tokenization/keeper/migrations.go @@ -4,7 +4,6 @@ import ( "context" "encoding/json" - sdkmath "cosmossdk.io/math" "cosmossdk.io/store/prefix" storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/runtime" @@ -57,7 +56,6 @@ func migrateIncomingApprovalCriteria(approvalCriteria *newtypes.IncomingApproval if approvalCriteria == nil { return } - migrateVotingChallenges(approvalCriteria.VotingChallenges) } // migrateOutgoingApprovalCriteria ensures new v29 fields have explicit defaults after JSON migration. @@ -65,7 +63,6 @@ func migrateOutgoingApprovalCriteria(approvalCriteria *newtypes.OutgoingApproval if approvalCriteria == nil { return } - migrateVotingChallenges(approvalCriteria.VotingChallenges) } // migrateApprovalCriteria ensures new v29 fields have explicit defaults after JSON migration. @@ -74,7 +71,6 @@ func migrateApprovalCriteria(approvalCriteria *newtypes.ApprovalCriteria) { if approvalCriteria == nil { return } - migrateVotingChallenges(approvalCriteria.VotingChallenges) // Migrate AltTimeChecks: new fields default to empty slices via JSON (no explicit action needed) @@ -85,54 +81,6 @@ func migrateApprovalCriteria(approvalCriteria *newtypes.ApprovalCriteria) { // However, the v27 type still has it — we handle this in MigrateCollections directly. } -// migrateVotingChallenges ensures new v29 voting challenge fields have explicit defaults. -// resetAfterExecution defaults to false, delayAfterQuorum defaults to zero Uint. -func migrateVotingChallenges(challenges []*newtypes.VotingChallenge) { - for _, challenge := range challenges { - if challenge == nil { - continue - } - // resetAfterExecution defaults to false (Go zero value, no action needed) - if challenge.DelayAfterQuorum.IsNil() { - challenge.DelayAfterQuorum = sdkmath.NewUint(0) - } - } -} - -// migrateCollectionApprovalRoyalties moves UserRoyalties from the old standalone field (field 13) -// into UserApprovalSettings.UserRoyalties on each collection approval. -// The old and new approval slices must be the same length and in the same order (from JSON marshal/unmarshal). -func migrateCollectionApprovalRoyalties(oldApprovals []*oldtypes.CollectionApproval, newApprovals []*newtypes.CollectionApproval) { - for i, oldApproval := range oldApprovals { - if i >= len(newApprovals) { - break - } - if oldApproval.ApprovalCriteria == nil || oldApproval.ApprovalCriteria.UserRoyalties == nil { - continue - } - - oldRoyalties := oldApproval.ApprovalCriteria.UserRoyalties - // Skip if royalties are effectively empty - if oldRoyalties.Percentage.IsNil() || oldRoyalties.Percentage.IsZero() { - continue - } - - newCriteria := newApprovals[i].ApprovalCriteria - if newCriteria == nil { - continue - } - - if newCriteria.UserApprovalSettings == nil { - newCriteria.UserApprovalSettings = &newtypes.UserApprovalSettings{} - } - - newCriteria.UserApprovalSettings.UserRoyalties = &newtypes.UserRoyalties{ - Percentage: oldRoyalties.Percentage, - PayoutAddress: oldRoyalties.PayoutAddress, - } - } -} - func MigrateIncomingApprovals(incomingApprovals []*newtypes.UserIncomingApproval) []*newtypes.UserIncomingApproval { for _, approval := range incomingApprovals { if approval.ApprovalCriteria == nil { @@ -191,9 +139,6 @@ func MigrateCollections(ctx sdk.Context, store storetypes.KVStore, k Keeper) err return err } - // Migrate UserRoyalties from old standalone field into UserApprovalSettings - migrateCollectionApprovalRoyalties(oldCollection.CollectionApprovals, newCollection.CollectionApprovals) - newCollection.CollectionApprovals = MigrateApprovals(newCollection.CollectionApprovals) if newCollection.DefaultBalances != nil { newCollection.DefaultBalances.IncomingApprovals = MigrateIncomingApprovals(newCollection.DefaultBalances.IncomingApprovals) From 227342c3f7eb514afe455ecad859521f080b6083 Mon Sep 17 00:00:00 2001 From: Trevor Miller <61992896+trevormil@users.noreply.github.com> Date: Mon, 20 Apr 2026 13:41:35 -0400 Subject: [PATCH 11/24] feat(v30): re-derive collection addresses with tokenization module name (#74) (#76) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The x/badges module was renamed to x/tokenization in v23, but the migration that re-derives collection addresses with the new module name — and moves the corresponding bank balances — was never wired into any upgrade handler. Every existing mainnet collection still stores a mintEscrowAddress / cosmosCoinBackedPath.address / cosmosCoinWrapperPath.address derived from module="badges", while today's msg handlers and every downstream consumer derives with module="tokenization". The daily indexer consistency check surfaced this as a 16-field-per-collection drift across all 11 active collections on mainnet. This adds migrateCollectionAddressesFromBadgesToTokenization and hooks it into the existing MigrateCollections loop so v30 will: 1. For each collection, compute the legacy (badges) and new (tokenization) forms of mintEscrowAddress + cosmosCoinBackedPath.address + every cosmosCoinWrapperPath.address. 2. Move any bank balances from the old address to the new one via bankKeeper.SendCoins. No-op when balances are zero (common for fresh wrapper/backed paths that never held funds). 3. Flip the reserved-protocol-address flag from the old address to the new one so downstream lookups don't treat stale module addresses as reserved. 4. Overwrite the stored address on the collection so future queries return the tokenization-derived value. All steps are skipped when old == new, so re-running the migration (or running it on a chain that was created post-rename) is a no-op. Derivation helpers are direct ports of the ones in msg_server_universal_update_collection.go with a pluggable module name. Pairs with bitbadges-indexer#100 which mirrors chain-augmented fields in the handler + has a one-shot v29-patch migration to re-sync DB state from chain; after v30 runs, that migration will pick up the new addresses. Co-authored-by: Claude Opus 4.7 (1M context) --- x/tokenization/keeper/migrations.go | 172 ++++++++++++++++++++++++++++ 1 file changed, 172 insertions(+) diff --git a/x/tokenization/keeper/migrations.go b/x/tokenization/keeper/migrations.go index 4b3106ef..cce01aa2 100644 --- a/x/tokenization/keeper/migrations.go +++ b/x/tokenization/keeper/migrations.go @@ -2,17 +2,182 @@ package keeper import ( "context" + "encoding/binary" "encoding/json" + errorsmod "cosmossdk.io/errors" + sdkmath "cosmossdk.io/math" "cosmossdk.io/store/prefix" storetypes "cosmossdk.io/store/types" "github.com/cosmos/cosmos-sdk/runtime" sdk "github.com/cosmos/cosmos-sdk/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" newtypes "github.com/bitbadges/bitbadgeschain/x/tokenization/types" oldtypes "github.com/bitbadges/bitbadgeschain/x/tokenization/types/v29" ) +// The x/badges module was renamed to x/tokenization in v23, but the migration that +// re-derives collection addresses with the new module name (and moves the corresponding +// bank balances) was never wired into an upgrade handler. As a result, every existing +// collection on mainnet still has a mintEscrowAddress / cosmosCoinBackedPath.address / +// cosmosCoinWrapperPath.address derived from module="badges", while today's msg handlers +// and every downstream consumer (SDK, indexer, frontend) derives with module="tokenization". +// v30 is the catch-up migration: for each collection we compute the new tokenization-derived +// address, move all bank balances from the old address, rewrite the stored address on the +// collection, and flip the reserved-protocol-address flag. Idempotent — if old == new +// (which happens for any collection created after the migration ships), we skip. +const ( + oldAddressModuleName = "badges" +) + +// generateMintEscrowAddressWithModuleName reproduces UniversalUpdateCollection's address +// derivation with a pluggable module name. Used to compute both the legacy (badges) and +// new (tokenization) addresses for a collection so we can migrate between them. +func generateMintEscrowAddressWithModuleName(moduleName string, collectionId sdkmath.Uint) (sdk.AccAddress, error) { + derivationKey := make([]byte, DerivationKeyLength) + binary.BigEndian.PutUint64(derivationKey, collectionId.Uint64()) + ac, err := authtypes.NewModuleCredential(moduleName, AccountGenerationPrefix, derivationKey) + if err != nil { + return nil, err + } + return sdk.AccAddress(ac.Address()), nil +} + +// generatePathAddressWithModuleName mirrors generatePathAddress with a pluggable module name. +func generatePathAddressWithModuleName(moduleName string, pathString string, prefix []byte) (sdk.AccAddress, error) { + fullPathBytes := []byte(pathString) + ac, err := authtypes.NewModuleCredential(moduleName, prefix, fullPathBytes) + if err != nil { + return nil, errorsmod.Wrap(err, "failed to generate module credential") + } + return sdk.AccAddress(ac.Address()), nil +} + +// migrateBankBalancesBetweenAddresses moves every coin held by oldAddress to newAddress. +// No-op when the balance is zero (common for fresh wrapper/backed paths that never held funds). +func (k Keeper) migrateBankBalancesBetweenAddresses(ctx sdk.Context, oldAddress, newAddress string) error { + if oldAddress == newAddress { + return nil + } + oldAddr, err := sdk.AccAddressFromBech32(oldAddress) + if err != nil { + return errorsmod.Wrapf(err, "invalid old address %s", oldAddress) + } + newAddr, err := sdk.AccAddressFromBech32(newAddress) + if err != nil { + return errorsmod.Wrapf(err, "invalid new address %s", newAddress) + } + + balances := k.bankKeeper.GetAllBalances(ctx, oldAddr) + if balances.IsZero() { + return nil + } + if err := k.bankKeeper.SendCoins(ctx, oldAddr, newAddr, balances); err != nil { + return errorsmod.Wrapf(err, "failed to migrate balances from %s to %s", oldAddress, newAddress) + } + return nil +} + +// migrateReservedProtocolAddressMapping flips the reserved-protocol-address flag from the +// old address to the new one. The old flag is cleared so future lookups don't accidentally +// treat a stale module address as reserved. +func (k Keeper) migrateReservedProtocolAddressMapping(ctx sdk.Context, oldAddress, newAddress string) error { + if oldAddress == newAddress { + return nil + } + if err := k.SetReservedProtocolAddressInStore(ctx, oldAddress, false); err != nil { + return errorsmod.Wrapf(err, "failed to clear reserved flag on old address %s", oldAddress) + } + if err := k.SetReservedProtocolAddressInStore(ctx, newAddress, true); err != nil { + return errorsmod.Wrapf(err, "failed to set reserved flag on new address %s", newAddress) + } + return nil +} + +// migrateCollectionAddressesFromBadgesToTokenization updates a single collection's derived +// addresses in-place (mintEscrowAddress + cosmosCoinBackedPath.address + wrapper path +// addresses), moving bank balances from each old address to each new one. Mutates the +// passed-in collection pointer so the caller can persist it. +func (k Keeper) migrateCollectionAddressesFromBadgesToTokenization(ctx sdk.Context, collection *newtypes.TokenCollection) error { + newModuleName := newtypes.ModuleName // "tokenization" + + // 1. mintEscrowAddress + oldMint, err := generateMintEscrowAddressWithModuleName(oldAddressModuleName, collection.CollectionId) + if err != nil { + return errorsmod.Wrapf(err, "mint old derivation for collection %s", collection.CollectionId) + } + newMint, err := generateMintEscrowAddressWithModuleName(newModuleName, collection.CollectionId) + if err != nil { + return errorsmod.Wrapf(err, "mint new derivation for collection %s", collection.CollectionId) + } + oldMintStr, newMintStr := oldMint.String(), newMint.String() + if oldMintStr != newMintStr { + if err := k.migrateBankBalancesBetweenAddresses(ctx, oldMintStr, newMintStr); err != nil { + return errorsmod.Wrapf(err, "mint bank migration for collection %s", collection.CollectionId) + } + if err := k.migrateReservedProtocolAddressMapping(ctx, oldMintStr, newMintStr); err != nil { + return errorsmod.Wrapf(err, "mint reserved-flag migration for collection %s", collection.CollectionId) + } + collection.MintEscrowAddress = newMintStr + } + + // 2. cosmosCoinBackedPath.address (if present) + if collection.Invariants != nil && collection.Invariants.CosmosCoinBackedPath != nil { + backed := collection.Invariants.CosmosCoinBackedPath + if backed.Conversion != nil && backed.Conversion.SideA != nil && backed.Conversion.SideA.Denom != "" { + denom := backed.Conversion.SideA.Denom + oldAddr, err := generatePathAddressWithModuleName(oldAddressModuleName, denom, BackedPathGenerationPrefix) + if err != nil { + return errorsmod.Wrapf(err, "backed old derivation for denom %s", denom) + } + newAddr, err := generatePathAddressWithModuleName(newModuleName, denom, BackedPathGenerationPrefix) + if err != nil { + return errorsmod.Wrapf(err, "backed new derivation for denom %s", denom) + } + oldStr, newStr := oldAddr.String(), newAddr.String() + if oldStr != newStr { + if err := k.migrateBankBalancesBetweenAddresses(ctx, oldStr, newStr); err != nil { + return errorsmod.Wrapf(err, "backed bank migration for denom %s", denom) + } + if err := k.migrateReservedProtocolAddressMapping(ctx, oldStr, newStr); err != nil { + return errorsmod.Wrapf(err, "backed reserved-flag migration for denom %s", denom) + } + backed.Address = newStr + } + } + } + + // 3. cosmosCoinWrapperPaths[].address + for i := range collection.CosmosCoinWrapperPaths { + path := collection.CosmosCoinWrapperPaths[i] + if path == nil || path.Denom == "" { + continue + } + oldAddr, err := generatePathAddressWithModuleName(oldAddressModuleName, path.Denom, WrapperPathGenerationPrefix) + if err != nil { + return errorsmod.Wrapf(err, "wrapper old derivation for denom %s", path.Denom) + } + newAddr, err := generatePathAddressWithModuleName(newModuleName, path.Denom, WrapperPathGenerationPrefix) + if err != nil { + return errorsmod.Wrapf(err, "wrapper new derivation for denom %s", path.Denom) + } + oldStr, newStr := oldAddr.String(), newAddr.String() + if oldStr == newStr { + continue + } + if err := k.migrateBankBalancesBetweenAddresses(ctx, oldStr, newStr); err != nil { + return errorsmod.Wrapf(err, "wrapper bank migration for denom %s", path.Denom) + } + if err := k.migrateReservedProtocolAddressMapping(ctx, oldStr, newStr); err != nil { + return errorsmod.Wrapf(err, "wrapper reserved-flag migration for denom %s", path.Denom) + } + path.Address = newStr + } + + return nil +} + // MigrateTokenizationKeeper migrates the tokenization keeper from v28 to v29. // // v29 changes: @@ -145,6 +310,13 @@ func MigrateCollections(ctx sdk.Context, store storetypes.KVStore, k Keeper) err newCollection.DefaultBalances.OutgoingApprovals = MigrateOutgoingApprovals(newCollection.DefaultBalances.OutgoingApprovals) } + // Re-derive module addresses with the current "tokenization" module name and move + // any bank balances off the legacy "badges"-derived addresses. See the comment on + // migrateCollectionAddressesFromBadgesToTokenization for the full history. + if err := k.migrateCollectionAddressesFromBadgesToTokenization(ctx, &newCollection); err != nil { + return err + } + // Save the updated collection (with migrated fields) if err := k.SetCollectionInStore(ctx, &newCollection, true); err != nil { return err From cab7c8a10444cd36e31b17f6e57feed73a8181cf Mon Sep 17 00:00:00 2001 From: Trevor Miller Date: Mon, 20 Apr 2026 13:56:29 -0400 Subject: [PATCH 12/24] chore(v30): regenerate openapi.yml Regenerates docs/static/openapi.yml via `ignite generate openapi --enable-proto-vendor --clear-cache`. The scaffolding commit 0b360ad4 had shrunk the spec from ~515KB to 14KB by running ignite without the proto-vendor flag, which dropped every non-cosmos-evm service. Now back to full coverage: all cosmos SDK modules, ibc, gamm, managersplitter, poolmanager, sendmanager, tokenization (v27/v28/v29), and ibcratelimit. proto/buf.lock and proto/buf.yaml updated by the same regen to add the cosmos/evm buf dep and bump googleapis + wellknowntypes. Co-Authored-By: Claude Opus 4.7 (1M context) --- docs/static/openapi.yml | 2 +- proto/buf.lock | 13 +++++++++---- proto/buf.yaml | 43 +++++++++++++++++++++-------------------- 3 files changed, 32 insertions(+), 26 deletions(-) diff --git a/docs/static/openapi.yml b/docs/static/openapi.yml index bc363621..4b1af6cd 100644 --- a/docs/static/openapi.yml +++ b/docs/static/openapi.yml @@ -1 +1 @@ -{"id":"github.com/bitbadges/bitbadgeschain","consumes":["application/json"],"produces":["application/json"],"swagger":"2.0","info":{"description":"Chain github.com/bitbadges/bitbadgeschain REST API","title":"HTTP API Console","contact":{"name":"github.com/bitbadges/bitbadgeschain"},"version":"version not set"},"paths":{"/cosmos.evm.vm.v1.Msg/RegisterPreinstalls":{"post":{"tags":["Msg"],"summary":"RegisterPreinstalls defines a governance operation for directly registering\npreinstalled contracts in the EVM. The authority is the same as is used for\nParams updates.","operationId":"Erc20Msg_RegisterPreinstalls","parameters":[{"description":"MsgRegisterPreinstalls defines a Msg for creating preinstalls in evm state.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.MsgRegisterPreinstalls"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.MsgRegisterPreinstallsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.evm.vm.v1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defined a governance operation for updating the x/vm module\nparameters. The authority is hard-coded to the Cosmos SDK x/gov module\naccount","operationId":"Erc20Msg_UpdateParams","parameters":[{"description":"MsgUpdateParams defines a Msg for updating the x/vm module parameters.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evm/vm/v1/ethereum_tx":{"post":{"tags":["Msg"],"summary":"EthereumTx defines a method submitting Ethereum transactions.","operationId":"Erc20Msg_EthereumTx","parameters":[{"type":"string","format":"byte","description":"from is the bytes of ethereum signer address. This address value is checked\nagainst the address derived from the signature (V, R, S) using the\nsecp256k1 elliptic curve","name":"from","in":"query"},{"type":"string","format":"byte","description":"raw is the raw ethereum transaction","name":"raw","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.MsgEthereumTxResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}}},"definitions":{"cosmos.evm.vm.v1.AccessControl":{"type":"object","title":"AccessControl defines the permission policy of the EVM\nfor creating and calling contracts","properties":{"call":{"title":"call defines the permission policy for calling contracts","$ref":"#/definitions/cosmos.evm.vm.v1.AccessControlType"},"create":{"title":"create defines the permission policy for creating contracts","$ref":"#/definitions/cosmos.evm.vm.v1.AccessControlType"}}},"cosmos.evm.vm.v1.AccessControlType":{"type":"object","title":"AccessControlType defines the permission type for policies","properties":{"access_control_list":{"type":"array","title":"access_control_list defines defines different things depending on the\nAccessType:\n- ACCESS_TYPE_PERMISSIONLESS: list of addresses that are blocked from\nperforming the operation\n- ACCESS_TYPE_RESTRICTED: ignored\n- ACCESS_TYPE_PERMISSIONED: list of addresses that are allowed to perform\nthe operation","items":{"type":"string"}},"access_type":{"title":"access_type defines which type of permission is required for the operation","$ref":"#/definitions/cosmos.evm.vm.v1.AccessType"}}},"cosmos.evm.vm.v1.AccessType":{"description":"- ACCESS_TYPE_PERMISSIONLESS: ACCESS_TYPE_PERMISSIONLESS does not restrict the operation to anyone\n - ACCESS_TYPE_RESTRICTED: ACCESS_TYPE_RESTRICTED restrict the operation to anyone\n - ACCESS_TYPE_PERMISSIONED: ACCESS_TYPE_PERMISSIONED only allows the operation for specific addresses","type":"string","title":"AccessType defines the types of permissions for the operations","default":"ACCESS_TYPE_PERMISSIONLESS","enum":["ACCESS_TYPE_PERMISSIONLESS","ACCESS_TYPE_RESTRICTED","ACCESS_TYPE_PERMISSIONED"]},"cosmos.evm.vm.v1.ExtendedDenomOptions":{"type":"object","properties":{"extended_denom":{"type":"string"}}},"cosmos.evm.vm.v1.Log":{"description":"Log represents an protobuf compatible Ethereum Log that defines a contract\nlog event. These events are generated by the LOG opcode and stored/indexed by\nthe node.\n\nNOTE: address, topics and data are consensus fields. The rest of the fields\nare derived, i.e. filled in by the nodes, but not secured by consensus.","type":"object","properties":{"address":{"type":"string","title":"address of the contract that generated the event"},"block_hash":{"type":"string","title":"block_hash of the block in which the transaction was included"},"block_number":{"type":"string","format":"uint64","title":"block_number of the block in which the transaction was included"},"block_timestamp":{"type":"string","format":"uint64","title":"block_timestamp is the timestamp of the block in which the transaction was"},"data":{"type":"string","format":"byte","title":"data which is supplied by the contract, usually ABI-encoded"},"index":{"type":"string","format":"uint64","title":"index of the log in the block"},"removed":{"description":"removed is true if this log was reverted due to a chain\nreorganisation. You must pay attention to this field if you receive logs\nthrough a filter query.","type":"boolean"},"topics":{"description":"topics is a list of topics provided by the contract.","type":"array","items":{"type":"string"}},"tx_hash":{"type":"string","title":"tx_hash is the transaction hash"},"tx_index":{"type":"string","format":"uint64","title":"tx_index of the transaction in the block"}}},"cosmos.evm.vm.v1.MsgEthereumTxResponse":{"description":"MsgEthereumTxResponse defines the Msg/EthereumTx response type.","type":"object","properties":{"block_hash":{"type":"string","format":"byte","title":"include the block hash for json-rpc to use"},"block_timestamp":{"type":"string","format":"uint64","title":"include the block timestamp for json-rpc to use"},"gas_used":{"type":"string","format":"uint64","title":"gas_used specifies how much gas was consumed by the transaction"},"hash":{"type":"string","title":"hash of the ethereum transaction in hex format. This hash differs from the\nCometBFT sha256 hash of the transaction bytes. See\nhttps://github.com/tendermint/tendermint/issues/6539 for reference"},"logs":{"description":"logs contains the transaction hash and the proto-compatible ethereum\nlogs.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.evm.vm.v1.Log"}},"max_used_gas":{"type":"string","format":"uint64","title":"max_used_gas specifies the gas consumed by the transaction, not including refunds"},"ret":{"type":"string","format":"byte","title":"ret is the returned data from evm function (result or data supplied with\nrevert opcode)"},"vm_error":{"type":"string","title":"vm_error is the error returned by vm execution"}}},"cosmos.evm.vm.v1.MsgRegisterPreinstalls":{"description":"MsgRegisterPreinstalls defines a Msg for creating preinstalls in evm state.","type":"object","properties":{"authority":{"description":"authority is the address of the governance account.","type":"string"},"preinstalls":{"description":"preinstalls defines the preinstalls to create.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.evm.vm.v1.Preinstall"}}}},"cosmos.evm.vm.v1.MsgRegisterPreinstallsResponse":{"description":"MsgRegisterPreinstallsResponse defines the response structure for executing a\nMsgRegisterPreinstalls message.","type":"object"},"cosmos.evm.vm.v1.MsgUpdateParams":{"description":"MsgUpdateParams defines a Msg for updating the x/vm module parameters.","type":"object","properties":{"authority":{"description":"authority is the address of the governance account.","type":"string"},"params":{"description":"params defines the x/vm parameters to update.\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.evm.vm.v1.Params"}}},"cosmos.evm.vm.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"cosmos.evm.vm.v1.Params":{"type":"object","title":"Params defines the EVM module parameters","properties":{"access_control":{"title":"access_control defines the permission policy of the EVM","$ref":"#/definitions/cosmos.evm.vm.v1.AccessControl"},"active_static_precompiles":{"type":"array","title":"active_static_precompiles defines the slice of hex addresses of the\nprecompiled contracts that are active","items":{"type":"string"}},"evm_channels":{"type":"array","title":"evm_channels is the list of channel identifiers from EVM compatible chains","items":{"type":"string"}},"evm_denom":{"description":"evm_denom represents the token denomination used to run the EVM state\ntransitions.","type":"string"},"extended_denom_options":{"$ref":"#/definitions/cosmos.evm.vm.v1.ExtendedDenomOptions"},"extra_eips":{"type":"array","title":"extra_eips defines the additional EIPs for the vm.Config","items":{"type":"string","format":"int64"}},"history_serve_window":{"type":"string","format":"uint64"}}},"cosmos.evm.vm.v1.Preinstall":{"type":"object","title":"Preinstall defines a contract that is preinstalled on-chain with a specific\ncontract address and bytecode","properties":{"address":{"type":"string","title":"address in hex format of the preinstall contract"},"code":{"type":"string","title":"code in hex format for the preinstall contract"},"name":{"type":"string","title":"name of the preinstall contract"}}},"google.protobuf.Any":{"description":"`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }","type":"object","properties":{"@type":{"description":"A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics.","type":"string"}},"additionalProperties":{}},"google.rpc.Status":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"details":{"type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"message":{"type":"string"}}}},"tags":[{"name":"Msg"}]} \ No newline at end of file +{"id":"github.com/bitbadges/bitbadgeschain","consumes":["application/json"],"produces":["application/json"],"swagger":"2.0","info":{"description":"Chain github.com/bitbadges/bitbadgeschain REST API","title":"HTTP API Console","contact":{"name":"github.com/bitbadges/bitbadgeschain"},"version":"version not set"},"paths":{"/bitbadges/bitbadgeschain/managersplitter":{"get":{"tags":["Query"],"summary":"AllManagerSplitters queries all manager splitters.","operationId":"GithubCombitbadgesbitbadgeschainQuery_AllManagerSplitters","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/managersplitter.QueryAllManagerSplittersResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/managersplitter/params":{"get":{"tags":["Query"],"summary":"Parameters queries the parameters of the module.","operationId":"GithubCombitbadgesbitbadgeschainQuery_ParamsMixin22","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/managersplitter.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/managersplitter/{address}":{"get":{"tags":["Query"],"summary":"ManagerSplitter queries a manager splitter by address.","operationId":"GithubCombitbadgesbitbadgeschainQuery_ManagerSplitter","parameters":[{"type":"string","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/managersplitter.QueryGetManagerSplitterResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/sendmanager/balance/{address}/{denom}":{"get":{"tags":["Query"],"summary":"Balance queries the balance of a specific denom for an address with alias routing.\nThis allows querying both standard coins and alias denoms (e.g., badgeslp:).","operationId":"GithubCombitbadgesbitbadgeschainQuery_Balance","parameters":[{"type":"string","description":"address is the address to query balances for.","name":"address","in":"path","required":true},{"type":"string","description":"denom is the specific denomination to query the balance for.","name":"denom","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/sendmanager.QueryBalanceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/sendmanager/params":{"get":{"tags":["Query"],"summary":"Parameters queries the parameters of the module.","operationId":"GithubCombitbadgesbitbadgeschainQuery_ParamsMixin34","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/sendmanager.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/tokenization/get_address_list/{listId}":{"get":{"tags":["Query"],"summary":"Queries an address list by ID.","operationId":"GithubCombitbadgesbitbadgeschainQuery_GetAddressList","parameters":[{"type":"string","name":"listId","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.QueryGetAddressListResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/tokenization/get_all_reserved_protocol_addresses":{"get":{"tags":["Query"],"summary":"Queries all reserved protocol addresses.","operationId":"GithubCombitbadgesbitbadgeschainQuery_GetAllReservedProtocolAddresses","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.QueryGetAllReservedProtocolAddressesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/tokenization/get_approvals_tracker/{collectionId}/{approvalLevel}/{approverAddress}/{amountTrackerId}/{trackerType}/{approvedAddress}":{"get":{"tags":["Query"],"summary":"Queries an approvals tracker by ID.","operationId":"GithubCombitbadgesbitbadgeschainQuery_GetApprovalTracker","parameters":[{"type":"string","name":"collectionId","in":"path","required":true},{"type":"string","description":"\"collection\" or \"incoming\" or \"outgoing\"","name":"approvalLevel","in":"path","required":true},{"type":"string","description":"if approvalLevel is \"collection\", leave blank","name":"approverAddress","in":"path","required":true},{"type":"string","name":"amountTrackerId","in":"path","required":true},{"type":"string","name":"trackerType","in":"path","required":true},{"type":"string","description":"if trackerType is \"overall\", leave blank","name":"approvedAddress","in":"path","required":true},{"type":"string","name":"approvalId","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.QueryGetApprovalTrackerResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/tokenization/get_balance/{collectionId}/{address}":{"get":{"tags":["Query"],"summary":"Queries an addresses balance for a collection, specified by its ID.","operationId":"GithubCombitbadgesbitbadgeschainQuery_GetBalance","parameters":[{"type":"string","name":"collectionId","in":"path","required":true},{"type":"string","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.QueryGetBalanceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/tokenization/get_balance_for_token/{collectionId}/{address}/{tokenId}":{"get":{"tags":["Query"],"summary":"Queries the balance amount for a specific token ID at a specific time.","operationId":"GithubCombitbadgesbitbadgeschainQuery_GetBalanceForToken","parameters":[{"type":"string","name":"collectionId","in":"path","required":true},{"type":"string","name":"address","in":"path","required":true},{"type":"string","name":"tokenId","in":"path","required":true},{"type":"string","description":"Optional - milliseconds since epoch, defaults to current block time","name":"time","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.QueryGetBalanceForTokenResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/tokenization/get_challenge_tracker/{collectionId}/{approvalLevel}/{approverAddress}/{challengeTrackerId}/{leafIndex}":{"get":{"tags":["Query"],"summary":"Queries the number of times a given leaf has been used for a given merkle challenge.","operationId":"GithubCombitbadgesbitbadgeschainQuery_GetChallengeTracker","parameters":[{"type":"string","name":"collectionId","in":"path","required":true},{"type":"string","description":"\"collection\" or \"incoming\" or \"outgoing\"","name":"approvalLevel","in":"path","required":true},{"type":"string","description":"if approvalLevel is \"collection\", leave blank","name":"approverAddress","in":"path","required":true},{"type":"string","name":"challengeTrackerId","in":"path","required":true},{"type":"string","name":"leafIndex","in":"path","required":true},{"type":"string","name":"approvalId","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.QueryGetChallengeTrackerResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/tokenization/get_collection/{collectionId}":{"get":{"tags":["Query"],"summary":"Queries a collection by ID.","operationId":"GithubCombitbadgesbitbadgeschainQuery_GetCollection","parameters":[{"type":"string","name":"collectionId","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.QueryGetCollectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/tokenization/get_collection_stats/{collectionId}":{"get":{"tags":["Query"],"summary":"Queries collection stats (holder count and circulating supply) by collection ID.","operationId":"GithubCombitbadgesbitbadgeschainQuery_GetCollectionStats","parameters":[{"type":"string","name":"collectionId","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.QueryGetCollectionStatsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/tokenization/get_dynamic_store/{storeId}":{"get":{"tags":["Query"],"summary":"Queries a dynamic store by ID.","operationId":"GithubCombitbadgesbitbadgeschainQuery_GetDynamicStore","parameters":[{"type":"string","name":"storeId","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.QueryGetDynamicStoreResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/tokenization/get_dynamic_store_value/{storeId}/{address}":{"get":{"tags":["Query"],"summary":"Queries a dynamic store value by store ID and address.","operationId":"GithubCombitbadgesbitbadgeschainQuery_GetDynamicStoreValue","parameters":[{"type":"string","name":"storeId","in":"path","required":true},{"type":"string","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.QueryGetDynamicStoreValueResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/tokenization/get_eth_signature_tracker/{collectionId}/{approvalLevel}/{approverAddress}/{approvalId}/{challengeTrackerId}/{signature}":{"get":{"tags":["Query"],"summary":"Queries the number of times a given signature has been used for a given ETH signature challenge.","operationId":"GithubCombitbadgesbitbadgeschainQuery_GetETHSignatureTracker","parameters":[{"type":"string","name":"collectionId","in":"path","required":true},{"type":"string","description":"\"collection\" or \"incoming\" or \"outgoing\"","name":"approvalLevel","in":"path","required":true},{"type":"string","description":"if approvalLevel is \"collection\", leave blank","name":"approverAddress","in":"path","required":true},{"type":"string","name":"approvalId","in":"path","required":true},{"type":"string","name":"challengeTrackerId","in":"path","required":true},{"type":"string","name":"signature","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.QueryGetETHSignatureTrackerResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/tokenization/get_vote/{collectionId}/{approvalLevel}/{approverAddress}/{approvalId}/{proposalId}/{voterAddress}":{"get":{"tags":["Query"],"summary":"Queries a vote by collection ID, approval level, approver address, approval ID, proposal ID, and voter address.","operationId":"GithubCombitbadgesbitbadgeschainQuery_GetVote","parameters":[{"type":"string","name":"collectionId","in":"path","required":true},{"type":"string","description":"\"collection\" or \"incoming\" or \"outgoing\"","name":"approvalLevel","in":"path","required":true},{"type":"string","description":"if approvalLevel is \"collection\", leave blank","name":"approverAddress","in":"path","required":true},{"type":"string","name":"approvalId","in":"path","required":true},{"type":"string","name":"proposalId","in":"path","required":true},{"type":"string","name":"voterAddress","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.QueryGetVoteResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/tokenization/get_votes/{collectionId}/{approvalLevel}/{approverAddress}/{approvalId}/{proposalId}":{"get":{"tags":["Query"],"summary":"Queries all votes for a proposal.","operationId":"GithubCombitbadgesbitbadgeschainQuery_GetVotes","parameters":[{"type":"string","name":"collectionId","in":"path","required":true},{"type":"string","description":"\"collection\" or \"incoming\" or \"outgoing\"","name":"approvalLevel","in":"path","required":true},{"type":"string","description":"if approvalLevel is \"collection\", leave blank","name":"approverAddress","in":"path","required":true},{"type":"string","name":"approvalId","in":"path","required":true},{"type":"string","name":"proposalId","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.QueryGetVotesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/tokenization/get_wrappable_balances/{denom}/{address}":{"get":{"tags":["Query"],"summary":"Queries the maximum wrappable amount for a given denom and user address.","operationId":"GithubCombitbadgesbitbadgeschainQuery_GetWrappableBalances","parameters":[{"type":"string","name":"denom","in":"path","required":true},{"type":"string","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.QueryGetWrappableBalancesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/tokenization/is_address_reserved_protocol/{address}":{"get":{"tags":["Query"],"summary":"Queries if an address is a reserved protocol address.","operationId":"GithubCombitbadgesbitbadgeschainQuery_IsAddressReservedProtocol","parameters":[{"type":"string","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.QueryIsAddressReservedProtocolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/bitbadges/bitbadgeschain/tokenization/params":{"get":{"tags":["Query"],"summary":"Parameters queries the parameters of the module.","operationId":"GithubCombitbadgesbitbadgeschainQuery_ParamsMixin53","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.auth.v1beta1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a (governance) operation for updating the x/auth module\nparameters. The authority defaults to the x/gov module account.","operationId":"AuthMsg_UpdateParams","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.authz.v1beta1.Msg/Exec":{"post":{"tags":["Msg"],"summary":"Exec attempts to execute the provided messages using\nauthorizations granted to the grantee. Each message should have only\none signer corresponding to the granter of the authorization.","operationId":"AuthMsg_Exec","parameters":[{"description":"MsgExec attempts to execute the provided messages using\nauthorizations granted to the grantee. Each message should have only\none signer corresponding to the granter of the authorization.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.MsgExec"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.MsgExecResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.authz.v1beta1.Msg/Grant":{"post":{"tags":["Msg"],"summary":"Grant grants the provided authorization to the grantee on the granter's\naccount with the provided expiration time. If there is already a grant\nfor the given (granter, grantee, Authorization) triple, then the grant\nwill be overwritten.","operationId":"AuthMsg_Grant","parameters":[{"description":"MsgGrant is a request type for Grant method. It declares authorization to the grantee\non behalf of the granter with the provided expiration time.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.MsgGrant"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.MsgGrantResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.authz.v1beta1.Msg/Revoke":{"post":{"tags":["Msg"],"summary":"Revoke revokes any authorization corresponding to the provided method name on the\ngranter's account that has been granted to the grantee.","operationId":"AuthMsg_Revoke","parameters":[{"description":"MsgRevoke revokes any authorization with the provided sdk.Msg type on the\ngranter's account with that has been granted to the grantee.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.MsgRevoke"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.MsgRevokeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.autocli.v1.Query/AppOptions":{"post":{"tags":["Query"],"summary":"AppOptions returns the autocli options for all of the modules in an app.","operationId":"AuthQuery_AppOptions","parameters":[{"description":"AppOptionsRequest is the RemoteInfoService/AppOptions request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.autocli.v1.AppOptionsRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.autocli.v1.AppOptionsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.bank.v1beta1.Msg/MultiSend":{"post":{"tags":["Msg"],"summary":"MultiSend defines a method for sending coins from some accounts to other accounts.","operationId":"AuthMsg_MultiSend","parameters":[{"description":"MsgMultiSend represents an arbitrary multi-in, multi-out send message.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.MsgMultiSend"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.MsgMultiSendResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.bank.v1beta1.Msg/Send":{"post":{"tags":["Msg"],"summary":"Send defines a method for sending coins from one account to another account.","operationId":"AuthMsg_Send","parameters":[{"description":"MsgSend represents a message to send coins from one account to another.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.MsgSend"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.MsgSendResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.bank.v1beta1.Msg/SetSendEnabled":{"post":{"tags":["Msg"],"summary":"SetSendEnabled is a governance operation for setting the SendEnabled flag\non any number of Denoms. Only the entries to add or update should be\nincluded. Entries that already exist in the store, but that aren't\nincluded in this message, will be left unchanged.","operationId":"AuthMsg_SetSendEnabled","parameters":[{"description":"MsgSetSendEnabled is the Msg/SetSendEnabled request type.\n\nOnly entries to add/update/delete need to be included.\nExisting SendEnabled entries that are not included in this\nmessage are left unchanged.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.MsgSetSendEnabled"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.MsgSetSendEnabledResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.bank.v1beta1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a governance operation for updating the x/bank module parameters.\nThe authority is defined in the keeper.","operationId":"AuthMsg_UpdateParamsMixin134","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.benchmark.v1.Msg/LoadTest":{"post":{"tags":["Msg"],"summary":"LoadTest defines a method for executing a sequence of load test operations.","operationId":"AuthMsg_LoadTest","parameters":[{"description":"MsgLoadTestOps defines a message containing a sequence of load test operations.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.benchmark.v1.MsgLoadTest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.benchmark.v1.MsgLoadTestResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.circuit.v1.Msg/AuthorizeCircuitBreaker":{"post":{"tags":["Msg"],"summary":"AuthorizeCircuitBreaker allows a super-admin to grant (or revoke) another\naccount's circuit breaker permissions.","operationId":"AuthMsg_AuthorizeCircuitBreaker","parameters":[{"description":"MsgAuthorizeCircuitBreaker defines the Msg/AuthorizeCircuitBreaker request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.circuit.v1.MsgAuthorizeCircuitBreaker"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.circuit.v1.MsgAuthorizeCircuitBreakerResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.circuit.v1.Msg/ResetCircuitBreaker":{"post":{"tags":["Msg"],"summary":"ResetCircuitBreaker resumes processing of Msg's in the state machine that\nhave been been paused using TripCircuitBreaker.","operationId":"AuthMsg_ResetCircuitBreaker","parameters":[{"description":"MsgResetCircuitBreaker defines the Msg/ResetCircuitBreaker request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.circuit.v1.MsgResetCircuitBreaker"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.circuit.v1.MsgResetCircuitBreakerResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.circuit.v1.Msg/TripCircuitBreaker":{"post":{"tags":["Msg"],"summary":"TripCircuitBreaker pauses processing of Msg's in the state machine.","operationId":"AuthMsg_TripCircuitBreaker","parameters":[{"description":"MsgTripCircuitBreaker defines the Msg/TripCircuitBreaker request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.circuit.v1.MsgTripCircuitBreaker"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.circuit.v1.MsgTripCircuitBreakerResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.consensus.v1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a governance operation for updating the x/consensus module parameters.\nThe authority is defined in the keeper.","operationId":"AuthMsg_UpdateParamsMixin149","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.consensus.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.consensus.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.counter.v1.Msg/IncreaseCount":{"post":{"tags":["Msg"],"summary":"IncreaseCount increments the counter by the specified amount.","operationId":"AuthMsg_IncreaseCount","parameters":[{"description":"MsgIncreaseCounter defines a count Msg service counter.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.counter.v1.MsgIncreaseCounter"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.counter.v1.MsgIncreaseCountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.counter.v1.Query/GetCount":{"post":{"tags":["Query"],"summary":"GetCount queries the parameters of x/Counter module.","operationId":"AuthQuery_GetCount","parameters":[{"description":"QueryGetCountRequest defines the request type for querying x/mock count.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.counter.v1.QueryGetCountRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.counter.v1.QueryGetCountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.crisis.v1beta1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a governance operation for updating the x/crisis module\nparameters. The authority is defined in the keeper.","operationId":"AuthMsg_UpdateParamsMixin153","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.crisis.v1beta1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.crisis.v1beta1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.crisis.v1beta1.Msg/VerifyInvariant":{"post":{"tags":["Msg"],"summary":"VerifyInvariant defines a method to verify a particular invariant.","operationId":"AuthMsg_VerifyInvariant","parameters":[{"description":"MsgVerifyInvariant represents a message to verify a particular invariance.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.crisis.v1beta1.MsgVerifyInvariant"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.crisis.v1beta1.MsgVerifyInvariantResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.distribution.v1beta1.Msg/CommunityPoolSpend":{"post":{"description":"WARNING: This method will fail if an external community pool is used.","tags":["Msg"],"summary":"CommunityPoolSpend defines a governance operation for sending tokens from\nthe community pool in the x/distribution module to another account, which\ncould be the governance module itself. The authority is defined in the\nkeeper.","operationId":"AuthMsg_CommunityPoolSpend","parameters":[{"description":"MsgCommunityPoolSpend defines a message for sending tokens from the community\npool to another account. This message is typically executed via a governance\nproposal with the governance module being the executing authority.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgCommunityPoolSpend"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgCommunityPoolSpendResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.distribution.v1beta1.Msg/DepositValidatorRewardsPool":{"post":{"tags":["Msg"],"summary":"DepositValidatorRewardsPool defines a method to provide additional rewards\nto delegators to a specific validator.","operationId":"AuthMsg_DepositValidatorRewardsPool","parameters":[{"description":"DepositValidatorRewardsPool defines the request structure to provide\nadditional rewards to delegators from a specific validator.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPool"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPoolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.distribution.v1beta1.Msg/FundCommunityPool":{"post":{"description":"WARNING: This method will fail if an external community pool is used.","tags":["Msg"],"summary":"FundCommunityPool defines a method to allow an account to directly\nfund the community pool.","operationId":"AuthMsg_FundCommunityPool","parameters":[{"description":"MsgFundCommunityPool allows an account to directly\nfund the community pool.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgFundCommunityPool"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgFundCommunityPoolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.distribution.v1beta1.Msg/SetWithdrawAddress":{"post":{"tags":["Msg"],"summary":"SetWithdrawAddress defines a method to change the withdraw address\nfor a delegator (or validator self-delegation).","operationId":"AuthMsg_SetWithdrawAddress","parameters":[{"description":"MsgSetWithdrawAddress sets the withdraw address for\na delegator (or validator self-delegation).","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgSetWithdrawAddress"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgSetWithdrawAddressResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.distribution.v1beta1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a governance operation for updating the x/distribution\nmodule parameters. The authority is defined in the keeper.","operationId":"AuthMsg_UpdateParamsMixin164","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.distribution.v1beta1.Msg/WithdrawDelegatorReward":{"post":{"tags":["Msg"],"summary":"WithdrawDelegatorReward defines a method to withdraw rewards of delegator\nfrom a single validator.","operationId":"AuthMsg_WithdrawDelegatorReward","parameters":[{"description":"MsgWithdrawDelegatorReward represents delegation withdrawal to a delegator\nfrom a single validator.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgWithdrawDelegatorRewardResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.distribution.v1beta1.Msg/WithdrawValidatorCommission":{"post":{"tags":["Msg"],"summary":"WithdrawValidatorCommission defines a method to withdraw the\nfull commission to the validator address.","operationId":"AuthMsg_WithdrawValidatorCommission","parameters":[{"description":"MsgWithdrawValidatorCommission withdraws the full commission to the validator\naddress.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.MsgWithdrawValidatorCommissionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.evidence.v1beta1.Msg/SubmitEvidence":{"post":{"tags":["Msg"],"summary":"SubmitEvidence submits an arbitrary Evidence of misbehavior such as equivocation or\ncounterfactual signing.","operationId":"AuthMsg_SubmitEvidence","parameters":[{"description":"MsgSubmitEvidence represents a message that supports submitting arbitrary\nEvidence of misbehavior such as equivocation or counterfactual signing.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.evidence.v1beta1.MsgSubmitEvidence"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evidence.v1beta1.MsgSubmitEvidenceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.evm.erc20.v1.Msg/RegisterERC20":{"post":{"tags":["Msg"],"summary":"RegisterERC20 defines a governance operation for registering a token pair\nfor the specified erc20 contract. The authority is hard-coded to the Cosmos\nSDK x/gov module account","operationId":"Erc20Msg_RegisterERC20","parameters":[{"description":"MsgRegisterERC20 is the Msg/RegisterERC20 request type for registering\nan Erc20 contract token pair.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.evm.erc20.v1.MsgRegisterERC20"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.erc20.v1.MsgRegisterERC20Response"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.evm.erc20.v1.Msg/ToggleConversion":{"post":{"tags":["Msg"],"summary":"ToggleConversion defines a governance operation for enabling/disabling a\ntoken pair conversion. The authority is hard-coded to the Cosmos SDK x/gov\nmodule account","operationId":"Erc20Msg_ToggleConversion","parameters":[{"description":"MsgToggleConversion is the Msg/MsgToggleConversion request type for toggling\nan Erc20 contract conversion capability.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.evm.erc20.v1.MsgToggleConversion"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.erc20.v1.MsgToggleConversionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.evm.erc20.v1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a governance operation for updating the x/erc20 module\nparameters. The authority is hard-coded to the Cosmos SDK x/gov module\naccount","operationId":"Erc20Msg_UpdateParams","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.evm.erc20.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.erc20.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.evm.feemarket.v1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defined a governance operation for updating the x/feemarket\nmodule parameters. The authority is hard-coded to the Cosmos SDK x/gov\nmodule account","operationId":"Erc20Msg_UpdateParamsMixin300","parameters":[{"description":"MsgUpdateParams defines a Msg for updating the x/feemarket module parameters.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.evm.feemarket.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.feemarket.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.evm.vm.v1.Msg/RegisterPreinstalls":{"post":{"tags":["Msg"],"summary":"RegisterPreinstalls defines a governance operation for directly registering\npreinstalled contracts in the EVM. The authority is the same as is used for\nParams updates.","operationId":"Erc20Msg_RegisterPreinstalls","parameters":[{"description":"MsgRegisterPreinstalls defines a Msg for creating preinstalls in evm state.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.MsgRegisterPreinstalls"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.MsgRegisterPreinstallsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.evm.vm.v1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defined a governance operation for updating the x/vm module\nparameters. The authority is hard-coded to the Cosmos SDK x/gov module\naccount","operationId":"Erc20Msg_UpdateParamsMixin308","parameters":[{"description":"MsgUpdateParams defines a Msg for updating the x/vm module parameters.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.feegrant.v1beta1.Msg/GrantAllowance":{"post":{"tags":["Msg"],"summary":"GrantAllowance grants fee allowance to the grantee on the granter's\naccount with the provided expiration time.","operationId":"AuthMsg_GrantAllowance","parameters":[{"description":"MsgGrantAllowance adds permission for Grantee to spend up to Allowance\nof fees from the account of Granter.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.MsgGrantAllowance"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.MsgGrantAllowanceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.feegrant.v1beta1.Msg/PruneAllowances":{"post":{"tags":["Msg"],"summary":"PruneAllowances prunes expired fee allowances, currently up to 75 at a time.","operationId":"AuthMsg_PruneAllowances","parameters":[{"description":"MsgPruneAllowances prunes expired fee allowances.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.MsgPruneAllowances"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.MsgPruneAllowancesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.feegrant.v1beta1.Msg/RevokeAllowance":{"post":{"tags":["Msg"],"summary":"RevokeAllowance revokes any fee allowance of granter's account that\nhas been granted to the grantee.","operationId":"AuthMsg_RevokeAllowance","parameters":[{"description":"MsgRevokeAllowance removes any existing Allowance from Granter to Grantee.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.MsgRevokeAllowance"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.MsgRevokeAllowanceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1.Msg/CancelProposal":{"post":{"tags":["Msg"],"summary":"CancelProposal defines a method to cancel governance proposal","operationId":"AuthMsg_CancelProposal","parameters":[{"description":"MsgCancelProposal is the Msg/CancelProposal request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgCancelProposal"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgCancelProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1.Msg/Deposit":{"post":{"tags":["Msg"],"summary":"Deposit defines a method to add deposit on a specific proposal.","operationId":"AuthMsg_Deposit","parameters":[{"description":"MsgDeposit defines a message to submit a deposit to an existing proposal.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgDeposit"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgDepositResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1.Msg/ExecLegacyContent":{"post":{"tags":["Msg"],"summary":"ExecLegacyContent defines a Msg to be in included in a MsgSubmitProposal\nto execute a legacy content-based proposal.","operationId":"AuthMsg_ExecLegacyContent","parameters":[{"description":"MsgExecLegacyContent is used to wrap the legacy content field into a message.\nThis ensures backwards compatibility with v1beta1.MsgSubmitProposal.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgExecLegacyContent"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgExecLegacyContentResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1.Msg/SubmitProposal":{"post":{"tags":["Msg"],"summary":"SubmitProposal defines a method to create new proposal given the messages.","operationId":"AuthMsg_SubmitProposal","parameters":[{"description":"MsgSubmitProposal defines an sdk.Msg type that supports submitting arbitrary\nproposal Content.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgSubmitProposal"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgSubmitProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a governance operation for updating the x/gov module\nparameters. The authority is defined in the keeper.","operationId":"AuthMsg_UpdateParamsMixin180","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1.Msg/Vote":{"post":{"tags":["Msg"],"summary":"Vote defines a method to add a vote on a specific proposal.","operationId":"AuthMsg_Vote","parameters":[{"description":"MsgVote defines a message to cast a vote.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgVote"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgVoteResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1.Msg/VoteWeighted":{"post":{"tags":["Msg"],"summary":"VoteWeighted defines a method to add a weighted vote on a specific proposal.","operationId":"AuthMsg_VoteWeighted","parameters":[{"description":"MsgVoteWeighted defines a message to cast a vote.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgVoteWeighted"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.MsgVoteWeightedResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1beta1.Msg/Deposit":{"post":{"tags":["Msg"],"summary":"Deposit defines a method to add deposit on a specific proposal.","operationId":"AuthMsg_DepositMixin184","parameters":[{"description":"MsgDeposit defines a message to submit a deposit to an existing proposal.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.MsgDeposit"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.MsgDepositResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1beta1.Msg/SubmitProposal":{"post":{"tags":["Msg"],"summary":"SubmitProposal defines a method to create new proposal given a content.","operationId":"AuthMsg_SubmitProposalMixin184","parameters":[{"description":"MsgSubmitProposal defines an sdk.Msg type that supports submitting arbitrary\nproposal Content.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.MsgSubmitProposal"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.MsgSubmitProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1beta1.Msg/Vote":{"post":{"tags":["Msg"],"summary":"Vote defines a method to add a vote on a specific proposal.","operationId":"AuthMsg_VoteMixin184","parameters":[{"description":"MsgVote defines a message to cast a vote.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.MsgVote"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.MsgVoteResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.gov.v1beta1.Msg/VoteWeighted":{"post":{"tags":["Msg"],"summary":"VoteWeighted defines a method to add a weighted vote on a specific proposal.","operationId":"AuthMsg_VoteWeightedMixin184","parameters":[{"description":"MsgVoteWeighted defines a message to cast a vote.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.MsgVoteWeighted"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.MsgVoteWeightedResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/CreateGroup":{"post":{"tags":["Msg"],"summary":"CreateGroup creates a new group with an admin account address, a list of members and some optional metadata.","operationId":"AuthMsg_CreateGroup","parameters":[{"description":"MsgCreateGroup is the Msg/CreateGroup request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgCreateGroup"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgCreateGroupResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/CreateGroupPolicy":{"post":{"tags":["Msg"],"summary":"CreateGroupPolicy creates a new group policy using given DecisionPolicy.","operationId":"AuthMsg_CreateGroupPolicy","parameters":[{"description":"MsgCreateGroupPolicy is the Msg/CreateGroupPolicy request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgCreateGroupPolicy"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgCreateGroupPolicyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/CreateGroupWithPolicy":{"post":{"tags":["Msg"],"summary":"CreateGroupWithPolicy creates a new group with policy.","operationId":"AuthMsg_CreateGroupWithPolicy","parameters":[{"description":"MsgCreateGroupWithPolicy is the Msg/CreateGroupWithPolicy request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgCreateGroupWithPolicy"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgCreateGroupWithPolicyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/Exec":{"post":{"tags":["Msg"],"summary":"Exec executes a proposal.","operationId":"AuthMsg_ExecMixin188","parameters":[{"description":"MsgExec is the Msg/Exec request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgExec"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgExecResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/LeaveGroup":{"post":{"tags":["Msg"],"summary":"LeaveGroup allows a group member to leave the group.","operationId":"AuthMsg_LeaveGroup","parameters":[{"description":"MsgLeaveGroup is the Msg/LeaveGroup request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgLeaveGroup"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgLeaveGroupResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/SubmitProposal":{"post":{"tags":["Msg"],"summary":"SubmitProposal submits a new proposal.","operationId":"AuthMsg_SubmitProposalMixin188","parameters":[{"description":"MsgSubmitProposal is the Msg/SubmitProposal request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgSubmitProposal"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgSubmitProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/UpdateGroupAdmin":{"post":{"tags":["Msg"],"summary":"UpdateGroupAdmin updates the group admin with given group id and previous admin address.","operationId":"AuthMsg_UpdateGroupAdmin","parameters":[{"description":"MsgUpdateGroupAdmin is the Msg/UpdateGroupAdmin request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupAdmin"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupAdminResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/UpdateGroupMembers":{"post":{"tags":["Msg"],"summary":"UpdateGroupMembers updates the group members with given group id and admin address.","operationId":"AuthMsg_UpdateGroupMembers","parameters":[{"description":"MsgUpdateGroupMembers is the Msg/UpdateGroupMembers request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupMembers"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupMembersResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/UpdateGroupMetadata":{"post":{"tags":["Msg"],"summary":"UpdateGroupMetadata updates the group metadata with given group id and admin address.","operationId":"AuthMsg_UpdateGroupMetadata","parameters":[{"description":"MsgUpdateGroupMetadata is the Msg/UpdateGroupMetadata request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupMetadata"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupMetadataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/UpdateGroupPolicyAdmin":{"post":{"tags":["Msg"],"summary":"UpdateGroupPolicyAdmin updates a group policy admin.","operationId":"AuthMsg_UpdateGroupPolicyAdmin","parameters":[{"description":"MsgUpdateGroupPolicyAdmin is the Msg/UpdateGroupPolicyAdmin request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyAdmin"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyAdminResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/UpdateGroupPolicyDecisionPolicy":{"post":{"tags":["Msg"],"summary":"UpdateGroupPolicyDecisionPolicy allows a group policy's decision policy to be updated.","operationId":"AuthMsg_UpdateGroupPolicyDecisionPolicy","parameters":[{"description":"MsgUpdateGroupPolicyDecisionPolicy is the Msg/UpdateGroupPolicyDecisionPolicy request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyDecisionPolicy"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyDecisionPolicyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/UpdateGroupPolicyMetadata":{"post":{"tags":["Msg"],"summary":"UpdateGroupPolicyMetadata updates a group policy metadata.","operationId":"AuthMsg_UpdateGroupPolicyMetadata","parameters":[{"description":"MsgUpdateGroupPolicyMetadata is the Msg/UpdateGroupPolicyMetadata request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyMetadata"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgUpdateGroupPolicyMetadataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/Vote":{"post":{"tags":["Msg"],"summary":"Vote allows a voter to vote on a proposal.","operationId":"AuthMsg_VoteMixin188","parameters":[{"description":"MsgVote is the Msg/Vote request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgVote"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgVoteResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.group.v1.Msg/WithdrawProposal":{"post":{"tags":["Msg"],"summary":"WithdrawProposal withdraws a proposal.","operationId":"AuthMsg_WithdrawProposal","parameters":[{"description":"MsgWithdrawProposal is the Msg/WithdrawProposal request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.group.v1.MsgWithdrawProposal"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.MsgWithdrawProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.mint.v1beta1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a governance operation for updating the x/mint module\nparameters. The authority is defaults to the x/gov module account.","operationId":"AuthMsg_UpdateParamsMixin193","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.mint.v1beta1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.mint.v1beta1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.nft.v1beta1.Msg/Send":{"post":{"tags":["Msg"],"summary":"Send defines a method to send a nft from one account to another account.","operationId":"AuthMsg_SendMixin199","parameters":[{"description":"MsgSend represents a message to send a nft from one account to another account.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.MsgSend"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.MsgSendResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.protocolpool.v1.Msg/CancelContinuousFund":{"post":{"tags":["Msg"],"summary":"CancelContinuousFund defines a method for cancelling continuous fund.","operationId":"AuthMsg_CancelContinuousFund","parameters":[{"description":"MsgCancelContinuousFund defines a message to cancel continuous funds for a specific recipient.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.protocolpool.v1.MsgCancelContinuousFund"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.protocolpool.v1.MsgCancelContinuousFundResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.protocolpool.v1.Msg/CommunityPoolSpend":{"post":{"tags":["Msg"],"summary":"CommunityPoolSpend defines a governance operation for sending tokens from\nthe community pool in the x/protocolpool module to another account, which\ncould be the governance module itself. The authority is defined in the\nkeeper.","operationId":"AuthMsg_CommunityPoolSpendMixin204","parameters":[{"description":"MsgCommunityPoolSpend defines a message for sending tokens from the community\npool to another account. This message is typically executed via a governance\nproposal with the governance module being the executing authority.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.protocolpool.v1.MsgCommunityPoolSpend"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.protocolpool.v1.MsgCommunityPoolSpendResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.protocolpool.v1.Msg/CreateContinuousFund":{"post":{"tags":["Msg"],"summary":"CreateContinuousFund defines a method to distribute a percentage of funds to an address continuously.\nThis ContinuousFund can be indefinite or run until a given expiry time.\nFunds come from validator block rewards from x/distribution, but may also come from\nany user who funds the ProtocolPoolEscrow module account directly through x/bank.","operationId":"AuthMsg_CreateContinuousFund","parameters":[{"description":"MsgCreateContinuousFund defines a message for adding continuous funds.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.protocolpool.v1.MsgCreateContinuousFund"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.protocolpool.v1.MsgCreateContinuousFundResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.protocolpool.v1.Msg/FundCommunityPool":{"post":{"tags":["Msg"],"summary":"FundCommunityPool defines a method to allow an account to directly\nfund the community pool.","operationId":"AuthMsg_FundCommunityPoolMixin204","parameters":[{"description":"MsgFundCommunityPool allows an account to directly\nfund the community pool.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.protocolpool.v1.MsgFundCommunityPool"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.protocolpool.v1.MsgFundCommunityPoolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.protocolpool.v1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a governance operation for updating the x/protocolpool module parameters.\nThe authority is defined in the keeper.","operationId":"AuthMsg_UpdateParamsMixin204","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.protocolpool.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.protocolpool.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.slashing.v1beta1.Msg/Unjail":{"post":{"tags":["Msg"],"summary":"Unjail defines a method for unjailing a jailed validator, thus returning\nthem into the bonded validator set, so they can begin receiving provisions\nand rewards again.","operationId":"AuthMsg_Unjail","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.slashing.v1beta1.MsgUnjail"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.slashing.v1beta1.MsgUnjailResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.slashing.v1beta1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a governance operation for updating the x/slashing module\nparameters. The authority defaults to the x/gov module account.","operationId":"AuthMsg_UpdateParamsMixin210","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.slashing.v1beta1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.slashing.v1beta1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.staking.v1beta1.Msg/BeginRedelegate":{"post":{"tags":["Msg"],"summary":"BeginRedelegate defines a method for performing a redelegation\nof coins from a delegator and source validator to a destination validator.","operationId":"AuthMsg_BeginRedelegate","parameters":[{"description":"MsgBeginRedelegate defines a SDK message for performing a redelegation\nof coins from a delegator and source validator to a destination validator.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgBeginRedelegate"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgBeginRedelegateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.staking.v1beta1.Msg/CancelUnbondingDelegation":{"post":{"tags":["Msg"],"summary":"CancelUnbondingDelegation defines a method for performing canceling the unbonding delegation\nand delegate back to previous validator.","operationId":"AuthMsg_CancelUnbondingDelegation","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgCancelUnbondingDelegation"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgCancelUnbondingDelegationResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.staking.v1beta1.Msg/CreateValidator":{"post":{"tags":["Msg"],"summary":"CreateValidator defines a method for creating a new validator.","operationId":"AuthMsg_CreateValidator","parameters":[{"description":"MsgCreateValidator defines a SDK message for creating a new validator.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgCreateValidator"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgCreateValidatorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.staking.v1beta1.Msg/Delegate":{"post":{"tags":["Msg"],"summary":"Delegate defines a method for performing a delegation of coins\nfrom a delegator to a validator.","operationId":"AuthMsg_Delegate","parameters":[{"description":"MsgDelegate defines a SDK message for performing a delegation of coins\nfrom a delegator to a validator.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgDelegate"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgDelegateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.staking.v1beta1.Msg/EditValidator":{"post":{"tags":["Msg"],"summary":"EditValidator defines a method for editing an existing validator.","operationId":"AuthMsg_EditValidator","parameters":[{"description":"MsgEditValidator defines a SDK message for editing an existing validator.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgEditValidator"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgEditValidatorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.staking.v1beta1.Msg/Undelegate":{"post":{"tags":["Msg"],"summary":"Undelegate defines a method for performing an undelegation from a\ndelegate and a validator.","operationId":"AuthMsg_Undelegate","parameters":[{"description":"MsgUndelegate defines a SDK message for performing an undelegation from a\ndelegate and a validator.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgUndelegate"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgUndelegateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.staking.v1beta1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines an operation for updating the x/staking module\nparameters.","operationId":"AuthMsg_UpdateParamsMixin215","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.store.streaming.abci.ABCIListenerService/ListenCommit":{"post":{"tags":["ABCIListenerService"],"summary":"ListenCommit is the corresponding endpoint for ABCIListener.ListenCommit","operationId":"AuthABCIListenerService_ListenCommit","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.store.streaming.abci.ListenCommitRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.store.streaming.abci.ListenCommitResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.store.streaming.abci.ABCIListenerService/ListenFinalizeBlock":{"post":{"tags":["ABCIListenerService"],"summary":"ListenFinalizeBlock is the corresponding endpoint for ABCIListener.ListenEndBlock","operationId":"AuthABCIListenerService_ListenFinalizeBlock","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.store.streaming.abci.ListenFinalizeBlockRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.store.streaming.abci.ListenFinalizeBlockResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.upgrade.v1beta1.Msg/CancelUpgrade":{"post":{"tags":["Msg"],"summary":"CancelUpgrade is a governance operation for cancelling a previously\napproved software upgrade.","operationId":"AuthMsg_CancelUpgrade","parameters":[{"description":"MsgCancelUpgrade is the Msg/CancelUpgrade request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.MsgCancelUpgrade"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.MsgCancelUpgradeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.upgrade.v1beta1.Msg/SoftwareUpgrade":{"post":{"tags":["Msg"],"summary":"SoftwareUpgrade is a governance operation for initiating a software upgrade.","operationId":"AuthMsg_SoftwareUpgrade","parameters":[{"description":"MsgSoftwareUpgrade is the Msg/SoftwareUpgrade request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.MsgSoftwareUpgrade"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.MsgSoftwareUpgradeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.vesting.v1beta1.Msg/CreatePeriodicVestingAccount":{"post":{"tags":["Msg"],"summary":"CreatePeriodicVestingAccount defines a method that enables creating a\nperiodic vesting account.","operationId":"AuthMsg_CreatePeriodicVestingAccount","parameters":[{"description":"MsgCreateVestingAccount defines a message that enables creating a vesting\naccount.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.vesting.v1beta1.MsgCreatePeriodicVestingAccount"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.vesting.v1beta1.MsgCreatePeriodicVestingAccountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.vesting.v1beta1.Msg/CreatePermanentLockedAccount":{"post":{"tags":["Msg"],"summary":"CreatePermanentLockedAccount defines a method that enables creating a permanent\nlocked account.","operationId":"AuthMsg_CreatePermanentLockedAccount","parameters":[{"description":"MsgCreatePermanentLockedAccount defines a message that enables creating a permanent\nlocked account.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.vesting.v1beta1.MsgCreatePermanentLockedAccount"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.vesting.v1beta1.MsgCreatePermanentLockedAccountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos.vesting.v1beta1.Msg/CreateVestingAccount":{"post":{"tags":["Msg"],"summary":"CreateVestingAccount defines a method that enables creating a vesting\naccount.","operationId":"AuthMsg_CreateVestingAccount","parameters":[{"description":"MsgCreateVestingAccount defines a message that enables creating a vesting\naccount.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.vesting.v1beta1.MsgCreateVestingAccount"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.vesting.v1beta1.MsgCreateVestingAccountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/account_info/{address}":{"get":{"tags":["Query"],"summary":"AccountInfo queries account info which is common to all account types.","operationId":"AuthQuery_AccountInfo","parameters":[{"type":"string","description":"address is the account address string.","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.QueryAccountInfoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/accounts":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"Accounts returns all the existing accounts.","operationId":"AuthQuery_Accounts","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.QueryAccountsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/accounts/{address}":{"get":{"tags":["Query"],"summary":"Account returns account details based on address.","operationId":"AuthQuery_Account","parameters":[{"type":"string","description":"address defines the address to query for.","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.QueryAccountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/address_by_id/{id}":{"get":{"tags":["Query"],"summary":"AccountAddressByID returns account address based on account number.","operationId":"AuthQuery_AccountAddressByID","parameters":[{"type":"string","format":"int64","description":"Deprecated, use account_id instead\n\nid is the account number of the address to be queried. This field\nshould have been an uint64 (like all account numbers), and will be\nupdated to uint64 in a future version of the auth query.","name":"id","in":"path","required":true},{"type":"string","format":"uint64","description":"account_id is the account number of the address to be queried.","name":"account_id","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.QueryAccountAddressByIDResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/bech32":{"get":{"tags":["Query"],"summary":"Bech32Prefix queries bech32Prefix","operationId":"AuthQuery_Bech32Prefix","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.Bech32PrefixResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/bech32/{address_bytes}":{"get":{"tags":["Query"],"summary":"AddressBytesToString converts Account Address bytes to string","operationId":"AuthQuery_AddressBytesToString","parameters":[{"type":"string","format":"byte","name":"address_bytes","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.AddressBytesToStringResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/bech32/{address_string}":{"get":{"tags":["Query"],"summary":"AddressStringToBytes converts Address string to bytes","operationId":"AuthQuery_AddressStringToBytes","parameters":[{"type":"string","name":"address_string","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.AddressStringToBytesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/module_accounts":{"get":{"tags":["Query"],"summary":"ModuleAccounts returns all the existing module accounts.","operationId":"AuthQuery_ModuleAccounts","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.QueryModuleAccountsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/module_accounts/{name}":{"get":{"tags":["Query"],"summary":"ModuleAccountByName returns the module account info by module name","operationId":"AuthQuery_ModuleAccountByName","parameters":[{"type":"string","name":"name","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.QueryModuleAccountByNameResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/auth/v1beta1/params":{"get":{"tags":["Query"],"summary":"Params queries all parameters.","operationId":"AuthQuery_Params","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.auth.v1beta1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/authz/v1beta1/grants":{"get":{"tags":["Query"],"summary":"Returns list of `Authorization`, granted to the grantee by the granter.","operationId":"AuthQuery_Grants","parameters":[{"type":"string","name":"granter","in":"query"},{"type":"string","name":"grantee","in":"query"},{"type":"string","description":"Optional, msg_type_url, when set, will query only grants matching given msg type.","name":"msg_type_url","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.QueryGrantsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/authz/v1beta1/grants/grantee/{grantee}":{"get":{"tags":["Query"],"summary":"GranteeGrants returns a list of `GrantAuthorization` by grantee.","operationId":"AuthQuery_GranteeGrants","parameters":[{"type":"string","name":"grantee","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.QueryGranteeGrantsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/authz/v1beta1/grants/granter/{granter}":{"get":{"tags":["Query"],"summary":"GranterGrants returns list of `GrantAuthorization`, granted by granter.","operationId":"AuthQuery_GranterGrants","parameters":[{"type":"string","name":"granter","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.authz.v1beta1.QueryGranterGrantsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/balances/{address}":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"AllBalances queries the balance of all coins for a single account.","operationId":"AuthQuery_AllBalances","parameters":[{"type":"string","description":"address is the address to query balances for.","name":"address","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"},{"type":"boolean","description":"resolve_denom is the flag to resolve the denom into a human-readable form from the metadata.","name":"resolve_denom","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryAllBalancesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/balances/{address}/by_denom":{"get":{"tags":["Query"],"summary":"Balance queries the balance of a single coin for a single account.","operationId":"AuthQuery_Balance","parameters":[{"type":"string","description":"address is the address to query balances for.","name":"address","in":"path","required":true},{"type":"string","description":"denom is the coin denom to query balances for.","name":"denom","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryBalanceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/denom_owners/{denom}":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"DenomOwners queries for all account addresses that own a particular token\ndenomination.","operationId":"AuthQuery_DenomOwners","parameters":[{"pattern":".+","type":"string","description":"denom defines the coin denomination to query all account holders for.","name":"denom","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryDenomOwnersResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/denom_owners_by_query":{"get":{"tags":["Query"],"summary":"DenomOwnersByQuery queries for all account addresses that own a particular token\ndenomination.","operationId":"AuthQuery_DenomOwnersByQuery","parameters":[{"type":"string","description":"denom defines the coin denomination to query all account holders for.","name":"denom","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryDenomOwnersByQueryResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/denoms_metadata":{"get":{"tags":["Query"],"summary":"DenomsMetadata queries the client metadata for all registered coin\ndenominations.","operationId":"AuthQuery_DenomsMetadata","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryDenomsMetadataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/denoms_metadata/{denom}":{"get":{"tags":["Query"],"summary":"DenomMetadata queries the client metadata of a given coin denomination.","operationId":"AuthQuery_DenomMetadata","parameters":[{"pattern":".+","type":"string","description":"denom is the coin denom to query the metadata for.","name":"denom","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryDenomMetadataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/denoms_metadata_by_query_string":{"get":{"tags":["Query"],"summary":"DenomMetadataByQueryString queries the client metadata of a given coin denomination.","operationId":"AuthQuery_DenomMetadataByQueryString","parameters":[{"type":"string","description":"denom is the coin denom to query the metadata for.","name":"denom","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryDenomMetadataByQueryStringResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/params":{"get":{"tags":["Query"],"summary":"Params queries the parameters of x/bank module.","operationId":"AuthQuery_ParamsMixin133","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/send_enabled":{"get":{"description":"This query only returns denominations that have specific SendEnabled settings.\nAny denomination that does not have a specific setting will use the default\nparams.default_send_enabled, and will not be returned by this query.","tags":["Query"],"summary":"SendEnabled queries for SendEnabled entries.","operationId":"AuthQuery_SendEnabled","parameters":[{"type":"array","items":{"type":"string"},"collectionFormat":"multi","description":"denoms is the specific denoms you want look up. Leave empty to get all entries.","name":"denoms","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QuerySendEnabledResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/spendable_balances/{address}":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"SpendableBalances queries the spendable balance of all coins for a single\naccount.","operationId":"AuthQuery_SpendableBalances","parameters":[{"type":"string","description":"address is the address to query spendable balances for.","name":"address","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QuerySpendableBalancesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/spendable_balances/{address}/by_denom":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"SpendableBalanceByDenom queries the spendable balance of a single denom for\na single account.","operationId":"AuthQuery_SpendableBalanceByDenom","parameters":[{"type":"string","description":"address is the address to query balances for.","name":"address","in":"path","required":true},{"type":"string","description":"denom is the coin denom to query balances for.","name":"denom","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QuerySpendableBalanceByDenomResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/supply":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"TotalSupply queries the total supply of all coins.","operationId":"AuthQuery_TotalSupply","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QueryTotalSupplyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/bank/v1beta1/supply/by_denom":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"SupplyOf queries the supply of a single coin.","operationId":"AuthQuery_SupplyOf","parameters":[{"type":"string","description":"denom is the coin denom to query balances for.","name":"denom","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.bank.v1beta1.QuerySupplyOfResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/node/v1beta1/config":{"get":{"tags":["Service"],"summary":"Config queries for the operator configuration.","operationId":"AuthService_Config","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.node.v1beta1.ConfigResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/node/v1beta1/status":{"get":{"tags":["Service"],"summary":"Status queries for the node status.","operationId":"AuthService_Status","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.node.v1beta1.StatusResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/reflection/v1beta1/app_descriptor/authn":{"get":{"tags":["ReflectionService"],"summary":"GetAuthnDescriptor returns information on how to authenticate transactions in the application\nNOTE: this RPC is still experimental and might be subject to breaking changes or removal in\nfuture releases of the cosmos-sdk.","operationId":"AuthReflectionService_GetAuthnDescriptor","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.reflection.v2alpha1.GetAuthnDescriptorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/reflection/v1beta1/app_descriptor/chain":{"get":{"tags":["ReflectionService"],"summary":"GetChainDescriptor returns the description of the chain","operationId":"AuthReflectionService_GetChainDescriptor","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.reflection.v2alpha1.GetChainDescriptorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/reflection/v1beta1/app_descriptor/codec":{"get":{"tags":["ReflectionService"],"summary":"GetCodecDescriptor returns the descriptor of the codec of the application","operationId":"AuthReflectionService_GetCodecDescriptor","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.reflection.v2alpha1.GetCodecDescriptorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/reflection/v1beta1/app_descriptor/configuration":{"get":{"tags":["ReflectionService"],"summary":"GetConfigurationDescriptor returns the descriptor for the sdk.Config of the application","operationId":"AuthReflectionService_GetConfigurationDescriptor","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.reflection.v2alpha1.GetConfigurationDescriptorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/reflection/v1beta1/app_descriptor/query_services":{"get":{"tags":["ReflectionService"],"summary":"GetQueryServicesDescriptor returns the available gRPC queryable services of the application","operationId":"AuthReflectionService_GetQueryServicesDescriptor","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.reflection.v2alpha1.GetQueryServicesDescriptorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/reflection/v1beta1/app_descriptor/tx_descriptor":{"get":{"tags":["ReflectionService"],"summary":"GetTxDescriptor returns information on the used transaction object and available msgs that can be used","operationId":"AuthReflectionService_GetTxDescriptor","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.reflection.v2alpha1.GetTxDescriptorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/reflection/v1beta1/interfaces":{"get":{"tags":["ReflectionService"],"summary":"ListAllInterfaces lists all the interfaces registered in the interface\nregistry.","operationId":"AuthReflectionService_ListAllInterfaces","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.reflection.v1beta1.ListAllInterfacesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/reflection/v1beta1/interfaces/{interface_name}/implementations":{"get":{"tags":["ReflectionService"],"summary":"ListImplementations list all the concrete types that implement a given\ninterface.","operationId":"AuthReflectionService_ListImplementations","parameters":[{"type":"string","description":"interface_name defines the interface to query the implementations for.","name":"interface_name","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.reflection.v1beta1.ListImplementationsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/tendermint/v1beta1/abci_query":{"get":{"tags":["Service"],"summary":"ABCIQuery defines a query handler that supports ABCI queries directly to the\napplication, bypassing Tendermint completely. The ABCI query must contain\na valid and supported path, including app, custom, p2p, and store.","operationId":"AuthService_ABCIQuery","parameters":[{"type":"string","format":"byte","name":"data","in":"query"},{"type":"string","name":"path","in":"query"},{"type":"string","format":"int64","name":"height","in":"query"},{"type":"boolean","name":"prove","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.ABCIQueryResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/tendermint/v1beta1/blocks/latest":{"get":{"tags":["Service"],"summary":"GetLatestBlock returns the latest block.","operationId":"AuthService_GetLatestBlock","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.GetLatestBlockResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/tendermint/v1beta1/blocks/{height}":{"get":{"tags":["Service"],"summary":"GetBlockByHeight queries block for given height.","operationId":"AuthService_GetBlockByHeight","parameters":[{"type":"string","format":"int64","name":"height","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.GetBlockByHeightResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/tendermint/v1beta1/node_info":{"get":{"tags":["Service"],"summary":"GetNodeInfo queries the current node info.","operationId":"AuthService_GetNodeInfo","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.GetNodeInfoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/tendermint/v1beta1/syncing":{"get":{"tags":["Service"],"summary":"GetSyncing queries node syncing.","operationId":"AuthService_GetSyncing","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.GetSyncingResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/tendermint/v1beta1/validatorsets/latest":{"get":{"tags":["Service"],"summary":"GetLatestValidatorSet queries latest validator-set.","operationId":"AuthService_GetLatestValidatorSet","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.GetLatestValidatorSetResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/base/tendermint/v1beta1/validatorsets/{height}":{"get":{"tags":["Service"],"summary":"GetValidatorSetByHeight queries validator-set at a given height.","operationId":"AuthService_GetValidatorSetByHeight","parameters":[{"type":"string","format":"int64","name":"height","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.GetValidatorSetByHeightResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/circuit/v1/accounts":{"get":{"tags":["Query"],"summary":"Account returns account permissions.","operationId":"AuthQuery_AccountsMixin145","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.circuit.v1.AccountsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/circuit/v1/accounts/{address}":{"get":{"tags":["Query"],"summary":"Account returns account permissions.","operationId":"AuthQuery_AccountMixin145","parameters":[{"type":"string","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.circuit.v1.AccountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/circuit/v1/disable_list":{"get":{"tags":["Query"],"summary":"DisabledList returns a list of disabled message urls","operationId":"AuthQuery_DisabledList","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.circuit.v1.DisabledListResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/consensus/v1/params":{"get":{"tags":["Query"],"summary":"Params queries the parameters of x/consensus module.","operationId":"AuthQuery_ParamsMixin148","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.consensus.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/community_pool":{"get":{"description":"WARNING: This query will fail if an external community pool is used.","tags":["Query"],"summary":"CommunityPool queries the community pool coins.","operationId":"AuthQuery_CommunityPool","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryCommunityPoolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards":{"get":{"tags":["Query"],"summary":"DelegationTotalRewards queries the total rewards accrued by each\nvalidator.","operationId":"AuthQuery_DelegationTotalRewards","parameters":[{"type":"string","description":"delegator_address defines the delegator address to query for.","name":"delegator_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryDelegationTotalRewardsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/delegators/{delegator_address}/rewards/{validator_address}":{"get":{"tags":["Query"],"summary":"DelegationRewards queries the total rewards accrued by a delegation.","operationId":"AuthQuery_DelegationRewards","parameters":[{"type":"string","description":"delegator_address defines the delegator address to query for.","name":"delegator_address","in":"path","required":true},{"type":"string","description":"validator_address defines the validator address to query for.","name":"validator_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryDelegationRewardsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/delegators/{delegator_address}/validators":{"get":{"tags":["Query"],"summary":"DelegatorValidators queries the validators of a delegator.","operationId":"AuthQuery_DelegatorValidators","parameters":[{"type":"string","description":"delegator_address defines the delegator address to query for.","name":"delegator_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryDelegatorValidatorsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/delegators/{delegator_address}/withdraw_address":{"get":{"tags":["Query"],"summary":"DelegatorWithdrawAddress queries withdraw address of a delegator.","operationId":"AuthQuery_DelegatorWithdrawAddress","parameters":[{"type":"string","description":"delegator_address defines the delegator address to query for.","name":"delegator_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryDelegatorWithdrawAddressResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/params":{"get":{"tags":["Query"],"summary":"Params queries params of the distribution module.","operationId":"AuthQuery_ParamsMixin163","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/validators/{validator_address}":{"get":{"tags":["Query"],"summary":"ValidatorDistributionInfo queries validator commission and self-delegation rewards for validator","operationId":"AuthQuery_ValidatorDistributionInfo","parameters":[{"type":"string","description":"validator_address defines the validator address to query for.","name":"validator_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryValidatorDistributionInfoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/validators/{validator_address}/commission":{"get":{"tags":["Query"],"summary":"ValidatorCommission queries accumulated commission for a validator.","operationId":"AuthQuery_ValidatorCommission","parameters":[{"type":"string","description":"validator_address defines the validator address to query for.","name":"validator_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryValidatorCommissionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/validators/{validator_address}/outstanding_rewards":{"get":{"tags":["Query"],"summary":"ValidatorOutstandingRewards queries rewards of a validator address.","operationId":"AuthQuery_ValidatorOutstandingRewards","parameters":[{"type":"string","description":"validator_address defines the validator address to query for.","name":"validator_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryValidatorOutstandingRewardsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/distribution/v1beta1/validators/{validator_address}/slashes":{"get":{"tags":["Query"],"summary":"ValidatorSlashes queries slash events of a validator.","operationId":"AuthQuery_ValidatorSlashes","parameters":[{"type":"string","description":"validator_address defines the validator address to query for.","name":"validator_address","in":"path","required":true},{"type":"string","format":"uint64","description":"starting_height defines the optional starting height to query the slashes.","name":"starting_height","in":"query"},{"type":"string","format":"uint64","description":"starting_height defines the optional ending height to query the slashes.","name":"ending_height","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.distribution.v1beta1.QueryValidatorSlashesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/epochs/v1beta1/current_epoch":{"get":{"tags":["Query"],"summary":"CurrentEpoch provide current epoch of specified identifier","operationId":"AuthQuery_CurrentEpoch","parameters":[{"type":"string","name":"identifier","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.epochs.v1beta1.QueryCurrentEpochResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/epochs/v1beta1/epochs":{"get":{"tags":["Query"],"summary":"EpochInfos provide running epochInfos","operationId":"AuthQuery_EpochInfos","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.epochs.v1beta1.QueryEpochInfosResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evidence/v1beta1/evidence":{"get":{"tags":["Query"],"summary":"AllEvidence queries all evidence.","operationId":"AuthQuery_AllEvidence","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evidence.v1beta1.QueryAllEvidenceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evidence/v1beta1/evidence/{hash}":{"get":{"tags":["Query"],"summary":"Evidence queries evidence based on evidence hash.","operationId":"AuthQuery_Evidence","parameters":[{"type":"string","description":"hash defines the evidence hash of the requested evidence.","name":"hash","in":"path","required":true},{"type":"string","format":"byte","description":"evidence_hash defines the hash of the requested evidence.\nDeprecated: Use hash, a HEX encoded string, instead.","name":"evidence_hash","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evidence.v1beta1.QueryEvidenceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evm/erc20/v1/params":{"get":{"tags":["Query"],"summary":"Params retrieves the erc20 module params","operationId":"Erc20Query_Params","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.erc20.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evm/erc20/v1/token_pairs":{"get":{"tags":["Query"],"summary":"TokenPairs retrieves registered token pairs (mappings)x","operationId":"Erc20Query_TokenPairs","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.erc20.v1.QueryTokenPairsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evm/erc20/v1/token_pairs/{token}":{"get":{"tags":["Query"],"summary":"TokenPair retrieves a registered token pair (mapping)","operationId":"Erc20Query_TokenPair","parameters":[{"pattern":".+","type":"string","description":"token identifier can be either the hex contract address of the ERC20 or the\nCosmos base denomination","name":"token","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.erc20.v1.QueryTokenPairResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evm/erc20/v1/tx/convert_coin":{"get":{"tags":["Msg"],"summary":"ConvertCoin mints a ERC20 token representation of the native Cosmos coin\nthat is registered on the token mapping.","operationId":"Erc20Msg_ConvertCoin","parameters":[{"type":"string","name":"coin.denom","in":"query"},{"type":"string","name":"coin.amount","in":"query"},{"type":"string","description":"receiver is the hex address to receive ERC20 token","name":"receiver","in":"query"},{"type":"string","description":"sender is the cosmos bech32 address from the owner of the given Cosmos\ncoins","name":"sender","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.erc20.v1.MsgConvertCoinResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evm/erc20/v1/tx/convert_erc20":{"get":{"tags":["Msg"],"summary":"ConvertERC20 mints a native Cosmos coin representation of the ERC20 token\ncontract that is registered on the token mapping.","operationId":"Erc20Msg_ConvertERC20","parameters":[{"type":"string","description":"contract_address of an ERC20 token contract, that is registered in a token\npair","name":"contract_address","in":"query"},{"type":"string","description":"amount of ERC20 tokens to convert","name":"amount","in":"query"},{"type":"string","description":"receiver is the bech32 address to receive native Cosmos coins","name":"receiver","in":"query"},{"type":"string","description":"sender is the hex address from the owner of the given ERC20 tokens","name":"sender","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.erc20.v1.MsgConvertERC20Response"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evm/feemarket/v1/base_fee":{"get":{"tags":["Query"],"summary":"BaseFee queries the base fee of the parent block of the current block.","operationId":"Erc20Query_BaseFee","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.feemarket.v1.QueryBaseFeeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evm/feemarket/v1/block_gas":{"get":{"tags":["Query"],"summary":"BlockGas queries the gas used at a given block height","operationId":"Erc20Query_BlockGas","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.feemarket.v1.QueryBlockGasResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evm/feemarket/v1/params":{"get":{"tags":["Query"],"summary":"Params queries the parameters of x/feemarket module.","operationId":"Erc20Query_ParamsMixin299","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.feemarket.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evm/precisebank/v1/fractional_balance/{address}":{"get":{"tags":["Query"],"summary":"FractionalBalance returns only the fractional balance of an address. This\ndoes not include any integer balance.","operationId":"Erc20Query_FractionalBalance","parameters":[{"type":"string","description":"address is the account address to query fractional balance for.","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.precisebank.v1.QueryFractionalBalanceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evm/precisebank/v1/remainder":{"get":{"tags":["Query"],"summary":"Remainder returns the amount backed by the reserve, but not yet owned by\nany account, i.e. not in circulation.","operationId":"Erc20Query_Remainder","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.precisebank.v1.QueryRemainderResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evm/vm/v1/account/{address}":{"get":{"tags":["Query"],"summary":"Account queries an Ethereum account.","operationId":"Erc20Query_Account","parameters":[{"type":"string","description":"address is the ethereum hex address to query the account for.","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.QueryAccountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evm/vm/v1/balances/{address}":{"get":{"tags":["Query"],"summary":"Balance queries the balance of a the EVM denomination for a single\naccount.","operationId":"Erc20Query_Balance","parameters":[{"type":"string","description":"address is the ethereum hex address to query the balance for.","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.QueryBalanceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evm/vm/v1/base_fee":{"get":{"tags":["Query"],"summary":"BaseFee queries the base fee of the parent block of the current block,\nit's similar to feemarket module's method, but also checks london hardfork\nstatus.","operationId":"Erc20Query_BaseFeeMixin307","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.QueryBaseFeeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evm/vm/v1/codes/{address}":{"get":{"tags":["Query"],"summary":"Code queries the balance of all coins for a single account.","operationId":"Erc20Query_Code","parameters":[{"type":"string","description":"address is the ethereum hex address to query the code for.","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.QueryCodeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evm/vm/v1/config":{"get":{"tags":["Query"],"summary":"Config queries the EVM configuration","operationId":"Erc20Query_Config","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.QueryConfigResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evm/vm/v1/cosmos_account/{address}":{"get":{"tags":["Query"],"summary":"CosmosAccount queries an Ethereum account's Cosmos Address.","operationId":"Erc20Query_CosmosAccount","parameters":[{"type":"string","description":"address is the ethereum hex address to query the account for.","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.QueryCosmosAccountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evm/vm/v1/estimate_gas":{"get":{"tags":["Query"],"summary":"EstimateGas implements the `eth_estimateGas` rpc api","operationId":"Erc20Query_EstimateGas","parameters":[{"type":"string","format":"byte","description":"args uses the same json format as the json rpc api.","name":"args","in":"query"},{"type":"string","format":"uint64","description":"gas_cap defines the default gas cap to be used","name":"gas_cap","in":"query"},{"type":"string","format":"byte","description":"proposer_address of the requested block in hex format","name":"proposer_address","in":"query"},{"type":"string","format":"int64","description":"chain_id is the eip155 chain id parsed from the requested block header","name":"chain_id","in":"query"},{"type":"string","format":"byte","description":"state overrides encoded as json","name":"overrides","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.EstimateGasResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evm/vm/v1/eth_call":{"get":{"tags":["Query"],"summary":"EthCall implements the `eth_call` rpc api","operationId":"Erc20Query_EthCall","parameters":[{"type":"string","format":"byte","description":"args uses the same json format as the json rpc api.","name":"args","in":"query"},{"type":"string","format":"uint64","description":"gas_cap defines the default gas cap to be used","name":"gas_cap","in":"query"},{"type":"string","format":"byte","description":"proposer_address of the requested block in hex format","name":"proposer_address","in":"query"},{"type":"string","format":"int64","description":"chain_id is the eip155 chain id parsed from the requested block header","name":"chain_id","in":"query"},{"type":"string","format":"byte","description":"state overrides encoded as json","name":"overrides","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.MsgEthereumTxResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evm/vm/v1/ethereum_tx":{"post":{"tags":["Msg"],"summary":"EthereumTx defines a method submitting Ethereum transactions.","operationId":"Erc20Msg_EthereumTx","parameters":[{"type":"string","format":"byte","description":"from is the bytes of ethereum signer address. This address value is checked\nagainst the address derived from the signature (V, R, S) using the\nsecp256k1 elliptic curve","name":"from","in":"query"},{"type":"string","format":"byte","description":"raw is the raw ethereum transaction","name":"raw","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.MsgEthereumTxResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evm/vm/v1/min_gas_price":{"get":{"tags":["Query"],"summary":"GlobalMinGasPrice queries the MinGasPrice\nit's similar to feemarket module's method,\nbut makes the conversion to 18 decimals\nwhen the evm denom is represented with a different precision.","operationId":"Erc20Query_GlobalMinGasPrice","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.QueryGlobalMinGasPriceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evm/vm/v1/params":{"get":{"tags":["Query"],"summary":"Params queries the parameters of x/vm module.","operationId":"Erc20Query_ParamsMixin307","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evm/vm/v1/storage/{address}/{key}":{"get":{"tags":["Query"],"summary":"Storage queries the balance of all coins for a single account.","operationId":"Erc20Query_Storage","parameters":[{"type":"string","description":"address is the ethereum hex address to query the storage state for.","name":"address","in":"path","required":true},{"type":"string","description":"key defines the key of the storage state","name":"key","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.QueryStorageResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evm/vm/v1/trace_block":{"get":{"tags":["Query"],"summary":"TraceBlock implements the `debug_traceBlockByNumber` and\n`debug_traceBlockByHash` rpc api","operationId":"Erc20Query_TraceBlock","parameters":[{"type":"string","description":"tracer is a custom javascript tracer","name":"trace_config.tracer","in":"query"},{"type":"string","description":"timeout overrides the default timeout of 5 seconds for JavaScript-based\ntracing calls","name":"trace_config.timeout","in":"query"},{"type":"string","format":"uint64","description":"reexec defines the number of blocks the tracer is willing to go back","name":"trace_config.reexec","in":"query"},{"type":"boolean","description":"disable_stack switches stack capture","name":"trace_config.disable_stack","in":"query"},{"type":"boolean","description":"disable_storage switches storage capture","name":"trace_config.disable_storage","in":"query"},{"type":"boolean","description":"debug can be used to print output during capture end","name":"trace_config.debug","in":"query"},{"type":"integer","format":"int32","description":"limit defines the maximum length of output, but zero means unlimited","name":"trace_config.limit","in":"query"},{"type":"string","description":"homestead_block switch (nil no fork, 0 = already homestead)","name":"trace_config.overrides.homestead_block","in":"query"},{"type":"string","description":"dao_fork_block corresponds to TheDAO hard-fork switch block (nil no fork)","name":"trace_config.overrides.dao_fork_block","in":"query"},{"type":"boolean","description":"dao_fork_support defines whether the nodes supports or opposes the DAO\nhard-fork","name":"trace_config.overrides.dao_fork_support","in":"query"},{"type":"string","description":"eip150_block: EIP150 implements the Gas price changes\n(https://github.com/ethereum/EIPs/issues/150) EIP150 HF block (nil no fork)","name":"trace_config.overrides.eip150_block","in":"query"},{"type":"string","description":"eip155_block: EIP155Block HF block","name":"trace_config.overrides.eip155_block","in":"query"},{"type":"string","description":"eip158_block: EIP158 HF block","name":"trace_config.overrides.eip158_block","in":"query"},{"type":"string","description":"byzantium_block: Byzantium switch block (nil no fork, 0 = already on\nbyzantium)","name":"trace_config.overrides.byzantium_block","in":"query"},{"type":"string","description":"constantinople_block: Constantinople switch block (nil no fork, 0 = already\nactivated)","name":"trace_config.overrides.constantinople_block","in":"query"},{"type":"string","description":"petersburg_block: Petersburg switch block (nil same as Constantinople)","name":"trace_config.overrides.petersburg_block","in":"query"},{"type":"string","description":"istanbul_block: Istanbul switch block (nil no fork, 0 = already on\nistanbul)","name":"trace_config.overrides.istanbul_block","in":"query"},{"type":"string","description":"muir_glacier_block: Eip-2384 (bomb delay) switch block (nil no fork, 0 =\nalready activated)","name":"trace_config.overrides.muir_glacier_block","in":"query"},{"type":"string","description":"berlin_block: Berlin switch block (nil = no fork, 0 = already on berlin)","name":"trace_config.overrides.berlin_block","in":"query"},{"type":"string","description":"london_block: London switch block (nil = no fork, 0 = already on london)","name":"trace_config.overrides.london_block","in":"query"},{"type":"string","description":"arrow_glacier_block: Eip-4345 (bomb delay) switch block (nil = no fork, 0 =\nalready activated)","name":"trace_config.overrides.arrow_glacier_block","in":"query"},{"type":"string","description":"gray_glacier_block: EIP-5133 (bomb delay) switch block (nil = no fork, 0 =\nalready activated)","name":"trace_config.overrides.gray_glacier_block","in":"query"},{"type":"string","description":"merge_netsplit_block: Virtual fork after The Merge to use as a network\nsplitter","name":"trace_config.overrides.merge_netsplit_block","in":"query"},{"type":"string","format":"uint64","description":"chain_id is the id of the chain (EIP-155)","name":"trace_config.overrides.chain_id","in":"query"},{"type":"string","description":"denom is the denomination used on the EVM","name":"trace_config.overrides.denom","in":"query"},{"type":"string","format":"uint64","description":"decimals is the real decimal precision of the denomination used on the EVM","name":"trace_config.overrides.decimals","in":"query"},{"type":"string","description":"shanghai_time: Shanghai switch time (nil = no fork, 0 = already on\nshanghai)","name":"trace_config.overrides.shanghai_time","in":"query"},{"type":"string","description":"cancun_time: Cancun switch time (nil = no fork, 0 = already on cancun)","name":"trace_config.overrides.cancun_time","in":"query"},{"type":"string","description":"prague_time: Prague switch time (nil = no fork, 0 = already on prague)","name":"trace_config.overrides.prague_time","in":"query"},{"type":"string","description":"verkle_time: Verkle switch time (nil = no fork, 0 = already on verkle)","name":"trace_config.overrides.verkle_time","in":"query"},{"type":"string","description":"osaka_time: Osaka switch time (nil = no fork, 0 = already on osaka)","name":"trace_config.overrides.osaka_time","in":"query"},{"type":"boolean","description":"enable_memory switches memory capture","name":"trace_config.enable_memory","in":"query"},{"type":"boolean","description":"enable_return_data switches the capture of return data","name":"trace_config.enable_return_data","in":"query"},{"type":"string","description":"tracer_json_config configures the tracer using a JSON string","name":"trace_config.tracer_json_config","in":"query"},{"type":"string","format":"int64","description":"block_number of the traced block","name":"block_number","in":"query"},{"type":"string","description":"block_hash (hex) of the traced block","name":"block_hash","in":"query"},{"type":"string","format":"date-time","description":"block_time of the traced block","name":"block_time","in":"query"},{"type":"string","format":"byte","description":"proposer_address is the address of the requested block","name":"proposer_address","in":"query"},{"type":"string","format":"int64","description":"chain_id is the eip155 chain id parsed from the requested block header","name":"chain_id","in":"query"},{"type":"string","format":"int64","description":"block_max_gas of the traced block","name":"block_max_gas","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.QueryTraceBlockResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evm/vm/v1/trace_call":{"get":{"tags":["Query"],"summary":"TraceCall implements the `debug_traceCall` rpc api","operationId":"Erc20Query_TraceCall","parameters":[{"type":"string","format":"byte","description":"args uses the same json format as the json rpc api.","name":"args","in":"query"},{"type":"string","format":"uint64","description":"gas_cap defines the default gas cap to be used","name":"gas_cap","in":"query"},{"type":"string","format":"byte","description":"proposer_address of the requested block in hex format","name":"proposer_address","in":"query"},{"type":"string","description":"tracer is a custom javascript tracer","name":"trace_config.tracer","in":"query"},{"type":"string","description":"timeout overrides the default timeout of 5 seconds for JavaScript-based\ntracing calls","name":"trace_config.timeout","in":"query"},{"type":"string","format":"uint64","description":"reexec defines the number of blocks the tracer is willing to go back","name":"trace_config.reexec","in":"query"},{"type":"boolean","description":"disable_stack switches stack capture","name":"trace_config.disable_stack","in":"query"},{"type":"boolean","description":"disable_storage switches storage capture","name":"trace_config.disable_storage","in":"query"},{"type":"boolean","description":"debug can be used to print output during capture end","name":"trace_config.debug","in":"query"},{"type":"integer","format":"int32","description":"limit defines the maximum length of output, but zero means unlimited","name":"trace_config.limit","in":"query"},{"type":"string","description":"homestead_block switch (nil no fork, 0 = already homestead)","name":"trace_config.overrides.homestead_block","in":"query"},{"type":"string","description":"dao_fork_block corresponds to TheDAO hard-fork switch block (nil no fork)","name":"trace_config.overrides.dao_fork_block","in":"query"},{"type":"boolean","description":"dao_fork_support defines whether the nodes supports or opposes the DAO\nhard-fork","name":"trace_config.overrides.dao_fork_support","in":"query"},{"type":"string","description":"eip150_block: EIP150 implements the Gas price changes\n(https://github.com/ethereum/EIPs/issues/150) EIP150 HF block (nil no fork)","name":"trace_config.overrides.eip150_block","in":"query"},{"type":"string","description":"eip155_block: EIP155Block HF block","name":"trace_config.overrides.eip155_block","in":"query"},{"type":"string","description":"eip158_block: EIP158 HF block","name":"trace_config.overrides.eip158_block","in":"query"},{"type":"string","description":"byzantium_block: Byzantium switch block (nil no fork, 0 = already on\nbyzantium)","name":"trace_config.overrides.byzantium_block","in":"query"},{"type":"string","description":"constantinople_block: Constantinople switch block (nil no fork, 0 = already\nactivated)","name":"trace_config.overrides.constantinople_block","in":"query"},{"type":"string","description":"petersburg_block: Petersburg switch block (nil same as Constantinople)","name":"trace_config.overrides.petersburg_block","in":"query"},{"type":"string","description":"istanbul_block: Istanbul switch block (nil no fork, 0 = already on\nistanbul)","name":"trace_config.overrides.istanbul_block","in":"query"},{"type":"string","description":"muir_glacier_block: Eip-2384 (bomb delay) switch block (nil no fork, 0 =\nalready activated)","name":"trace_config.overrides.muir_glacier_block","in":"query"},{"type":"string","description":"berlin_block: Berlin switch block (nil = no fork, 0 = already on berlin)","name":"trace_config.overrides.berlin_block","in":"query"},{"type":"string","description":"london_block: London switch block (nil = no fork, 0 = already on london)","name":"trace_config.overrides.london_block","in":"query"},{"type":"string","description":"arrow_glacier_block: Eip-4345 (bomb delay) switch block (nil = no fork, 0 =\nalready activated)","name":"trace_config.overrides.arrow_glacier_block","in":"query"},{"type":"string","description":"gray_glacier_block: EIP-5133 (bomb delay) switch block (nil = no fork, 0 =\nalready activated)","name":"trace_config.overrides.gray_glacier_block","in":"query"},{"type":"string","description":"merge_netsplit_block: Virtual fork after The Merge to use as a network\nsplitter","name":"trace_config.overrides.merge_netsplit_block","in":"query"},{"type":"string","format":"uint64","description":"chain_id is the id of the chain (EIP-155)","name":"trace_config.overrides.chain_id","in":"query"},{"type":"string","description":"denom is the denomination used on the EVM","name":"trace_config.overrides.denom","in":"query"},{"type":"string","format":"uint64","description":"decimals is the real decimal precision of the denomination used on the EVM","name":"trace_config.overrides.decimals","in":"query"},{"type":"string","description":"shanghai_time: Shanghai switch time (nil = no fork, 0 = already on\nshanghai)","name":"trace_config.overrides.shanghai_time","in":"query"},{"type":"string","description":"cancun_time: Cancun switch time (nil = no fork, 0 = already on cancun)","name":"trace_config.overrides.cancun_time","in":"query"},{"type":"string","description":"prague_time: Prague switch time (nil = no fork, 0 = already on prague)","name":"trace_config.overrides.prague_time","in":"query"},{"type":"string","description":"verkle_time: Verkle switch time (nil = no fork, 0 = already on verkle)","name":"trace_config.overrides.verkle_time","in":"query"},{"type":"string","description":"osaka_time: Osaka switch time (nil = no fork, 0 = already on osaka)","name":"trace_config.overrides.osaka_time","in":"query"},{"type":"boolean","description":"enable_memory switches memory capture","name":"trace_config.enable_memory","in":"query"},{"type":"boolean","description":"enable_return_data switches the capture of return data","name":"trace_config.enable_return_data","in":"query"},{"type":"string","description":"tracer_json_config configures the tracer using a JSON string","name":"trace_config.tracer_json_config","in":"query"},{"type":"string","format":"int64","description":"block_number of requested transaction","name":"block_number","in":"query"},{"type":"string","description":"block_hash of requested transaction","name":"block_hash","in":"query"},{"type":"string","format":"date-time","description":"block_time of requested transaction","name":"block_time","in":"query"},{"type":"string","format":"int64","description":"chain_id is the the eip155 chain id parsed from the requested block header","name":"chain_id","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.QueryTraceCallResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evm/vm/v1/trace_tx":{"get":{"tags":["Query"],"summary":"TraceTx implements the `debug_traceTransaction` rpc api","operationId":"Erc20Query_TraceTx","parameters":[{"type":"string","format":"byte","description":"from is the bytes of ethereum signer address. This address value is checked\nagainst the address derived from the signature (V, R, S) using the\nsecp256k1 elliptic curve","name":"msg.from","in":"query"},{"type":"string","format":"byte","description":"raw is the raw ethereum transaction","name":"msg.raw","in":"query"},{"type":"string","description":"tracer is a custom javascript tracer","name":"trace_config.tracer","in":"query"},{"type":"string","description":"timeout overrides the default timeout of 5 seconds for JavaScript-based\ntracing calls","name":"trace_config.timeout","in":"query"},{"type":"string","format":"uint64","description":"reexec defines the number of blocks the tracer is willing to go back","name":"trace_config.reexec","in":"query"},{"type":"boolean","description":"disable_stack switches stack capture","name":"trace_config.disable_stack","in":"query"},{"type":"boolean","description":"disable_storage switches storage capture","name":"trace_config.disable_storage","in":"query"},{"type":"boolean","description":"debug can be used to print output during capture end","name":"trace_config.debug","in":"query"},{"type":"integer","format":"int32","description":"limit defines the maximum length of output, but zero means unlimited","name":"trace_config.limit","in":"query"},{"type":"string","description":"homestead_block switch (nil no fork, 0 = already homestead)","name":"trace_config.overrides.homestead_block","in":"query"},{"type":"string","description":"dao_fork_block corresponds to TheDAO hard-fork switch block (nil no fork)","name":"trace_config.overrides.dao_fork_block","in":"query"},{"type":"boolean","description":"dao_fork_support defines whether the nodes supports or opposes the DAO\nhard-fork","name":"trace_config.overrides.dao_fork_support","in":"query"},{"type":"string","description":"eip150_block: EIP150 implements the Gas price changes\n(https://github.com/ethereum/EIPs/issues/150) EIP150 HF block (nil no fork)","name":"trace_config.overrides.eip150_block","in":"query"},{"type":"string","description":"eip155_block: EIP155Block HF block","name":"trace_config.overrides.eip155_block","in":"query"},{"type":"string","description":"eip158_block: EIP158 HF block","name":"trace_config.overrides.eip158_block","in":"query"},{"type":"string","description":"byzantium_block: Byzantium switch block (nil no fork, 0 = already on\nbyzantium)","name":"trace_config.overrides.byzantium_block","in":"query"},{"type":"string","description":"constantinople_block: Constantinople switch block (nil no fork, 0 = already\nactivated)","name":"trace_config.overrides.constantinople_block","in":"query"},{"type":"string","description":"petersburg_block: Petersburg switch block (nil same as Constantinople)","name":"trace_config.overrides.petersburg_block","in":"query"},{"type":"string","description":"istanbul_block: Istanbul switch block (nil no fork, 0 = already on\nistanbul)","name":"trace_config.overrides.istanbul_block","in":"query"},{"type":"string","description":"muir_glacier_block: Eip-2384 (bomb delay) switch block (nil no fork, 0 =\nalready activated)","name":"trace_config.overrides.muir_glacier_block","in":"query"},{"type":"string","description":"berlin_block: Berlin switch block (nil = no fork, 0 = already on berlin)","name":"trace_config.overrides.berlin_block","in":"query"},{"type":"string","description":"london_block: London switch block (nil = no fork, 0 = already on london)","name":"trace_config.overrides.london_block","in":"query"},{"type":"string","description":"arrow_glacier_block: Eip-4345 (bomb delay) switch block (nil = no fork, 0 =\nalready activated)","name":"trace_config.overrides.arrow_glacier_block","in":"query"},{"type":"string","description":"gray_glacier_block: EIP-5133 (bomb delay) switch block (nil = no fork, 0 =\nalready activated)","name":"trace_config.overrides.gray_glacier_block","in":"query"},{"type":"string","description":"merge_netsplit_block: Virtual fork after The Merge to use as a network\nsplitter","name":"trace_config.overrides.merge_netsplit_block","in":"query"},{"type":"string","format":"uint64","description":"chain_id is the id of the chain (EIP-155)","name":"trace_config.overrides.chain_id","in":"query"},{"type":"string","description":"denom is the denomination used on the EVM","name":"trace_config.overrides.denom","in":"query"},{"type":"string","format":"uint64","description":"decimals is the real decimal precision of the denomination used on the EVM","name":"trace_config.overrides.decimals","in":"query"},{"type":"string","description":"shanghai_time: Shanghai switch time (nil = no fork, 0 = already on\nshanghai)","name":"trace_config.overrides.shanghai_time","in":"query"},{"type":"string","description":"cancun_time: Cancun switch time (nil = no fork, 0 = already on cancun)","name":"trace_config.overrides.cancun_time","in":"query"},{"type":"string","description":"prague_time: Prague switch time (nil = no fork, 0 = already on prague)","name":"trace_config.overrides.prague_time","in":"query"},{"type":"string","description":"verkle_time: Verkle switch time (nil = no fork, 0 = already on verkle)","name":"trace_config.overrides.verkle_time","in":"query"},{"type":"string","description":"osaka_time: Osaka switch time (nil = no fork, 0 = already on osaka)","name":"trace_config.overrides.osaka_time","in":"query"},{"type":"boolean","description":"enable_memory switches memory capture","name":"trace_config.enable_memory","in":"query"},{"type":"boolean","description":"enable_return_data switches the capture of return data","name":"trace_config.enable_return_data","in":"query"},{"type":"string","description":"tracer_json_config configures the tracer using a JSON string","name":"trace_config.tracer_json_config","in":"query"},{"type":"string","format":"int64","description":"block_number of requested transaction","name":"block_number","in":"query"},{"type":"string","description":"block_hash of requested transaction","name":"block_hash","in":"query"},{"type":"string","format":"date-time","description":"block_time of requested transaction","name":"block_time","in":"query"},{"type":"string","format":"byte","description":"proposer_address is the proposer of the requested block","name":"proposer_address","in":"query"},{"type":"string","format":"int64","description":"chain_id is the eip155 chain id parsed from the requested block header","name":"chain_id","in":"query"},{"type":"string","format":"int64","description":"block_max_gas of the block of the requested transaction","name":"block_max_gas","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.QueryTraceTxResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/evm/vm/v1/validator_account/{cons_address}":{"get":{"tags":["Query"],"summary":"ValidatorAccount queries an Ethereum account's from a validator consensus\nAddress.","operationId":"Erc20Query_ValidatorAccount","parameters":[{"type":"string","description":"cons_address is the validator cons address to query the account for.","name":"cons_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.evm.vm.v1.QueryValidatorAccountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/feegrant/v1beta1/allowance/{granter}/{grantee}":{"get":{"tags":["Query"],"summary":"Allowance returns granted allwance to the grantee by the granter.","operationId":"AuthQuery_Allowance","parameters":[{"type":"string","description":"granter is the address of the user granting an allowance of their funds.","name":"granter","in":"path","required":true},{"type":"string","description":"grantee is the address of the user being granted an allowance of another user's funds.","name":"grantee","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.QueryAllowanceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/feegrant/v1beta1/allowances/{grantee}":{"get":{"tags":["Query"],"summary":"Allowances returns all the grants for the given grantee address.","operationId":"AuthQuery_Allowances","parameters":[{"type":"string","name":"grantee","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.QueryAllowancesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/feegrant/v1beta1/issued/{granter}":{"get":{"tags":["Query"],"summary":"AllowancesByGranter returns all the grants given by an address","operationId":"AuthQuery_AllowancesByGranter","parameters":[{"type":"string","name":"granter","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.feegrant.v1beta1.QueryAllowancesByGranterResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/constitution":{"get":{"tags":["Query"],"summary":"Constitution queries the chain's constitution.","operationId":"AuthQuery_Constitution","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryConstitutionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/params/{params_type}":{"get":{"tags":["Query"],"summary":"Params queries all parameters of the gov module.","operationId":"AuthQuery_ParamsMixin179","parameters":[{"type":"string","description":"params_type defines which parameters to query for, can be one of \"voting\",\n\"tallying\" or \"deposit\".","name":"params_type","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/proposals":{"get":{"tags":["Query"],"summary":"Proposals queries all proposals based on given status.","operationId":"AuthQuery_Proposals","parameters":[{"enum":["PROPOSAL_STATUS_UNSPECIFIED","PROPOSAL_STATUS_DEPOSIT_PERIOD","PROPOSAL_STATUS_VOTING_PERIOD","PROPOSAL_STATUS_PASSED","PROPOSAL_STATUS_REJECTED","PROPOSAL_STATUS_FAILED"],"type":"string","default":"PROPOSAL_STATUS_UNSPECIFIED","description":"proposal_status defines the status of the proposals.\n\n - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status.\n - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit\nperiod.\n - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting\nperiod.\n - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has\npassed.\n - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has\nbeen rejected.\n - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has\nfailed.","name":"proposal_status","in":"query"},{"type":"string","description":"voter defines the voter address for the proposals.","name":"voter","in":"query"},{"type":"string","description":"depositor defines the deposit addresses from the proposals.","name":"depositor","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryProposalsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/proposals/{proposal_id}":{"get":{"tags":["Query"],"summary":"Proposal queries proposal details based on ProposalID.","operationId":"AuthQuery_Proposal","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/proposals/{proposal_id}/deposits":{"get":{"tags":["Query"],"summary":"Deposits queries all deposits of a single proposal.","operationId":"AuthQuery_Deposits","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryDepositsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/proposals/{proposal_id}/deposits/{depositor}":{"get":{"tags":["Query"],"summary":"Deposit queries single deposit information based on proposalID, depositAddr.","operationId":"AuthQuery_Deposit","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","description":"depositor defines the deposit addresses from the proposals.","name":"depositor","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryDepositResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/proposals/{proposal_id}/tally":{"get":{"tags":["Query"],"summary":"TallyResult queries the tally of a proposal vote.","operationId":"AuthQuery_TallyResult","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryTallyResultResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/proposals/{proposal_id}/votes":{"get":{"tags":["Query"],"summary":"Votes queries votes of a given proposal.","operationId":"AuthQuery_Votes","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryVotesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1/proposals/{proposal_id}/votes/{voter}":{"get":{"tags":["Query"],"summary":"Vote queries voted information based on proposalID, voterAddr.","operationId":"AuthQuery_Vote","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","description":"voter defines the voter address for the proposals.","name":"voter","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1.QueryVoteResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1beta1/params/{params_type}":{"get":{"tags":["Query"],"summary":"Params queries all parameters of the gov module.","operationId":"AuthQuery_ParamsMixin183","parameters":[{"type":"string","description":"params_type defines which parameters to query for, can be one of \"voting\",\n\"tallying\" or \"deposit\".","name":"params_type","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1beta1/proposals":{"get":{"tags":["Query"],"summary":"Proposals queries all proposals based on given status.","operationId":"AuthQuery_ProposalsMixin183","parameters":[{"enum":["PROPOSAL_STATUS_UNSPECIFIED","PROPOSAL_STATUS_DEPOSIT_PERIOD","PROPOSAL_STATUS_VOTING_PERIOD","PROPOSAL_STATUS_PASSED","PROPOSAL_STATUS_REJECTED","PROPOSAL_STATUS_FAILED"],"type":"string","default":"PROPOSAL_STATUS_UNSPECIFIED","description":"proposal_status defines the status of the proposals.\n\n - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status.\n - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit\nperiod.\n - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting\nperiod.\n - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has\npassed.\n - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has\nbeen rejected.\n - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has\nfailed.","name":"proposal_status","in":"query"},{"type":"string","description":"voter defines the voter address for the proposals.","name":"voter","in":"query"},{"type":"string","description":"depositor defines the deposit addresses from the proposals.","name":"depositor","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.QueryProposalsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1beta1/proposals/{proposal_id}":{"get":{"tags":["Query"],"summary":"Proposal queries proposal details based on ProposalID.","operationId":"AuthQuery_ProposalMixin183","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.QueryProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1beta1/proposals/{proposal_id}/deposits":{"get":{"tags":["Query"],"summary":"Deposits queries all deposits of a single proposal.","operationId":"AuthQuery_DepositsMixin183","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.QueryDepositsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1beta1/proposals/{proposal_id}/deposits/{depositor}":{"get":{"tags":["Query"],"summary":"Deposit queries single deposit information based on proposalID, depositor address.","operationId":"AuthQuery_DepositMixin183","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","description":"depositor defines the deposit addresses from the proposals.","name":"depositor","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.QueryDepositResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1beta1/proposals/{proposal_id}/tally":{"get":{"tags":["Query"],"summary":"TallyResult queries the tally of a proposal vote.","operationId":"AuthQuery_TallyResultMixin183","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.QueryTallyResultResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1beta1/proposals/{proposal_id}/votes":{"get":{"tags":["Query"],"summary":"Votes queries votes of a given proposal.","operationId":"AuthQuery_VotesMixin183","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.QueryVotesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/gov/v1beta1/proposals/{proposal_id}/votes/{voter}":{"get":{"tags":["Query"],"summary":"Vote queries voted information based on proposalID, voterAddr.","operationId":"AuthQuery_VoteMixin183","parameters":[{"type":"string","format":"uint64","description":"proposal_id defines the unique id of the proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","description":"voter defines the voter address for the proposals.","name":"voter","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.gov.v1beta1.QueryVoteResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/group_info/{group_id}":{"get":{"tags":["Query"],"summary":"GroupInfo queries group info based on group id.","operationId":"AuthQuery_GroupInfo","parameters":[{"type":"string","format":"uint64","description":"group_id is the unique ID of the group.","name":"group_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryGroupInfoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/group_members/{group_id}":{"get":{"tags":["Query"],"summary":"GroupMembers queries members of a group by group id.","operationId":"AuthQuery_GroupMembers","parameters":[{"type":"string","format":"uint64","description":"group_id is the unique ID of the group.","name":"group_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryGroupMembersResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/group_policies_by_admin/{admin}":{"get":{"tags":["Query"],"summary":"GroupPoliciesByAdmin queries group policies by admin address.","operationId":"AuthQuery_GroupPoliciesByAdmin","parameters":[{"type":"string","description":"admin is the admin address of the group policy.","name":"admin","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryGroupPoliciesByAdminResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/group_policies_by_group/{group_id}":{"get":{"tags":["Query"],"summary":"GroupPoliciesByGroup queries group policies by group id.","operationId":"AuthQuery_GroupPoliciesByGroup","parameters":[{"type":"string","format":"uint64","description":"group_id is the unique ID of the group policy's group.","name":"group_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryGroupPoliciesByGroupResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/group_policy_info/{address}":{"get":{"tags":["Query"],"summary":"GroupPolicyInfo queries group policy info based on account address of group policy.","operationId":"AuthQuery_GroupPolicyInfo","parameters":[{"type":"string","description":"address is the account address of the group policy.","name":"address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryGroupPolicyInfoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/groups":{"get":{"tags":["Query"],"summary":"Groups queries all groups in state.","operationId":"AuthQuery_Groups","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryGroupsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/groups_by_admin/{admin}":{"get":{"tags":["Query"],"summary":"GroupsByAdmin queries groups by admin address.","operationId":"AuthQuery_GroupsByAdmin","parameters":[{"type":"string","description":"admin is the account address of a group's admin.","name":"admin","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryGroupsByAdminResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/groups_by_member/{address}":{"get":{"tags":["Query"],"summary":"GroupsByMember queries groups by member address.","operationId":"AuthQuery_GroupsByMember","parameters":[{"type":"string","description":"address is the group member address.","name":"address","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryGroupsByMemberResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/proposal/{proposal_id}":{"get":{"tags":["Query"],"summary":"Proposal queries a proposal based on proposal id.","operationId":"AuthQuery_ProposalMixin187","parameters":[{"type":"string","format":"uint64","description":"proposal_id is the unique ID of a proposal.","name":"proposal_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/proposals/{proposal_id}/tally":{"get":{"tags":["Query"],"summary":"TallyResult returns the tally result of a proposal. If the proposal is\nstill in voting period, then this query computes the current tally state,\nwhich might not be final. On the other hand, if the proposal is final,\nthen it simply returns the `final_tally_result` state stored in the\nproposal itself.","operationId":"AuthQuery_TallyResultMixin187","parameters":[{"type":"string","format":"uint64","description":"proposal_id is the unique id of a proposal.","name":"proposal_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryTallyResultResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/proposals_by_group_policy/{address}":{"get":{"tags":["Query"],"summary":"ProposalsByGroupPolicy queries proposals based on account address of group policy.","operationId":"AuthQuery_ProposalsByGroupPolicy","parameters":[{"type":"string","description":"address is the account address of the group policy related to proposals.","name":"address","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryProposalsByGroupPolicyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/vote_by_proposal_voter/{proposal_id}/{voter}":{"get":{"tags":["Query"],"summary":"VoteByProposalVoter queries a vote by proposal id and voter.","operationId":"AuthQuery_VoteByProposalVoter","parameters":[{"type":"string","format":"uint64","description":"proposal_id is the unique ID of a proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","description":"voter is a proposal voter account address.","name":"voter","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryVoteByProposalVoterResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/votes_by_proposal/{proposal_id}":{"get":{"tags":["Query"],"summary":"VotesByProposal queries a vote by proposal id.","operationId":"AuthQuery_VotesByProposal","parameters":[{"type":"string","format":"uint64","description":"proposal_id is the unique ID of a proposal.","name":"proposal_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryVotesByProposalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/group/v1/votes_by_voter/{voter}":{"get":{"tags":["Query"],"summary":"VotesByVoter queries a vote by voter.","operationId":"AuthQuery_VotesByVoter","parameters":[{"type":"string","description":"voter is a proposal voter account address.","name":"voter","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.group.v1.QueryVotesByVoterResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/mint/v1beta1/annual_provisions":{"get":{"tags":["Query"],"summary":"AnnualProvisions current minting annual provisions value.","operationId":"AuthQuery_AnnualProvisions","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.mint.v1beta1.QueryAnnualProvisionsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/mint/v1beta1/inflation":{"get":{"tags":["Query"],"summary":"Inflation returns the current minting inflation value.","operationId":"AuthQuery_Inflation","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.mint.v1beta1.QueryInflationResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/mint/v1beta1/params":{"get":{"tags":["Query"],"summary":"Params returns the total set of minting parameters.","operationId":"AuthQuery_ParamsMixin192","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.mint.v1beta1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/nft/v1beta1/balance/{owner}/{class_id}":{"get":{"tags":["Query"],"summary":"Balance queries the number of NFTs of a given class owned by the owner, same as balanceOf in ERC721","operationId":"AuthQuery_BalanceMixin198","parameters":[{"type":"string","description":"owner is the owner address of the nft","name":"owner","in":"path","required":true},{"type":"string","description":"class_id associated with the nft","name":"class_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.QueryBalanceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/nft/v1beta1/classes":{"get":{"tags":["Query"],"summary":"Classes queries all NFT classes","operationId":"AuthQuery_Classes","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.QueryClassesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/nft/v1beta1/classes/{class_id}":{"get":{"tags":["Query"],"summary":"Class queries an NFT class based on its id","operationId":"AuthQuery_Class","parameters":[{"type":"string","description":"class_id associated with the nft","name":"class_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.QueryClassResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/nft/v1beta1/nfts":{"get":{"tags":["Query"],"summary":"NFTs queries all NFTs of a given class or owner,choose at least one of the two, similar to tokenByIndex in\nERC721Enumerable","operationId":"AuthQuery_NFTs","parameters":[{"type":"string","description":"class_id associated with the nft","name":"class_id","in":"query"},{"type":"string","description":"owner is the owner address of the nft","name":"owner","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.QueryNFTsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/nft/v1beta1/nfts/{class_id}/{id}":{"get":{"tags":["Query"],"summary":"NFT queries an NFT based on its class and id.","operationId":"AuthQuery_NFT","parameters":[{"type":"string","description":"class_id associated with the nft","name":"class_id","in":"path","required":true},{"type":"string","description":"id is a unique identifier of the NFT","name":"id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.QueryNFTResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/nft/v1beta1/owner/{class_id}/{id}":{"get":{"tags":["Query"],"summary":"Owner queries the owner of the NFT based on its class and id, same as ownerOf in ERC721","operationId":"AuthQuery_Owner","parameters":[{"type":"string","description":"class_id associated with the nft","name":"class_id","in":"path","required":true},{"type":"string","description":"id is a unique identifier of the NFT","name":"id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.QueryOwnerResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/nft/v1beta1/supply/{class_id}":{"get":{"tags":["Query"],"summary":"Supply queries the number of NFTs from the given class, same as totalSupply of ERC721.","operationId":"AuthQuery_Supply","parameters":[{"type":"string","description":"class_id associated with the nft","name":"class_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.nft.v1beta1.QuerySupplyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/params/v1beta1/params":{"get":{"tags":["Query"],"summary":"Params queries a specific parameter of a module, given its subspace and\nkey.","operationId":"AuthQuery_ParamsMixin201","parameters":[{"type":"string","description":"subspace defines the module to query the parameter for.","name":"subspace","in":"query"},{"type":"string","description":"key defines the key of the parameter in the subspace.","name":"key","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.params.v1beta1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/params/v1beta1/subspaces":{"get":{"tags":["Query"],"summary":"Subspaces queries for all registered subspaces and all keys for a subspace.","operationId":"AuthQuery_Subspaces","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.params.v1beta1.QuerySubspacesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/protocolpool/v1/community_pool":{"get":{"tags":["Query"],"summary":"CommunityPool queries the community pool coins.","operationId":"AuthQuery_CommunityPoolMixin203","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.protocolpool.v1.QueryCommunityPoolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/protocolpool/v1/continuous_funds":{"get":{"tags":["Query"],"summary":"ContinuousFunds queries all continuous funds in the store.","operationId":"AuthQuery_ContinuousFunds","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.protocolpool.v1.QueryContinuousFundsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/protocolpool/v1/continuous_funds/{recipient}":{"get":{"tags":["Query"],"summary":"ContinuousFund queries a continuous fund by the recipient is is associated with.","operationId":"AuthQuery_ContinuousFund","parameters":[{"type":"string","description":"recipient is the recipient address to query unclaimed budget amount for.","name":"recipient","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.protocolpool.v1.QueryContinuousFundResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/protocolpool/v1/params":{"get":{"tags":["Query"],"summary":"Params returns the total set of x/protocolpool parameters.","operationId":"AuthQuery_ParamsMixin203","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.protocolpool.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/slashing/v1beta1/params":{"get":{"tags":["Query"],"summary":"Params queries the parameters of slashing module","operationId":"AuthQuery_ParamsMixin208","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.slashing.v1beta1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/slashing/v1beta1/signing_infos":{"get":{"tags":["Query"],"summary":"SigningInfos queries signing info of all validators","operationId":"AuthQuery_SigningInfos","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.slashing.v1beta1.QuerySigningInfosResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/slashing/v1beta1/signing_infos/{cons_address}":{"get":{"tags":["Query"],"summary":"SigningInfo queries the signing info of given cons address","operationId":"AuthQuery_SigningInfo","parameters":[{"type":"string","description":"cons_address is the address to query signing info of","name":"cons_address","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.slashing.v1beta1.QuerySigningInfoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/delegations/{delegator_addr}":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"DelegatorDelegations queries all delegations of a given delegator address.","operationId":"AuthQuery_DelegatorDelegations","parameters":[{"type":"string","description":"delegator_addr defines the delegator address to query for.","name":"delegator_addr","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryDelegatorDelegationsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/delegators/{delegator_addr}/redelegations":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"Redelegations queries redelegations of given address.","operationId":"AuthQuery_Redelegations","parameters":[{"type":"string","description":"delegator_addr defines the delegator address to query for.","name":"delegator_addr","in":"path","required":true},{"type":"string","description":"src_validator_addr defines the validator address to redelegate from.","name":"src_validator_addr","in":"query"},{"type":"string","description":"dst_validator_addr defines the validator address to redelegate to.","name":"dst_validator_addr","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryRedelegationsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/delegators/{delegator_addr}/unbonding_delegations":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"DelegatorUnbondingDelegations queries all unbonding delegations of a given\ndelegator address.","operationId":"AuthQuery_DelegatorUnbondingDelegations","parameters":[{"type":"string","description":"delegator_addr defines the delegator address to query for.","name":"delegator_addr","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/delegators/{delegator_addr}/validators":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"DelegatorValidators queries all validators info for given delegator\naddress.","operationId":"AuthQuery_DelegatorValidatorsMixin213","parameters":[{"type":"string","description":"delegator_addr defines the delegator address to query for.","name":"delegator_addr","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryDelegatorValidatorsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/delegators/{delegator_addr}/validators/{validator_addr}":{"get":{"tags":["Query"],"summary":"DelegatorValidator queries validator info for given delegator validator\npair.","operationId":"AuthQuery_DelegatorValidator","parameters":[{"type":"string","description":"delegator_addr defines the delegator address to query for.","name":"delegator_addr","in":"path","required":true},{"type":"string","description":"validator_addr defines the validator address to query for.","name":"validator_addr","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryDelegatorValidatorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/historical_info/{height}":{"get":{"tags":["Query"],"summary":"HistoricalInfo queries the historical info for given height.","operationId":"AuthQuery_HistoricalInfo","parameters":[{"type":"string","format":"int64","description":"height defines at which height to query the historical info.","name":"height","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryHistoricalInfoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/params":{"get":{"tags":["Query"],"summary":"Parameters queries the staking parameters.","operationId":"AuthQuery_ParamsMixin213","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/pool":{"get":{"tags":["Query"],"summary":"Pool queries the pool info.","operationId":"AuthQuery_Pool","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryPoolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/validators":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"Validators queries all validators that match the given status.","operationId":"AuthQuery_Validators","parameters":[{"type":"string","description":"status enables to query for validators matching a given status.","name":"status","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryValidatorsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/validators/{validator_addr}":{"get":{"tags":["Query"],"summary":"Validator queries validator info for given validator address.","operationId":"AuthQuery_Validator","parameters":[{"type":"string","description":"validator_addr defines the validator address to query for.","name":"validator_addr","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryValidatorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/validators/{validator_addr}/delegations":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"ValidatorDelegations queries delegate info for given validator.","operationId":"AuthQuery_ValidatorDelegations","parameters":[{"type":"string","description":"validator_addr defines the validator address to query for.","name":"validator_addr","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryValidatorDelegationsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/validators/{validator_addr}/delegations/{delegator_addr}":{"get":{"tags":["Query"],"summary":"Delegation queries delegate info for given validator delegator pair.","operationId":"AuthQuery_Delegation","parameters":[{"type":"string","description":"validator_addr defines the validator address to query for.","name":"validator_addr","in":"path","required":true},{"type":"string","description":"delegator_addr defines the delegator address to query for.","name":"delegator_addr","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryDelegationResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/validators/{validator_addr}/delegations/{delegator_addr}/unbonding_delegation":{"get":{"tags":["Query"],"summary":"UnbondingDelegation queries unbonding info for given validator delegator\npair.","operationId":"AuthQuery_UnbondingDelegation","parameters":[{"type":"string","description":"validator_addr defines the validator address to query for.","name":"validator_addr","in":"path","required":true},{"type":"string","description":"delegator_addr defines the delegator address to query for.","name":"delegator_addr","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryUnbondingDelegationResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/staking/v1beta1/validators/{validator_addr}/unbonding_delegations":{"get":{"description":"When called from another module, this query might consume a high amount of\ngas if the pagination field is incorrectly set.","tags":["Query"],"summary":"ValidatorUnbondingDelegations queries unbonding delegations of a validator.","operationId":"AuthQuery_ValidatorUnbondingDelegations","parameters":[{"type":"string","description":"validator_addr defines the validator address to query for.","name":"validator_addr","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/tx/v1beta1/decode":{"post":{"tags":["Service"],"summary":"TxDecode decodes the transaction.","operationId":"AuthService_TxDecode","parameters":[{"description":"TxDecodeRequest is the request type for the Service.TxDecode\nRPC method.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.TxDecodeRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.TxDecodeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/tx/v1beta1/decode/amino":{"post":{"tags":["Service"],"summary":"TxDecodeAmino decodes an Amino transaction from encoded bytes to JSON.","operationId":"AuthService_TxDecodeAmino","parameters":[{"description":"TxDecodeAminoRequest is the request type for the Service.TxDecodeAmino\nRPC method.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.TxDecodeAminoRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.TxDecodeAminoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/tx/v1beta1/encode":{"post":{"tags":["Service"],"summary":"TxEncode encodes the transaction.","operationId":"AuthService_TxEncode","parameters":[{"description":"TxEncodeRequest is the request type for the Service.TxEncode\nRPC method.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.TxEncodeRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.TxEncodeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/tx/v1beta1/encode/amino":{"post":{"tags":["Service"],"summary":"TxEncodeAmino encodes an Amino transaction from JSON to encoded bytes.","operationId":"AuthService_TxEncodeAmino","parameters":[{"description":"TxEncodeAminoRequest is the request type for the Service.TxEncodeAmino\nRPC method.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.TxEncodeAminoRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.TxEncodeAminoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/tx/v1beta1/simulate":{"post":{"tags":["Service"],"summary":"Simulate simulates executing a transaction for estimating gas usage.","operationId":"AuthService_Simulate","parameters":[{"description":"SimulateRequest is the request type for the Service.Simulate\nRPC method.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.SimulateRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.SimulateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/tx/v1beta1/txs":{"get":{"tags":["Service"],"summary":"GetTxsEvent fetches txs by event.","operationId":"AuthService_GetTxsEvent","parameters":[{"type":"array","items":{"type":"string"},"collectionFormat":"multi","description":"events is the list of transaction event type.\nDeprecated post v0.47.x: use query instead, which should contain a valid\nevents query.","name":"events","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"},{"enum":["ORDER_BY_UNSPECIFIED","ORDER_BY_ASC","ORDER_BY_DESC"],"type":"string","default":"ORDER_BY_UNSPECIFIED","description":" - ORDER_BY_UNSPECIFIED: ORDER_BY_UNSPECIFIED specifies an unknown sorting order. OrderBy defaults\nto ASC in this case.\n - ORDER_BY_ASC: ORDER_BY_ASC defines ascending order\n - ORDER_BY_DESC: ORDER_BY_DESC defines descending order","name":"order_by","in":"query"},{"type":"string","format":"uint64","description":"page is the page number to query, starts at 1. If not provided, will\ndefault to first page.","name":"page","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"limit","in":"query"},{"type":"string","description":"query defines the transaction event query that is proxied to Tendermint's\nTxSearch RPC method. The query must be valid.","name":"query","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.GetTxsEventResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}},"post":{"tags":["Service"],"summary":"BroadcastTx broadcast transaction.","operationId":"AuthService_BroadcastTx","parameters":[{"description":"BroadcastTxRequest is the request type for the Service.BroadcastTxRequest\nRPC method.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.BroadcastTxRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.BroadcastTxResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/tx/v1beta1/txs/block/{height}":{"get":{"tags":["Service"],"summary":"GetBlockWithTxs fetches a block with decoded txs.","operationId":"AuthService_GetBlockWithTxs","parameters":[{"type":"string","format":"int64","description":"height is the height of the block to query.","name":"height","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.GetBlockWithTxsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/tx/v1beta1/txs/{hash}":{"get":{"tags":["Service"],"summary":"GetTx fetches a tx by hash.","operationId":"AuthService_GetTx","parameters":[{"type":"string","description":"hash is the tx hash to query, encoded as a hex string.","name":"hash","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.tx.v1beta1.GetTxResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/upgrade/v1beta1/applied_plan/{name}":{"get":{"tags":["Query"],"summary":"AppliedPlan queries a previously applied upgrade plan by its name.","operationId":"AuthQuery_AppliedPlan","parameters":[{"type":"string","description":"name is the name of the applied plan to query for.","name":"name","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.QueryAppliedPlanResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/upgrade/v1beta1/authority":{"get":{"tags":["Query"],"summary":"Returns the account with authority to conduct upgrades","operationId":"AuthQuery_Authority","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.QueryAuthorityResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/upgrade/v1beta1/current_plan":{"get":{"tags":["Query"],"summary":"CurrentPlan queries the current upgrade plan.","operationId":"AuthQuery_CurrentPlan","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.QueryCurrentPlanResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/upgrade/v1beta1/module_versions":{"get":{"tags":["Query"],"summary":"ModuleVersions queries the list of module versions from state.","operationId":"AuthQuery_ModuleVersions","parameters":[{"type":"string","description":"module_name is a field to query a specific module\nconsensus version from state. Leaving this empty will\nfetch the full list of module versions from state","name":"module_name","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.QueryModuleVersionsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/cosmos/upgrade/v1beta1/upgraded_consensus_state/{last_height}":{"get":{"tags":["Query"],"summary":"UpgradedConsensusState queries the consensus state that will serve\nas a trusted kernel for the next version of this chain. It will only be\nstored at the last height of this chain.\nUpgradedConsensusState RPC not supported with legacy querier\nThis rpc is deprecated now that IBC has its own replacement\n(https://github.com/cosmos/ibc-go/blob/2c880a22e9f9cc75f62b527ca94aa75ce1106001/proto/ibc/core/client/v1/query.proto#L54)","operationId":"AuthQuery_UpgradedConsensusState","parameters":[{"type":"string","format":"int64","description":"last height of the current chain must be sent in request\nas this is the height under which next consensus state is stored","name":"last_height","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.QueryUpgradedConsensusStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/gamm.poolmodels.balancer.Msg/CreateBalancerPool":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CreateBalancerPool","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/gamm.poolmodels.balancer.MsgCreateBalancerPool"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.poolmodels.balancer.MsgCreateBalancerPoolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/gamm.poolmodels.stableswap.Msg/CreateStableswapPool":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CreateStableswapPool","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/gamm.poolmodels.stableswap.MsgCreateStableswapPool"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.poolmodels.stableswap.MsgCreateStableswapPoolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/gamm.poolmodels.stableswap.Msg/StableSwapAdjustScalingFactors":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_StableSwapAdjustScalingFactors","parameters":[{"description":"Sender must be the pool's scaling_factor_governor in order for the tx to\nsucceed. Adjusts stableswap scaling factors.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/gamm.poolmodels.stableswap.MsgStableSwapAdjustScalingFactors"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.poolmodels.stableswap.MsgStableSwapAdjustScalingFactorsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/gamm.v1beta1.Msg/ExitPool":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_ExitPool","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/gamm.v1beta1.MsgExitPool"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.MsgExitPoolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/gamm.v1beta1.Msg/ExitSwapExternAmountOut":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_ExitSwapExternAmountOut","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/gamm.v1beta1.MsgExitSwapExternAmountOut"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.MsgExitSwapExternAmountOutResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/gamm.v1beta1.Msg/ExitSwapShareAmountIn":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_ExitSwapShareAmountIn","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/gamm.v1beta1.MsgExitSwapShareAmountIn"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.MsgExitSwapShareAmountInResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/gamm.v1beta1.Msg/JoinPool":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_JoinPool","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/gamm.v1beta1.MsgJoinPool"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.MsgJoinPoolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/gamm.v1beta1.Msg/JoinSwapExternAmountIn":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_JoinSwapExternAmountIn","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/gamm.v1beta1.MsgJoinSwapExternAmountIn"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.MsgJoinSwapExternAmountInResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/gamm.v1beta1.Msg/JoinSwapShareAmountOut":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_JoinSwapShareAmountOut","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/gamm.v1beta1.MsgJoinSwapShareAmountOut"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.MsgJoinSwapShareAmountOutResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/gamm.v1beta1.Msg/SwapExactAmountIn":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SwapExactAmountIn","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/gamm.v1beta1.MsgSwapExactAmountIn"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.MsgSwapExactAmountInResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/gamm.v1beta1.Msg/SwapExactAmountInWithIBCTransfer":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SwapExactAmountInWithIBCTransfer","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/gamm.v1beta1.MsgSwapExactAmountInWithIBCTransfer"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.MsgSwapExactAmountInWithIBCTransferResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/gamm.v1beta1.Msg/SwapExactAmountOut":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SwapExactAmountOut","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/gamm.v1beta1.MsgSwapExactAmountOut"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.MsgSwapExactAmountOutResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/gamm.v1beta1.Query/CalcJoinPoolNoSwapShares":{"post":{"tags":["Query"],"summary":"Simulates joining pool without a swap. Returns the amount of shares you'd\nget and tokens needed to provide","operationId":"GithubCombitbadgesbitbadgeschainQuery_CalcJoinPoolNoSwapShares","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/gamm.v1beta1.QueryCalcJoinPoolNoSwapSharesRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.QueryCalcJoinPoolNoSwapSharesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.interchain_accounts.controller.v1.Msg/RegisterInterchainAccount":{"post":{"tags":["Msg"],"summary":"RegisterInterchainAccount defines a rpc handler for MsgRegisterInterchainAccount.","operationId":"ControllerMsg_RegisterInterchainAccount","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgRegisterInterchainAccount"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgRegisterInterchainAccountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.interchain_accounts.controller.v1.Msg/SendTx":{"post":{"tags":["Msg"],"summary":"SendTx defines a rpc handler for MsgSendTx.","operationId":"ControllerMsg_SendTx","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgSendTx"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgSendTxResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.interchain_accounts.controller.v1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a rpc handler for MsgUpdateParams.","operationId":"ControllerMsg_UpdateParams","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.interchain_accounts.host.v1.Msg/ModuleQuerySafe":{"post":{"tags":["Msg"],"summary":"ModuleQuerySafe defines a rpc handler for MsgModuleQuerySafe.","operationId":"ControllerMsg_ModuleQuerySafe","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.host.v1.MsgModuleQuerySafe"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.host.v1.MsgModuleQuerySafeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.interchain_accounts.host.v1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a rpc handler for MsgUpdateParams.","operationId":"ControllerMsg_UpdateParamsMixin245","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.host.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.host.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.transfer.v1.Msg/Transfer":{"post":{"tags":["Msg"],"summary":"Transfer defines a rpc handler method for MsgTransfer.","operationId":"ControllerMsg_Transfer","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.MsgTransfer"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.MsgTransferResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.applications.transfer.v1.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a rpc handler for MsgUpdateParams.","operationId":"ControllerMsg_UpdateParamsMixin256","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/Acknowledgement":{"post":{"tags":["Msg"],"summary":"Acknowledgement defines a rpc handler method for MsgAcknowledgement.","operationId":"ControllerMsg_Acknowledgement","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgAcknowledgement"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgAcknowledgementResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelCloseConfirm":{"post":{"tags":["Msg"],"summary":"ChannelCloseConfirm defines a rpc handler method for\nMsgChannelCloseConfirm.","operationId":"ControllerMsg_ChannelCloseConfirm","parameters":[{"description":"MsgChannelCloseConfirm defines a msg sent by a Relayer to Chain B\nto acknowledge the change of channel state to CLOSED on Chain A.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelCloseConfirm"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelCloseConfirmResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelCloseInit":{"post":{"tags":["Msg"],"summary":"ChannelCloseInit defines a rpc handler method for MsgChannelCloseInit.","operationId":"ControllerMsg_ChannelCloseInit","parameters":[{"description":"MsgChannelCloseInit defines a msg sent by a Relayer to Chain A\nto close a channel with Chain B.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelCloseInit"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelCloseInitResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelOpenAck":{"post":{"tags":["Msg"],"summary":"ChannelOpenAck defines a rpc handler method for MsgChannelOpenAck.","operationId":"ControllerMsg_ChannelOpenAck","parameters":[{"description":"MsgChannelOpenAck defines a msg sent by a Relayer to Chain A to acknowledge\nthe change of channel state to TRYOPEN on Chain B.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelOpenAck"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelOpenAckResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelOpenConfirm":{"post":{"tags":["Msg"],"summary":"ChannelOpenConfirm defines a rpc handler method for MsgChannelOpenConfirm.","operationId":"ControllerMsg_ChannelOpenConfirm","parameters":[{"description":"MsgChannelOpenConfirm defines a msg sent by a Relayer to Chain B to\nacknowledge the change of channel state to OPEN on Chain A.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelOpenConfirm"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelOpenConfirmResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelOpenInit":{"post":{"tags":["Msg"],"summary":"ChannelOpenInit defines a rpc handler method for MsgChannelOpenInit.","operationId":"ControllerMsg_ChannelOpenInit","parameters":[{"description":"MsgChannelOpenInit defines an sdk.Msg to initialize a channel handshake. It\nis called by a relayer on Chain A.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelOpenInit"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelOpenInitResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/ChannelOpenTry":{"post":{"tags":["Msg"],"summary":"ChannelOpenTry defines a rpc handler method for MsgChannelOpenTry.","operationId":"ControllerMsg_ChannelOpenTry","parameters":[{"description":"MsgChannelOpenInit defines a msg sent by a Relayer to try to open a channel\non Chain B. The version field within the Channel field has been deprecated. Its\nvalue will be ignored by core IBC.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelOpenTry"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgChannelOpenTryResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/RecvPacket":{"post":{"tags":["Msg"],"summary":"RecvPacket defines a rpc handler method for MsgRecvPacket.","operationId":"ControllerMsg_RecvPacket","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgRecvPacket"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgRecvPacketResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/Timeout":{"post":{"tags":["Msg"],"summary":"Timeout defines a rpc handler method for MsgTimeout.","operationId":"ControllerMsg_Timeout","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgTimeout"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgTimeoutResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v1.Msg/TimeoutOnClose":{"post":{"tags":["Msg"],"summary":"TimeoutOnClose defines a rpc handler method for MsgTimeoutOnClose.","operationId":"ControllerMsg_TimeoutOnClose","parameters":[{"description":"MsgTimeoutOnClose timed-out packet upon counterparty channel closure.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgTimeoutOnClose"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.MsgTimeoutOnCloseResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v2.Msg/Acknowledgement":{"post":{"tags":["Msg"],"summary":"Acknowledgement defines a rpc handler method for MsgAcknowledgement.","operationId":"ControllerMsg_AcknowledgementMixin264","parameters":[{"description":"MsgAcknowledgement receives incoming IBC acknowledgement.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v2.MsgAcknowledgement"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v2.MsgAcknowledgementResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v2.Msg/RecvPacket":{"post":{"tags":["Msg"],"summary":"RecvPacket defines a rpc handler method for MsgRecvPacket.","operationId":"ControllerMsg_RecvPacketMixin264","parameters":[{"description":"MsgRecvPacket receives an incoming IBC packet.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v2.MsgRecvPacket"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v2.MsgRecvPacketResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v2.Msg/SendPacket":{"post":{"tags":["Msg"],"summary":"SendPacket defines a rpc handler method for MsgSendPacket.","operationId":"ControllerMsg_SendPacket","parameters":[{"description":"MsgSendPacket sends an outgoing IBC packet.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v2.MsgSendPacket"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v2.MsgSendPacketResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.channel.v2.Msg/Timeout":{"post":{"tags":["Msg"],"summary":"Timeout defines a rpc handler method for MsgTimeout.","operationId":"ControllerMsg_TimeoutMixin264","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.channel.v2.MsgTimeout"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v2.MsgTimeoutResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.client.v1.Msg/CreateClient":{"post":{"tags":["Msg"],"summary":"CreateClient defines a rpc handler method for MsgCreateClient.","operationId":"ControllerMsg_CreateClient","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgCreateClient"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgCreateClientResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.client.v1.Msg/DeleteClientCreator":{"post":{"tags":["Msg"],"summary":"DeleteClientCreator defines a rpc handler method for MsgDeleteClientCreator.","operationId":"ControllerMsg_DeleteClientCreator","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgDeleteClientCreator"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgDeleteClientCreatorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.client.v1.Msg/IBCSoftwareUpgrade":{"post":{"tags":["Msg"],"summary":"IBCSoftwareUpgrade defines a rpc handler method for MsgIBCSoftwareUpgrade.","operationId":"ControllerMsg_IBCSoftwareUpgrade","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgIBCSoftwareUpgrade"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgIBCSoftwareUpgradeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.client.v1.Msg/RecoverClient":{"post":{"tags":["Msg"],"summary":"RecoverClient defines a rpc handler method for MsgRecoverClient.","operationId":"ControllerMsg_RecoverClient","parameters":[{"description":"MsgRecoverClient defines the message used to recover a frozen or expired client.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgRecoverClient"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgRecoverClientResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.client.v1.Msg/SubmitMisbehaviour":{"post":{"tags":["Msg"],"summary":"SubmitMisbehaviour defines a rpc handler method for MsgSubmitMisbehaviour.","operationId":"ControllerMsg_SubmitMisbehaviour","parameters":[{"description":"MsgSubmitMisbehaviour defines an sdk.Msg type that submits Evidence for\nlight client misbehaviour.\nThis message has been deprecated. Use MsgUpdateClient instead.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgSubmitMisbehaviour"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgSubmitMisbehaviourResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.client.v1.Msg/UpdateClient":{"post":{"tags":["Msg"],"summary":"UpdateClient defines a rpc handler method for MsgUpdateClient.","operationId":"ControllerMsg_UpdateClient","parameters":[{"description":"MsgUpdateClient defines an sdk.Msg to update a IBC client state using\nthe given client message.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgUpdateClient"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgUpdateClientResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.client.v1.Msg/UpdateClientParams":{"post":{"tags":["Msg"],"summary":"UpdateClientParams defines a rpc handler method for MsgUpdateParams.","operationId":"ControllerMsg_UpdateClientParams","parameters":[{"description":"MsgUpdateParams defines the sdk.Msg type to update the client parameters.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.client.v1.Msg/UpgradeClient":{"post":{"tags":["Msg"],"summary":"UpgradeClient defines a rpc handler method for MsgUpgradeClient.","operationId":"ControllerMsg_UpgradeClient","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgUpgradeClient"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.MsgUpgradeClientResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.client.v2.Msg/RegisterCounterparty":{"post":{"tags":["Msg"],"summary":"RegisterCounterparty defines a rpc handler method for MsgRegisterCounterparty.","operationId":"ControllerMsg_RegisterCounterparty","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v2.MsgRegisterCounterparty"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v2.MsgRegisterCounterpartyResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.client.v2.Msg/UpdateClientConfig":{"post":{"tags":["Msg"],"summary":"UpdateClientConfig defines a rpc handler method for MsgUpdateClientConfig.","operationId":"ControllerMsg_UpdateClientConfig","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v2.MsgUpdateClientConfig"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v2.MsgUpdateClientConfigResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.connection.v1.Msg/ConnectionOpenAck":{"post":{"tags":["Msg"],"summary":"ConnectionOpenAck defines a rpc handler method for MsgConnectionOpenAck.","operationId":"ControllerMsg_ConnectionOpenAck","parameters":[{"description":"MsgConnectionOpenAck defines a msg sent by a Relayer to Chain A to\nacknowledge the change of connection state to TRYOPEN on Chain B.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgConnectionOpenAck"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgConnectionOpenAckResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.connection.v1.Msg/ConnectionOpenConfirm":{"post":{"tags":["Msg"],"summary":"ConnectionOpenConfirm defines a rpc handler method for\nMsgConnectionOpenConfirm.","operationId":"ControllerMsg_ConnectionOpenConfirm","parameters":[{"description":"MsgConnectionOpenConfirm defines a msg sent by a Relayer to Chain B to\nacknowledge the change of connection state to OPEN on Chain A.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgConnectionOpenConfirm"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgConnectionOpenConfirmResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.connection.v1.Msg/ConnectionOpenInit":{"post":{"tags":["Msg"],"summary":"ConnectionOpenInit defines a rpc handler method for MsgConnectionOpenInit.","operationId":"ControllerMsg_ConnectionOpenInit","parameters":[{"description":"MsgConnectionOpenInit defines the msg sent by an account on Chain A to\ninitialize a connection with Chain B.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgConnectionOpenInit"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgConnectionOpenInitResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.connection.v1.Msg/ConnectionOpenTry":{"post":{"tags":["Msg"],"summary":"ConnectionOpenTry defines a rpc handler method for MsgConnectionOpenTry.","operationId":"ControllerMsg_ConnectionOpenTry","parameters":[{"description":"MsgConnectionOpenTry defines a msg sent by a Relayer to try to open a\nconnection on Chain B.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgConnectionOpenTry"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgConnectionOpenTryResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.core.connection.v1.Msg/UpdateConnectionParams":{"post":{"tags":["Msg"],"summary":"UpdateConnectionParams defines a rpc handler method for\nMsgUpdateParams.","operationId":"ControllerMsg_UpdateConnectionParams","parameters":[{"description":"MsgUpdateParams defines the sdk.Msg type to update the connection parameters.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.lightclients.wasm.v1.Msg/MigrateContract":{"post":{"tags":["Msg"],"summary":"MigrateContract defines a rpc handler method for MsgMigrateContract.","operationId":"ControllerMsg_MigrateContract","parameters":[{"description":"MsgMigrateContract defines the request type for the MigrateContract rpc.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.lightclients.wasm.v1.MsgMigrateContract"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.lightclients.wasm.v1.MsgMigrateContractResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.lightclients.wasm.v1.Msg/RemoveChecksum":{"post":{"tags":["Msg"],"summary":"RemoveChecksum defines a rpc handler method for MsgRemoveChecksum.","operationId":"ControllerMsg_RemoveChecksum","parameters":[{"description":"MsgRemoveChecksum defines the request type for the MsgRemoveChecksum rpc.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.lightclients.wasm.v1.MsgRemoveChecksum"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.lightclients.wasm.v1.MsgRemoveChecksumResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc.lightclients.wasm.v1.Msg/StoreCode":{"post":{"tags":["Msg"],"summary":"StoreCode defines a rpc handler method for MsgStoreCode.","operationId":"ControllerMsg_StoreCode","parameters":[{"description":"MsgStoreCode defines the request type for the StoreCode rpc.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.lightclients.wasm.v1.MsgStoreCode"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.lightclients.wasm.v1.MsgStoreCodeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/interchain_accounts/controller/v1/owners/{owner}/connections/{connection_id}":{"get":{"tags":["Query"],"summary":"InterchainAccount returns the interchain account address for a given owner address on a given connection","operationId":"ControllerQuery_InterchainAccount","parameters":[{"type":"string","name":"owner","in":"path","required":true},{"type":"string","name":"connection_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.QueryInterchainAccountResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/interchain_accounts/controller/v1/params":{"get":{"tags":["Query"],"summary":"Params queries all parameters of the ICA controller submodule.","operationId":"ControllerQuery_Params","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/interchain_accounts/host/v1/params":{"get":{"tags":["Query"],"summary":"Params queries all parameters of the ICA host submodule.","operationId":"ControllerQuery_ParamsMixin244","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.interchain_accounts.host.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/transfer/v1/channels/{channel_id}/ports/{port_id}/escrow_address":{"get":{"tags":["Query"],"summary":"EscrowAddress returns the escrow address for a particular port and channel id.","operationId":"ControllerQuery_EscrowAddress","parameters":[{"type":"string","description":"unique channel identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"unique port identifier","name":"port_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.QueryEscrowAddressResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/transfer/v1/denom_hashes/{trace}":{"get":{"tags":["Query"],"summary":"DenomHash queries a denomination hash information.","operationId":"ControllerQuery_DenomHash","parameters":[{"pattern":".+","type":"string","description":"The denomination trace ([port_id]/[channel_id])+/[denom]","name":"trace","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.QueryDenomHashResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/transfer/v1/denoms":{"get":{"tags":["Query"],"summary":"Denoms queries all denominations","operationId":"ControllerQuery_Denoms","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.QueryDenomsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/transfer/v1/denoms/{hash}":{"get":{"tags":["Query"],"summary":"Denom queries a denomination","operationId":"ControllerQuery_Denom","parameters":[{"pattern":".+","type":"string","description":"hash (in hex format) or denom (full denom with ibc prefix) of the on chain denomination.","name":"hash","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.QueryDenomResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/transfer/v1/params":{"get":{"tags":["Query"],"summary":"Params queries all parameters of the ibc-transfer module.","operationId":"ControllerQuery_ParamsMixin253","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.QueryParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/apps/transfer/v1/total_escrow/{denom}":{"get":{"tags":["Query"],"summary":"TotalEscrowForDenom returns the total amount of tokens in escrow based on the denom.","operationId":"ControllerQuery_TotalEscrowForDenom","parameters":[{"pattern":".+","type":"string","name":"denom","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.applications.transfer.v1.QueryTotalEscrowForDenomResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels":{"get":{"tags":["Query"],"summary":"Channels queries all the IBC channels of a chain.","operationId":"ControllerQuery_Channels","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryChannelsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}":{"get":{"tags":["Query"],"summary":"Channel queries an IBC Channel.","operationId":"ControllerQuery_Channel","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryChannelResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/client_state":{"get":{"tags":["Query"],"summary":"ChannelClientState queries for the client state for the channel associated\nwith the provided channel identifiers.","operationId":"ControllerQuery_ChannelClientState","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryChannelClientStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/consensus_state/revision/{revision_number}/height/{revision_height}":{"get":{"tags":["Query"],"summary":"ChannelConsensusState queries for the consensus state for the channel\nassociated with the provided channel identifiers.","operationId":"ControllerQuery_ChannelConsensusState","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true},{"type":"string","format":"uint64","description":"revision number of the consensus state","name":"revision_number","in":"path","required":true},{"type":"string","format":"uint64","description":"revision height of the consensus state","name":"revision_height","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryChannelConsensusStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/next_sequence":{"get":{"tags":["Query"],"summary":"NextSequenceReceive returns the next receive sequence for a given channel.","operationId":"ControllerQuery_NextSequenceReceive","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryNextSequenceReceiveResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/next_sequence_send":{"get":{"tags":["Query"],"summary":"NextSequenceSend returns the next send sequence for a given channel.","operationId":"ControllerQuery_NextSequenceSend","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryNextSequenceSendResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_acknowledgements":{"get":{"tags":["Query"],"summary":"PacketAcknowledgements returns all the packet acknowledgements associated\nwith a channel.","operationId":"ControllerQuery_PacketAcknowledgements","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"},{"type":"array","items":{"type":"string","format":"uint64"},"collectionFormat":"multi","description":"list of packet sequences","name":"packet_commitment_sequences","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryPacketAcknowledgementsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_acks/{sequence}":{"get":{"tags":["Query"],"summary":"PacketAcknowledgement queries a stored packet acknowledgement hash.","operationId":"ControllerQuery_PacketAcknowledgement","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true},{"type":"string","format":"uint64","description":"packet sequence","name":"sequence","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryPacketAcknowledgementResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments":{"get":{"tags":["Query"],"summary":"PacketCommitments returns all the packet commitments hashes associated\nwith a channel.","operationId":"ControllerQuery_PacketCommitments","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryPacketCommitmentsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{packet_ack_sequences}/unreceived_acks":{"get":{"tags":["Query"],"summary":"UnreceivedAcks returns all the unreceived IBC acknowledgements associated\nwith a channel and sequences.","operationId":"ControllerQuery_UnreceivedAcks","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true},{"minItems":1,"type":"array","items":{"type":"string","format":"uint64"},"collectionFormat":"csv","description":"list of acknowledgement sequences","name":"packet_ack_sequences","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryUnreceivedAcksResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{packet_commitment_sequences}/unreceived_packets":{"get":{"tags":["Query"],"summary":"UnreceivedPackets returns all the unreceived IBC packets associated with a\nchannel and sequences.","operationId":"ControllerQuery_UnreceivedPackets","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true},{"minItems":1,"type":"array","items":{"type":"string","format":"uint64"},"collectionFormat":"csv","description":"list of packet sequences","name":"packet_commitment_sequences","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryUnreceivedPacketsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_commitments/{sequence}":{"get":{"tags":["Query"],"summary":"PacketCommitment queries a stored packet commitment hash.","operationId":"ControllerQuery_PacketCommitment","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true},{"type":"string","format":"uint64","description":"packet sequence","name":"sequence","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryPacketCommitmentResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/channels/{channel_id}/ports/{port_id}/packet_receipts/{sequence}":{"get":{"tags":["Query"],"summary":"PacketReceipt queries if a given packet sequence has been received on the\nqueried chain","operationId":"ControllerQuery_PacketReceipt","parameters":[{"type":"string","description":"channel unique identifier","name":"channel_id","in":"path","required":true},{"type":"string","description":"port unique identifier","name":"port_id","in":"path","required":true},{"type":"string","format":"uint64","description":"packet sequence","name":"sequence","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryPacketReceiptResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v1/connections/{connection}/channels":{"get":{"tags":["Query"],"summary":"ConnectionChannels queries all the channels associated with a connection\nend.","operationId":"ControllerQuery_ConnectionChannels","parameters":[{"type":"string","description":"connection unique identifier","name":"connection","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v1.QueryConnectionChannelsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v2/clients/{client_id}/next_sequence_send":{"get":{"tags":["Query"],"summary":"NextSequenceSend returns the next send sequence for a given channel.","operationId":"ControllerQuery_NextSequenceSendMixin263","parameters":[{"type":"string","description":"client unique identifier","name":"client_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v2.QueryNextSequenceSendResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v2/clients/{client_id}/packet_acknowledgements":{"get":{"tags":["Query"],"summary":"PacketAcknowledgements returns all packet acknowledgements associated with a channel.","operationId":"ControllerQuery_PacketAcknowledgementsMixin263","parameters":[{"type":"string","description":"client unique identifier","name":"client_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"},{"type":"array","items":{"type":"string","format":"uint64"},"collectionFormat":"multi","description":"list of packet sequences","name":"packet_commitment_sequences","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v2.QueryPacketAcknowledgementsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v2/clients/{client_id}/packet_acks/{sequence}":{"get":{"tags":["Query"],"summary":"PacketAcknowledgement queries a stored acknowledgement commitment hash.","operationId":"ControllerQuery_PacketAcknowledgementMixin263","parameters":[{"type":"string","description":"client unique identifier","name":"client_id","in":"path","required":true},{"type":"string","format":"uint64","description":"packet sequence","name":"sequence","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v2.QueryPacketAcknowledgementResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v2/clients/{client_id}/packet_commitments":{"get":{"tags":["Query"],"summary":"PacketCommitments queries a stored packet commitment hash.","operationId":"ControllerQuery_PacketCommitmentsMixin263","parameters":[{"type":"string","description":"client unique identifier","name":"client_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v2.QueryPacketCommitmentsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v2/clients/{client_id}/packet_commitments/{packet_ack_sequences}/unreceived_acks":{"get":{"tags":["Query"],"summary":"UnreceivedAcks returns all the unreceived IBC acknowledgements associated with a channel and sequences.","operationId":"ControllerQuery_UnreceivedAcksMixin263","parameters":[{"type":"string","description":"client unique identifier","name":"client_id","in":"path","required":true},{"minItems":1,"type":"array","items":{"type":"string","format":"uint64"},"collectionFormat":"csv","description":"list of acknowledgement sequences","name":"packet_ack_sequences","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v2.QueryUnreceivedAcksResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v2/clients/{client_id}/packet_commitments/{sequences}/unreceived_packets":{"get":{"tags":["Query"],"summary":"UnreceivedPackets returns all the unreceived IBC packets associated with a channel and sequences.","operationId":"ControllerQuery_UnreceivedPacketsMixin263","parameters":[{"type":"string","description":"client unique identifier","name":"client_id","in":"path","required":true},{"minItems":1,"type":"array","items":{"type":"string","format":"uint64"},"collectionFormat":"csv","description":"list of packet sequences","name":"sequences","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v2.QueryUnreceivedPacketsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v2/clients/{client_id}/packet_commitments/{sequence}":{"get":{"tags":["Query"],"summary":"PacketCommitment queries a stored packet commitment hash.","operationId":"ControllerQuery_PacketCommitmentMixin263","parameters":[{"type":"string","description":"client unique identifier","name":"client_id","in":"path","required":true},{"type":"string","format":"uint64","description":"packet sequence","name":"sequence","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v2.QueryPacketCommitmentResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/channel/v2/clients/{client_id}/packet_receipts/{sequence}":{"get":{"tags":["Query"],"summary":"PacketReceipt queries a stored packet receipt.","operationId":"ControllerQuery_PacketReceiptMixin263","parameters":[{"type":"string","description":"client unique identifier","name":"client_id","in":"path","required":true},{"type":"string","format":"uint64","description":"packet sequence","name":"sequence","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.channel.v2.QueryPacketReceiptResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/client_creator/{client_id}":{"get":{"tags":["Query"],"summary":"ClientCreator queries the creator of a given client.","operationId":"ControllerQuery_ClientCreator","parameters":[{"type":"string","description":"client unique identifier","name":"client_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryClientCreatorResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/client_states":{"get":{"tags":["Query"],"summary":"ClientStates queries all the IBC light clients of a chain.","operationId":"ControllerQuery_ClientStates","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryClientStatesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/client_states/{client_id}":{"get":{"tags":["Query"],"summary":"ClientState queries an IBC light client.","operationId":"ControllerQuery_ClientState","parameters":[{"type":"string","description":"client state unique identifier","name":"client_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryClientStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/client_status/{client_id}":{"get":{"tags":["Query"],"summary":"Status queries the status of an IBC client.","operationId":"ControllerQuery_ClientStatus","parameters":[{"type":"string","description":"client unique identifier","name":"client_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryClientStatusResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/consensus_states/{client_id}":{"get":{"tags":["Query"],"summary":"ConsensusStates queries all the consensus state associated with a given\nclient.","operationId":"ControllerQuery_ConsensusStates","parameters":[{"type":"string","description":"client identifier","name":"client_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryConsensusStatesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/consensus_states/{client_id}/heights":{"get":{"tags":["Query"],"summary":"ConsensusStateHeights queries the height of every consensus states associated with a given client.","operationId":"ControllerQuery_ConsensusStateHeights","parameters":[{"type":"string","description":"client identifier","name":"client_id","in":"path","required":true},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryConsensusStateHeightsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/consensus_states/{client_id}/revision/{revision_number}/height/{revision_height}":{"get":{"tags":["Query"],"summary":"ConsensusState queries a consensus state associated with a client state at\na given height.","operationId":"ControllerQuery_ConsensusState","parameters":[{"type":"string","description":"client identifier","name":"client_id","in":"path","required":true},{"type":"string","format":"uint64","description":"consensus state revision number","name":"revision_number","in":"path","required":true},{"type":"string","format":"uint64","description":"consensus state revision height","name":"revision_height","in":"path","required":true},{"type":"boolean","description":"latest_height overrides the height field and queries the latest stored\nConsensusState","name":"latest_height","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryConsensusStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/params":{"get":{"tags":["Query"],"summary":"ClientParams queries all parameters of the ibc client submodule.","operationId":"ControllerQuery_ClientParams","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryClientParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/upgraded_client_states":{"get":{"tags":["Query"],"summary":"UpgradedClientState queries an Upgraded IBC light client.","operationId":"ControllerQuery_UpgradedClientState","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryUpgradedClientStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/upgraded_consensus_states":{"get":{"tags":["Query"],"summary":"UpgradedConsensusState queries an Upgraded IBC consensus state.","operationId":"ControllerQuery_UpgradedConsensusState","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryUpgradedConsensusStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v1/verify_membership":{"post":{"tags":["Query"],"summary":"VerifyMembership queries an IBC light client for proof verification of a value at a given key path.","operationId":"ControllerQuery_VerifyMembership","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryVerifyMembershipRequest"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v1.QueryVerifyMembershipResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v2/config/{client_id}":{"get":{"tags":["Query"],"summary":"Config queries the IBC client v2 configuration for a given client.","operationId":"ControllerQuery_Config","parameters":[{"type":"string","description":"client state unique identifier","name":"client_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v2.QueryConfigResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/client/v2/counterparty_info/{client_id}":{"get":{"tags":["Query"],"summary":"CounterpartyInfo queries an IBC light counter party info.","operationId":"ControllerQuery_CounterpartyInfo","parameters":[{"type":"string","description":"client state unique identifier","name":"client_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.client.v2.QueryCounterpartyInfoResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/connection/v1/client_connections/{client_id}":{"get":{"tags":["Query"],"summary":"ClientConnections queries the connection paths associated with a client\nstate.","operationId":"ControllerQuery_ClientConnections","parameters":[{"type":"string","description":"client identifier associated with a connection","name":"client_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.QueryClientConnectionsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/connection/v1/connections":{"get":{"tags":["Query"],"summary":"Connections queries all the IBC connections of a chain.","operationId":"ControllerQuery_Connections","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.QueryConnectionsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/connection/v1/connections/{connection_id}":{"get":{"tags":["Query"],"summary":"Connection queries an IBC connection end.","operationId":"ControllerQuery_Connection","parameters":[{"type":"string","description":"connection unique identifier","name":"connection_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.QueryConnectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/connection/v1/connections/{connection_id}/client_state":{"get":{"tags":["Query"],"summary":"ConnectionClientState queries the client state associated with the\nconnection.","operationId":"ControllerQuery_ConnectionClientState","parameters":[{"type":"string","description":"connection identifier","name":"connection_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.QueryConnectionClientStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/connection/v1/connections/{connection_id}/consensus_state/revision/{revision_number}/height/{revision_height}":{"get":{"tags":["Query"],"summary":"ConnectionConsensusState queries the consensus state associated with the\nconnection.","operationId":"ControllerQuery_ConnectionConsensusState","parameters":[{"type":"string","description":"connection identifier","name":"connection_id","in":"path","required":true},{"type":"string","format":"uint64","name":"revision_number","in":"path","required":true},{"type":"string","format":"uint64","name":"revision_height","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.QueryConnectionConsensusStateResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/core/connection/v1/params":{"get":{"tags":["Query"],"summary":"ConnectionParams queries all parameters of the ibc connection submodule.","operationId":"ControllerQuery_ConnectionParams","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.core.connection.v1.QueryConnectionParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/lightclients/wasm/v1/checksums":{"get":{"tags":["Query"],"summary":"Get all Wasm checksums","operationId":"ControllerQuery_Checksums","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.\n\nSince: cosmos-sdk 0.43","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.lightclients.wasm.v1.QueryChecksumsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibc/lightclients/wasm/v1/checksums/{checksum}/code":{"get":{"tags":["Query"],"summary":"Get Wasm code for given checksum","operationId":"ControllerQuery_Code","parameters":[{"type":"string","description":"checksum is a hex encoded string of the code stored.","name":"checksum","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibc.lightclients.wasm.v1.QueryCodeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibcratelimit.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.","operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateParams","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibcratelimit.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibcratelimit.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/ibcratelimit.Msg/UpdateRateLimit":{"post":{"tags":["Msg"],"summary":"UpdateRateLimit defines a (governance) operation for updating or adding a single rate limit.\nIf a rate limit with the same channel_id and denom exists, it will be updated.\nOtherwise, it will be appended to the list. The authority defaults to the x/gov module account.","operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateRateLimit","parameters":[{"description":"MsgUpdateRateLimit is the Msg/UpdateRateLimit request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/ibcratelimit.MsgUpdateRateLimit"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/ibcratelimit.MsgUpdateRateLimitResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/managersplitter.Msg/CreateManagerSplitter":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CreateManagerSplitter","parameters":[{"description":"MsgCreateManagerSplitter creates a new manager splitter entity.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/managersplitter.MsgCreateManagerSplitter"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/managersplitter.MsgCreateManagerSplitterResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/managersplitter.Msg/DeleteManagerSplitter":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_DeleteManagerSplitter","parameters":[{"description":"MsgDeleteManagerSplitter deletes a manager splitter entity.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/managersplitter.MsgDeleteManagerSplitter"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/managersplitter.MsgDeleteManagerSplitterResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/managersplitter.Msg/ExecuteUniversalUpdateCollection":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_ExecuteUniversalUpdateCollection","parameters":[{"description":"MsgExecuteUniversalUpdateCollection executes a UniversalUpdateCollection message\nthrough the manager splitter, checking permissions before execution.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/managersplitter.MsgExecuteUniversalUpdateCollection"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/managersplitter.MsgExecuteUniversalUpdateCollectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/managersplitter.Msg/UpdateManagerSplitter":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateManagerSplitter","parameters":[{"description":"MsgUpdateManagerSplitter updates an existing manager splitter entity.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/managersplitter.MsgUpdateManagerSplitter"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/managersplitter.MsgUpdateManagerSplitterResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/managersplitter.Msg/UpdateParams":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateParamsMixin23","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/managersplitter.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/managersplitter.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/gamm/v1beta1/filtered_pools":{"get":{"tags":["Query"],"summary":"PoolsWithFilter allows you to query specific pools with requested\nparameters","operationId":"GithubCombitbadgesbitbadgeschainQuery_PoolsWithFilter","parameters":[{"type":"string","description":"String of the coins in single string separated by comma. Ex)\n10uatom,100uosmo","name":"min_liquidity","in":"query"},{"type":"string","name":"pool_type","in":"query"},{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.QueryPoolsWithFilterResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/gamm/v1beta1/num_pools":{"get":{"tags":["Query"],"summary":"Deprecated: please use the alternative in x/poolmanager","operationId":"GithubCombitbadgesbitbadgeschainQuery_NumPools","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.QueryNumPoolsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/gamm/v1beta1/params":{"get":{"tags":["Query"],"summary":"Params returns gamm module params.","operationId":"GithubCombitbadgesbitbadgeschainQuery_Params","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.ParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/gamm/v1beta1/pool_type/{pool_id}":{"get":{"tags":["Query"],"summary":"PoolType returns the type of the pool.\nReturns \"Balancer\" as a string literal when the pool is a balancer pool.\nErrors if the pool is failed to be type caseted.","operationId":"GithubCombitbadgesbitbadgeschainQuery_PoolType","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.QueryPoolTypeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/gamm/v1beta1/pools":{"get":{"tags":["Query"],"operationId":"GithubCombitbadgesbitbadgeschainQuery_Pools","parameters":[{"type":"string","format":"byte","description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","name":"pagination.key","in":"query"},{"type":"string","format":"uint64","description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","name":"pagination.offset","in":"query"},{"type":"string","format":"uint64","description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","name":"pagination.limit","in":"query"},{"type":"boolean","description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","name":"pagination.count_total","in":"query"},{"type":"boolean","description":"reverse is set to true if results are to be returned in the descending order.","name":"pagination.reverse","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.QueryPoolsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/gamm/v1beta1/pools/{pool_id}":{"get":{"tags":["Query"],"summary":"Deprecated: please use the alternative in x/poolmanager","operationId":"GithubCombitbadgesbitbadgeschainQuery_Pool","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.QueryPoolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/gamm/v1beta1/pools/{pool_id}/exit_swap_share_amount_in":{"get":{"tags":["Query"],"operationId":"GithubCombitbadgesbitbadgeschainQuery_CalcExitPoolCoinsFromShares","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true},{"type":"string","name":"share_in_amount","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.QueryCalcExitPoolCoinsFromSharesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/gamm/v1beta1/pools/{pool_id}/join_swap_exact_in":{"get":{"tags":["Query"],"operationId":"GithubCombitbadgesbitbadgeschainQuery_CalcJoinPoolShares","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.QueryCalcJoinPoolSharesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/gamm/v1beta1/pools/{pool_id}/params":{"get":{"tags":["Query"],"operationId":"GithubCombitbadgesbitbadgeschainQuery_PoolParams","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.QueryPoolParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/gamm/v1beta1/pools/{pool_id}/prices":{"get":{"tags":["Query"],"summary":"SpotPrice defines a gRPC query handler that returns the spot price given\na base denomination and a quote denomination.","operationId":"GithubCombitbadgesbitbadgeschainQuery_SpotPrice","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true},{"type":"string","name":"base_asset_denom","in":"query"},{"type":"string","name":"quote_asset_denom","in":"query"},{"type":"boolean","description":"DEPRECATED","name":"withSwapFee","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.QuerySpotPriceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/gamm/v1beta1/pools/{pool_id}/total_pool_liquidity":{"get":{"tags":["Query"],"summary":"Deprecated: please use the alternative in x/poolmanager","operationId":"GithubCombitbadgesbitbadgeschainQuery_TotalPoolLiquidity","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.QueryTotalPoolLiquidityResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/gamm/v1beta1/pools/{pool_id}/total_shares":{"get":{"tags":["Query"],"operationId":"GithubCombitbadgesbitbadgeschainQuery_TotalShares","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.QueryTotalSharesResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/gamm/v1beta1/total_liquidity":{"get":{"tags":["Query"],"operationId":"GithubCombitbadgesbitbadgeschainQuery_TotalLiquidity","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.QueryTotalLiquidityResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/gamm/v1beta1/{pool_id}/estimate/swap_exact_amount_in":{"get":{"tags":["Query"],"summary":"Deprecated: please use the alternative in x/poolmanager","operationId":"GithubCombitbadgesbitbadgeschainQuery_EstimateSwapExactAmountIn","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true},{"type":"string","name":"sender","in":"query"},{"type":"string","name":"token_in","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.QuerySwapExactAmountInResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/gamm/v1beta1/{pool_id}/estimate/swap_exact_amount_out":{"get":{"tags":["Query"],"summary":"Deprecated: please use the alternative in x/poolmanager","operationId":"GithubCombitbadgesbitbadgeschainQuery_EstimateSwapExactAmountOut","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true},{"type":"string","name":"sender","in":"query"},{"type":"string","name":"token_out","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v1beta1.QuerySwapExactAmountOutResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/gamm/v2/pools/{pool_id}/prices":{"get":{"tags":["Query"],"summary":"Deprecated: please use alternate in x/poolmanager","operationId":"GithubCombitbadgesbitbadgeschainQuery_SpotPriceMixin13","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true},{"type":"string","name":"base_asset_denom","in":"query"},{"type":"string","name":"quote_asset_denom","in":"query"},{"type":"boolean","description":"DEPRECATED","name":"withSwapFee","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/gamm.v2.QuerySpotPriceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/pools/{pool_id}/prices":{"get":{"tags":["Query"],"summary":"SpotPrice defines a gRPC query handler that returns the spot price given\na base denomination and a quote denomination.","operationId":"GithubCombitbadgesbitbadgeschainQuery_SpotPriceMixin26","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true},{"type":"string","name":"base_asset_denom","in":"query"},{"type":"string","name":"quote_asset_denom","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.SpotPriceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/Params":{"get":{"tags":["Query"],"operationId":"GithubCombitbadgesbitbadgeschainQuery_ParamsMixin26","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.ParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/all-pools":{"get":{"tags":["Query"],"summary":"AllPools returns all pools on the Osmosis chain sorted by IDs.","operationId":"GithubCombitbadgesbitbadgeschainQuery_AllPools","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.AllPoolsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/all_registered_alloyed_pools":{"get":{"tags":["Query"],"summary":"AllRegisteredAlloyedPools returns all registered alloyed pools. The\nregistered alloyed pool contains the pool's contract address, along with\nthe current distribution composition of taker fee share denoms within the\nalloyed pool.","operationId":"GithubCombitbadgesbitbadgeschainQuery_AllRegisteredAlloyedPools","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.AllRegisteredAlloyedPoolsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/all_taker_fee_share_accumulators":{"get":{"tags":["Query"],"summary":"AllTakerFeeShareAccumulators returns all taker fee share accumulators. A\ntaker fee share accumulator includes the denom of the denom getting the\ntaker fees, and an accumulated value of coins that the denom has accrued\nsince the last time it was distributed in the epoch prior.","operationId":"GithubCombitbadgesbitbadgeschainQuery_AllTakerFeeShareAccumulators","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.AllTakerFeeShareAccumulatorsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/all_taker_fee_share_agreements":{"get":{"tags":["Query"],"summary":"AllTakerFeeShareAgreements returns all taker fee share agreements.\nA taker fee share agreement includes the denom of the denom getting the\ntaker fees, the percent of the taker fees that the denom gets when it is\nin the route being traded against, and the address that the taker fees are\nsent to at epoch.","operationId":"GithubCombitbadgesbitbadgeschainQuery_AllTakerFeeShareAgreements","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.AllTakerFeeShareAgreementsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/list-pools-by-denom":{"get":{"tags":["Query"],"summary":"ListPoolsByDenom return all pools by denom","operationId":"GithubCombitbadgesbitbadgeschainQuery_ListPoolsByDenom","parameters":[{"type":"string","name":"denom","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.ListPoolsByDenomResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/num_pools":{"get":{"tags":["Query"],"summary":"Returns the total number of pools existing in Osmosis.","operationId":"GithubCombitbadgesbitbadgeschainQuery_NumPoolsMixin26","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.NumPoolsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/pools/{pool_id}":{"get":{"tags":["Query"],"summary":"Pool returns the Pool specified by the pool id","operationId":"GithubCombitbadgesbitbadgeschainQuery_PoolMixin26","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.PoolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/pools/{pool_id}/total_pool_liquidity":{"get":{"tags":["Query"],"summary":"TotalPoolLiquidity returns the total liquidity of the specified pool.","operationId":"GithubCombitbadgesbitbadgeschainQuery_TotalPoolLiquidityMixin26","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.TotalPoolLiquidityResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/pools/{pool_id}/total_volume":{"get":{"tags":["Query"],"summary":"TotalVolumeForPool returns the total volume of the specified pool.","operationId":"GithubCombitbadgesbitbadgeschainQuery_TotalVolumeForPool","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.TotalVolumeForPoolResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/total_liquidity":{"get":{"tags":["Query"],"summary":"TotalLiquidity returns the total liquidity across all pools.","operationId":"GithubCombitbadgesbitbadgeschainQuery_TotalLiquidityMixin26","responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.TotalLiquidityResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/trading_pair_takerfee":{"get":{"tags":["Query"],"summary":"TradingPairTakerFee returns the taker fee for a given set of denoms","operationId":"GithubCombitbadgesbitbadgeschainQuery_TradingPairTakerFee","parameters":[{"type":"string","name":"denom_0","in":"query"},{"type":"string","name":"denom_1","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.TradingPairTakerFeeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/{denom}/registered_alloyed_pool_from_denom":{"get":{"tags":["Query"],"summary":"RegisteredAlloyedPoolFromDenom returns the registered alloyed pool state\nfrom the given denom. The registered alloyed pool contains the pool's\ncontract address, along with the current distribution composition of taker\nfee share denoms within the alloyed pool.","operationId":"GithubCombitbadgesbitbadgeschainQuery_RegisteredAlloyedPoolFromDenom","parameters":[{"type":"string","name":"denom","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.RegisteredAlloyedPoolFromDenomResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/{denom}/taker_fee_share_agreement_from_denom":{"get":{"tags":["Query"],"summary":"TakerFeeShareAgreementFromDenom returns the taker fee share agreement for a\ngiven denom. A taker fee share agreement includes the denom of the denom\ngetting the taker fees, the percent of the taker fees that the denom gets\nwhen it is in the route being traded against, and the address that the\ntaker fees are sent to at epoch.","operationId":"GithubCombitbadgesbitbadgeschainQuery_TakerFeeShareAgreementFromDenom","parameters":[{"type":"string","name":"denom","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.TakerFeeShareAgreementFromDenomResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/{pool_id}/estimate/single_pool_swap_exact_amount_in":{"get":{"tags":["Query"],"operationId":"GithubCombitbadgesbitbadgeschainQuery_EstimateSinglePoolSwapExactAmountIn","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true},{"type":"string","name":"token_in","in":"query"},{"type":"string","name":"token_out_denom","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.EstimateSwapExactAmountInResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/{pool_id}/estimate/swap_exact_amount_in":{"get":{"tags":["Query"],"summary":"Estimates swap amount out given in.","operationId":"GithubCombitbadgesbitbadgeschainQuery_EstimateSwapExactAmountInMixin26","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true},{"type":"string","description":"DEPRECATED","name":"sender","in":"query"},{"type":"string","name":"token_in","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.EstimateSwapExactAmountInResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/{pool_id}/estimate/swap_exact_amount_in_with_primitive_types":{"get":{"tags":["Query"],"summary":"EstimateSwapExactAmountInWithPrimitiveTypes is an alternative query for\nEstimateSwapExactAmountIn. Supports query via GRPC-Gateway by using\nprimitive types instead of repeated structs. Each index in the\nroutes_pool_id field corresponds to the respective routes_token_out_denom\nvalue, thus they are required to have the same length and are grouped\ntogether as pairs.\nexample usage:\nhttp://0.0.0.0:1317/osmosis/poolmanager/v1beta1/1/estimate/\nswap_exact_amount_in_with_primitive_types?token_in=100000stake\u0026routes_token_out_denom=uatom\n\u0026routes_token_out_denom=uion\u0026routes_pool_id=1\u0026routes_pool_id=2","operationId":"GithubCombitbadgesbitbadgeschainQuery_EstimateSwapExactAmountInWithPrimitiveTypes","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true},{"type":"string","name":"token_in","in":"query"},{"type":"array","items":{"type":"string","format":"uint64"},"collectionFormat":"multi","name":"routes_pool_id","in":"query"},{"type":"array","items":{"type":"string"},"collectionFormat":"multi","name":"routes_token_out_denom","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.EstimateSwapExactAmountInResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/{pool_id}/estimate/swap_exact_amount_out":{"get":{"tags":["Query"],"summary":"Estimates swap amount in given out.","operationId":"GithubCombitbadgesbitbadgeschainQuery_EstimateSwapExactAmountOutMixin26","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true},{"type":"string","description":"DEPRECATED","name":"sender","in":"query"},{"type":"string","name":"token_out","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.EstimateSwapExactAmountOutResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/{pool_id}/estimate/swap_exact_amount_out_with_primitive_types":{"get":{"tags":["Query"],"summary":"Estimates swap amount in given out.","operationId":"GithubCombitbadgesbitbadgeschainQuery_EstimateSwapExactAmountOutWithPrimitiveTypes","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true},{"type":"array","items":{"type":"string","format":"uint64"},"collectionFormat":"multi","name":"routes_pool_id","in":"query"},{"type":"array","items":{"type":"string"},"collectionFormat":"multi","name":"routes_token_in_denom","in":"query"},{"type":"string","name":"token_out","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.EstimateSwapExactAmountOutResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/{pool_id}/estimate_out/single_pool_swap_exact_amount_out":{"get":{"tags":["Query"],"operationId":"GithubCombitbadgesbitbadgeschainQuery_EstimateSinglePoolSwapExactAmountOut","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true},{"type":"string","name":"token_in_denom","in":"query"},{"type":"string","name":"token_out","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.EstimateSwapExactAmountOutResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/{pool_id}/estimate_trade":{"get":{"tags":["Query"],"summary":"EstimateTradeBasedOnPriceImpact returns an estimated trade based on price\nimpact, if a trade cannot be estimated a 0 input and 0 output would be\nreturned.","operationId":"GithubCombitbadgesbitbadgeschainQuery_EstimateTradeBasedOnPriceImpact","parameters":[{"type":"string","format":"uint64","description":"pool_id is the identifier of the liquidity pool that the trade will occur\non.","name":"pool_id","in":"path","required":true},{"type":"string","name":"from_coin.denom","in":"query"},{"type":"string","name":"from_coin.amount","in":"query"},{"type":"string","description":"to_coin_denom is the denom identifier of the token that the user wants to\nbuy.","name":"to_coin_denom","in":"query"},{"type":"string","description":"max_price_impact is the maximum percentage that the user is willing\nto affect the price of the liquidity pool.","name":"max_price_impact","in":"query"},{"type":"string","description":"external_price is an optional external price that the user can enter.\nIt adjusts the MaxPriceImpact as the SpotPrice of a pool can be changed at\nany time.","name":"external_price","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.EstimateTradeBasedOnPriceImpactResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/{pool_id}/registered_alloyed_pool_from_pool_id":{"get":{"tags":["Query"],"summary":"RegisteredAlloyedPoolFromPoolId returns the registered alloyed pool state\nfrom the given pool id. The registered alloyed pool contains the pool's\ncontract address, along with the current distribution composition of taker\nfee share denoms within the alloyed pool.","operationId":"GithubCombitbadgesbitbadgeschainQuery_RegisteredAlloyedPoolFromPoolId","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.RegisteredAlloyedPoolFromPoolIdResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v1beta1/{takerFeeDenom}/{denom}/taker_fee_share_denoms_to_accrued_value":{"get":{"tags":["Query"],"summary":"TakerFeeShareDenomsToAccruedValue returns the accrued value (as an Int) of\nthe given taker fee denom (the collected fees) for the given fee share\ndenom (the denom with the taker fee share agreement)","operationId":"GithubCombitbadgesbitbadgeschainQuery_TakerFeeShareDenomsToAccruedValue","parameters":[{"type":"string","name":"takerFeeDenom","in":"path","required":true},{"type":"string","name":"denom","in":"path","required":true}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.TakerFeeShareDenomsToAccruedValueResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/osmosis/poolmanager/v2/pools/{pool_id}/prices":{"get":{"tags":["Query"],"summary":"SpotPriceV2 defines a gRPC query handler that returns the spot price given\na base denomination and a quote denomination.\nThe returned spot price has 36 decimal places. However, some of\nmodules perform sig fig rounding so most of the rightmost decimals can be\nzeroes.","operationId":"GithubCombitbadgesbitbadgeschainQuery_SpotPriceV2","parameters":[{"type":"string","format":"uint64","name":"pool_id","in":"path","required":true},{"type":"string","name":"base_asset_denom","in":"query"},{"type":"string","name":"quote_asset_denom","in":"query"}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v2.SpotPriceResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poolmanager.v1beta1.Msg/SetDenomPairTakerFee":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetDenomPairTakerFee","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poolmanager.v1beta1.MsgSetDenomPairTakerFee"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.MsgSetDenomPairTakerFeeResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poolmanager.v1beta1.Msg/SetTakerFeeShareAgreementForDenom":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetTakerFeeShareAgreementForDenom","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poolmanager.v1beta1.MsgSetTakerFeeShareAgreementForDenom"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.MsgSetTakerFeeShareAgreementForDenomResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poolmanager.v1beta1.Msg/SplitRouteSwapExactAmountIn":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SplitRouteSwapExactAmountIn","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poolmanager.v1beta1.MsgSplitRouteSwapExactAmountIn"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.MsgSplitRouteSwapExactAmountInResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poolmanager.v1beta1.Msg/SplitRouteSwapExactAmountOut":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SplitRouteSwapExactAmountOut","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poolmanager.v1beta1.MsgSplitRouteSwapExactAmountOut"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.MsgSplitRouteSwapExactAmountOutResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poolmanager.v1beta1.Msg/SwapExactAmountIn":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SwapExactAmountInMixin30","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poolmanager.v1beta1.MsgSwapExactAmountIn"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.MsgSwapExactAmountInResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/poolmanager.v1beta1.Msg/SwapExactAmountOut":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SwapExactAmountOutMixin30","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/poolmanager.v1beta1.MsgSwapExactAmountOut"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/poolmanager.v1beta1.MsgSwapExactAmountOutResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/sendmanager.Msg/SendWithAliasRouting":{"post":{"tags":["Msg"],"summary":"SendWithAliasRouting defines a message for sending coins with alias denom routing.\nThis allows sending both standard coins and alias denoms (e.g., badgeslp:) through the sendmanager.","operationId":"GithubCombitbadgesbitbadgeschainMsg_SendWithAliasRouting","parameters":[{"description":"MsgSendWithAliasRouting defines a message for sending coins with alias denom routing.\nThis message mirrors cosmos bank MsgSend but routes through sendmanager to handle\nboth standard coins and alias denoms (e.g., badgeslp:).","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/sendmanager.MsgSendWithAliasRouting"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/sendmanager.MsgSendWithAliasRoutingResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/sendmanager.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.","operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateParamsMixin35","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/sendmanager.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/sendmanager.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/ApplySnapshotChunk":{"post":{"tags":["ABCI"],"operationId":"AuthABCI_ApplySnapshotChunk","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestApplySnapshotChunk"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseApplySnapshotChunk"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/CheckTx":{"post":{"tags":["ABCI"],"operationId":"AuthABCI_CheckTx","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestCheckTx"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseCheckTx"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/Commit":{"post":{"tags":["ABCI"],"operationId":"AuthABCI_Commit","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestCommit"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseCommit"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/Echo":{"post":{"tags":["ABCI"],"operationId":"AuthABCI_Echo","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestEcho"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseEcho"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/ExtendVote":{"post":{"tags":["ABCI"],"operationId":"AuthABCI_ExtendVote","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestExtendVote"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseExtendVote"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/FinalizeBlock":{"post":{"tags":["ABCI"],"operationId":"AuthABCI_FinalizeBlock","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestFinalizeBlock"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseFinalizeBlock"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/Flush":{"post":{"tags":["ABCI"],"operationId":"AuthABCI_Flush","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestFlush"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseFlush"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/Info":{"post":{"tags":["ABCI"],"operationId":"AuthABCI_Info","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestInfo"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseInfo"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/InitChain":{"post":{"tags":["ABCI"],"operationId":"AuthABCI_InitChain","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestInitChain"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseInitChain"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/ListSnapshots":{"post":{"tags":["ABCI"],"operationId":"AuthABCI_ListSnapshots","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestListSnapshots"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseListSnapshots"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/LoadSnapshotChunk":{"post":{"tags":["ABCI"],"operationId":"AuthABCI_LoadSnapshotChunk","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestLoadSnapshotChunk"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseLoadSnapshotChunk"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/OfferSnapshot":{"post":{"tags":["ABCI"],"operationId":"AuthABCI_OfferSnapshot","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestOfferSnapshot"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseOfferSnapshot"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/PrepareProposal":{"post":{"tags":["ABCI"],"operationId":"AuthABCI_PrepareProposal","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestPrepareProposal"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponsePrepareProposal"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/ProcessProposal":{"post":{"tags":["ABCI"],"operationId":"AuthABCI_ProcessProposal","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestProcessProposal"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseProcessProposal"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/Query":{"post":{"tags":["ABCI"],"operationId":"AuthABCI_Query","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestQuery"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseQuery"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tendermint.abci.ABCI/VerifyVoteExtension":{"post":{"tags":["ABCI"],"operationId":"AuthABCI_VerifyVoteExtension","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tendermint.abci.RequestVerifyVoteExtension"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tendermint.abci.ResponseVerifyVoteExtension"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/CastVote":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CastVote","parameters":[{"description":"MsgCastVote allows a voter to cast or update their vote for a voting challenge.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgCastVote"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgCastVoteResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/CreateAddressLists":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CreateAddressLists","parameters":[{"description":"MsgCreateAddressLists is used to create address lists.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgCreateAddressLists"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgCreateAddressListsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/CreateCollection":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CreateCollection","parameters":[{"description":"MsgCreateCollection is used to create a new collection.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgCreateCollection"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgCreateCollectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/CreateDynamicStore":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CreateDynamicStore","parameters":[{"description":"MsgCreateDynamicStore is used to create a new dynamic store.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgCreateDynamicStore"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgCreateDynamicStoreResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/DeleteCollection":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_DeleteCollection","parameters":[{"description":"MsgDeleteCollection is used to delete a collection.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgDeleteCollection"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgDeleteCollectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/DeleteDynamicStore":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_DeleteDynamicStore","parameters":[{"description":"MsgDeleteDynamicStore is used to delete a dynamic store.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgDeleteDynamicStore"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgDeleteDynamicStoreResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/DeleteIncomingApproval":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_DeleteIncomingApproval","parameters":[{"description":"MsgDeleteIncomingApproval is a helper message to delete a single incoming approval.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgDeleteIncomingApproval"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgDeleteIncomingApprovalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/DeleteOutgoingApproval":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_DeleteOutgoingApproval","parameters":[{"description":"MsgDeleteOutgoingApproval is a helper message to delete a single outgoing approval.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgDeleteOutgoingApproval"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgDeleteOutgoingApprovalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/PurgeApprovals":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_PurgeApprovals","parameters":[{"description":"MsgPurgeApprovals is a helper message to purge expired approvals.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgPurgeApprovals"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgPurgeApprovalsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/SetCollectionApprovals":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetCollectionApprovals","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgSetCollectionApprovals"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgSetCollectionApprovalsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/SetCollectionMetadata":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetCollectionMetadata","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgSetCollectionMetadata"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgSetCollectionMetadataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/SetCustomData":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetCustomData","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgSetCustomData"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgSetCustomDataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/SetDynamicStoreValue":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetDynamicStoreValue","parameters":[{"description":"MsgSetDynamicStoreValue is used to set a boolean value for a specific address in a dynamic store.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgSetDynamicStoreValue"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgSetDynamicStoreValueResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/SetIncomingApproval":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetIncomingApproval","parameters":[{"description":"MsgSetIncomingApproval is a helper message to set a single incoming approval.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgSetIncomingApproval"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgSetIncomingApprovalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/SetIsArchived":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetIsArchived","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgSetIsArchived"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgSetIsArchivedResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/SetManager":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetManager","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgSetManager"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgSetManagerResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/SetOutgoingApproval":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetOutgoingApproval","parameters":[{"description":"MsgSetOutgoingApproval is a helper message to set a single outgoing approval.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgSetOutgoingApproval"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgSetOutgoingApprovalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/SetReservedProtocolAddress":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetReservedProtocolAddress","parameters":[{"description":"MsgSetReservedProtocolAddress sets or unsets a reserved protocol address (governance-only).","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgSetReservedProtocolAddress"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgSetReservedProtocolAddressResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/SetStandards":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetStandards","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgSetStandards"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgSetStandardsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/SetTokenMetadata":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetTokenMetadata","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgSetTokenMetadata"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgSetTokenMetadataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/SetValidTokenIds":{"post":{"tags":["Msg"],"summary":"Helper message types for UniversalUpdateCollection subsets","operationId":"GithubCombitbadgesbitbadgeschainMsg_SetValidTokenIds","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgSetValidTokenIds"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgSetValidTokenIdsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/TransferTokens":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_TransferTokens","parameters":[{"description":"MsgTransferTokens is used to transfer tokens.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgTransferTokens"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgTransferTokensResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/UniversalUpdateCollection":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UniversalUpdateCollection","parameters":[{"description":"MsgUniversalUpdateCollection is used to define MsgServer types for all requests and responses for Msgs of the tokens module.\nIt is a universal interface that can be used for both creating and updating collections.\nWe have it defined for legacy purposes, but it is recommended to use MsgCreateCollection and MsgUpdateCollection instead.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgUniversalUpdateCollection"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgUniversalUpdateCollectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/UpdateCollection":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateCollection","parameters":[{"description":"MsgUpdateCollection is used to update a collection.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgUpdateCollection"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgUpdateCollectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/UpdateDynamicStore":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateDynamicStore","parameters":[{"description":"MsgUpdateDynamicStore is used to update an existing dynamic store.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgUpdateDynamicStore"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgUpdateDynamicStoreResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.","operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateParamsMixin56","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.Msg/UpdateUserApprovals":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateUserApprovals","parameters":[{"description":"MsgUpdateUserApprovals is used to update user approvals.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.MsgUpdateUserApprovals"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.MsgUpdateUserApprovalsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/CastVote":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CastVoteMixin76","parameters":[{"description":"MsgCastVote allows a voter to cast or update their vote for a voting challenge.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgCastVote"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgCastVoteResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/CreateAddressLists":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CreateAddressListsMixin76","parameters":[{"description":"MsgCreateAddressLists is used to create address lists.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgCreateAddressLists"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgCreateAddressListsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/CreateCollection":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CreateCollectionMixin76","parameters":[{"description":"MsgCreateCollection is used to create a new collection.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgCreateCollection"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgCreateCollectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/CreateDynamicStore":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CreateDynamicStoreMixin76","parameters":[{"description":"MsgCreateDynamicStore is used to create a new dynamic store.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgCreateDynamicStore"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgCreateDynamicStoreResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/DeleteCollection":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_DeleteCollectionMixin76","parameters":[{"description":"MsgDeleteCollection is used to delete a collection.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgDeleteCollection"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgDeleteCollectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/DeleteDynamicStore":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_DeleteDynamicStoreMixin76","parameters":[{"description":"MsgDeleteDynamicStore is used to delete a dynamic store.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgDeleteDynamicStore"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgDeleteDynamicStoreResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/DeleteIncomingApproval":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_DeleteIncomingApprovalMixin76","parameters":[{"description":"MsgDeleteIncomingApproval is a helper message to delete a single incoming approval.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgDeleteIncomingApproval"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgDeleteIncomingApprovalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/DeleteOutgoingApproval":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_DeleteOutgoingApprovalMixin76","parameters":[{"description":"MsgDeleteOutgoingApproval is a helper message to delete a single outgoing approval.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgDeleteOutgoingApproval"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgDeleteOutgoingApprovalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/PurgeApprovals":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_PurgeApprovalsMixin76","parameters":[{"description":"MsgPurgeApprovals is a helper message to purge expired approvals.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgPurgeApprovals"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgPurgeApprovalsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/SetCollectionApprovals":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetCollectionApprovalsMixin76","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgSetCollectionApprovals"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgSetCollectionApprovalsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/SetCollectionMetadata":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetCollectionMetadataMixin76","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgSetCollectionMetadata"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgSetCollectionMetadataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/SetCustomData":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetCustomDataMixin76","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgSetCustomData"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgSetCustomDataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/SetDynamicStoreValue":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetDynamicStoreValueMixin76","parameters":[{"description":"MsgSetDynamicStoreValue is used to set a boolean value for a specific address in a dynamic store.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgSetDynamicStoreValue"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgSetDynamicStoreValueResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/SetIncomingApproval":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetIncomingApprovalMixin76","parameters":[{"description":"MsgSetIncomingApproval is a helper message to set a single incoming approval.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgSetIncomingApproval"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgSetIncomingApprovalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/SetIsArchived":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetIsArchivedMixin76","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgSetIsArchived"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgSetIsArchivedResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/SetManager":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetManagerMixin76","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgSetManager"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgSetManagerResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/SetOutgoingApproval":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetOutgoingApprovalMixin76","parameters":[{"description":"MsgSetOutgoingApproval is a helper message to set a single outgoing approval.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgSetOutgoingApproval"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgSetOutgoingApprovalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/SetReservedProtocolAddress":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetReservedProtocolAddressMixin76","parameters":[{"description":"MsgSetReservedProtocolAddress sets or unsets a reserved protocol address (governance-only).","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgSetReservedProtocolAddress"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgSetReservedProtocolAddressResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/SetStandards":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetStandardsMixin76","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgSetStandards"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgSetStandardsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/SetTokenMetadata":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetTokenMetadataMixin76","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgSetTokenMetadata"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgSetTokenMetadataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/SetValidTokenIds":{"post":{"tags":["Msg"],"summary":"Helper message types for UniversalUpdateCollection subsets","operationId":"GithubCombitbadgesbitbadgeschainMsg_SetValidTokenIdsMixin76","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgSetValidTokenIds"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgSetValidTokenIdsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/TransferTokens":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_TransferTokensMixin76","parameters":[{"description":"MsgTransferTokens is used to transfer tokens.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgTransferTokens"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgTransferTokensResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/UniversalUpdateCollection":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UniversalUpdateCollectionMixin76","parameters":[{"description":"MsgUniversalUpdateCollection is used to define MsgServer types for all requests and responses for Msgs of the tokens module.\nIt is a universal interface that can be used for both creating and updating collections.\nWe have it defined for legacy purposes, but it is recommended to use MsgCreateCollection and MsgUpdateCollection instead.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgUniversalUpdateCollection"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgUniversalUpdateCollectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/UpdateCollection":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateCollectionMixin76","parameters":[{"description":"MsgUpdateCollection is used to update a collection.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgUpdateCollection"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgUpdateCollectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/UpdateDynamicStore":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateDynamicStoreMixin76","parameters":[{"description":"MsgUpdateDynamicStore is used to update an existing dynamic store.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgUpdateDynamicStore"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgUpdateDynamicStoreResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.","operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateParamsMixin76","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v27.Msg/UpdateUserApprovals":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateUserApprovalsMixin76","parameters":[{"description":"MsgUpdateUserApprovals is used to update user approvals.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v27.MsgUpdateUserApprovals"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v27.MsgUpdateUserApprovalsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/CastVote":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CastVoteMixin96","parameters":[{"description":"MsgCastVote allows a voter to cast or update their vote for a voting challenge.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgCastVote"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgCastVoteResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/CreateAddressLists":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CreateAddressListsMixin96","parameters":[{"description":"MsgCreateAddressLists is used to create address lists.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgCreateAddressLists"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgCreateAddressListsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/CreateCollection":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CreateCollectionMixin96","parameters":[{"description":"MsgCreateCollection is used to create a new collection.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgCreateCollection"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgCreateCollectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/CreateDynamicStore":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CreateDynamicStoreMixin96","parameters":[{"description":"MsgCreateDynamicStore is used to create a new dynamic store.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgCreateDynamicStore"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgCreateDynamicStoreResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/DeleteCollection":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_DeleteCollectionMixin96","parameters":[{"description":"MsgDeleteCollection is used to delete a collection.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgDeleteCollection"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgDeleteCollectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/DeleteDynamicStore":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_DeleteDynamicStoreMixin96","parameters":[{"description":"MsgDeleteDynamicStore is used to delete a dynamic store.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgDeleteDynamicStore"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgDeleteDynamicStoreResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/DeleteIncomingApproval":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_DeleteIncomingApprovalMixin96","parameters":[{"description":"MsgDeleteIncomingApproval is a helper message to delete a single incoming approval.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgDeleteIncomingApproval"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgDeleteIncomingApprovalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/DeleteOutgoingApproval":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_DeleteOutgoingApprovalMixin96","parameters":[{"description":"MsgDeleteOutgoingApproval is a helper message to delete a single outgoing approval.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgDeleteOutgoingApproval"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgDeleteOutgoingApprovalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/PurgeApprovals":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_PurgeApprovalsMixin96","parameters":[{"description":"MsgPurgeApprovals is a helper message to purge expired approvals.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgPurgeApprovals"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgPurgeApprovalsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/SetCollectionApprovals":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetCollectionApprovalsMixin96","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgSetCollectionApprovals"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgSetCollectionApprovalsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/SetCollectionMetadata":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetCollectionMetadataMixin96","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgSetCollectionMetadata"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgSetCollectionMetadataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/SetCustomData":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetCustomDataMixin96","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgSetCustomData"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgSetCustomDataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/SetDynamicStoreValue":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetDynamicStoreValueMixin96","parameters":[{"description":"MsgSetDynamicStoreValue is used to set a boolean value for a specific address in a dynamic store.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgSetDynamicStoreValue"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgSetDynamicStoreValueResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/SetIncomingApproval":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetIncomingApprovalMixin96","parameters":[{"description":"MsgSetIncomingApproval is a helper message to set a single incoming approval.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgSetIncomingApproval"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgSetIncomingApprovalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/SetIsArchived":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetIsArchivedMixin96","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgSetIsArchived"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgSetIsArchivedResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/SetManager":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetManagerMixin96","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgSetManager"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgSetManagerResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/SetOutgoingApproval":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetOutgoingApprovalMixin96","parameters":[{"description":"MsgSetOutgoingApproval is a helper message to set a single outgoing approval.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgSetOutgoingApproval"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgSetOutgoingApprovalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/SetReservedProtocolAddress":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetReservedProtocolAddressMixin96","parameters":[{"description":"MsgSetReservedProtocolAddress sets or unsets a reserved protocol address (governance-only).","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgSetReservedProtocolAddress"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgSetReservedProtocolAddressResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/SetStandards":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetStandardsMixin96","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgSetStandards"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgSetStandardsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/SetTokenMetadata":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetTokenMetadataMixin96","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgSetTokenMetadata"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgSetTokenMetadataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/SetValidTokenIds":{"post":{"tags":["Msg"],"summary":"Helper message types for UniversalUpdateCollection subsets","operationId":"GithubCombitbadgesbitbadgeschainMsg_SetValidTokenIdsMixin96","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgSetValidTokenIds"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgSetValidTokenIdsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/TransferTokens":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_TransferTokensMixin96","parameters":[{"description":"MsgTransferTokens is used to transfer tokens.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgTransferTokens"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgTransferTokensResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/UniversalUpdateCollection":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UniversalUpdateCollectionMixin96","parameters":[{"description":"MsgUniversalUpdateCollection is used to define MsgServer types for all requests and responses for Msgs of the tokens module.\nIt is a universal interface that can be used for both creating and updating collections.\nWe have it defined for legacy purposes, but it is recommended to use MsgCreateCollection and MsgUpdateCollection instead.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgUniversalUpdateCollection"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgUniversalUpdateCollectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/UpdateCollection":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateCollectionMixin96","parameters":[{"description":"MsgUpdateCollection is used to update a collection.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgUpdateCollection"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgUpdateCollectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/UpdateDynamicStore":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateDynamicStoreMixin96","parameters":[{"description":"MsgUpdateDynamicStore is used to update an existing dynamic store.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgUpdateDynamicStore"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgUpdateDynamicStoreResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.","operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateParamsMixin96","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v28.Msg/UpdateUserApprovals":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateUserApprovalsMixin96","parameters":[{"description":"MsgUpdateUserApprovals is used to update user approvals.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v28.MsgUpdateUserApprovals"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v28.MsgUpdateUserApprovalsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v29.Msg/CastVote":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CastVoteMixin116","parameters":[{"description":"MsgCastVote allows a voter to cast or update their vote for a voting challenge.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v29.MsgCastVote"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v29.MsgCastVoteResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v29.Msg/CreateAddressLists":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CreateAddressListsMixin116","parameters":[{"description":"MsgCreateAddressLists is used to create address lists.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v29.MsgCreateAddressLists"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v29.MsgCreateAddressListsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v29.Msg/CreateCollection":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CreateCollectionMixin116","parameters":[{"description":"MsgCreateCollection is used to create a new collection.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v29.MsgCreateCollection"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v29.MsgCreateCollectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v29.Msg/CreateDynamicStore":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_CreateDynamicStoreMixin116","parameters":[{"description":"MsgCreateDynamicStore is used to create a new dynamic store.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v29.MsgCreateDynamicStore"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v29.MsgCreateDynamicStoreResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v29.Msg/DeleteCollection":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_DeleteCollectionMixin116","parameters":[{"description":"MsgDeleteCollection is used to delete a collection.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v29.MsgDeleteCollection"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v29.MsgDeleteCollectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v29.Msg/DeleteDynamicStore":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_DeleteDynamicStoreMixin116","parameters":[{"description":"MsgDeleteDynamicStore is used to delete a dynamic store.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v29.MsgDeleteDynamicStore"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v29.MsgDeleteDynamicStoreResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v29.Msg/DeleteIncomingApproval":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_DeleteIncomingApprovalMixin116","parameters":[{"description":"MsgDeleteIncomingApproval is a helper message to delete a single incoming approval.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v29.MsgDeleteIncomingApproval"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v29.MsgDeleteIncomingApprovalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v29.Msg/DeleteOutgoingApproval":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_DeleteOutgoingApprovalMixin116","parameters":[{"description":"MsgDeleteOutgoingApproval is a helper message to delete a single outgoing approval.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v29.MsgDeleteOutgoingApproval"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v29.MsgDeleteOutgoingApprovalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v29.Msg/PurgeApprovals":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_PurgeApprovalsMixin116","parameters":[{"description":"MsgPurgeApprovals is a helper message to purge expired approvals.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v29.MsgPurgeApprovals"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v29.MsgPurgeApprovalsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v29.Msg/SetCollectionApprovals":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetCollectionApprovalsMixin116","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v29.MsgSetCollectionApprovals"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v29.MsgSetCollectionApprovalsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v29.Msg/SetCollectionMetadata":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetCollectionMetadataMixin116","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v29.MsgSetCollectionMetadata"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v29.MsgSetCollectionMetadataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v29.Msg/SetCustomData":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetCustomDataMixin116","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v29.MsgSetCustomData"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v29.MsgSetCustomDataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v29.Msg/SetDynamicStoreValue":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetDynamicStoreValueMixin116","parameters":[{"description":"MsgSetDynamicStoreValue is used to set a boolean value for a specific address in a dynamic store.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v29.MsgSetDynamicStoreValue"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v29.MsgSetDynamicStoreValueResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v29.Msg/SetIncomingApproval":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetIncomingApprovalMixin116","parameters":[{"description":"MsgSetIncomingApproval is a helper message to set a single incoming approval.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v29.MsgSetIncomingApproval"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v29.MsgSetIncomingApprovalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v29.Msg/SetIsArchived":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetIsArchivedMixin116","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v29.MsgSetIsArchived"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v29.MsgSetIsArchivedResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v29.Msg/SetManager":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetManagerMixin116","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v29.MsgSetManager"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v29.MsgSetManagerResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v29.Msg/SetOutgoingApproval":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetOutgoingApprovalMixin116","parameters":[{"description":"MsgSetOutgoingApproval is a helper message to set a single outgoing approval.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v29.MsgSetOutgoingApproval"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v29.MsgSetOutgoingApprovalResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v29.Msg/SetReservedProtocolAddress":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetReservedProtocolAddressMixin116","parameters":[{"description":"MsgSetReservedProtocolAddress sets or unsets a reserved protocol address (governance-only).","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v29.MsgSetReservedProtocolAddress"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v29.MsgSetReservedProtocolAddressResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v29.Msg/SetStandards":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetStandardsMixin116","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v29.MsgSetStandards"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v29.MsgSetStandardsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v29.Msg/SetTokenMetadata":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_SetTokenMetadataMixin116","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v29.MsgSetTokenMetadata"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v29.MsgSetTokenMetadataResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v29.Msg/SetValidTokenIds":{"post":{"tags":["Msg"],"summary":"Helper message types for UniversalUpdateCollection subsets","operationId":"GithubCombitbadgesbitbadgeschainMsg_SetValidTokenIdsMixin116","parameters":[{"name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v29.MsgSetValidTokenIds"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v29.MsgSetValidTokenIdsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v29.Msg/TransferTokens":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_TransferTokensMixin116","parameters":[{"description":"MsgTransferTokens is used to transfer tokens.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v29.MsgTransferTokens"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v29.MsgTransferTokensResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v29.Msg/UniversalUpdateCollection":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UniversalUpdateCollectionMixin116","parameters":[{"description":"MsgUniversalUpdateCollection is used to define MsgServer types for all requests and responses for Msgs of the tokens module.\nIt is a universal interface that can be used for both creating and updating collections.\nWe have it defined for legacy purposes, but it is recommended to use MsgCreateCollection and MsgUpdateCollection instead.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v29.MsgUniversalUpdateCollection"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v29.MsgUniversalUpdateCollectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v29.Msg/UpdateCollection":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateCollectionMixin116","parameters":[{"description":"MsgUpdateCollection is used to update a collection.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v29.MsgUpdateCollection"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v29.MsgUpdateCollectionResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v29.Msg/UpdateDynamicStore":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateDynamicStoreMixin116","parameters":[{"description":"MsgUpdateDynamicStore is used to update an existing dynamic store.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v29.MsgUpdateDynamicStore"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v29.MsgUpdateDynamicStoreResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v29.Msg/UpdateParams":{"post":{"tags":["Msg"],"summary":"UpdateParams defines a (governance) operation for updating the module\nparameters. The authority defaults to the x/gov module account.","operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateParamsMixin116","parameters":[{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v29.MsgUpdateParams"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v29.MsgUpdateParamsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}},"/tokenization.v29.Msg/UpdateUserApprovals":{"post":{"tags":["Msg"],"operationId":"GithubCombitbadgesbitbadgeschainMsg_UpdateUserApprovalsMixin116","parameters":[{"description":"MsgUpdateUserApprovals is used to update user approvals.","name":"body","in":"body","required":true,"schema":{"$ref":"#/definitions/tokenization.v29.MsgUpdateUserApprovals"}}],"responses":{"200":{"description":"A successful response.","schema":{"$ref":"#/definitions/tokenization.v29.MsgUpdateUserApprovalsResponse"}},"default":{"description":"An unexpected error response.","schema":{"$ref":"#/definitions/google.rpc.Status"}}}}}},"definitions":{"cosmos.auth.v1beta1.AddressBytesToStringResponse":{"description":"AddressBytesToStringResponse is the response type for AddressString rpc method.","type":"object","properties":{"address_string":{"type":"string"}}},"cosmos.auth.v1beta1.AddressStringToBytesResponse":{"description":"AddressStringToBytesResponse is the response type for AddressBytes rpc method.","type":"object","properties":{"address_bytes":{"type":"string","format":"byte"}}},"cosmos.auth.v1beta1.BaseAccount":{"description":"BaseAccount defines a base account type. It contains all the necessary fields\nfor basic account functionality. Any custom account type should extend this\ntype for additional functionality (e.g. vesting).","type":"object","properties":{"account_number":{"type":"string","format":"uint64"},"address":{"type":"string"},"pub_key":{"$ref":"#/definitions/google.protobuf.Any"},"sequence":{"type":"string","format":"uint64"}}},"cosmos.auth.v1beta1.Bech32PrefixResponse":{"description":"Bech32PrefixResponse is the response type for Bech32Prefix rpc method.","type":"object","properties":{"bech32_prefix":{"type":"string"}}},"cosmos.auth.v1beta1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/auth parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.auth.v1beta1.Params"}}},"cosmos.auth.v1beta1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"cosmos.auth.v1beta1.Params":{"description":"Params defines the parameters for the auth module.","type":"object","properties":{"max_memo_characters":{"type":"string","format":"uint64"},"sig_verify_cost_ed25519":{"type":"string","format":"uint64"},"sig_verify_cost_secp256k1":{"type":"string","format":"uint64"},"tx_sig_limit":{"type":"string","format":"uint64"},"tx_size_cost_per_byte":{"type":"string","format":"uint64"}}},"cosmos.auth.v1beta1.QueryAccountAddressByIDResponse":{"type":"object","title":"QueryAccountAddressByIDResponse is the response type for AccountAddressByID rpc method","properties":{"account_address":{"type":"string"}}},"cosmos.auth.v1beta1.QueryAccountInfoResponse":{"description":"QueryAccountInfoResponse is the Query/AccountInfo response type.","type":"object","properties":{"info":{"description":"info is the account info which is represented by BaseAccount.","$ref":"#/definitions/cosmos.auth.v1beta1.BaseAccount"}}},"cosmos.auth.v1beta1.QueryAccountResponse":{"description":"QueryAccountResponse is the response type for the Query/Account RPC method.","type":"object","properties":{"account":{"description":"account defines the account of the corresponding address.","$ref":"#/definitions/google.protobuf.Any"}}},"cosmos.auth.v1beta1.QueryAccountsResponse":{"description":"QueryAccountsResponse is the response type for the Query/Accounts RPC method.","type":"object","properties":{"accounts":{"type":"array","title":"accounts are the existing accounts","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.auth.v1beta1.QueryModuleAccountByNameResponse":{"description":"QueryModuleAccountByNameResponse is the response type for the Query/ModuleAccountByName RPC method.","type":"object","properties":{"account":{"$ref":"#/definitions/google.protobuf.Any"}}},"cosmos.auth.v1beta1.QueryModuleAccountsResponse":{"description":"QueryModuleAccountsResponse is the response type for the Query/ModuleAccounts RPC method.","type":"object","properties":{"accounts":{"type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}}}},"cosmos.auth.v1beta1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/cosmos.auth.v1beta1.Params"}}},"cosmos.authz.v1beta1.Grant":{"description":"Grant gives permissions to execute\nthe provide method with expiration time.","type":"object","properties":{"authorization":{"$ref":"#/definitions/google.protobuf.Any"},"expiration":{"type":"string","format":"date-time","title":"time when the grant will expire and will be pruned. If null, then the grant\ndoesn't have a time expiration (other conditions in `authorization`\nmay apply to invalidate the grant)"}}},"cosmos.authz.v1beta1.GrantAuthorization":{"type":"object","title":"GrantAuthorization extends a grant with both the addresses of the grantee and granter.\nIt is used in genesis.proto and query.proto","properties":{"authorization":{"$ref":"#/definitions/google.protobuf.Any"},"expiration":{"type":"string","format":"date-time"},"grantee":{"type":"string"},"granter":{"type":"string"}}},"cosmos.authz.v1beta1.MsgExec":{"description":"MsgExec attempts to execute the provided messages using\nauthorizations granted to the grantee. Each message should have only\none signer corresponding to the granter of the authorization.","type":"object","properties":{"grantee":{"type":"string"},"msgs":{"description":"Execute Msg.\nThe x/authz will try to find a grant matching (msg.signers[0], grantee, MsgTypeURL(msg))\ntriple and validate it.","type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}}}},"cosmos.authz.v1beta1.MsgExecResponse":{"description":"MsgExecResponse defines the Msg/MsgExecResponse response type.","type":"object","properties":{"results":{"type":"array","items":{"type":"string","format":"byte"}}}},"cosmos.authz.v1beta1.MsgGrant":{"description":"MsgGrant is a request type for Grant method. It declares authorization to the grantee\non behalf of the granter with the provided expiration time.","type":"object","properties":{"grant":{"$ref":"#/definitions/cosmos.authz.v1beta1.Grant"},"grantee":{"type":"string"},"granter":{"type":"string"}}},"cosmos.authz.v1beta1.MsgGrantResponse":{"description":"MsgGrantResponse defines the Msg/MsgGrant response type.","type":"object"},"cosmos.authz.v1beta1.MsgRevoke":{"description":"MsgRevoke revokes any authorization with the provided sdk.Msg type on the\ngranter's account with that has been granted to the grantee.","type":"object","properties":{"grantee":{"type":"string"},"granter":{"type":"string"},"msg_type_url":{"type":"string"}}},"cosmos.authz.v1beta1.MsgRevokeResponse":{"description":"MsgRevokeResponse defines the Msg/MsgRevokeResponse response type.","type":"object"},"cosmos.authz.v1beta1.QueryGranteeGrantsResponse":{"description":"QueryGranteeGrantsResponse is the response type for the Query/GranteeGrants RPC method.","type":"object","properties":{"grants":{"description":"grants is a list of grants granted to the grantee.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.authz.v1beta1.GrantAuthorization"}},"pagination":{"description":"pagination defines an pagination for the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.authz.v1beta1.QueryGranterGrantsResponse":{"description":"QueryGranterGrantsResponse is the response type for the Query/GranterGrants RPC method.","type":"object","properties":{"grants":{"description":"grants is a list of grants granted by the granter.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.authz.v1beta1.GrantAuthorization"}},"pagination":{"description":"pagination defines an pagination for the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.authz.v1beta1.QueryGrantsResponse":{"description":"QueryGrantsResponse is the response type for the Query/Authorizations RPC method.","type":"object","properties":{"grants":{"description":"authorizations is a list of grants granted for grantee by granter.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.authz.v1beta1.Grant"}},"pagination":{"description":"pagination defines an pagination for the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.autocli.v1.AppOptionsRequest":{"description":"AppOptionsRequest is the RemoteInfoService/AppOptions request type.","type":"object"},"cosmos.autocli.v1.AppOptionsResponse":{"description":"AppOptionsResponse is the RemoteInfoService/AppOptions response type.","type":"object","properties":{"module_options":{"description":"module_options is a map of module name to autocli module options.","type":"object","additionalProperties":{"$ref":"#/definitions/cosmos.autocli.v1.ModuleOptions"}}}},"cosmos.autocli.v1.FlagOptions":{"description":"FlagOptions are options for flags generated from rpc request fields.\nBy default, all request fields are configured as flags based on the\nkebab-case name of the field. Fields can be turned into positional arguments\ninstead by using RpcCommandOptions.positional_args.","type":"object","properties":{"default_value":{"description":"default_value is the default value as text.","type":"string"},"deprecated":{"description":"deprecated is the usage text to show if this flag is deprecated.","type":"string"},"hidden":{"type":"boolean","title":"hidden hides the flag from help/usage text"},"name":{"description":"name is an alternate name to use for the field flag.","type":"string"},"shorthand":{"description":"shorthand is a one-letter abbreviated flag.","type":"string"},"shorthand_deprecated":{"description":"shorthand_deprecated is the usage text to show if the shorthand of this flag is deprecated.","type":"string"},"usage":{"description":"usage is the help message.","type":"string"}}},"cosmos.autocli.v1.ModuleOptions":{"description":"ModuleOptions describes the CLI options for a Cosmos SDK module.","type":"object","properties":{"query":{"description":"query describes the queries commands for the module.","$ref":"#/definitions/cosmos.autocli.v1.ServiceCommandDescriptor"},"tx":{"description":"tx describes the tx commands for the module.","$ref":"#/definitions/cosmos.autocli.v1.ServiceCommandDescriptor"}}},"cosmos.autocli.v1.PositionalArgDescriptor":{"description":"PositionalArgDescriptor describes a positional argument.","type":"object","properties":{"optional":{"description":"optional makes the last positional parameter optional.\nNote: It is mutually exclusive with varargs.","type":"boolean"},"proto_field":{"description":"proto_field specifies the proto field to use as the positional arg. Any\nfields used as positional args will not have a flag generated.","type":"string"},"varargs":{"description":"varargs makes a positional parameter a varargs parameter. This can only be\napplied to last positional parameter and the proto_field must a repeated\nfield. Note: It is mutually exclusive with optional.","type":"boolean"}}},"cosmos.autocli.v1.RpcCommandOptions":{"description":"RpcCommandOptions specifies options for commands generated from protobuf\nrpc methods.","type":"object","properties":{"alias":{"description":"alias is an array of aliases that can be used instead of the first word in Use.","type":"array","items":{"type":"string"}},"deprecated":{"description":"deprecated defines, if this command is deprecated and should print this string when used.","type":"string"},"example":{"description":"example is examples of how to use the command.","type":"string"},"flag_options":{"description":"flag_options are options for flags generated from rpc request fields.\nBy default all request fields are configured as flags. They can\nalso be configured as positional args instead using positional_args.","type":"object","additionalProperties":{"$ref":"#/definitions/cosmos.autocli.v1.FlagOptions"}},"gov_proposal":{"description":"gov_proposal specifies whether autocli should generate a gov proposal transaction for this rpc method.\nNormally autocli generates a transaction containing the message and broadcast it.\nHowever, when true, autocli generates a proposal transaction containing the message and broadcast it.\nThis option is ineffective for query commands.","type":"boolean"},"long":{"description":"long is the long message shown in the 'help \u003cthis-command\u003e' output.","type":"string"},"positional_args":{"description":"positional_args specifies positional arguments for the command.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.autocli.v1.PositionalArgDescriptor"}},"rpc_method":{"description":"rpc_method is short name of the protobuf rpc method that this command is\ngenerated from.","type":"string"},"short":{"description":"short is the short description shown in the 'help' output.","type":"string"},"skip":{"description":"skip specifies whether to skip this rpc method when generating commands.","type":"boolean"},"suggest_for":{"description":"suggest_for is an array of command names for which this command will be suggested -\nsimilar to aliases but only suggests.","type":"array","items":{"type":"string"}},"use":{"description":"use is the one-line usage method. It also allows specifying an alternate\nname for the command as the first word of the usage text.\n\nBy default the name of an rpc command is the kebab-case short name of the\nrpc method.","type":"string"},"version":{"description":"version defines the version for this command. If this value is non-empty and the command does not\ndefine a \"version\" flag, a \"version\" boolean flag will be added to the command and, if specified,\nwill print content of the \"Version\" variable. A shorthand \"v\" flag will also be added if the\ncommand does not define one.","type":"string"}}},"cosmos.autocli.v1.ServiceCommandDescriptor":{"description":"ServiceCommandDescriptor describes a CLI command based on a protobuf service.","type":"object","properties":{"enhance_custom_command":{"description":"enhance_custom_commands specifies whether to skip the service when generating commands, if a custom command already\nexists, or enhance the existing command. If set to true, the custom command will be enhanced with the services from\ngRPC. otherwise when a custom command exists, no commands will be generated for the service.","type":"boolean"},"rpc_command_options":{"description":"rpc_command_options are options for commands generated from rpc methods.\nIf no options are specified for a given rpc method on the service, a\ncommand will be generated for that method with the default options.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.autocli.v1.RpcCommandOptions"}},"service":{"description":"service is the fully qualified name of the protobuf service to build\nthe command from. It can be left empty if sub_commands are used instead\nwhich may be the case if a module provides multiple tx and/or query services.","type":"string"},"short":{"description":"short is an optional parameter used to override the short description of the auto generated command.","type":"string"},"sub_commands":{"description":"sub_commands is a map of optional sub-commands for this command based on\ndifferent protobuf services. The map key is used as the name of the\nsub-command.","type":"object","additionalProperties":{"$ref":"#/definitions/cosmos.autocli.v1.ServiceCommandDescriptor"}}}},"cosmos.bank.v1beta1.DenomOwner":{"description":"DenomOwner defines structure representing an account that owns or holds a\nparticular denominated token. It contains the account address and account\nbalance of the denominated token.","type":"object","properties":{"address":{"description":"address defines the address that owns a particular denomination.","type":"string"},"balance":{"description":"balance is the balance of the denominated coin for an account.","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"cosmos.bank.v1beta1.DenomUnit":{"description":"DenomUnit represents a struct that describes a given\ndenomination unit of the basic token.","type":"object","properties":{"aliases":{"type":"array","title":"aliases is a list of string aliases for the given denom","items":{"type":"string"}},"denom":{"description":"denom represents the string name of the given denom unit (e.g uatom).","type":"string"},"exponent":{"description":"exponent represents power of 10 exponent that one must\nraise the base_denom to in order to equal the given DenomUnit's denom\n1 denom = 10^exponent base_denom\n(e.g. with a base_denom of uatom, one can create a DenomUnit of 'atom' with\nexponent = 6, thus: 1 atom = 10^6 uatom).","type":"integer","format":"int64"}}},"cosmos.bank.v1beta1.Input":{"description":"Input models transaction input.","type":"object","properties":{"address":{"type":"string"},"coins":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"cosmos.bank.v1beta1.Metadata":{"description":"Metadata represents a struct that describes\na basic token.","type":"object","properties":{"base":{"description":"base represents the base denom (should be the DenomUnit with exponent = 0).","type":"string"},"denom_units":{"type":"array","title":"denom_units represents the list of DenomUnit's for a given coin","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.DenomUnit"}},"description":{"type":"string"},"display":{"description":"display indicates the suggested denom that should be\ndisplayed in clients.","type":"string"},"name":{"type":"string","title":"name defines the name of the token (eg: Cosmos Atom)"},"symbol":{"description":"symbol is the token symbol usually shown on exchanges (eg: ATOM). This can\nbe the same as the display.","type":"string"},"uri":{"description":"URI to a document (on or off-chain) that contains additional information. Optional.","type":"string"},"uri_hash":{"description":"URIHash is a sha256 hash of a document pointed by URI. It's used to verify that\nthe document didn't change. Optional.","type":"string"}}},"cosmos.bank.v1beta1.MsgMultiSend":{"description":"MsgMultiSend represents an arbitrary multi-in, multi-out send message.","type":"object","properties":{"inputs":{"description":"Inputs, despite being `repeated`, only allows one sender input. This is\nchecked in MsgMultiSend's ValidateBasic.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.Input"}},"outputs":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.Output"}}}},"cosmos.bank.v1beta1.MsgMultiSendResponse":{"description":"MsgMultiSendResponse defines the Msg/MultiSend response type.","type":"object"},"cosmos.bank.v1beta1.MsgSend":{"description":"MsgSend represents a message to send coins from one account to another.","type":"object","properties":{"amount":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"from_address":{"type":"string"},"to_address":{"type":"string"}}},"cosmos.bank.v1beta1.MsgSendResponse":{"description":"MsgSendResponse defines the Msg/Send response type.","type":"object"},"cosmos.bank.v1beta1.MsgSetSendEnabled":{"description":"MsgSetSendEnabled is the Msg/SetSendEnabled request type.\n\nOnly entries to add/update/delete need to be included.\nExisting SendEnabled entries that are not included in this\nmessage are left unchanged.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module.","type":"string"},"send_enabled":{"description":"send_enabled is the list of entries to add or update.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.SendEnabled"}},"use_default_for":{"description":"use_default_for is a list of denoms that should use the params.default_send_enabled value.\nDenoms listed here will have their SendEnabled entries deleted.\nIf a denom is included that doesn't have a SendEnabled entry,\nit will be ignored.","type":"array","items":{"type":"string"}}}},"cosmos.bank.v1beta1.MsgSetSendEnabledResponse":{"description":"MsgSetSendEnabledResponse defines the Msg/SetSendEnabled response type.","type":"object"},"cosmos.bank.v1beta1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/bank parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.bank.v1beta1.Params"}}},"cosmos.bank.v1beta1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"cosmos.bank.v1beta1.Output":{"description":"Output models transaction outputs.","type":"object","properties":{"address":{"type":"string"},"coins":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"cosmos.bank.v1beta1.Params":{"description":"Params defines the parameters for the bank module.","type":"object","properties":{"default_send_enabled":{"type":"boolean"},"send_enabled":{"description":"Deprecated: Use of SendEnabled in params is deprecated.\nFor genesis, use the newly added send_enabled field in the genesis object.\nStorage, lookup, and manipulation of this information is now in the keeper.\n\nAs of cosmos-sdk 0.47, this only exists for backwards compatibility of genesis files.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.SendEnabled"}}}},"cosmos.bank.v1beta1.QueryAllBalancesResponse":{"description":"QueryAllBalancesResponse is the response type for the Query/AllBalances RPC\nmethod.","type":"object","properties":{"balances":{"description":"balances is the balances of all the coins.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.bank.v1beta1.QueryBalanceResponse":{"description":"QueryBalanceResponse is the response type for the Query/Balance RPC method.","type":"object","properties":{"balance":{"description":"balance is the balance of the coin.","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"cosmos.bank.v1beta1.QueryDenomMetadataByQueryStringResponse":{"description":"QueryDenomMetadataByQueryStringResponse is the response type for the Query/DenomMetadata RPC\nmethod. Identical with QueryDenomMetadataResponse but receives denom as query string in request.","type":"object","properties":{"metadata":{"description":"metadata describes and provides all the client information for the requested token.","$ref":"#/definitions/cosmos.bank.v1beta1.Metadata"}}},"cosmos.bank.v1beta1.QueryDenomMetadataResponse":{"description":"QueryDenomMetadataResponse is the response type for the Query/DenomMetadata RPC\nmethod.","type":"object","properties":{"metadata":{"description":"metadata describes and provides all the client information for the requested token.","$ref":"#/definitions/cosmos.bank.v1beta1.Metadata"}}},"cosmos.bank.v1beta1.QueryDenomOwnersByQueryResponse":{"description":"QueryDenomOwnersByQueryResponse defines the RPC response of a DenomOwnersByQuery RPC query.","type":"object","properties":{"denom_owners":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.DenomOwner"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.bank.v1beta1.QueryDenomOwnersResponse":{"description":"QueryDenomOwnersResponse defines the RPC response of a DenomOwners RPC query.","type":"object","properties":{"denom_owners":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.DenomOwner"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.bank.v1beta1.QueryDenomsMetadataResponse":{"description":"QueryDenomsMetadataResponse is the response type for the Query/DenomsMetadata RPC\nmethod.","type":"object","properties":{"metadatas":{"description":"metadata provides the client information for all the registered tokens.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.Metadata"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.bank.v1beta1.QueryParamsResponse":{"description":"QueryParamsResponse defines the response type for querying x/bank parameters.","type":"object","properties":{"params":{"description":"params provides the parameters of the bank module.","$ref":"#/definitions/cosmos.bank.v1beta1.Params"}}},"cosmos.bank.v1beta1.QuerySendEnabledResponse":{"description":"QuerySendEnabledResponse defines the RPC response of a SendEnable query.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response. This field is only\npopulated if the denoms field in the request is empty.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"send_enabled":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.bank.v1beta1.SendEnabled"}}}},"cosmos.bank.v1beta1.QuerySpendableBalanceByDenomResponse":{"description":"QuerySpendableBalanceByDenomResponse defines the gRPC response structure for\nquerying an account's spendable balance for a specific denom.","type":"object","properties":{"balance":{"description":"balance is the balance of the coin.","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"cosmos.bank.v1beta1.QuerySpendableBalancesResponse":{"description":"QuerySpendableBalancesResponse defines the gRPC response structure for querying\nan account's spendable balances.","type":"object","properties":{"balances":{"description":"balances is the spendable balances of all the coins.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.bank.v1beta1.QuerySupplyOfResponse":{"description":"QuerySupplyOfResponse is the response type for the Query/SupplyOf RPC method.","type":"object","properties":{"amount":{"description":"amount is the supply of the coin.","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"cosmos.bank.v1beta1.QueryTotalSupplyResponse":{"type":"object","title":"QueryTotalSupplyResponse is the response type for the Query/TotalSupply RPC\nmethod","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"supply":{"type":"array","title":"supply is the supply of the coins","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"cosmos.bank.v1beta1.SendEnabled":{"description":"SendEnabled maps coin denom to a send_enabled status (whether a denom is\nsendable).","type":"object","properties":{"denom":{"type":"string"},"enabled":{"type":"boolean"}}},"cosmos.base.abci.v1beta1.ABCIMessageLog":{"description":"ABCIMessageLog defines a structure containing an indexed tx ABCI message log.","type":"object","properties":{"events":{"description":"Events contains a slice of Event objects that were emitted during some\nexecution.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.abci.v1beta1.StringEvent"}},"log":{"type":"string"},"msg_index":{"type":"integer","format":"int64"}}},"cosmos.base.abci.v1beta1.Attribute":{"description":"Attribute defines an attribute wrapper where the key and value are\nstrings instead of raw bytes.","type":"object","properties":{"key":{"type":"string"},"value":{"type":"string"}}},"cosmos.base.abci.v1beta1.GasInfo":{"description":"GasInfo defines tx execution gas context.","type":"object","properties":{"gas_used":{"description":"GasUsed is the amount of gas actually consumed.","type":"string","format":"uint64"},"gas_wanted":{"description":"GasWanted is the maximum units of work we allow this tx to perform.","type":"string","format":"uint64"}}},"cosmos.base.abci.v1beta1.Result":{"description":"Result is the union of ResponseFormat and ResponseCheckTx.","type":"object","properties":{"data":{"description":"Data is any data returned from message or handler execution. It MUST be\nlength prefixed in order to separate data from multiple message executions.\nDeprecated. This field is still populated, but prefer msg_response instead\nbecause it also contains the Msg response typeURL.","type":"string","format":"byte"},"events":{"description":"Events contains a slice of Event objects that were emitted during message\nor handler execution.","type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Event"}},"log":{"description":"Log contains the log information from message or handler execution.","type":"string"},"msg_responses":{"description":"msg_responses contains the Msg handler responses type packed in Anys.","type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}}}},"cosmos.base.abci.v1beta1.StringEvent":{"description":"StringEvent defines en Event object wrapper where all the attributes\ncontain key/value pairs that are strings instead of raw bytes.","type":"object","properties":{"attributes":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.abci.v1beta1.Attribute"}},"type":{"type":"string"}}},"cosmos.base.abci.v1beta1.TxResponse":{"description":"TxResponse defines a structure containing relevant tx data and metadata. The\ntags are stringified and the log is JSON decoded.","type":"object","properties":{"code":{"description":"Response code.","type":"integer","format":"int64"},"codespace":{"type":"string","title":"Namespace for the Code"},"data":{"description":"Result bytes, if any.","type":"string"},"events":{"description":"Events defines all the events emitted by processing a transaction. Note,\nthese events include those emitted by processing all the messages and those\nemitted from the ante. Whereas Logs contains the events, with\nadditional metadata, emitted only by processing the messages.","type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Event"}},"gas_used":{"description":"Amount of gas consumed by transaction.","type":"string","format":"int64"},"gas_wanted":{"description":"Amount of gas requested for transaction.","type":"string","format":"int64"},"height":{"type":"string","format":"int64","title":"The block height"},"info":{"description":"Additional information. May be non-deterministic.","type":"string"},"logs":{"description":"The output of the application's logger (typed). May be non-deterministic.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.abci.v1beta1.ABCIMessageLog"}},"raw_log":{"description":"The output of the application's logger (raw string). May be\nnon-deterministic.","type":"string"},"timestamp":{"description":"Time of the previous block. For heights \u003e 1, it's the weighted median of\nthe timestamps of the valid votes in the block.LastCommit. For height == 1,\nit's genesis time.","type":"string"},"tx":{"description":"The request transaction bytes.","$ref":"#/definitions/google.protobuf.Any"},"txhash":{"description":"The transaction hash.","type":"string"}}},"cosmos.base.node.v1beta1.ConfigResponse":{"description":"ConfigResponse defines the response structure for the Config gRPC query.","type":"object","properties":{"halt_height":{"type":"string","format":"uint64"},"minimum_gas_price":{"type":"string"},"pruning_interval":{"type":"string"},"pruning_keep_recent":{"type":"string"}}},"cosmos.base.node.v1beta1.StatusResponse":{"description":"StateResponse defines the response structure for the status of a node.","type":"object","properties":{"app_hash":{"type":"string","format":"byte","title":"app hash of the current block"},"earliest_store_height":{"type":"string","format":"uint64","title":"earliest block height available in the store"},"height":{"type":"string","format":"uint64","title":"current block height"},"timestamp":{"type":"string","format":"date-time","title":"block height timestamp"},"validator_hash":{"type":"string","format":"byte","title":"validator hash provided by the consensus header"}}},"cosmos.base.query.v1beta1.PageRequest":{"description":"message SomeRequest {\n Foo some_parameter = 1;\n PageRequest pagination = 2;\n }","type":"object","title":"PageRequest is to be embedded in gRPC request messages for efficient\npagination. Ex:","properties":{"count_total":{"description":"count_total is set to true to indicate that the result set should include\na count of the total number of items available for pagination in UIs.\ncount_total is only respected when offset is used. It is ignored when key\nis set.","type":"boolean"},"key":{"description":"key is a value returned in PageResponse.next_key to begin\nquerying the next page most efficiently. Only one of offset or key\nshould be set.","type":"string","format":"byte"},"limit":{"description":"limit is the total number of results to be returned in the result page.\nIf left empty it will default to a value to be set by each app.","type":"string","format":"uint64"},"offset":{"description":"offset is a numeric offset that can be used when key is unavailable.\nIt is less efficient than using key. Only one of offset or key should\nbe set.","type":"string","format":"uint64"},"reverse":{"description":"reverse is set to true if results are to be returned in the descending order.","type":"boolean"}}},"cosmos.base.query.v1beta1.PageResponse":{"description":"PageResponse is to be embedded in gRPC response messages where the\ncorresponding request message has used PageRequest.\n\n message SomeResponse {\n repeated Bar results = 1;\n PageResponse page = 2;\n }","type":"object","properties":{"next_key":{"description":"next_key is the key to be passed to PageRequest.key to\nquery the next page most efficiently. It will be empty if\nthere are no more results.","type":"string","format":"byte"},"total":{"type":"string","format":"uint64","title":"total is total number of results available if PageRequest.count_total\nwas set, its value is undefined otherwise"}}},"cosmos.base.reflection.v1beta1.ListAllInterfacesResponse":{"description":"ListAllInterfacesResponse is the response type of the ListAllInterfaces RPC.","type":"object","properties":{"interface_names":{"description":"interface_names is an array of all the registered interfaces.","type":"array","items":{"type":"string"}}}},"cosmos.base.reflection.v1beta1.ListImplementationsResponse":{"description":"ListImplementationsResponse is the response type of the ListImplementations\nRPC.","type":"object","properties":{"implementation_message_names":{"type":"array","items":{"type":"string"}}}},"cosmos.base.reflection.v2alpha1.AuthnDescriptor":{"type":"object","title":"AuthnDescriptor provides information on how to sign transactions without relying\non the online RPCs GetTxMetadata and CombineUnsignedTxAndSignatures","properties":{"sign_modes":{"type":"array","title":"sign_modes defines the supported signature algorithm","items":{"type":"object","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.SigningModeDescriptor"}}}},"cosmos.base.reflection.v2alpha1.ChainDescriptor":{"type":"object","title":"ChainDescriptor describes chain information of the application","properties":{"id":{"type":"string","title":"id is the chain id"}}},"cosmos.base.reflection.v2alpha1.CodecDescriptor":{"type":"object","title":"CodecDescriptor describes the registered interfaces and provides metadata information on the types","properties":{"interfaces":{"type":"array","title":"interfaces is a list of the registerted interfaces descriptors","items":{"type":"object","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.InterfaceDescriptor"}}}},"cosmos.base.reflection.v2alpha1.ConfigurationDescriptor":{"type":"object","title":"ConfigurationDescriptor contains metadata information on the sdk.Config","properties":{"bech32_account_address_prefix":{"type":"string","title":"bech32_account_address_prefix is the account address prefix"}}},"cosmos.base.reflection.v2alpha1.GetAuthnDescriptorResponse":{"type":"object","title":"GetAuthnDescriptorResponse is the response returned by the GetAuthnDescriptor RPC","properties":{"authn":{"title":"authn describes how to authenticate to the application when sending transactions","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.AuthnDescriptor"}}},"cosmos.base.reflection.v2alpha1.GetChainDescriptorResponse":{"type":"object","title":"GetChainDescriptorResponse is the response returned by the GetChainDescriptor RPC","properties":{"chain":{"title":"chain describes application chain information","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.ChainDescriptor"}}},"cosmos.base.reflection.v2alpha1.GetCodecDescriptorResponse":{"type":"object","title":"GetCodecDescriptorResponse is the response returned by the GetCodecDescriptor RPC","properties":{"codec":{"title":"codec describes the application codec such as registered interfaces and implementations","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.CodecDescriptor"}}},"cosmos.base.reflection.v2alpha1.GetConfigurationDescriptorResponse":{"type":"object","title":"GetConfigurationDescriptorResponse is the response returned by the GetConfigurationDescriptor RPC","properties":{"config":{"title":"config describes the application's sdk.Config","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.ConfigurationDescriptor"}}},"cosmos.base.reflection.v2alpha1.GetQueryServicesDescriptorResponse":{"type":"object","title":"GetQueryServicesDescriptorResponse is the response returned by the GetQueryServicesDescriptor RPC","properties":{"queries":{"title":"queries provides information on the available queryable services","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.QueryServicesDescriptor"}}},"cosmos.base.reflection.v2alpha1.GetTxDescriptorResponse":{"type":"object","title":"GetTxDescriptorResponse is the response returned by the GetTxDescriptor RPC","properties":{"tx":{"title":"tx provides information on msgs that can be forwarded to the application\nalongside the accepted transaction protobuf type","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.TxDescriptor"}}},"cosmos.base.reflection.v2alpha1.InterfaceAcceptingMessageDescriptor":{"type":"object","title":"InterfaceAcceptingMessageDescriptor describes a protobuf message which contains\nan interface represented as a google.protobuf.Any","properties":{"field_descriptor_names":{"type":"array","title":"field_descriptor_names is a list of the protobuf name (not fullname) of the field\nwhich contains the interface as google.protobuf.Any (the interface is the same, but\nit can be in multiple fields of the same proto message)","items":{"type":"string"}},"fullname":{"type":"string","title":"fullname is the protobuf fullname of the type containing the interface"}}},"cosmos.base.reflection.v2alpha1.InterfaceDescriptor":{"type":"object","title":"InterfaceDescriptor describes the implementation of an interface","properties":{"fullname":{"type":"string","title":"fullname is the name of the interface"},"interface_accepting_messages":{"type":"array","title":"interface_accepting_messages contains information regarding the proto messages which contain the interface as\ngoogle.protobuf.Any field","items":{"type":"object","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.InterfaceAcceptingMessageDescriptor"}},"interface_implementers":{"type":"array","title":"interface_implementers is a list of the descriptors of the interface implementers","items":{"type":"object","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.InterfaceImplementerDescriptor"}}}},"cosmos.base.reflection.v2alpha1.InterfaceImplementerDescriptor":{"type":"object","title":"InterfaceImplementerDescriptor describes an interface implementer","properties":{"fullname":{"type":"string","title":"fullname is the protobuf queryable name of the interface implementer"},"type_url":{"type":"string","title":"type_url defines the type URL used when marshalling the type as any\nthis is required so we can provide type safe google.protobuf.Any marshalling and\nunmarshalling, making sure that we don't accept just 'any' type\nin our interface fields"}}},"cosmos.base.reflection.v2alpha1.MsgDescriptor":{"type":"object","title":"MsgDescriptor describes a cosmos-sdk message that can be delivered with a transaction","properties":{"msg_type_url":{"description":"msg_type_url contains the TypeURL of a sdk.Msg.","type":"string"}}},"cosmos.base.reflection.v2alpha1.QueryMethodDescriptor":{"type":"object","title":"QueryMethodDescriptor describes a queryable method of a query service\nno other info is provided beside method name and tendermint queryable path\nbecause it would be redundant with the grpc reflection service","properties":{"full_query_path":{"type":"string","title":"full_query_path is the path that can be used to query\nthis method via tendermint abci.Query"},"name":{"type":"string","title":"name is the protobuf name (not fullname) of the method"}}},"cosmos.base.reflection.v2alpha1.QueryServiceDescriptor":{"type":"object","title":"QueryServiceDescriptor describes a cosmos-sdk queryable service","properties":{"fullname":{"type":"string","title":"fullname is the protobuf fullname of the service descriptor"},"is_module":{"type":"boolean","title":"is_module describes if this service is actually exposed by an application's module"},"methods":{"type":"array","title":"methods provides a list of query service methods","items":{"type":"object","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.QueryMethodDescriptor"}}}},"cosmos.base.reflection.v2alpha1.QueryServicesDescriptor":{"type":"object","title":"QueryServicesDescriptor contains the list of cosmos-sdk queriable services","properties":{"query_services":{"type":"array","title":"query_services is a list of cosmos-sdk QueryServiceDescriptor","items":{"type":"object","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.QueryServiceDescriptor"}}}},"cosmos.base.reflection.v2alpha1.SigningModeDescriptor":{"type":"object","title":"SigningModeDescriptor provides information on a signing flow of the application\nNOTE(fdymylja): here we could go as far as providing an entire flow on how\nto sign a message given a SigningModeDescriptor, but it's better to think about\nthis another time","properties":{"authn_info_provider_method_fullname":{"type":"string","title":"authn_info_provider_method_fullname defines the fullname of the method to call to get\nthe metadata required to authenticate using the provided sign_modes"},"name":{"type":"string","title":"name defines the unique name of the signing mode"},"number":{"type":"integer","format":"int32","title":"number is the unique int32 identifier for the sign_mode enum"}}},"cosmos.base.reflection.v2alpha1.TxDescriptor":{"type":"object","title":"TxDescriptor describes the accepted transaction type","properties":{"fullname":{"description":"fullname is the protobuf fullname of the raw transaction type (for instance the tx.Tx type)\nit is not meant to support polymorphism of transaction types, it is supposed to be used by\nreflection clients to understand if they can handle a specific transaction type in an application.","type":"string"},"msgs":{"type":"array","title":"msgs lists the accepted application messages (sdk.Msg)","items":{"type":"object","$ref":"#/definitions/cosmos.base.reflection.v2alpha1.MsgDescriptor"}}}},"cosmos.base.tendermint.v1beta1.ABCIQueryResponse":{"description":"ABCIQueryResponse defines the response structure for the ABCIQuery gRPC query.\n\nNote: This type is a duplicate of the ResponseQuery proto type defined in\nTendermint.","type":"object","properties":{"code":{"type":"integer","format":"int64"},"codespace":{"type":"string"},"height":{"type":"string","format":"int64"},"index":{"type":"string","format":"int64"},"info":{"type":"string","title":"nondeterministic"},"key":{"type":"string","format":"byte"},"log":{"type":"string","title":"nondeterministic"},"proof_ops":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.ProofOps"},"value":{"type":"string","format":"byte"}}},"cosmos.base.tendermint.v1beta1.Block":{"description":"Block is tendermint type Block, with the Header proposer address\nfield converted to bech32 string.","type":"object","properties":{"data":{"$ref":"#/definitions/tendermint.types.Data"},"evidence":{"$ref":"#/definitions/tendermint.types.EvidenceList"},"header":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.Header"},"last_commit":{"$ref":"#/definitions/tendermint.types.Commit"}}},"cosmos.base.tendermint.v1beta1.GetBlockByHeightResponse":{"description":"GetBlockByHeightResponse is the response type for the Query/GetBlockByHeight RPC method.","type":"object","properties":{"block":{"title":"Deprecated: please use `sdk_block` instead","$ref":"#/definitions/tendermint.types.Block"},"block_id":{"$ref":"#/definitions/tendermint.types.BlockID"},"sdk_block":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.Block"}}},"cosmos.base.tendermint.v1beta1.GetLatestBlockResponse":{"description":"GetLatestBlockResponse is the response type for the Query/GetLatestBlock RPC method.","type":"object","properties":{"block":{"title":"Deprecated: please use `sdk_block` instead","$ref":"#/definitions/tendermint.types.Block"},"block_id":{"$ref":"#/definitions/tendermint.types.BlockID"},"sdk_block":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.Block"}}},"cosmos.base.tendermint.v1beta1.GetLatestValidatorSetResponse":{"description":"GetLatestValidatorSetResponse is the response type for the Query/GetValidatorSetByHeight RPC method.","type":"object","properties":{"block_height":{"type":"string","format":"int64"},"pagination":{"description":"pagination defines an pagination for the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"validators":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.tendermint.v1beta1.Validator"}}}},"cosmos.base.tendermint.v1beta1.GetNodeInfoResponse":{"description":"GetNodeInfoResponse is the response type for the Query/GetNodeInfo RPC method.","type":"object","properties":{"application_version":{"$ref":"#/definitions/cosmos.base.tendermint.v1beta1.VersionInfo"},"default_node_info":{"$ref":"#/definitions/tendermint.p2p.DefaultNodeInfo"}}},"cosmos.base.tendermint.v1beta1.GetSyncingResponse":{"description":"GetSyncingResponse is the response type for the Query/GetSyncing RPC method.","type":"object","properties":{"syncing":{"type":"boolean"}}},"cosmos.base.tendermint.v1beta1.GetValidatorSetByHeightResponse":{"description":"GetValidatorSetByHeightResponse is the response type for the Query/GetValidatorSetByHeight RPC method.","type":"object","properties":{"block_height":{"type":"string","format":"int64"},"pagination":{"description":"pagination defines an pagination for the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"validators":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.tendermint.v1beta1.Validator"}}}},"cosmos.base.tendermint.v1beta1.Header":{"description":"Header defines the structure of a Tendermint block header.","type":"object","properties":{"app_hash":{"type":"string","format":"byte","title":"state after txs from the previous block"},"chain_id":{"type":"string"},"consensus_hash":{"type":"string","format":"byte","title":"consensus params for current block"},"data_hash":{"type":"string","format":"byte","title":"transactions"},"evidence_hash":{"description":"evidence included in the block","type":"string","format":"byte","title":"consensus info"},"height":{"type":"string","format":"int64"},"last_block_id":{"title":"prev block info","$ref":"#/definitions/tendermint.types.BlockID"},"last_commit_hash":{"description":"commit from validators from the last block","type":"string","format":"byte","title":"hashes of block data"},"last_results_hash":{"type":"string","format":"byte","title":"root hash of all results from the txs from the previous block"},"next_validators_hash":{"type":"string","format":"byte","title":"validators for the next block"},"proposer_address":{"description":"proposer_address is the original block proposer address, formatted as a Bech32 string.\nIn Tendermint, this type is `bytes`, but in the SDK, we convert it to a Bech32 string\nfor better UX.\n\noriginal proposer of the block","type":"string"},"time":{"type":"string","format":"date-time"},"validators_hash":{"description":"validators for the current block","type":"string","format":"byte","title":"hashes from the app output from the prev block"},"version":{"title":"basic block info","$ref":"#/definitions/tendermint.version.Consensus"}}},"cosmos.base.tendermint.v1beta1.Module":{"type":"object","title":"Module is the type for VersionInfo","properties":{"path":{"type":"string","title":"module path"},"sum":{"type":"string","title":"checksum"},"version":{"type":"string","title":"module version"}}},"cosmos.base.tendermint.v1beta1.ProofOp":{"description":"ProofOp defines an operation used for calculating Merkle root. The data could\nbe arbitrary format, providing necessary data for example neighbouring node\nhash.\n\nNote: This type is a duplicate of the ProofOp proto type defined in Tendermint.","type":"object","properties":{"data":{"type":"string","format":"byte"},"key":{"type":"string","format":"byte"},"type":{"type":"string"}}},"cosmos.base.tendermint.v1beta1.ProofOps":{"description":"ProofOps is Merkle proof defined by the list of ProofOps.\n\nNote: This type is a duplicate of the ProofOps proto type defined in Tendermint.","type":"object","properties":{"ops":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.tendermint.v1beta1.ProofOp"}}}},"cosmos.base.tendermint.v1beta1.Validator":{"description":"Validator is the type for the validator-set.","type":"object","properties":{"address":{"type":"string"},"proposer_priority":{"type":"string","format":"int64"},"pub_key":{"$ref":"#/definitions/google.protobuf.Any"},"voting_power":{"type":"string","format":"int64"}}},"cosmos.base.tendermint.v1beta1.VersionInfo":{"description":"VersionInfo is the type for the GetNodeInfoResponse message.","type":"object","properties":{"app_name":{"type":"string"},"build_deps":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.tendermint.v1beta1.Module"}},"build_tags":{"type":"string"},"cosmos_sdk_version":{"type":"string"},"git_commit":{"type":"string"},"go_version":{"type":"string"},"name":{"type":"string"},"version":{"type":"string"}}},"cosmos.base.v1beta1.Coin":{"description":"Coin defines a token with a denomination and an amount.\n\nNOTE: The amount field is an Int which implements the custom method\nsignatures required by gogoproto.","type":"object","properties":{"amount":{"type":"string"},"denom":{"type":"string"}}},"cosmos.base.v1beta1.DecCoin":{"description":"DecCoin defines a token with a denomination and a decimal amount.\n\nNOTE: The amount field is an Dec which implements the custom method\nsignatures required by gogoproto.","type":"object","properties":{"amount":{"type":"string"},"denom":{"type":"string"}}},"cosmos.benchmark.v1.MsgLoadTest":{"description":"MsgLoadTestOps defines a message containing a sequence of load test operations.","type":"object","properties":{"caller":{"type":"string","format":"byte"},"ops":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.benchmark.v1.Op"}}}},"cosmos.benchmark.v1.MsgLoadTestResponse":{"description":"MsgLoadTestResponse defines a message containing the results of a load test operation.","type":"object","properties":{"total_errors":{"type":"string","format":"uint64"},"total_time":{"type":"string","format":"uint64"}}},"cosmos.benchmark.v1.Op":{"description":"Op is a message describing a benchmark operation.","type":"object","properties":{"actor":{"type":"string"},"delete":{"type":"boolean"},"exists":{"type":"boolean"},"iterations":{"type":"integer","format":"int64"},"key_length":{"type":"string","format":"uint64"},"seed":{"type":"string","format":"uint64"},"value_length":{"type":"string","format":"uint64"}}},"cosmos.circuit.v1.AccountResponse":{"description":"AccountResponse is the response type for the Query/Account RPC method.","type":"object","properties":{"permission":{"$ref":"#/definitions/cosmos.circuit.v1.Permissions"}}},"cosmos.circuit.v1.AccountsResponse":{"description":"AccountsResponse is the response type for the Query/Accounts RPC method.","type":"object","properties":{"accounts":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.circuit.v1.GenesisAccountPermissions"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.circuit.v1.DisabledListResponse":{"description":"DisabledListResponse is the response type for the Query/DisabledList RPC method.","type":"object","properties":{"disabled_list":{"type":"array","items":{"type":"string"}}}},"cosmos.circuit.v1.GenesisAccountPermissions":{"type":"object","title":"GenesisAccountPermissions is the account permissions for the circuit breaker in genesis","properties":{"address":{"type":"string"},"permissions":{"$ref":"#/definitions/cosmos.circuit.v1.Permissions"}}},"cosmos.circuit.v1.MsgAuthorizeCircuitBreaker":{"description":"MsgAuthorizeCircuitBreaker defines the Msg/AuthorizeCircuitBreaker request type.","type":"object","properties":{"grantee":{"description":"grantee is the account authorized with the provided permissions.","type":"string"},"granter":{"description":"granter is the granter of the circuit breaker permissions and must have\nLEVEL_SUPER_ADMIN.","type":"string"},"permissions":{"description":"permissions are the circuit breaker permissions that the grantee receives.\nThese will overwrite any existing permissions. LEVEL_NONE_UNSPECIFIED can\nbe specified to revoke all permissions.","$ref":"#/definitions/cosmos.circuit.v1.Permissions"}}},"cosmos.circuit.v1.MsgAuthorizeCircuitBreakerResponse":{"description":"MsgAuthorizeCircuitBreakerResponse defines the Msg/AuthorizeCircuitBreaker response type.","type":"object","properties":{"success":{"type":"boolean"}}},"cosmos.circuit.v1.MsgResetCircuitBreaker":{"description":"MsgResetCircuitBreaker defines the Msg/ResetCircuitBreaker request type.","type":"object","properties":{"authority":{"description":"authority is the account authorized to trip or reset the circuit breaker.","type":"string"},"msg_type_urls":{"description":"msg_type_urls specifies a list of Msg type URLs to resume processing. If\nit is left empty all Msg processing for type URLs that the account is\nauthorized to trip will resume.","type":"array","items":{"type":"string"}}}},"cosmos.circuit.v1.MsgResetCircuitBreakerResponse":{"description":"MsgResetCircuitBreakerResponse defines the Msg/ResetCircuitBreaker response type.","type":"object","properties":{"success":{"type":"boolean"}}},"cosmos.circuit.v1.MsgTripCircuitBreaker":{"description":"MsgTripCircuitBreaker defines the Msg/TripCircuitBreaker request type.","type":"object","properties":{"authority":{"description":"authority is the account authorized to trip the circuit breaker.","type":"string"},"msg_type_urls":{"description":"msg_type_urls specifies a list of type URLs to immediately stop processing.\nIF IT IS LEFT EMPTY, ALL MSG PROCESSING WILL STOP IMMEDIATELY.\nThis value is validated against the authority's permissions and if the\nauthority does not have permissions to trip the specified msg type URLs\n(or all URLs), the operation will fail.","type":"array","items":{"type":"string"}}}},"cosmos.circuit.v1.MsgTripCircuitBreakerResponse":{"description":"MsgTripCircuitBreakerResponse defines the Msg/TripCircuitBreaker response type.","type":"object","properties":{"success":{"type":"boolean"}}},"cosmos.circuit.v1.Permissions":{"description":"Permissions are the permissions that an account has to trip\nor reset the circuit breaker.","type":"object","properties":{"level":{"description":"level is the level of permissions granted to this account.","$ref":"#/definitions/cosmos.circuit.v1.Permissions.Level"},"limit_type_urls":{"description":"limit_type_urls is used with LEVEL_SOME_MSGS to limit the lists of Msg type\nURLs that the account can trip. It is an error to use limit_type_urls with\na level other than LEVEL_SOME_MSGS.","type":"array","items":{"type":"string"}}}},"cosmos.circuit.v1.Permissions.Level":{"description":"Level is the permission level.\n\n - LEVEL_NONE_UNSPECIFIED: LEVEL_NONE_UNSPECIFIED indicates that the account will have no circuit\nbreaker permissions.\n - LEVEL_SOME_MSGS: LEVEL_SOME_MSGS indicates that the account will have permission to\ntrip or reset the circuit breaker for some Msg type URLs. If this level\nis chosen, a non-empty list of Msg type URLs must be provided in\nlimit_type_urls.\n - LEVEL_ALL_MSGS: LEVEL_ALL_MSGS indicates that the account can trip or reset the circuit\nbreaker for Msg's of all type URLs.\n - LEVEL_SUPER_ADMIN: LEVEL_SUPER_ADMIN indicates that the account can take all circuit breaker\nactions and can grant permissions to other accounts.","type":"string","default":"LEVEL_NONE_UNSPECIFIED","enum":["LEVEL_NONE_UNSPECIFIED","LEVEL_SOME_MSGS","LEVEL_ALL_MSGS","LEVEL_SUPER_ADMIN"]},"cosmos.consensus.v1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"abci":{"$ref":"#/definitions/tendermint.types.ABCIParams"},"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"block":{"description":"params defines the x/consensus parameters to update.\nVersionsParams is not included in this Msg because it is tracked\nsepararately in x/upgrade.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/tendermint.types.BlockParams"},"evidence":{"$ref":"#/definitions/tendermint.types.EvidenceParams"},"validator":{"$ref":"#/definitions/tendermint.types.ValidatorParams"}}},"cosmos.consensus.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"cosmos.consensus.v1.QueryParamsResponse":{"description":"QueryParamsResponse defines the response type for querying x/consensus parameters.","type":"object","properties":{"params":{"description":"params are the tendermint consensus params stored in the consensus module.\nPlease note that `params.version` is not populated in this response, it is\ntracked separately in the x/upgrade module.","$ref":"#/definitions/tendermint.types.ConsensusParams"}}},"cosmos.counter.v1.MsgIncreaseCountResponse":{"description":"MsgIncreaseCountResponse is the Msg/Counter response type.","type":"object","properties":{"new_count":{"description":"new_count is the number of times the counter was incremented.","type":"string","format":"int64"}}},"cosmos.counter.v1.MsgIncreaseCounter":{"description":"MsgIncreaseCounter defines a count Msg service counter.","type":"object","properties":{"count":{"description":"count is the number of times to increment the counter.","type":"string","format":"int64"},"signer":{"description":"signer is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"}}},"cosmos.counter.v1.QueryGetCountRequest":{"description":"QueryGetCountRequest defines the request type for querying x/mock count.","type":"object"},"cosmos.counter.v1.QueryGetCountResponse":{"description":"QueryGetCountResponse defines the response type for querying x/mock count.","type":"object","properties":{"total_count":{"type":"string","format":"int64"}}},"cosmos.crisis.v1beta1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"constant_fee":{"description":"constant_fee defines the x/crisis parameter.","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"cosmos.crisis.v1beta1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"cosmos.crisis.v1beta1.MsgVerifyInvariant":{"description":"MsgVerifyInvariant represents a message to verify a particular invariance.","type":"object","properties":{"invariant_module_name":{"description":"name of the invariant module.","type":"string"},"invariant_route":{"description":"invariant_route is the msg's invariant route.","type":"string"},"sender":{"description":"sender is the account address of private key to send coins to fee collector account.","type":"string"}}},"cosmos.crisis.v1beta1.MsgVerifyInvariantResponse":{"description":"MsgVerifyInvariantResponse defines the Msg/VerifyInvariant response type.","type":"object"},"cosmos.crypto.multisig.v1beta1.CompactBitArray":{"description":"CompactBitArray is an implementation of a space efficient bit array.\nThis is used to ensure that the encoded data takes up a minimal amount of\nspace after proto encoding.\nThis is not thread safe, and is not intended for concurrent usage.","type":"object","properties":{"elems":{"type":"string","format":"byte"},"extra_bits_stored":{"type":"integer","format":"int64"}}},"cosmos.distribution.v1beta1.DelegationDelegatorReward":{"description":"DelegationDelegatorReward represents the properties\nof a delegator's delegation reward.","type":"object","properties":{"reward":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.DecCoin"}},"validator_address":{"type":"string"}}},"cosmos.distribution.v1beta1.MsgCommunityPoolSpend":{"description":"MsgCommunityPoolSpend defines a message for sending tokens from the community\npool to another account. This message is typically executed via a governance\nproposal with the governance module being the executing authority.","type":"object","properties":{"amount":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"recipient":{"type":"string"}}},"cosmos.distribution.v1beta1.MsgCommunityPoolSpendResponse":{"description":"MsgCommunityPoolSpendResponse defines the response to executing a\nMsgCommunityPoolSpend message.","type":"object"},"cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPool":{"description":"DepositValidatorRewardsPool defines the request structure to provide\nadditional rewards to delegators from a specific validator.","type":"object","properties":{"amount":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"depositor":{"type":"string"},"validator_address":{"type":"string"}}},"cosmos.distribution.v1beta1.MsgDepositValidatorRewardsPoolResponse":{"description":"MsgDepositValidatorRewardsPoolResponse defines the response to executing a\nMsgDepositValidatorRewardsPool message.","type":"object"},"cosmos.distribution.v1beta1.MsgFundCommunityPool":{"description":"MsgFundCommunityPool allows an account to directly\nfund the community pool.","type":"object","properties":{"amount":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"depositor":{"type":"string"}}},"cosmos.distribution.v1beta1.MsgFundCommunityPoolResponse":{"description":"MsgFundCommunityPoolResponse defines the Msg/FundCommunityPool response type.","type":"object"},"cosmos.distribution.v1beta1.MsgSetWithdrawAddress":{"description":"MsgSetWithdrawAddress sets the withdraw address for\na delegator (or validator self-delegation).","type":"object","properties":{"delegator_address":{"type":"string"},"withdraw_address":{"type":"string"}}},"cosmos.distribution.v1beta1.MsgSetWithdrawAddressResponse":{"description":"MsgSetWithdrawAddressResponse defines the Msg/SetWithdrawAddress response\ntype.","type":"object"},"cosmos.distribution.v1beta1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/distribution parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.distribution.v1beta1.Params"}}},"cosmos.distribution.v1beta1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward":{"description":"MsgWithdrawDelegatorReward represents delegation withdrawal to a delegator\nfrom a single validator.","type":"object","properties":{"delegator_address":{"type":"string"},"validator_address":{"type":"string"}}},"cosmos.distribution.v1beta1.MsgWithdrawDelegatorRewardResponse":{"description":"MsgWithdrawDelegatorRewardResponse defines the Msg/WithdrawDelegatorReward\nresponse type.","type":"object","properties":{"amount":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission":{"description":"MsgWithdrawValidatorCommission withdraws the full commission to the validator\naddress.","type":"object","properties":{"validator_address":{"type":"string"}}},"cosmos.distribution.v1beta1.MsgWithdrawValidatorCommissionResponse":{"description":"MsgWithdrawValidatorCommissionResponse defines the\nMsg/WithdrawValidatorCommission response type.","type":"object","properties":{"amount":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"cosmos.distribution.v1beta1.Params":{"description":"Params defines the set of params for the distribution module.","type":"object","properties":{"base_proposer_reward":{"description":"Deprecated: The base_proposer_reward field is deprecated and is no longer used\nin the x/distribution module's reward mechanism.","type":"string"},"bonus_proposer_reward":{"description":"Deprecated: The bonus_proposer_reward field is deprecated and is no longer used\nin the x/distribution module's reward mechanism.","type":"string"},"community_tax":{"type":"string"},"withdraw_addr_enabled":{"type":"boolean"}}},"cosmos.distribution.v1beta1.QueryCommunityPoolResponse":{"description":"QueryCommunityPoolResponse is the response type for the Query/CommunityPool\nRPC method.","type":"object","properties":{"pool":{"description":"pool defines community pool's coins.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.DecCoin"}}}},"cosmos.distribution.v1beta1.QueryDelegationRewardsResponse":{"description":"QueryDelegationRewardsResponse is the response type for the\nQuery/DelegationRewards RPC method.","type":"object","properties":{"rewards":{"description":"rewards defines the rewards accrued by a delegation.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.DecCoin"}}}},"cosmos.distribution.v1beta1.QueryDelegationTotalRewardsResponse":{"description":"QueryDelegationTotalRewardsResponse is the response type for the\nQuery/DelegationTotalRewards RPC method.","type":"object","properties":{"rewards":{"description":"rewards defines all the rewards accrued by a delegator.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.distribution.v1beta1.DelegationDelegatorReward"}},"total":{"description":"total defines the sum of all the rewards.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.DecCoin"}}}},"cosmos.distribution.v1beta1.QueryDelegatorValidatorsResponse":{"description":"QueryDelegatorValidatorsResponse is the response type for the\nQuery/DelegatorValidators RPC method.","type":"object","properties":{"validators":{"description":"validators defines the validators a delegator is delegating for.","type":"array","items":{"type":"string"}}}},"cosmos.distribution.v1beta1.QueryDelegatorWithdrawAddressResponse":{"description":"QueryDelegatorWithdrawAddressResponse is the response type for the\nQuery/DelegatorWithdrawAddress RPC method.","type":"object","properties":{"withdraw_address":{"description":"withdraw_address defines the delegator address to query for.","type":"string"}}},"cosmos.distribution.v1beta1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/cosmos.distribution.v1beta1.Params"}}},"cosmos.distribution.v1beta1.QueryValidatorCommissionResponse":{"type":"object","title":"QueryValidatorCommissionResponse is the response type for the\nQuery/ValidatorCommission RPC method","properties":{"commission":{"description":"commission defines the commission the validator received.","$ref":"#/definitions/cosmos.distribution.v1beta1.ValidatorAccumulatedCommission"}}},"cosmos.distribution.v1beta1.QueryValidatorDistributionInfoResponse":{"description":"QueryValidatorDistributionInfoResponse is the response type for the Query/ValidatorDistributionInfo RPC method.","type":"object","properties":{"commission":{"description":"commission defines the commission the validator received.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.DecCoin"}},"operator_address":{"description":"operator_address defines the validator operator address.","type":"string"},"self_bond_rewards":{"description":"self_bond_rewards defines the self delegations rewards.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.DecCoin"}}}},"cosmos.distribution.v1beta1.QueryValidatorOutstandingRewardsResponse":{"description":"QueryValidatorOutstandingRewardsResponse is the response type for the\nQuery/ValidatorOutstandingRewards RPC method.","type":"object","properties":{"rewards":{"$ref":"#/definitions/cosmos.distribution.v1beta1.ValidatorOutstandingRewards"}}},"cosmos.distribution.v1beta1.QueryValidatorSlashesResponse":{"description":"QueryValidatorSlashesResponse is the response type for the\nQuery/ValidatorSlashes RPC method.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"slashes":{"description":"slashes defines the slashes the validator received.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.distribution.v1beta1.ValidatorSlashEvent"}}}},"cosmos.distribution.v1beta1.ValidatorAccumulatedCommission":{"description":"ValidatorAccumulatedCommission represents accumulated commission\nfor a validator kept as a running counter, can be withdrawn at any time.","type":"object","properties":{"commission":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.DecCoin"}}}},"cosmos.distribution.v1beta1.ValidatorOutstandingRewards":{"description":"ValidatorOutstandingRewards represents outstanding (un-withdrawn) rewards\nfor a validator inexpensive to track, allows simple sanity checks.","type":"object","properties":{"rewards":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.DecCoin"}}}},"cosmos.distribution.v1beta1.ValidatorSlashEvent":{"description":"ValidatorSlashEvent represents a validator slash event.\nHeight is implicit within the store key.\nThis is needed to calculate appropriate amount of staking tokens\nfor delegations which are withdrawn after a slash has occurred.","type":"object","properties":{"fraction":{"type":"string"},"validator_period":{"type":"string","format":"uint64"}}},"cosmos.epochs.v1beta1.EpochInfo":{"description":"EpochInfo is a struct that describes the data going into\na timer defined by the x/epochs module.","type":"object","properties":{"current_epoch":{"description":"current_epoch is the current epoch number, or in other words,\nhow many times has the timer 'ticked'.\nThe first tick (current_epoch=1) is defined as\nthe first block whose blocktime is greater than the EpochInfo start_time.","type":"string","format":"int64"},"current_epoch_start_height":{"type":"string","format":"int64","title":"current_epoch_start_height is the block height at which the current epoch\nstarted. (The block height at which the timer last ticked)"},"current_epoch_start_time":{"description":"current_epoch_start_time describes the start time of the current timer\ninterval. The interval is (current_epoch_start_time,\ncurrent_epoch_start_time + duration] When the timer ticks, this is set to\ncurrent_epoch_start_time = last_epoch_start_time + duration only one timer\ntick for a given identifier can occur per block.\n\nNOTE! The current_epoch_start_time may diverge significantly from the\nwall-clock time the epoch began at. Wall-clock time of epoch start may be\n\u003e\u003e current_epoch_start_time. Suppose current_epoch_start_time = 10,\nduration = 5. Suppose the chain goes offline at t=14, and comes back online\nat t=30, and produces blocks at every successive time. (t=31, 32, etc.)\n* The t=30 block will start the epoch for (10, 15]\n* The t=31 block will start the epoch for (15, 20]\n* The t=32 block will start the epoch for (20, 25]\n* The t=33 block will start the epoch for (25, 30]\n* The t=34 block will start the epoch for (30, 35]\n* The **t=36** block will start the epoch for (35, 40]","type":"string","format":"date-time"},"duration":{"description":"duration is the time in between epoch ticks.\nIn order for intended behavior to be met, duration should\nbe greater than the chains expected block time.\nDuration must be non-zero.","type":"string"},"epoch_counting_started":{"description":"epoch_counting_started is a boolean, that indicates whether this\nepoch timer has began yet.","type":"boolean"},"identifier":{"description":"identifier is a unique reference to this particular timer.","type":"string"},"start_time":{"description":"start_time is the time at which the timer first ever ticks.\nIf start_time is in the future, the epoch will not begin until the start\ntime.","type":"string","format":"date-time"}}},"cosmos.epochs.v1beta1.QueryCurrentEpochResponse":{"description":"QueryCurrentEpochResponse defines the gRPC response structure for\nquerying an epoch by its identifier.","type":"object","properties":{"current_epoch":{"type":"string","format":"int64"}}},"cosmos.epochs.v1beta1.QueryEpochInfosResponse":{"description":"QueryEpochInfosRequest defines the gRPC response structure for\nquerying all epoch info.","type":"object","properties":{"epochs":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.epochs.v1beta1.EpochInfo"}}}},"cosmos.evidence.v1beta1.MsgSubmitEvidence":{"description":"MsgSubmitEvidence represents a message that supports submitting arbitrary\nEvidence of misbehavior such as equivocation or counterfactual signing.","type":"object","properties":{"evidence":{"description":"evidence defines the evidence of misbehavior.","$ref":"#/definitions/google.protobuf.Any"},"submitter":{"description":"submitter is the signer account address of evidence.","type":"string"}}},"cosmos.evidence.v1beta1.MsgSubmitEvidenceResponse":{"description":"MsgSubmitEvidenceResponse defines the Msg/SubmitEvidence response type.","type":"object","properties":{"hash":{"description":"hash defines the hash of the evidence.","type":"string","format":"byte"}}},"cosmos.evidence.v1beta1.QueryAllEvidenceResponse":{"description":"QueryAllEvidenceResponse is the response type for the Query/AllEvidence RPC\nmethod.","type":"object","properties":{"evidence":{"description":"evidence returns all evidences.","type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.evidence.v1beta1.QueryEvidenceResponse":{"description":"QueryEvidenceResponse is the response type for the Query/Evidence RPC method.","type":"object","properties":{"evidence":{"description":"evidence returns the requested evidence.","$ref":"#/definitions/google.protobuf.Any"}}},"cosmos.evm.erc20.v1.MsgConvertCoinResponse":{"type":"object","title":"MsgConvertCoinResponse returns no fields"},"cosmos.evm.erc20.v1.MsgConvertERC20Response":{"type":"object","title":"MsgConvertERC20Response returns no fields"},"cosmos.evm.erc20.v1.MsgRegisterERC20":{"description":"MsgRegisterERC20 is the Msg/RegisterERC20 request type for registering\nan Erc20 contract token pair.","type":"object","properties":{"erc20addresses":{"type":"array","title":"erc20addresses is a slice of ERC20 token contract hex addresses","items":{"type":"string"}},"signer":{"type":"string","title":"signer is the address registering the erc20 pairs"}}},"cosmos.evm.erc20.v1.MsgRegisterERC20Response":{"description":"MsgRegisterERC20Response defines the response structure for executing a\nMsgRegisterERC20 message.","type":"object"},"cosmos.evm.erc20.v1.MsgToggleConversion":{"description":"MsgToggleConversion is the Msg/MsgToggleConversion request type for toggling\nan Erc20 contract conversion capability.","type":"object","properties":{"authority":{"description":"authority is the address of the governance account.","type":"string"},"token":{"type":"string","title":"token identifier can be either the hex contract address of the ERC20 or the\nCosmos base denomination"}}},"cosmos.evm.erc20.v1.MsgToggleConversionResponse":{"description":"MsgToggleConversionResponse defines the response structure for executing a\nToggleConversion message.","type":"object"},"cosmos.evm.erc20.v1.MsgUpdateParams":{"type":"object","title":"MsgUpdateParams is the Msg/UpdateParams request type for Erc20 parameters.\nSince: cosmos-sdk 0.47","properties":{"authority":{"description":"authority is the address of the governance account.","type":"string"},"params":{"description":"params defines the x/vm parameters to update.\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.evm.erc20.v1.Params"}}},"cosmos.evm.erc20.v1.MsgUpdateParamsResponse":{"type":"object","title":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.\nSince: cosmos-sdk 0.47"},"cosmos.evm.erc20.v1.Owner":{"description":"Owner enumerates the ownership of a ERC20 contract.\n\n - OWNER_UNSPECIFIED: OWNER_UNSPECIFIED defines an invalid/undefined owner.\n - OWNER_MODULE: OWNER_MODULE - erc20 is owned by the erc20 module account.\n - OWNER_EXTERNAL: OWNER_EXTERNAL - erc20 is owned by an external account.","type":"string","default":"OWNER_UNSPECIFIED","enum":["OWNER_UNSPECIFIED","OWNER_MODULE","OWNER_EXTERNAL"]},"cosmos.evm.erc20.v1.Params":{"type":"object","title":"Params defines the erc20 module params","properties":{"enable_erc20":{"description":"enable_erc20 is the parameter to enable the conversion of Cosmos coins \u003c--\u003e\nERC20 tokens.","type":"boolean"},"permissionless_registration":{"type":"boolean","title":"permissionless_registration is the parameter that allows ERC20s to be\npermissionlessly registered to be converted to bank tokens and vice versa"}}},"cosmos.evm.erc20.v1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC\nmethod.","type":"object","properties":{"params":{"title":"params are the erc20 module parameters","$ref":"#/definitions/cosmos.evm.erc20.v1.Params"}}},"cosmos.evm.erc20.v1.QueryTokenPairResponse":{"description":"QueryTokenPairResponse is the response type for the Query/TokenPair RPC\nmethod.","type":"object","properties":{"token_pair":{"title":"token_pairs returns the info about a registered token pair for the erc20\nmodule","$ref":"#/definitions/cosmos.evm.erc20.v1.TokenPair"}}},"cosmos.evm.erc20.v1.QueryTokenPairsResponse":{"description":"QueryTokenPairsResponse is the response type for the Query/TokenPairs RPC\nmethod.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"token_pairs":{"type":"array","title":"token_pairs is a slice of registered token pairs for the erc20 module","items":{"type":"object","$ref":"#/definitions/cosmos.evm.erc20.v1.TokenPair"}}}},"cosmos.evm.erc20.v1.TokenPair":{"description":"TokenPair defines an instance that records a pairing (mapping) consisting of a native\nCosmos Coin and an ERC20 token address. The \"pair\" does not imply an asset swap exchange.","type":"object","properties":{"contract_owner":{"title":"contract_owner is the an ENUM specifying the type of ERC20 owner (0\ninvalid, 1 ModuleAccount, 2 external address)","$ref":"#/definitions/cosmos.evm.erc20.v1.Owner"},"denom":{"type":"string","title":"denom defines the cosmos base denomination to be mapped to"},"enabled":{"type":"boolean","title":"enabled defines the token mapping enable status"},"erc20_address":{"type":"string","title":"erc20_address is the hex address of ERC20 contract token"}}},"cosmos.evm.feemarket.v1.MsgUpdateParams":{"description":"MsgUpdateParams defines a Msg for updating the x/feemarket module parameters.","type":"object","properties":{"authority":{"description":"authority is the address of the governance account.","type":"string"},"params":{"description":"params defines the x/feemarket parameters to update.\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.evm.feemarket.v1.Params"}}},"cosmos.evm.feemarket.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"cosmos.evm.feemarket.v1.Params":{"type":"object","title":"Params defines the EVM module parameters","properties":{"base_fee":{"description":"base_fee for EIP-1559 blocks.","type":"string"},"base_fee_change_denominator":{"description":"base_fee_change_denominator bounds the amount the base fee can change\nbetween blocks.","type":"integer","format":"int64"},"elasticity_multiplier":{"description":"elasticity_multiplier bounds the maximum gas limit an EIP-1559 block may\nhave.","type":"integer","format":"int64"},"enable_height":{"description":"enable_height defines at which block height the base fee calculation is\nenabled.","type":"string","format":"int64"},"min_gas_multiplier":{"type":"string","title":"min_gas_multiplier bounds the minimum gas used to be charged\nto senders based on gas limit"},"min_gas_price":{"type":"string","title":"min_gas_price defines the minimum gas price value for cosmos and eth\ntransactions"},"no_base_fee":{"type":"boolean","title":"no_base_fee forces the EIP-1559 base fee to 0 (needed for 0 price calls)"}}},"cosmos.evm.feemarket.v1.QueryBaseFeeResponse":{"description":"QueryBaseFeeResponse returns the EIP1559 base fee.","type":"object","properties":{"base_fee":{"type":"string","title":"base_fee is the EIP1559 base fee"}}},"cosmos.evm.feemarket.v1.QueryBlockGasResponse":{"description":"QueryBlockGasResponse returns block gas used for a given height.","type":"object","properties":{"gas":{"type":"string","format":"int64","title":"gas is the returned block gas"}}},"cosmos.evm.feemarket.v1.QueryParamsResponse":{"description":"QueryParamsResponse defines the response type for querying x/vm parameters.","type":"object","properties":{"params":{"description":"params define the evm module parameters.","$ref":"#/definitions/cosmos.evm.feemarket.v1.Params"}}},"cosmos.evm.precisebank.v1.QueryFractionalBalanceResponse":{"description":"QueryFractionalBalanceResponse defines the response type for\nQuery/FractionalBalance method.","type":"object","properties":{"fractional_balance":{"description":"fractional_balance is the fractional balance of the address.","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"cosmos.evm.precisebank.v1.QueryRemainderResponse":{"description":"QueryRemainderResponse defines the response type for Query/Remainder method.","type":"object","properties":{"remainder":{"description":"remainder is the amount backed by the reserve, but not yet owned by any\naccount, i.e. not in circulation.","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"cosmos.evm.vm.v1.AccessControl":{"type":"object","title":"AccessControl defines the permission policy of the EVM\nfor creating and calling contracts","properties":{"call":{"title":"call defines the permission policy for calling contracts","$ref":"#/definitions/cosmos.evm.vm.v1.AccessControlType"},"create":{"title":"create defines the permission policy for creating contracts","$ref":"#/definitions/cosmos.evm.vm.v1.AccessControlType"}}},"cosmos.evm.vm.v1.AccessControlType":{"type":"object","title":"AccessControlType defines the permission type for policies","properties":{"access_control_list":{"type":"array","title":"access_control_list defines defines different things depending on the\nAccessType:\n- ACCESS_TYPE_PERMISSIONLESS: list of addresses that are blocked from\nperforming the operation\n- ACCESS_TYPE_RESTRICTED: ignored\n- ACCESS_TYPE_PERMISSIONED: list of addresses that are allowed to perform\nthe operation","items":{"type":"string"}},"access_type":{"title":"access_type defines which type of permission is required for the operation","$ref":"#/definitions/cosmos.evm.vm.v1.AccessType"}}},"cosmos.evm.vm.v1.AccessType":{"description":"- ACCESS_TYPE_PERMISSIONLESS: ACCESS_TYPE_PERMISSIONLESS does not restrict the operation to anyone\n - ACCESS_TYPE_RESTRICTED: ACCESS_TYPE_RESTRICTED restrict the operation to anyone\n - ACCESS_TYPE_PERMISSIONED: ACCESS_TYPE_PERMISSIONED only allows the operation for specific addresses","type":"string","title":"AccessType defines the types of permissions for the operations","default":"ACCESS_TYPE_PERMISSIONLESS","enum":["ACCESS_TYPE_PERMISSIONLESS","ACCESS_TYPE_RESTRICTED","ACCESS_TYPE_PERMISSIONED"]},"cosmos.evm.vm.v1.ChainConfig":{"description":"ChainConfig defines the Ethereum ChainConfig parameters using *sdk.Int values\ninstead of *big.Int.","type":"object","properties":{"arrow_glacier_block":{"type":"string","title":"arrow_glacier_block: Eip-4345 (bomb delay) switch block (nil = no fork, 0 =\nalready activated)"},"berlin_block":{"type":"string","title":"berlin_block: Berlin switch block (nil = no fork, 0 = already on berlin)"},"byzantium_block":{"type":"string","title":"byzantium_block: Byzantium switch block (nil no fork, 0 = already on\nbyzantium)"},"cancun_time":{"type":"string","title":"cancun_time: Cancun switch time (nil = no fork, 0 = already on cancun)"},"chain_id":{"type":"string","format":"uint64","title":"chain_id is the id of the chain (EIP-155)"},"constantinople_block":{"type":"string","title":"constantinople_block: Constantinople switch block (nil no fork, 0 = already\nactivated)"},"dao_fork_block":{"type":"string","title":"dao_fork_block corresponds to TheDAO hard-fork switch block (nil no fork)"},"dao_fork_support":{"type":"boolean","title":"dao_fork_support defines whether the nodes supports or opposes the DAO\nhard-fork"},"decimals":{"type":"string","format":"uint64","title":"decimals is the real decimal precision of the denomination used on the EVM"},"denom":{"type":"string","title":"denom is the denomination used on the EVM"},"eip150_block":{"type":"string","title":"eip150_block: EIP150 implements the Gas price changes\n(https://github.com/ethereum/EIPs/issues/150) EIP150 HF block (nil no fork)"},"eip155_block":{"type":"string","title":"eip155_block: EIP155Block HF block"},"eip158_block":{"type":"string","title":"eip158_block: EIP158 HF block"},"gray_glacier_block":{"type":"string","title":"gray_glacier_block: EIP-5133 (bomb delay) switch block (nil = no fork, 0 =\nalready activated)"},"homestead_block":{"type":"string","title":"homestead_block switch (nil no fork, 0 = already homestead)"},"istanbul_block":{"type":"string","title":"istanbul_block: Istanbul switch block (nil no fork, 0 = already on\nistanbul)"},"london_block":{"type":"string","title":"london_block: London switch block (nil = no fork, 0 = already on london)"},"merge_netsplit_block":{"type":"string","title":"merge_netsplit_block: Virtual fork after The Merge to use as a network\nsplitter"},"muir_glacier_block":{"type":"string","title":"muir_glacier_block: Eip-2384 (bomb delay) switch block (nil no fork, 0 =\nalready activated)"},"osaka_time":{"type":"string","title":"osaka_time: Osaka switch time (nil = no fork, 0 = already on osaka)"},"petersburg_block":{"type":"string","title":"petersburg_block: Petersburg switch block (nil same as Constantinople)"},"prague_time":{"type":"string","title":"prague_time: Prague switch time (nil = no fork, 0 = already on prague)"},"shanghai_time":{"type":"string","title":"shanghai_time: Shanghai switch time (nil = no fork, 0 = already on\nshanghai)"},"verkle_time":{"type":"string","title":"verkle_time: Verkle switch time (nil = no fork, 0 = already on verkle)"}}},"cosmos.evm.vm.v1.EstimateGasResponse":{"type":"object","title":"EstimateGasResponse defines EstimateGas response","properties":{"gas":{"type":"string","format":"uint64","title":"gas returns the estimated gas"},"ret":{"type":"string","format":"byte","title":"ret is the returned data from evm function (result or data supplied with\nrevert opcode)"},"vm_error":{"type":"string","title":"vm_error is the error returned by vm execution"}}},"cosmos.evm.vm.v1.ExtendedDenomOptions":{"type":"object","properties":{"extended_denom":{"type":"string"}}},"cosmos.evm.vm.v1.Log":{"description":"Log represents an protobuf compatible Ethereum Log that defines a contract\nlog event. These events are generated by the LOG opcode and stored/indexed by\nthe node.\n\nNOTE: address, topics and data are consensus fields. The rest of the fields\nare derived, i.e. filled in by the nodes, but not secured by consensus.","type":"object","properties":{"address":{"type":"string","title":"address of the contract that generated the event"},"block_hash":{"type":"string","title":"block_hash of the block in which the transaction was included"},"block_number":{"type":"string","format":"uint64","title":"block_number of the block in which the transaction was included"},"block_timestamp":{"type":"string","format":"uint64","title":"block_timestamp is the timestamp of the block in which the transaction was"},"data":{"type":"string","format":"byte","title":"data which is supplied by the contract, usually ABI-encoded"},"index":{"type":"string","format":"uint64","title":"index of the log in the block"},"removed":{"description":"removed is true if this log was reverted due to a chain\nreorganisation. You must pay attention to this field if you receive logs\nthrough a filter query.","type":"boolean"},"topics":{"description":"topics is a list of topics provided by the contract.","type":"array","items":{"type":"string"}},"tx_hash":{"type":"string","title":"tx_hash is the transaction hash"},"tx_index":{"type":"string","format":"uint64","title":"tx_index of the transaction in the block"}}},"cosmos.evm.vm.v1.MsgEthereumTx":{"description":"MsgEthereumTx encapsulates an Ethereum transaction as an SDK message.","type":"object","properties":{"from":{"type":"string","format":"byte","title":"from is the bytes of ethereum signer address. This address value is checked\nagainst the address derived from the signature (V, R, S) using the\nsecp256k1 elliptic curve"},"raw":{"type":"string","format":"byte","title":"raw is the raw ethereum transaction"}}},"cosmos.evm.vm.v1.MsgEthereumTxResponse":{"description":"MsgEthereumTxResponse defines the Msg/EthereumTx response type.","type":"object","properties":{"block_hash":{"type":"string","format":"byte","title":"include the block hash for json-rpc to use"},"block_timestamp":{"type":"string","format":"uint64","title":"include the block timestamp for json-rpc to use"},"gas_used":{"type":"string","format":"uint64","title":"gas_used specifies how much gas was consumed by the transaction"},"hash":{"type":"string","title":"hash of the ethereum transaction in hex format. This hash differs from the\nCometBFT sha256 hash of the transaction bytes. See\nhttps://github.com/tendermint/tendermint/issues/6539 for reference"},"logs":{"description":"logs contains the transaction hash and the proto-compatible ethereum\nlogs.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.evm.vm.v1.Log"}},"max_used_gas":{"type":"string","format":"uint64","title":"max_used_gas specifies the gas consumed by the transaction, not including refunds"},"ret":{"type":"string","format":"byte","title":"ret is the returned data from evm function (result or data supplied with\nrevert opcode)"},"vm_error":{"type":"string","title":"vm_error is the error returned by vm execution"}}},"cosmos.evm.vm.v1.MsgRegisterPreinstalls":{"description":"MsgRegisterPreinstalls defines a Msg for creating preinstalls in evm state.","type":"object","properties":{"authority":{"description":"authority is the address of the governance account.","type":"string"},"preinstalls":{"description":"preinstalls defines the preinstalls to create.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.evm.vm.v1.Preinstall"}}}},"cosmos.evm.vm.v1.MsgRegisterPreinstallsResponse":{"description":"MsgRegisterPreinstallsResponse defines the response structure for executing a\nMsgRegisterPreinstalls message.","type":"object"},"cosmos.evm.vm.v1.MsgUpdateParams":{"description":"MsgUpdateParams defines a Msg for updating the x/vm module parameters.","type":"object","properties":{"authority":{"description":"authority is the address of the governance account.","type":"string"},"params":{"description":"params defines the x/vm parameters to update.\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.evm.vm.v1.Params"}}},"cosmos.evm.vm.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"cosmos.evm.vm.v1.Params":{"type":"object","title":"Params defines the EVM module parameters","properties":{"access_control":{"title":"access_control defines the permission policy of the EVM","$ref":"#/definitions/cosmos.evm.vm.v1.AccessControl"},"active_static_precompiles":{"type":"array","title":"active_static_precompiles defines the slice of hex addresses of the\nprecompiled contracts that are active","items":{"type":"string"}},"evm_channels":{"type":"array","title":"evm_channels is the list of channel identifiers from EVM compatible chains","items":{"type":"string"}},"evm_denom":{"description":"evm_denom represents the token denomination used to run the EVM state\ntransitions.","type":"string"},"extended_denom_options":{"$ref":"#/definitions/cosmos.evm.vm.v1.ExtendedDenomOptions"},"extra_eips":{"type":"array","title":"extra_eips defines the additional EIPs for the vm.Config","items":{"type":"string","format":"int64"}},"history_serve_window":{"type":"string","format":"uint64"}}},"cosmos.evm.vm.v1.Preinstall":{"type":"object","title":"Preinstall defines a contract that is preinstalled on-chain with a specific\ncontract address and bytecode","properties":{"address":{"type":"string","title":"address in hex format of the preinstall contract"},"code":{"type":"string","title":"code in hex format for the preinstall contract"},"name":{"type":"string","title":"name of the preinstall contract"}}},"cosmos.evm.vm.v1.QueryAccountResponse":{"description":"QueryAccountResponse is the response type for the Query/Account RPC method.","type":"object","properties":{"balance":{"description":"balance is the balance of the EVM denomination.","type":"string"},"code_hash":{"description":"code_hash is the hex-formatted code bytes from the EOA.","type":"string"},"nonce":{"description":"nonce is the account's sequence number.","type":"string","format":"uint64"}}},"cosmos.evm.vm.v1.QueryBalanceResponse":{"description":"QueryBalanceResponse is the response type for the Query/Balance RPC method.","type":"object","properties":{"balance":{"description":"balance is the balance of the EVM denomination.","type":"string"}}},"cosmos.evm.vm.v1.QueryBaseFeeResponse":{"description":"QueryBaseFeeResponse returns the EIP1559 base fee.","type":"object","properties":{"base_fee":{"type":"string","title":"base_fee is the EIP1559 base fee"}}},"cosmos.evm.vm.v1.QueryCodeResponse":{"description":"QueryCodeResponse is the response type for the Query/Code RPC\nmethod.","type":"object","properties":{"code":{"description":"code represents the code bytes from an ethereum address.","type":"string","format":"byte"}}},"cosmos.evm.vm.v1.QueryConfigResponse":{"description":"QueryConfigResponse returns the EVM config.","type":"object","properties":{"config":{"title":"config is the evm configuration","$ref":"#/definitions/cosmos.evm.vm.v1.ChainConfig"}}},"cosmos.evm.vm.v1.QueryCosmosAccountResponse":{"description":"QueryCosmosAccountResponse is the response type for the Query/CosmosAccount\nRPC method.","type":"object","properties":{"account_number":{"type":"string","format":"uint64","title":"account_number is the account number"},"cosmos_address":{"description":"cosmos_address is the cosmos address of the account.","type":"string"},"sequence":{"description":"sequence is the account's sequence number.","type":"string","format":"uint64"}}},"cosmos.evm.vm.v1.QueryGlobalMinGasPriceResponse":{"type":"object","title":"QueryGlobalMinGasPriceResponse returns the GlobalMinGasPrice","properties":{"min_gas_price":{"type":"string","title":"min_gas_price is the feemarket's min_gas_price"}}},"cosmos.evm.vm.v1.QueryParamsResponse":{"description":"QueryParamsResponse defines the response type for querying x/vm parameters.","type":"object","properties":{"params":{"description":"params define the evm module parameters.","$ref":"#/definitions/cosmos.evm.vm.v1.Params"}}},"cosmos.evm.vm.v1.QueryStorageResponse":{"description":"QueryStorageResponse is the response type for the Query/Storage RPC\nmethod.","type":"object","properties":{"value":{"description":"value defines the storage state value hash associated with the given key.","type":"string"}}},"cosmos.evm.vm.v1.QueryTraceBlockResponse":{"type":"object","title":"QueryTraceBlockResponse defines TraceBlock response","properties":{"data":{"type":"string","format":"byte","title":"data is the response serialized in bytes"}}},"cosmos.evm.vm.v1.QueryTraceCallResponse":{"type":"object","title":"QueryTraceCallResponse defines TraceCall response","properties":{"data":{"type":"string","format":"byte","title":"data is the response serialized in bytes"}}},"cosmos.evm.vm.v1.QueryTraceTxResponse":{"type":"object","title":"QueryTraceTxResponse defines TraceTx response","properties":{"data":{"type":"string","format":"byte","title":"data is the response serialized in bytes"}}},"cosmos.evm.vm.v1.QueryValidatorAccountResponse":{"description":"QueryValidatorAccountResponse is the response type for the\nQuery/ValidatorAccount RPC method.","type":"object","properties":{"account_address":{"description":"account_address is the cosmos address of the account in bech32 format.","type":"string"},"account_number":{"type":"string","format":"uint64","title":"account_number is the account number"},"sequence":{"description":"sequence is the account's sequence number.","type":"string","format":"uint64"}}},"cosmos.evm.vm.v1.TraceConfig":{"description":"TraceConfig holds extra parameters to trace functions.","type":"object","properties":{"debug":{"type":"boolean","title":"debug can be used to print output during capture end"},"disable_stack":{"type":"boolean","title":"disable_stack switches stack capture"},"disable_storage":{"type":"boolean","title":"disable_storage switches storage capture"},"enable_memory":{"type":"boolean","title":"enable_memory switches memory capture"},"enable_return_data":{"type":"boolean","title":"enable_return_data switches the capture of return data"},"limit":{"type":"integer","format":"int32","title":"limit defines the maximum length of output, but zero means unlimited"},"overrides":{"title":"overrides can be used to execute a trace using future fork rules","$ref":"#/definitions/cosmos.evm.vm.v1.ChainConfig"},"reexec":{"type":"string","format":"uint64","title":"reexec defines the number of blocks the tracer is willing to go back"},"timeout":{"type":"string","title":"timeout overrides the default timeout of 5 seconds for JavaScript-based\ntracing calls"},"tracer":{"type":"string","title":"tracer is a custom javascript tracer"},"tracer_json_config":{"type":"string","title":"tracer_json_config configures the tracer using a JSON string"}}},"cosmos.feegrant.v1beta1.Grant":{"type":"object","title":"Grant is stored in the KVStore to record a grant with full context","properties":{"allowance":{"description":"allowance can be any of basic, periodic, allowed fee allowance.","$ref":"#/definitions/google.protobuf.Any"},"grantee":{"description":"grantee is the address of the user being granted an allowance of another user's funds.","type":"string"},"granter":{"description":"granter is the address of the user granting an allowance of their funds.","type":"string"}}},"cosmos.feegrant.v1beta1.MsgGrantAllowance":{"description":"MsgGrantAllowance adds permission for Grantee to spend up to Allowance\nof fees from the account of Granter.","type":"object","properties":{"allowance":{"description":"allowance can be any of basic, periodic, allowed fee allowance.","$ref":"#/definitions/google.protobuf.Any"},"grantee":{"description":"grantee is the address of the user being granted an allowance of another user's funds.","type":"string"},"granter":{"description":"granter is the address of the user granting an allowance of their funds.","type":"string"}}},"cosmos.feegrant.v1beta1.MsgGrantAllowanceResponse":{"description":"MsgGrantAllowanceResponse defines the Msg/GrantAllowanceResponse response type.","type":"object"},"cosmos.feegrant.v1beta1.MsgPruneAllowances":{"description":"MsgPruneAllowances prunes expired fee allowances.","type":"object","properties":{"pruner":{"description":"pruner is the address of the user pruning expired allowances.","type":"string"}}},"cosmos.feegrant.v1beta1.MsgPruneAllowancesResponse":{"description":"MsgPruneAllowancesResponse defines the Msg/PruneAllowancesResponse response type.","type":"object"},"cosmos.feegrant.v1beta1.MsgRevokeAllowance":{"description":"MsgRevokeAllowance removes any existing Allowance from Granter to Grantee.","type":"object","properties":{"grantee":{"description":"grantee is the address of the user being granted an allowance of another user's funds.","type":"string"},"granter":{"description":"granter is the address of the user granting an allowance of their funds.","type":"string"}}},"cosmos.feegrant.v1beta1.MsgRevokeAllowanceResponse":{"description":"MsgRevokeAllowanceResponse defines the Msg/RevokeAllowanceResponse response type.","type":"object"},"cosmos.feegrant.v1beta1.QueryAllowanceResponse":{"description":"QueryAllowanceResponse is the response type for the Query/Allowance RPC method.","type":"object","properties":{"allowance":{"description":"allowance is a allowance granted for grantee by granter.","$ref":"#/definitions/cosmos.feegrant.v1beta1.Grant"}}},"cosmos.feegrant.v1beta1.QueryAllowancesByGranterResponse":{"description":"QueryAllowancesByGranterResponse is the response type for the Query/AllowancesByGranter RPC method.","type":"object","properties":{"allowances":{"description":"allowances that have been issued by the granter.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.feegrant.v1beta1.Grant"}},"pagination":{"description":"pagination defines an pagination for the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.feegrant.v1beta1.QueryAllowancesResponse":{"description":"QueryAllowancesResponse is the response type for the Query/Allowances RPC method.","type":"object","properties":{"allowances":{"description":"allowances are allowance's granted for grantee by granter.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.feegrant.v1beta1.Grant"}},"pagination":{"description":"pagination defines an pagination for the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.gov.v1.Deposit":{"description":"Deposit defines an amount deposited by an account address to an active\nproposal.","type":"object","properties":{"amount":{"description":"amount to be deposited by depositor.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"depositor":{"description":"depositor defines the deposit addresses from the proposals.","type":"string"},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"}}},"cosmos.gov.v1.DepositParams":{"description":"DepositParams defines the params for deposits on governance proposals.","type":"object","properties":{"max_deposit_period":{"description":"Maximum period for Atom holders to deposit on a proposal. Initial value: 2\nmonths.","type":"string"},"min_deposit":{"description":"Minimum deposit for a proposal to enter voting period.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"cosmos.gov.v1.MsgCancelProposal":{"description":"MsgCancelProposal is the Msg/CancelProposal request type.","type":"object","properties":{"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"},"proposer":{"description":"proposer is the account address of the proposer.","type":"string"}}},"cosmos.gov.v1.MsgCancelProposalResponse":{"description":"MsgCancelProposalResponse defines the response structure for executing a\nMsgCancelProposal message.","type":"object","properties":{"canceled_height":{"description":"canceled_height defines the block height at which the proposal is canceled.","type":"string","format":"uint64"},"canceled_time":{"description":"canceled_time is the time when proposal is canceled.","type":"string","format":"date-time"},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"}}},"cosmos.gov.v1.MsgDeposit":{"description":"MsgDeposit defines a message to submit a deposit to an existing proposal.","type":"object","properties":{"amount":{"description":"amount to be deposited by depositor.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"depositor":{"description":"depositor defines the deposit addresses from the proposals.","type":"string"},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"}}},"cosmos.gov.v1.MsgDepositResponse":{"description":"MsgDepositResponse defines the Msg/Deposit response type.","type":"object"},"cosmos.gov.v1.MsgExecLegacyContent":{"description":"MsgExecLegacyContent is used to wrap the legacy content field into a message.\nThis ensures backwards compatibility with v1beta1.MsgSubmitProposal.","type":"object","properties":{"authority":{"description":"authority must be the gov module address.","type":"string"},"content":{"description":"content is the proposal's content.","$ref":"#/definitions/google.protobuf.Any"}}},"cosmos.gov.v1.MsgExecLegacyContentResponse":{"description":"MsgExecLegacyContentResponse defines the Msg/ExecLegacyContent response type.","type":"object"},"cosmos.gov.v1.MsgSubmitProposal":{"description":"MsgSubmitProposal defines an sdk.Msg type that supports submitting arbitrary\nproposal Content.","type":"object","properties":{"expedited":{"type":"boolean","title":"expedited defines if the proposal is expedited or not"},"initial_deposit":{"description":"initial_deposit is the deposit value that must be paid at proposal submission.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"messages":{"description":"messages are the arbitrary messages to be executed if proposal passes.","type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"metadata":{"description":"metadata is any arbitrary metadata attached to the proposal.","type":"string"},"proposer":{"description":"proposer is the account address of the proposer.","type":"string"},"summary":{"type":"string","title":"summary is the summary of the proposal"},"title":{"description":"title is the title of the proposal.","type":"string"}}},"cosmos.gov.v1.MsgSubmitProposalResponse":{"description":"MsgSubmitProposalResponse defines the Msg/SubmitProposal response type.","type":"object","properties":{"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"}}},"cosmos.gov.v1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/gov parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.gov.v1.Params"}}},"cosmos.gov.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"cosmos.gov.v1.MsgVote":{"description":"MsgVote defines a message to cast a vote.","type":"object","properties":{"metadata":{"description":"metadata is any arbitrary metadata attached to the Vote.","type":"string"},"option":{"description":"option defines the vote option.","$ref":"#/definitions/cosmos.gov.v1.VoteOption"},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"},"voter":{"description":"voter is the voter address for the proposal.","type":"string"}}},"cosmos.gov.v1.MsgVoteResponse":{"description":"MsgVoteResponse defines the Msg/Vote response type.","type":"object"},"cosmos.gov.v1.MsgVoteWeighted":{"description":"MsgVoteWeighted defines a message to cast a vote.","type":"object","properties":{"metadata":{"description":"metadata is any arbitrary metadata attached to the VoteWeighted.","type":"string"},"options":{"description":"options defines the weighted vote options.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1.WeightedVoteOption"}},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"},"voter":{"description":"voter is the voter address for the proposal.","type":"string"}}},"cosmos.gov.v1.MsgVoteWeightedResponse":{"description":"MsgVoteWeightedResponse defines the Msg/VoteWeighted response type.","type":"object"},"cosmos.gov.v1.Params":{"description":"Params defines the parameters for the x/gov module.","type":"object","properties":{"burn_proposal_deposit_prevote":{"type":"boolean","title":"burn deposits if the proposal does not enter voting period"},"burn_vote_quorum":{"type":"boolean","title":"burn deposits if a proposal does not meet quorum"},"burn_vote_veto":{"type":"boolean","title":"burn deposits if quorum with vote type no_veto is met"},"expedited_min_deposit":{"description":"Minimum expedited deposit for a proposal to enter voting period.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"expedited_threshold":{"description":"Minimum proportion of Yes votes for proposal to pass. Default value: 0.67.","type":"string"},"expedited_voting_period":{"description":"Duration of the voting period of an expedited proposal.","type":"string"},"max_deposit_period":{"description":"Maximum period for Atom holders to deposit on a proposal. Initial value: 2\nmonths.","type":"string"},"min_deposit":{"description":"Minimum deposit for a proposal to enter voting period.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"min_deposit_ratio":{"description":"The ratio representing the proportion of the deposit value minimum that must be met when making a deposit.\nDefault value: 0.01. Meaning that for a chain with a min_deposit of 100stake, a deposit of 1stake would be\nrequired.","type":"string"},"min_initial_deposit_ratio":{"description":"The ratio representing the proportion of the deposit value that must be paid at proposal submission.","type":"string"},"proposal_cancel_dest":{"description":"The address which will receive (proposal_cancel_ratio * deposit) proposal deposits.\nIf empty, the (proposal_cancel_ratio * deposit) proposal deposits will be burned.","type":"string"},"proposal_cancel_ratio":{"description":"The cancel ratio which will not be returned back to the depositors when a proposal is cancelled.","type":"string"},"quorum":{"description":"Minimum percentage of total stake needed to vote for a result to be\n considered valid.","type":"string"},"threshold":{"description":"Minimum proportion of Yes votes for proposal to pass. Default value: 0.5.","type":"string"},"veto_threshold":{"description":"Minimum value of Veto votes to Total votes ratio for proposal to be\n vetoed. Default value: 1/3.","type":"string"},"voting_period":{"description":"Duration of the voting period.","type":"string"}}},"cosmos.gov.v1.Proposal":{"description":"Proposal defines the core field members of a governance proposal.","type":"object","properties":{"deposit_end_time":{"description":"deposit_end_time is the end time for deposition.","type":"string","format":"date-time"},"expedited":{"type":"boolean","title":"expedited defines if the proposal is expedited"},"failed_reason":{"type":"string","title":"failed_reason defines the reason why the proposal failed"},"final_tally_result":{"description":"final_tally_result is the final tally result of the proposal. When\nquerying a proposal via gRPC, this field is not populated until the\nproposal's voting period has ended.","$ref":"#/definitions/cosmos.gov.v1.TallyResult"},"id":{"description":"id defines the unique id of the proposal.","type":"string","format":"uint64"},"messages":{"description":"messages are the arbitrary messages to be executed if the proposal passes.","type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"metadata":{"type":"string","title":"metadata is any arbitrary metadata attached to the proposal.\nthe recommended format of the metadata is to be found here:\nhttps://docs.cosmos.network/v0.47/modules/gov#proposal-3"},"proposer":{"type":"string","title":"proposer is the address of the proposal sumbitter"},"status":{"description":"status defines the proposal status.","$ref":"#/definitions/cosmos.gov.v1.ProposalStatus"},"submit_time":{"description":"submit_time is the time of proposal submission.","type":"string","format":"date-time"},"summary":{"type":"string","title":"summary is a short summary of the proposal"},"title":{"type":"string","title":"title is the title of the proposal"},"total_deposit":{"description":"total_deposit is the total deposit on the proposal.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"voting_end_time":{"description":"voting_end_time is the end time of voting on a proposal.","type":"string","format":"date-time"},"voting_start_time":{"description":"voting_start_time is the starting time to vote on a proposal.","type":"string","format":"date-time"}}},"cosmos.gov.v1.ProposalStatus":{"description":"ProposalStatus enumerates the valid statuses of a proposal.\n\n - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status.\n - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit\nperiod.\n - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting\nperiod.\n - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has\npassed.\n - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has\nbeen rejected.\n - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has\nfailed.","type":"string","default":"PROPOSAL_STATUS_UNSPECIFIED","enum":["PROPOSAL_STATUS_UNSPECIFIED","PROPOSAL_STATUS_DEPOSIT_PERIOD","PROPOSAL_STATUS_VOTING_PERIOD","PROPOSAL_STATUS_PASSED","PROPOSAL_STATUS_REJECTED","PROPOSAL_STATUS_FAILED"]},"cosmos.gov.v1.QueryConstitutionResponse":{"type":"object","title":"QueryConstitutionResponse is the response type for the Query/Constitution RPC method","properties":{"constitution":{"type":"string"}}},"cosmos.gov.v1.QueryDepositResponse":{"description":"QueryDepositResponse is the response type for the Query/Deposit RPC method.","type":"object","properties":{"deposit":{"description":"deposit defines the requested deposit.","$ref":"#/definitions/cosmos.gov.v1.Deposit"}}},"cosmos.gov.v1.QueryDepositsResponse":{"description":"QueryDepositsResponse is the response type for the Query/Deposits RPC method.","type":"object","properties":{"deposits":{"description":"deposits defines the requested deposits.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1.Deposit"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.gov.v1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"deposit_params":{"description":"Deprecated: Prefer to use `params` instead.\ndeposit_params defines the parameters related to deposit.","$ref":"#/definitions/cosmos.gov.v1.DepositParams"},"params":{"description":"params defines all the paramaters of x/gov module.","$ref":"#/definitions/cosmos.gov.v1.Params"},"tally_params":{"description":"Deprecated: Prefer to use `params` instead.\ntally_params defines the parameters related to tally.","$ref":"#/definitions/cosmos.gov.v1.TallyParams"},"voting_params":{"description":"Deprecated: Prefer to use `params` instead.\nvoting_params defines the parameters related to voting.","$ref":"#/definitions/cosmos.gov.v1.VotingParams"}}},"cosmos.gov.v1.QueryProposalResponse":{"description":"QueryProposalResponse is the response type for the Query/Proposal RPC method.","type":"object","properties":{"proposal":{"description":"proposal is the requested governance proposal.","$ref":"#/definitions/cosmos.gov.v1.Proposal"}}},"cosmos.gov.v1.QueryProposalsResponse":{"description":"QueryProposalsResponse is the response type for the Query/Proposals RPC\nmethod.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"proposals":{"description":"proposals defines all the requested governance proposals.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1.Proposal"}}}},"cosmos.gov.v1.QueryTallyResultResponse":{"description":"QueryTallyResultResponse is the response type for the Query/Tally RPC method.","type":"object","properties":{"tally":{"description":"tally defines the requested tally.","$ref":"#/definitions/cosmos.gov.v1.TallyResult"}}},"cosmos.gov.v1.QueryVoteResponse":{"description":"QueryVoteResponse is the response type for the Query/Vote RPC method.","type":"object","properties":{"vote":{"description":"vote defines the queried vote.","$ref":"#/definitions/cosmos.gov.v1.Vote"}}},"cosmos.gov.v1.QueryVotesResponse":{"description":"QueryVotesResponse is the response type for the Query/Votes RPC method.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"votes":{"description":"votes defines the queried votes.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1.Vote"}}}},"cosmos.gov.v1.TallyParams":{"description":"TallyParams defines the params for tallying votes on governance proposals.","type":"object","properties":{"quorum":{"description":"Minimum percentage of total stake needed to vote for a result to be\nconsidered valid.","type":"string"},"threshold":{"description":"Minimum proportion of Yes votes for proposal to pass. Default value: 0.5.","type":"string"},"veto_threshold":{"description":"Minimum value of Veto votes to Total votes ratio for proposal to be\nvetoed. Default value: 1/3.","type":"string"}}},"cosmos.gov.v1.TallyResult":{"description":"TallyResult defines a standard tally for a governance proposal.","type":"object","properties":{"abstain_count":{"description":"abstain_count is the number of abstain votes on a proposal.","type":"string"},"no_count":{"description":"no_count is the number of no votes on a proposal.","type":"string"},"no_with_veto_count":{"description":"no_with_veto_count is the number of no with veto votes on a proposal.","type":"string"},"yes_count":{"description":"yes_count is the number of yes votes on a proposal.","type":"string"}}},"cosmos.gov.v1.Vote":{"description":"Vote defines a vote on a governance proposal.\nA Vote consists of a proposal ID, the voter, and the vote option.","type":"object","properties":{"metadata":{"type":"string","title":"metadata is any arbitrary metadata attached to the vote.\nthe recommended format of the metadata is to be found here: https://docs.cosmos.network/v0.47/modules/gov#vote-5"},"options":{"description":"options is the weighted vote options.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1.WeightedVoteOption"}},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"},"voter":{"description":"voter is the voter address of the proposal.","type":"string"}}},"cosmos.gov.v1.VoteOption":{"description":"VoteOption enumerates the valid vote options for a given governance proposal.\n\n - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option.\n - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option.\n - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option.\n - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option.\n - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option.","type":"string","default":"VOTE_OPTION_UNSPECIFIED","enum":["VOTE_OPTION_UNSPECIFIED","VOTE_OPTION_YES","VOTE_OPTION_ABSTAIN","VOTE_OPTION_NO","VOTE_OPTION_NO_WITH_VETO"]},"cosmos.gov.v1.VotingParams":{"description":"VotingParams defines the params for voting on governance proposals.","type":"object","properties":{"voting_period":{"description":"Duration of the voting period.","type":"string"}}},"cosmos.gov.v1.WeightedVoteOption":{"description":"WeightedVoteOption defines a unit of vote for vote split.","type":"object","properties":{"option":{"description":"option defines the valid vote options, it must not contain duplicate vote options.","$ref":"#/definitions/cosmos.gov.v1.VoteOption"},"weight":{"description":"weight is the vote weight associated with the vote option.","type":"string"}}},"cosmos.gov.v1beta1.Deposit":{"description":"Deposit defines an amount deposited by an account address to an active\nproposal.","type":"object","properties":{"amount":{"description":"amount to be deposited by depositor.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"depositor":{"description":"depositor defines the deposit addresses from the proposals.","type":"string"},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"}}},"cosmos.gov.v1beta1.DepositParams":{"description":"DepositParams defines the params for deposits on governance proposals.","type":"object","properties":{"max_deposit_period":{"description":"Maximum period for Atom holders to deposit on a proposal. Initial value: 2\nmonths.","type":"string"},"min_deposit":{"description":"Minimum deposit for a proposal to enter voting period.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"cosmos.gov.v1beta1.MsgDeposit":{"description":"MsgDeposit defines a message to submit a deposit to an existing proposal.","type":"object","properties":{"amount":{"description":"amount to be deposited by depositor.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"depositor":{"description":"depositor defines the deposit addresses from the proposals.","type":"string"},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"}}},"cosmos.gov.v1beta1.MsgDepositResponse":{"description":"MsgDepositResponse defines the Msg/Deposit response type.","type":"object"},"cosmos.gov.v1beta1.MsgSubmitProposal":{"description":"MsgSubmitProposal defines an sdk.Msg type that supports submitting arbitrary\nproposal Content.","type":"object","properties":{"content":{"description":"content is the proposal's content.","$ref":"#/definitions/google.protobuf.Any"},"initial_deposit":{"description":"initial_deposit is the deposit value that must be paid at proposal submission.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"proposer":{"description":"proposer is the account address of the proposer.","type":"string"}}},"cosmos.gov.v1beta1.MsgSubmitProposalResponse":{"description":"MsgSubmitProposalResponse defines the Msg/SubmitProposal response type.","type":"object","properties":{"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"}}},"cosmos.gov.v1beta1.MsgVote":{"description":"MsgVote defines a message to cast a vote.","type":"object","properties":{"option":{"description":"option defines the vote option.","$ref":"#/definitions/cosmos.gov.v1beta1.VoteOption"},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"},"voter":{"description":"voter is the voter address for the proposal.","type":"string"}}},"cosmos.gov.v1beta1.MsgVoteResponse":{"description":"MsgVoteResponse defines the Msg/Vote response type.","type":"object"},"cosmos.gov.v1beta1.MsgVoteWeighted":{"description":"MsgVoteWeighted defines a message to cast a vote.","type":"object","properties":{"options":{"description":"options defines the weighted vote options.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1beta1.WeightedVoteOption"}},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"},"voter":{"description":"voter is the voter address for the proposal.","type":"string"}}},"cosmos.gov.v1beta1.MsgVoteWeightedResponse":{"description":"MsgVoteWeightedResponse defines the Msg/VoteWeighted response type.","type":"object"},"cosmos.gov.v1beta1.Proposal":{"description":"Proposal defines the core field members of a governance proposal.","type":"object","properties":{"content":{"description":"content is the proposal's content.","$ref":"#/definitions/google.protobuf.Any"},"deposit_end_time":{"description":"deposit_end_time is the end time for deposition.","type":"string","format":"date-time"},"final_tally_result":{"description":"final_tally_result is the final tally result of the proposal. When\nquerying a proposal via gRPC, this field is not populated until the\nproposal's voting period has ended.","$ref":"#/definitions/cosmos.gov.v1beta1.TallyResult"},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"},"status":{"description":"status defines the proposal status.","$ref":"#/definitions/cosmos.gov.v1beta1.ProposalStatus"},"submit_time":{"description":"submit_time is the time of proposal submission.","type":"string","format":"date-time"},"total_deposit":{"description":"total_deposit is the total deposit on the proposal.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"voting_end_time":{"description":"voting_end_time is the end time of voting on a proposal.","type":"string","format":"date-time"},"voting_start_time":{"description":"voting_start_time is the starting time to vote on a proposal.","type":"string","format":"date-time"}}},"cosmos.gov.v1beta1.ProposalStatus":{"description":"ProposalStatus enumerates the valid statuses of a proposal.\n\n - PROPOSAL_STATUS_UNSPECIFIED: PROPOSAL_STATUS_UNSPECIFIED defines the default proposal status.\n - PROPOSAL_STATUS_DEPOSIT_PERIOD: PROPOSAL_STATUS_DEPOSIT_PERIOD defines a proposal status during the deposit\nperiod.\n - PROPOSAL_STATUS_VOTING_PERIOD: PROPOSAL_STATUS_VOTING_PERIOD defines a proposal status during the voting\nperiod.\n - PROPOSAL_STATUS_PASSED: PROPOSAL_STATUS_PASSED defines a proposal status of a proposal that has\npassed.\n - PROPOSAL_STATUS_REJECTED: PROPOSAL_STATUS_REJECTED defines a proposal status of a proposal that has\nbeen rejected.\n - PROPOSAL_STATUS_FAILED: PROPOSAL_STATUS_FAILED defines a proposal status of a proposal that has\nfailed.","type":"string","default":"PROPOSAL_STATUS_UNSPECIFIED","enum":["PROPOSAL_STATUS_UNSPECIFIED","PROPOSAL_STATUS_DEPOSIT_PERIOD","PROPOSAL_STATUS_VOTING_PERIOD","PROPOSAL_STATUS_PASSED","PROPOSAL_STATUS_REJECTED","PROPOSAL_STATUS_FAILED"]},"cosmos.gov.v1beta1.QueryDepositResponse":{"description":"QueryDepositResponse is the response type for the Query/Deposit RPC method.","type":"object","properties":{"deposit":{"description":"deposit defines the requested deposit.","$ref":"#/definitions/cosmos.gov.v1beta1.Deposit"}}},"cosmos.gov.v1beta1.QueryDepositsResponse":{"description":"QueryDepositsResponse is the response type for the Query/Deposits RPC method.","type":"object","properties":{"deposits":{"description":"deposits defines the requested deposits.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1beta1.Deposit"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.gov.v1beta1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"deposit_params":{"description":"deposit_params defines the parameters related to deposit.","$ref":"#/definitions/cosmos.gov.v1beta1.DepositParams"},"tally_params":{"description":"tally_params defines the parameters related to tally.","$ref":"#/definitions/cosmos.gov.v1beta1.TallyParams"},"voting_params":{"description":"voting_params defines the parameters related to voting.","$ref":"#/definitions/cosmos.gov.v1beta1.VotingParams"}}},"cosmos.gov.v1beta1.QueryProposalResponse":{"description":"QueryProposalResponse is the response type for the Query/Proposal RPC method.","type":"object","properties":{"proposal":{"$ref":"#/definitions/cosmos.gov.v1beta1.Proposal"}}},"cosmos.gov.v1beta1.QueryProposalsResponse":{"description":"QueryProposalsResponse is the response type for the Query/Proposals RPC\nmethod.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"proposals":{"description":"proposals defines all the requested governance proposals.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1beta1.Proposal"}}}},"cosmos.gov.v1beta1.QueryTallyResultResponse":{"description":"QueryTallyResultResponse is the response type for the Query/Tally RPC method.","type":"object","properties":{"tally":{"description":"tally defines the requested tally.","$ref":"#/definitions/cosmos.gov.v1beta1.TallyResult"}}},"cosmos.gov.v1beta1.QueryVoteResponse":{"description":"QueryVoteResponse is the response type for the Query/Vote RPC method.","type":"object","properties":{"vote":{"description":"vote defines the queried vote.","$ref":"#/definitions/cosmos.gov.v1beta1.Vote"}}},"cosmos.gov.v1beta1.QueryVotesResponse":{"description":"QueryVotesResponse is the response type for the Query/Votes RPC method.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"votes":{"description":"votes defines the queried votes.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1beta1.Vote"}}}},"cosmos.gov.v1beta1.TallyParams":{"description":"TallyParams defines the params for tallying votes on governance proposals.","type":"object","properties":{"quorum":{"description":"Minimum percentage of total stake needed to vote for a result to be\nconsidered valid.","type":"string","format":"byte"},"threshold":{"description":"Minimum proportion of Yes votes for proposal to pass. Default value: 0.5.","type":"string","format":"byte"},"veto_threshold":{"description":"Minimum value of Veto votes to Total votes ratio for proposal to be\nvetoed. Default value: 1/3.","type":"string","format":"byte"}}},"cosmos.gov.v1beta1.TallyResult":{"description":"TallyResult defines a standard tally for a governance proposal.","type":"object","properties":{"abstain":{"description":"abstain is the number of abstain votes on a proposal.","type":"string"},"no":{"description":"no is the number of no votes on a proposal.","type":"string"},"no_with_veto":{"description":"no_with_veto is the number of no with veto votes on a proposal.","type":"string"},"yes":{"description":"yes is the number of yes votes on a proposal.","type":"string"}}},"cosmos.gov.v1beta1.Vote":{"description":"Vote defines a vote on a governance proposal.\nA Vote consists of a proposal ID, the voter, and the vote option.","type":"object","properties":{"option":{"description":"Deprecated: Prefer to use `options` instead. This field is set in queries\nif and only if `len(options) == 1` and that option has weight 1. In all\nother cases, this field will default to VOTE_OPTION_UNSPECIFIED.","$ref":"#/definitions/cosmos.gov.v1beta1.VoteOption"},"options":{"description":"options is the weighted vote options.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.gov.v1beta1.WeightedVoteOption"}},"proposal_id":{"description":"proposal_id defines the unique id of the proposal.","type":"string","format":"uint64"},"voter":{"description":"voter is the voter address of the proposal.","type":"string"}}},"cosmos.gov.v1beta1.VoteOption":{"description":"VoteOption enumerates the valid vote options for a given governance proposal.\n\n - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines a no-op vote option.\n - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option.\n - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option.\n - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option.\n - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option.","type":"string","default":"VOTE_OPTION_UNSPECIFIED","enum":["VOTE_OPTION_UNSPECIFIED","VOTE_OPTION_YES","VOTE_OPTION_ABSTAIN","VOTE_OPTION_NO","VOTE_OPTION_NO_WITH_VETO"]},"cosmos.gov.v1beta1.VotingParams":{"description":"VotingParams defines the params for voting on governance proposals.","type":"object","properties":{"voting_period":{"description":"Duration of the voting period.","type":"string"}}},"cosmos.gov.v1beta1.WeightedVoteOption":{"description":"WeightedVoteOption defines a unit of vote for vote split.","type":"object","properties":{"option":{"description":"option defines the valid vote options, it must not contain duplicate vote options.","$ref":"#/definitions/cosmos.gov.v1beta1.VoteOption"},"weight":{"description":"weight is the vote weight associated with the vote option.","type":"string"}}},"cosmos.group.v1.Exec":{"description":"Exec defines modes of execution of a proposal on creation or on new vote.\n\n - EXEC_UNSPECIFIED: An empty value means that there should be a separate\nMsgExec request for the proposal to execute.\n - EXEC_TRY: Try to execute the proposal immediately.\nIf the proposal is not allowed per the DecisionPolicy,\nthe proposal will still be open and could\nbe executed at a later point.","type":"string","default":"EXEC_UNSPECIFIED","enum":["EXEC_UNSPECIFIED","EXEC_TRY"]},"cosmos.group.v1.GroupInfo":{"description":"GroupInfo represents the high-level on-chain information for a group.","type":"object","properties":{"admin":{"description":"admin is the account address of the group's admin.","type":"string"},"created_at":{"description":"created_at is a timestamp specifying when a group was created.","type":"string","format":"date-time"},"id":{"description":"id is the unique ID of the group.","type":"string","format":"uint64"},"metadata":{"type":"string","title":"metadata is any arbitrary metadata to attached to the group.\nthe recommended format of the metadata is to be found here: https://docs.cosmos.network/v0.47/modules/group#group-1"},"total_weight":{"description":"total_weight is the sum of the group members' weights.","type":"string"},"version":{"type":"string","format":"uint64","title":"version is used to track changes to a group's membership structure that\nwould break existing proposals. Whenever any members weight is changed,\nor any member is added or removed this version is incremented and will\ncause proposals based on older versions of this group to fail"}}},"cosmos.group.v1.GroupMember":{"description":"GroupMember represents the relationship between a group and a member.","type":"object","properties":{"group_id":{"description":"group_id is the unique ID of the group.","type":"string","format":"uint64"},"member":{"description":"member is the member data.","$ref":"#/definitions/cosmos.group.v1.Member"}}},"cosmos.group.v1.GroupPolicyInfo":{"description":"GroupPolicyInfo represents the high-level on-chain information for a group policy.","type":"object","properties":{"address":{"description":"address is the account address of group policy.","type":"string"},"admin":{"description":"admin is the account address of the group admin.","type":"string"},"created_at":{"description":"created_at is a timestamp specifying when a group policy was created.","type":"string","format":"date-time"},"decision_policy":{"description":"decision_policy specifies the group policy's decision policy.","$ref":"#/definitions/google.protobuf.Any"},"group_id":{"description":"group_id is the unique ID of the group.","type":"string","format":"uint64"},"metadata":{"type":"string","title":"metadata is any arbitrary metadata attached to the group policy.\nthe recommended format of the metadata is to be found here:\nhttps://docs.cosmos.network/v0.47/modules/group#decision-policy-1"},"version":{"description":"version is used to track changes to a group's GroupPolicyInfo structure that\nwould create a different result on a running proposal.","type":"string","format":"uint64"}}},"cosmos.group.v1.Member":{"description":"Member represents a group member with an account address,\nnon-zero weight, metadata and added_at timestamp.","type":"object","properties":{"added_at":{"description":"added_at is a timestamp specifying when a member was added.","type":"string","format":"date-time"},"address":{"description":"address is the member's account address.","type":"string"},"metadata":{"description":"metadata is any arbitrary metadata attached to the member.","type":"string"},"weight":{"description":"weight is the member's voting weight that should be greater than 0.","type":"string"}}},"cosmos.group.v1.MemberRequest":{"description":"MemberRequest represents a group member to be used in Msg server requests.\nContrary to `Member`, it doesn't have any `added_at` field\nsince this field cannot be set as part of requests.","type":"object","properties":{"address":{"description":"address is the member's account address.","type":"string"},"metadata":{"description":"metadata is any arbitrary metadata attached to the member.","type":"string"},"weight":{"description":"weight is the member's voting weight that should be greater than 0.","type":"string"}}},"cosmos.group.v1.MsgCreateGroup":{"description":"MsgCreateGroup is the Msg/CreateGroup request type.","type":"object","properties":{"admin":{"description":"admin is the account address of the group admin.","type":"string"},"members":{"description":"members defines the group members.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.MemberRequest"}},"metadata":{"description":"metadata is any arbitrary metadata to attached to the group.","type":"string"}}},"cosmos.group.v1.MsgCreateGroupPolicy":{"description":"MsgCreateGroupPolicy is the Msg/CreateGroupPolicy request type.","type":"object","properties":{"admin":{"description":"admin is the account address of the group admin.","type":"string"},"decision_policy":{"description":"decision_policy specifies the group policy's decision policy.","$ref":"#/definitions/google.protobuf.Any"},"group_id":{"description":"group_id is the unique ID of the group.","type":"string","format":"uint64"},"metadata":{"description":"metadata is any arbitrary metadata attached to the group policy.","type":"string"}}},"cosmos.group.v1.MsgCreateGroupPolicyResponse":{"description":"MsgCreateGroupPolicyResponse is the Msg/CreateGroupPolicy response type.","type":"object","properties":{"address":{"description":"address is the account address of the newly created group policy.","type":"string"}}},"cosmos.group.v1.MsgCreateGroupResponse":{"description":"MsgCreateGroupResponse is the Msg/CreateGroup response type.","type":"object","properties":{"group_id":{"description":"group_id is the unique ID of the newly created group.","type":"string","format":"uint64"}}},"cosmos.group.v1.MsgCreateGroupWithPolicy":{"description":"MsgCreateGroupWithPolicy is the Msg/CreateGroupWithPolicy request type.","type":"object","properties":{"admin":{"description":"admin is the account address of the group and group policy admin.","type":"string"},"decision_policy":{"description":"decision_policy specifies the group policy's decision policy.","$ref":"#/definitions/google.protobuf.Any"},"group_metadata":{"description":"group_metadata is any arbitrary metadata attached to the group.","type":"string"},"group_policy_as_admin":{"description":"group_policy_as_admin is a boolean field, if set to true, the group policy account address will be used as group\nand group policy admin.","type":"boolean"},"group_policy_metadata":{"description":"group_policy_metadata is any arbitrary metadata attached to the group policy.","type":"string"},"members":{"description":"members defines the group members.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.MemberRequest"}}}},"cosmos.group.v1.MsgCreateGroupWithPolicyResponse":{"description":"MsgCreateGroupWithPolicyResponse is the Msg/CreateGroupWithPolicy response type.","type":"object","properties":{"group_id":{"description":"group_id is the unique ID of the newly created group with policy.","type":"string","format":"uint64"},"group_policy_address":{"description":"group_policy_address is the account address of the newly created group policy.","type":"string"}}},"cosmos.group.v1.MsgExec":{"description":"MsgExec is the Msg/Exec request type.","type":"object","properties":{"executor":{"description":"executor is the account address used to execute the proposal.","type":"string"},"proposal_id":{"description":"proposal is the unique ID of the proposal.","type":"string","format":"uint64"}}},"cosmos.group.v1.MsgExecResponse":{"description":"MsgExecResponse is the Msg/Exec request type.","type":"object","properties":{"result":{"description":"result is the final result of the proposal execution.","$ref":"#/definitions/cosmos.group.v1.ProposalExecutorResult"}}},"cosmos.group.v1.MsgLeaveGroup":{"description":"MsgLeaveGroup is the Msg/LeaveGroup request type.","type":"object","properties":{"address":{"description":"address is the account address of the group member.","type":"string"},"group_id":{"description":"group_id is the unique ID of the group.","type":"string","format":"uint64"}}},"cosmos.group.v1.MsgLeaveGroupResponse":{"description":"MsgLeaveGroupResponse is the Msg/LeaveGroup response type.","type":"object"},"cosmos.group.v1.MsgSubmitProposal":{"description":"MsgSubmitProposal is the Msg/SubmitProposal request type.","type":"object","properties":{"exec":{"description":"exec defines the mode of execution of the proposal,\nwhether it should be executed immediately on creation or not.\nIf so, proposers signatures are considered as Yes votes.","$ref":"#/definitions/cosmos.group.v1.Exec"},"group_policy_address":{"description":"group_policy_address is the account address of group policy.","type":"string"},"messages":{"description":"messages is a list of `sdk.Msg`s that will be executed if the proposal passes.","type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"metadata":{"description":"metadata is any arbitrary metadata attached to the proposal.","type":"string"},"proposers":{"description":"proposers are the account addresses of the proposers.\nProposers signatures will be counted as yes votes.","type":"array","items":{"type":"string"}},"summary":{"description":"summary is the summary of the proposal.","type":"string"},"title":{"description":"title is the title of the proposal.","type":"string"}}},"cosmos.group.v1.MsgSubmitProposalResponse":{"description":"MsgSubmitProposalResponse is the Msg/SubmitProposal response type.","type":"object","properties":{"proposal_id":{"description":"proposal is the unique ID of the proposal.","type":"string","format":"uint64"}}},"cosmos.group.v1.MsgUpdateGroupAdmin":{"description":"MsgUpdateGroupAdmin is the Msg/UpdateGroupAdmin request type.","type":"object","properties":{"admin":{"description":"admin is the current account address of the group admin.","type":"string"},"group_id":{"description":"group_id is the unique ID of the group.","type":"string","format":"uint64"},"new_admin":{"description":"new_admin is the group new admin account address.","type":"string"}}},"cosmos.group.v1.MsgUpdateGroupAdminResponse":{"description":"MsgUpdateGroupAdminResponse is the Msg/UpdateGroupAdmin response type.","type":"object"},"cosmos.group.v1.MsgUpdateGroupMembers":{"description":"MsgUpdateGroupMembers is the Msg/UpdateGroupMembers request type.","type":"object","properties":{"admin":{"description":"admin is the account address of the group admin.","type":"string"},"group_id":{"description":"group_id is the unique ID of the group.","type":"string","format":"uint64"},"member_updates":{"description":"member_updates is the list of members to update,\nset weight to 0 to remove a member.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.MemberRequest"}}}},"cosmos.group.v1.MsgUpdateGroupMembersResponse":{"description":"MsgUpdateGroupMembersResponse is the Msg/UpdateGroupMembers response type.","type":"object"},"cosmos.group.v1.MsgUpdateGroupMetadata":{"description":"MsgUpdateGroupMetadata is the Msg/UpdateGroupMetadata request type.","type":"object","properties":{"admin":{"description":"admin is the account address of the group admin.","type":"string"},"group_id":{"description":"group_id is the unique ID of the group.","type":"string","format":"uint64"},"metadata":{"description":"metadata is the updated group's metadata.","type":"string"}}},"cosmos.group.v1.MsgUpdateGroupMetadataResponse":{"description":"MsgUpdateGroupMetadataResponse is the Msg/UpdateGroupMetadata response type.","type":"object"},"cosmos.group.v1.MsgUpdateGroupPolicyAdmin":{"description":"MsgUpdateGroupPolicyAdmin is the Msg/UpdateGroupPolicyAdmin request type.","type":"object","properties":{"admin":{"description":"admin is the account address of the group admin.","type":"string"},"group_policy_address":{"description":"group_policy_address is the account address of the group policy.","type":"string"},"new_admin":{"description":"new_admin is the new group policy admin.","type":"string"}}},"cosmos.group.v1.MsgUpdateGroupPolicyAdminResponse":{"description":"MsgUpdateGroupPolicyAdminResponse is the Msg/UpdateGroupPolicyAdmin response type.","type":"object"},"cosmos.group.v1.MsgUpdateGroupPolicyDecisionPolicy":{"description":"MsgUpdateGroupPolicyDecisionPolicy is the Msg/UpdateGroupPolicyDecisionPolicy request type.","type":"object","properties":{"admin":{"description":"admin is the account address of the group admin.","type":"string"},"decision_policy":{"description":"decision_policy is the updated group policy's decision policy.","$ref":"#/definitions/google.protobuf.Any"},"group_policy_address":{"description":"group_policy_address is the account address of group policy.","type":"string"}}},"cosmos.group.v1.MsgUpdateGroupPolicyDecisionPolicyResponse":{"description":"MsgUpdateGroupPolicyDecisionPolicyResponse is the Msg/UpdateGroupPolicyDecisionPolicy response type.","type":"object"},"cosmos.group.v1.MsgUpdateGroupPolicyMetadata":{"description":"MsgUpdateGroupPolicyMetadata is the Msg/UpdateGroupPolicyMetadata request type.","type":"object","properties":{"admin":{"description":"admin is the account address of the group admin.","type":"string"},"group_policy_address":{"description":"group_policy_address is the account address of group policy.","type":"string"},"metadata":{"description":"metadata is the group policy metadata to be updated.","type":"string"}}},"cosmos.group.v1.MsgUpdateGroupPolicyMetadataResponse":{"description":"MsgUpdateGroupPolicyMetadataResponse is the Msg/UpdateGroupPolicyMetadata response type.","type":"object"},"cosmos.group.v1.MsgVote":{"description":"MsgVote is the Msg/Vote request type.","type":"object","properties":{"exec":{"description":"exec defines whether the proposal should be executed\nimmediately after voting or not.","$ref":"#/definitions/cosmos.group.v1.Exec"},"metadata":{"description":"metadata is any arbitrary metadata attached to the vote.","type":"string"},"option":{"description":"option is the voter's choice on the proposal.","$ref":"#/definitions/cosmos.group.v1.VoteOption"},"proposal_id":{"description":"proposal is the unique ID of the proposal.","type":"string","format":"uint64"},"voter":{"description":"voter is the voter account address.","type":"string"}}},"cosmos.group.v1.MsgVoteResponse":{"description":"MsgVoteResponse is the Msg/Vote response type.","type":"object"},"cosmos.group.v1.MsgWithdrawProposal":{"description":"MsgWithdrawProposal is the Msg/WithdrawProposal request type.","type":"object","properties":{"address":{"description":"address is the admin of the group policy or one of the proposer of the proposal.","type":"string"},"proposal_id":{"description":"proposal is the unique ID of the proposal.","type":"string","format":"uint64"}}},"cosmos.group.v1.MsgWithdrawProposalResponse":{"description":"MsgWithdrawProposalResponse is the Msg/WithdrawProposal response type.","type":"object"},"cosmos.group.v1.Proposal":{"description":"Proposal defines a group proposal. Any member of a group can submit a proposal\nfor a group policy to decide upon.\nA proposal consists of a set of `sdk.Msg`s that will be executed if the proposal\npasses as well as some optional metadata associated with the proposal.","type":"object","properties":{"executor_result":{"description":"executor_result is the final result of the proposal execution. Initial value is NotRun.","$ref":"#/definitions/cosmos.group.v1.ProposalExecutorResult"},"final_tally_result":{"description":"final_tally_result contains the sums of all weighted votes for this\nproposal for each vote option. It is empty at submission, and only\npopulated after tallying, at voting period end or at proposal execution,\nwhichever happens first.","$ref":"#/definitions/cosmos.group.v1.TallyResult"},"group_policy_address":{"description":"group_policy_address is the account address of group policy.","type":"string"},"group_policy_version":{"description":"group_policy_version tracks the version of the group policy at proposal submission.\nWhen a decision policy is changed, existing proposals from previous policy\nversions will become invalid with the `ABORTED` status.\nThis field is here for informational purposes only.","type":"string","format":"uint64"},"group_version":{"description":"group_version tracks the version of the group at proposal submission.\nThis field is here for informational purposes only.","type":"string","format":"uint64"},"id":{"description":"id is the unique id of the proposal.","type":"string","format":"uint64"},"messages":{"description":"messages is a list of `sdk.Msg`s that will be executed if the proposal passes.","type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"metadata":{"type":"string","title":"metadata is any arbitrary metadata attached to the proposal.\nthe recommended format of the metadata is to be found here:\nhttps://docs.cosmos.network/v0.47/modules/group#proposal-4"},"proposers":{"description":"proposers are the account addresses of the proposers.","type":"array","items":{"type":"string"}},"status":{"description":"status represents the high level position in the life cycle of the proposal. Initial value is Submitted.","$ref":"#/definitions/cosmos.group.v1.ProposalStatus"},"submit_time":{"description":"submit_time is a timestamp specifying when a proposal was submitted.","type":"string","format":"date-time"},"summary":{"type":"string","title":"summary is a short summary of the proposal"},"title":{"type":"string","title":"title is the title of the proposal"},"voting_period_end":{"description":"voting_period_end is the timestamp before which voting must be done.\nUnless a successful MsgExec is called before (to execute a proposal whose\ntally is successful before the voting period ends), tallying will be done\nat this point, and the `final_tally_result`and `status` fields will be\naccordingly updated.","type":"string","format":"date-time"}}},"cosmos.group.v1.ProposalExecutorResult":{"description":"ProposalExecutorResult defines types of proposal executor results.\n\n - PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED: An empty value is not allowed.\n - PROPOSAL_EXECUTOR_RESULT_NOT_RUN: We have not yet run the executor.\n - PROPOSAL_EXECUTOR_RESULT_SUCCESS: The executor was successful and proposed action updated state.\n - PROPOSAL_EXECUTOR_RESULT_FAILURE: The executor returned an error and proposed action didn't update state.","type":"string","default":"PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED","enum":["PROPOSAL_EXECUTOR_RESULT_UNSPECIFIED","PROPOSAL_EXECUTOR_RESULT_NOT_RUN","PROPOSAL_EXECUTOR_RESULT_SUCCESS","PROPOSAL_EXECUTOR_RESULT_FAILURE"]},"cosmos.group.v1.ProposalStatus":{"description":"ProposalStatus defines proposal statuses.\n\n - PROPOSAL_STATUS_UNSPECIFIED: An empty value is invalid and not allowed.\n - PROPOSAL_STATUS_SUBMITTED: Initial status of a proposal when submitted.\n - PROPOSAL_STATUS_ACCEPTED: Final status of a proposal when the final tally is done and the outcome\npasses the group policy's decision policy.\n - PROPOSAL_STATUS_REJECTED: Final status of a proposal when the final tally is done and the outcome\nis rejected by the group policy's decision policy.\n - PROPOSAL_STATUS_ABORTED: Final status of a proposal when the group policy is modified before the\nfinal tally.\n - PROPOSAL_STATUS_WITHDRAWN: A proposal can be withdrawn before the voting start time by the owner.\nWhen this happens the final status is Withdrawn.","type":"string","default":"PROPOSAL_STATUS_UNSPECIFIED","enum":["PROPOSAL_STATUS_UNSPECIFIED","PROPOSAL_STATUS_SUBMITTED","PROPOSAL_STATUS_ACCEPTED","PROPOSAL_STATUS_REJECTED","PROPOSAL_STATUS_ABORTED","PROPOSAL_STATUS_WITHDRAWN"]},"cosmos.group.v1.QueryGroupInfoResponse":{"description":"QueryGroupInfoResponse is the Query/GroupInfo response type.","type":"object","properties":{"info":{"description":"info is the GroupInfo of the group.","$ref":"#/definitions/cosmos.group.v1.GroupInfo"}}},"cosmos.group.v1.QueryGroupMembersResponse":{"description":"QueryGroupMembersResponse is the Query/GroupMembersResponse response type.","type":"object","properties":{"members":{"description":"members are the members of the group with given group_id.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.GroupMember"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.group.v1.QueryGroupPoliciesByAdminResponse":{"description":"QueryGroupPoliciesByAdminResponse is the Query/GroupPoliciesByAdmin response type.","type":"object","properties":{"group_policies":{"description":"group_policies are the group policies info with provided admin.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.GroupPolicyInfo"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.group.v1.QueryGroupPoliciesByGroupResponse":{"description":"QueryGroupPoliciesByGroupResponse is the Query/GroupPoliciesByGroup response type.","type":"object","properties":{"group_policies":{"description":"group_policies are the group policies info associated with the provided group.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.GroupPolicyInfo"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.group.v1.QueryGroupPolicyInfoResponse":{"description":"QueryGroupPolicyInfoResponse is the Query/GroupPolicyInfo response type.","type":"object","properties":{"info":{"description":"info is the GroupPolicyInfo of the group policy.","$ref":"#/definitions/cosmos.group.v1.GroupPolicyInfo"}}},"cosmos.group.v1.QueryGroupsByAdminResponse":{"description":"QueryGroupsByAdminResponse is the Query/GroupsByAdminResponse response type.","type":"object","properties":{"groups":{"description":"groups are the groups info with the provided admin.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.GroupInfo"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.group.v1.QueryGroupsByMemberResponse":{"description":"QueryGroupsByMemberResponse is the Query/GroupsByMember response type.","type":"object","properties":{"groups":{"description":"groups are the groups info with the provided group member.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.GroupInfo"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.group.v1.QueryGroupsResponse":{"description":"QueryGroupsResponse is the Query/Groups response type.","type":"object","properties":{"groups":{"description":"`groups` is all the groups present in state.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.GroupInfo"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.group.v1.QueryProposalResponse":{"description":"QueryProposalResponse is the Query/Proposal response type.","type":"object","properties":{"proposal":{"description":"proposal is the proposal info.","$ref":"#/definitions/cosmos.group.v1.Proposal"}}},"cosmos.group.v1.QueryProposalsByGroupPolicyResponse":{"description":"QueryProposalsByGroupPolicyResponse is the Query/ProposalByGroupPolicy response type.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"proposals":{"description":"proposals are the proposals with given group policy.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.Proposal"}}}},"cosmos.group.v1.QueryTallyResultResponse":{"description":"QueryTallyResultResponse is the Query/TallyResult response type.","type":"object","properties":{"tally":{"description":"tally defines the requested tally.","$ref":"#/definitions/cosmos.group.v1.TallyResult"}}},"cosmos.group.v1.QueryVoteByProposalVoterResponse":{"description":"QueryVoteByProposalVoterResponse is the Query/VoteByProposalVoter response type.","type":"object","properties":{"vote":{"description":"vote is the vote with given proposal_id and voter.","$ref":"#/definitions/cosmos.group.v1.Vote"}}},"cosmos.group.v1.QueryVotesByProposalResponse":{"description":"QueryVotesByProposalResponse is the Query/VotesByProposal response type.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"votes":{"description":"votes are the list of votes for given proposal_id.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.Vote"}}}},"cosmos.group.v1.QueryVotesByVoterResponse":{"description":"QueryVotesByVoterResponse is the Query/VotesByVoter response type.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"votes":{"description":"votes are the list of votes by given voter.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.group.v1.Vote"}}}},"cosmos.group.v1.TallyResult":{"description":"TallyResult represents the sum of weighted votes for each vote option.","type":"object","properties":{"abstain_count":{"description":"abstain_count is the weighted sum of abstainers.","type":"string"},"no_count":{"description":"no_count is the weighted sum of no votes.","type":"string"},"no_with_veto_count":{"description":"no_with_veto_count is the weighted sum of veto.","type":"string"},"yes_count":{"description":"yes_count is the weighted sum of yes votes.","type":"string"}}},"cosmos.group.v1.Vote":{"type":"object","title":"Vote represents a vote for a proposal.string metadata","properties":{"metadata":{"type":"string","title":"metadata is any arbitrary metadata attached to the vote.\nthe recommended format of the metadata is to be found here: https://docs.cosmos.network/v0.47/modules/group#vote-2"},"option":{"description":"option is the voter's choice on the proposal.","$ref":"#/definitions/cosmos.group.v1.VoteOption"},"proposal_id":{"description":"proposal is the unique ID of the proposal.","type":"string","format":"uint64"},"submit_time":{"description":"submit_time is the timestamp when the vote was submitted.","type":"string","format":"date-time"},"voter":{"description":"voter is the account address of the voter.","type":"string"}}},"cosmos.group.v1.VoteOption":{"description":"VoteOption enumerates the valid vote options for a given proposal.\n\n - VOTE_OPTION_UNSPECIFIED: VOTE_OPTION_UNSPECIFIED defines an unspecified vote option which will\nreturn an error.\n - VOTE_OPTION_YES: VOTE_OPTION_YES defines a yes vote option.\n - VOTE_OPTION_ABSTAIN: VOTE_OPTION_ABSTAIN defines an abstain vote option.\n - VOTE_OPTION_NO: VOTE_OPTION_NO defines a no vote option.\n - VOTE_OPTION_NO_WITH_VETO: VOTE_OPTION_NO_WITH_VETO defines a no with veto vote option.","type":"string","default":"VOTE_OPTION_UNSPECIFIED","enum":["VOTE_OPTION_UNSPECIFIED","VOTE_OPTION_YES","VOTE_OPTION_ABSTAIN","VOTE_OPTION_NO","VOTE_OPTION_NO_WITH_VETO"]},"cosmos.mint.v1beta1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/mint parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.mint.v1beta1.Params"}}},"cosmos.mint.v1beta1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"cosmos.mint.v1beta1.Params":{"description":"Params defines the parameters for the x/mint module.","type":"object","properties":{"blocks_per_year":{"type":"string","format":"uint64","title":"expected blocks per year"},"goal_bonded":{"type":"string","title":"goal of percent bonded atoms"},"inflation_max":{"type":"string","title":"maximum inflation rate"},"inflation_min":{"type":"string","title":"minimum inflation rate"},"inflation_rate_change":{"type":"string","title":"maximum annual change in inflation rate"},"mint_denom":{"type":"string","title":"type of coin to mint"}}},"cosmos.mint.v1beta1.QueryAnnualProvisionsResponse":{"description":"QueryAnnualProvisionsResponse is the response type for the\nQuery/AnnualProvisions RPC method.","type":"object","properties":{"annual_provisions":{"description":"annual_provisions is the current minting annual provisions value.","type":"string","format":"byte"}}},"cosmos.mint.v1beta1.QueryInflationResponse":{"description":"QueryInflationResponse is the response type for the Query/Inflation RPC\nmethod.","type":"object","properties":{"inflation":{"description":"inflation is the current minting inflation value.","type":"string","format":"byte"}}},"cosmos.mint.v1beta1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/cosmos.mint.v1beta1.Params"}}},"cosmos.nft.v1beta1.Class":{"description":"Class defines the class of the nft type.","type":"object","properties":{"data":{"title":"data is the app specific metadata of the NFT class. Optional","$ref":"#/definitions/google.protobuf.Any"},"description":{"type":"string","title":"description is a brief description of nft classification. Optional"},"id":{"type":"string","title":"id defines the unique identifier of the NFT classification, similar to the contract address of ERC721"},"name":{"type":"string","title":"name defines the human-readable name of the NFT classification. Optional"},"symbol":{"type":"string","title":"symbol is an abbreviated name for nft classification. Optional"},"uri":{"type":"string","title":"uri for the class metadata stored off chain. It can define schema for Class and NFT `Data` attributes. Optional"},"uri_hash":{"type":"string","title":"uri_hash is a hash of the document pointed by uri. Optional"}}},"cosmos.nft.v1beta1.MsgSend":{"description":"MsgSend represents a message to send a nft from one account to another account.","type":"object","properties":{"class_id":{"type":"string","title":"class_id defines the unique identifier of the nft classification, similar to the contract address of ERC721"},"id":{"type":"string","title":"id defines the unique identification of nft"},"receiver":{"type":"string","title":"receiver is the receiver address of nft"},"sender":{"type":"string","title":"sender is the address of the owner of nft"}}},"cosmos.nft.v1beta1.MsgSendResponse":{"description":"MsgSendResponse defines the Msg/Send response type.","type":"object"},"cosmos.nft.v1beta1.NFT":{"description":"NFT defines the NFT.","type":"object","properties":{"class_id":{"type":"string","title":"class_id associated with the NFT, similar to the contract address of ERC721"},"data":{"title":"data is an app specific data of the NFT. Optional","$ref":"#/definitions/google.protobuf.Any"},"id":{"type":"string","title":"id is a unique identifier of the NFT"},"uri":{"type":"string","title":"uri for the NFT metadata stored off chain"},"uri_hash":{"type":"string","title":"uri_hash is a hash of the document pointed by uri"}}},"cosmos.nft.v1beta1.QueryBalanceResponse":{"type":"object","title":"QueryBalanceResponse is the response type for the Query/Balance RPC method","properties":{"amount":{"type":"string","format":"uint64","title":"amount is the number of all NFTs of a given class owned by the owner"}}},"cosmos.nft.v1beta1.QueryClassResponse":{"type":"object","title":"QueryClassResponse is the response type for the Query/Class RPC method","properties":{"class":{"description":"class defines the class of the nft type.","$ref":"#/definitions/cosmos.nft.v1beta1.Class"}}},"cosmos.nft.v1beta1.QueryClassesResponse":{"type":"object","title":"QueryClassesResponse is the response type for the Query/Classes RPC method","properties":{"classes":{"description":"class defines the class of the nft type.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.nft.v1beta1.Class"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.nft.v1beta1.QueryNFTResponse":{"type":"object","title":"QueryNFTResponse is the response type for the Query/NFT RPC method","properties":{"nft":{"title":"owner is the owner address of the nft","$ref":"#/definitions/cosmos.nft.v1beta1.NFT"}}},"cosmos.nft.v1beta1.QueryNFTsResponse":{"type":"object","title":"QueryNFTsResponse is the response type for the Query/NFTs RPC methods","properties":{"nfts":{"type":"array","title":"NFT defines the NFT","items":{"type":"object","$ref":"#/definitions/cosmos.nft.v1beta1.NFT"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.nft.v1beta1.QueryOwnerResponse":{"type":"object","title":"QueryOwnerResponse is the response type for the Query/Owner RPC method","properties":{"owner":{"type":"string","title":"owner is the owner address of the nft"}}},"cosmos.nft.v1beta1.QuerySupplyResponse":{"type":"object","title":"QuerySupplyResponse is the response type for the Query/Supply RPC method","properties":{"amount":{"type":"string","format":"uint64","title":"amount is the number of all NFTs from the given class"}}},"cosmos.params.v1beta1.ParamChange":{"description":"ParamChange defines an individual parameter change, for use in\nParameterChangeProposal.","type":"object","properties":{"key":{"type":"string"},"subspace":{"type":"string"},"value":{"type":"string"}}},"cosmos.params.v1beta1.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"param":{"description":"param defines the queried parameter.","$ref":"#/definitions/cosmos.params.v1beta1.ParamChange"}}},"cosmos.params.v1beta1.QuerySubspacesResponse":{"description":"QuerySubspacesResponse defines the response types for querying for all\nregistered subspaces and all keys for a subspace.","type":"object","properties":{"subspaces":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.params.v1beta1.Subspace"}}}},"cosmos.params.v1beta1.Subspace":{"description":"Subspace defines a parameter subspace name and all the keys that exist for\nthe subspace.","type":"object","properties":{"keys":{"type":"array","items":{"type":"string"}},"subspace":{"type":"string"}}},"cosmos.protocolpool.v1.ContinuousFund":{"description":"ContinuousFund defines the fields of continuous fund proposal.","type":"object","properties":{"expiry":{"description":"Optional, if expiry is set, removes the state object when expired.","type":"string","format":"date-time"},"percentage":{"description":"Percentage is the percentage of funds to be allocated from Community pool.","type":"string"},"recipient":{"description":"Recipient is the address string of the account receiving funds.","type":"string"}}},"cosmos.protocolpool.v1.MsgCancelContinuousFund":{"description":"MsgCancelContinuousFund defines a message to cancel continuous funds for a specific recipient.","type":"object","properties":{"authority":{"description":"Authority is the account address of authority.","type":"string"},"recipient":{"description":"Recipient is the account address string of the recipient whose funds are to be cancelled.","type":"string"}}},"cosmos.protocolpool.v1.MsgCancelContinuousFundResponse":{"description":"MsgCancelContinuousFundResponse defines the response to executing a\nMsgCancelContinuousFund message.","type":"object","properties":{"canceled_height":{"description":"CanceledHeight defines the canceled block height.","type":"string","format":"uint64"},"canceled_time":{"description":"CanceledTime is the canceled time.","type":"string","format":"date-time"},"recipient":{"description":"Recipient is the account address string of the recipient whose funds are cancelled.","type":"string"}}},"cosmos.protocolpool.v1.MsgCommunityPoolSpend":{"description":"MsgCommunityPoolSpend defines a message for sending tokens from the community\npool to another account. This message is typically executed via a governance\nproposal with the governance module being the executing authority.","type":"object","properties":{"amount":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"authority":{"description":"Authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"recipient":{"type":"string"}}},"cosmos.protocolpool.v1.MsgCommunityPoolSpendResponse":{"description":"MsgCommunityPoolSpendResponse defines the response to executing a\nMsgCommunityPoolSpend message.","type":"object"},"cosmos.protocolpool.v1.MsgCreateContinuousFund":{"description":"MsgCreateContinuousFund defines a message for adding continuous funds.","type":"object","properties":{"authority":{"description":"Authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"expiry":{"description":"Optional, if expiry is set, removes the state object when expired.","type":"string","format":"date-time"},"percentage":{"description":"Percentage is the percentage of funds to be allocated from Community pool.","type":"string"},"recipient":{"description":"Recipient address of the account receiving funds.","type":"string"}}},"cosmos.protocolpool.v1.MsgCreateContinuousFundResponse":{"description":"MsgCreateContinuousFundResponse defines the response to executing a\nMsgCreateContinuousFund message.","type":"object"},"cosmos.protocolpool.v1.MsgFundCommunityPool":{"description":"MsgFundCommunityPool allows an account to directly\nfund the community pool.","type":"object","properties":{"amount":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"depositor":{"type":"string"}}},"cosmos.protocolpool.v1.MsgFundCommunityPoolResponse":{"description":"MsgFundCommunityPoolResponse defines the Msg/FundCommunityPool response type.","type":"object"},"cosmos.protocolpool.v1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/protocolpool parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.protocolpool.v1.Params"}}},"cosmos.protocolpool.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"cosmos.protocolpool.v1.Params":{"description":"Params defines the parameters for the protocolpool module.","type":"object","properties":{"distribution_frequency":{"description":"DistributionFrequency is the frequency (in terms of blocks) that funds are distributed out from the\nx/protocolpool module.","type":"string","format":"uint64"},"enabled_distribution_denoms":{"description":"EnabledDistributionDenoms lists the denoms that are allowed to be distributed.\nThis is to avoid spending time distributing undesired tokens to continuous funds and budgets.","type":"array","items":{"type":"string"}}}},"cosmos.protocolpool.v1.QueryCommunityPoolResponse":{"description":"QueryCommunityPoolResponse is the response type for the Query/CommunityPool\nRPC method.","type":"object","properties":{"pool":{"description":"pool defines community pool's coins.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"cosmos.protocolpool.v1.QueryContinuousFundResponse":{"description":"QueryUnclaimedBudgetResponse is the response type for the Query/ContinuousFund\nRPC method.","type":"object","properties":{"continuous_fund":{"description":"ContinuousFunds is the given continuous fund returned in the query.","$ref":"#/definitions/cosmos.protocolpool.v1.ContinuousFund"}}},"cosmos.protocolpool.v1.QueryContinuousFundsResponse":{"description":"QueryUnclaimedBudgetResponse is the response type for the Query/ContinuousFunds\nRPC method.","type":"object","properties":{"continuous_funds":{"description":"ContinuousFunds defines all continuous funds in state.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.protocolpool.v1.ContinuousFund"}}}},"cosmos.protocolpool.v1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"params":{"$ref":"#/definitions/cosmos.protocolpool.v1.Params"}}},"cosmos.slashing.v1beta1.MsgUnjail":{"type":"object","title":"MsgUnjail defines the Msg/Unjail request type","properties":{"validator_addr":{"type":"string"}}},"cosmos.slashing.v1beta1.MsgUnjailResponse":{"type":"object","title":"MsgUnjailResponse defines the Msg/Unjail response type"},"cosmos.slashing.v1beta1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/slashing parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.slashing.v1beta1.Params"}}},"cosmos.slashing.v1beta1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"cosmos.slashing.v1beta1.Params":{"description":"Params represents the parameters used for by the slashing module.","type":"object","properties":{"downtime_jail_duration":{"type":"string"},"min_signed_per_window":{"type":"string","format":"byte"},"signed_blocks_window":{"type":"string","format":"int64"},"slash_fraction_double_sign":{"type":"string","format":"byte"},"slash_fraction_downtime":{"type":"string","format":"byte"}}},"cosmos.slashing.v1beta1.QueryParamsResponse":{"type":"object","title":"QueryParamsResponse is the response type for the Query/Params RPC method","properties":{"params":{"$ref":"#/definitions/cosmos.slashing.v1beta1.Params"}}},"cosmos.slashing.v1beta1.QuerySigningInfoResponse":{"type":"object","title":"QuerySigningInfoResponse is the response type for the Query/SigningInfo RPC\nmethod","properties":{"val_signing_info":{"title":"val_signing_info is the signing info of requested val cons address","$ref":"#/definitions/cosmos.slashing.v1beta1.ValidatorSigningInfo"}}},"cosmos.slashing.v1beta1.QuerySigningInfosResponse":{"type":"object","title":"QuerySigningInfosResponse is the response type for the Query/SigningInfos RPC\nmethod","properties":{"info":{"type":"array","title":"info is the signing info of all validators","items":{"type":"object","$ref":"#/definitions/cosmos.slashing.v1beta1.ValidatorSigningInfo"}},"pagination":{"$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.slashing.v1beta1.ValidatorSigningInfo":{"description":"ValidatorSigningInfo defines a validator's signing info for monitoring their\nliveness activity.","type":"object","properties":{"address":{"type":"string"},"index_offset":{"description":"Index which is incremented every time a validator is bonded in a block and\n_may_ have signed a pre-commit or not. This in conjunction with the\nsigned_blocks_window param determines the index in the missed block bitmap.","type":"string","format":"int64"},"jailed_until":{"description":"Timestamp until which the validator is jailed due to liveness downtime.","type":"string","format":"date-time"},"missed_blocks_counter":{"description":"A counter of missed (unsigned) blocks. It is used to avoid unnecessary\nreads in the missed block bitmap.","type":"string","format":"int64"},"start_height":{"type":"string","format":"int64","title":"Height at which validator was first a candidate OR was un-jailed"},"tombstoned":{"description":"Whether or not a validator has been tombstoned (killed out of validator\nset). It is set once the validator commits an equivocation or for any other\nconfigured misbehavior.","type":"boolean"}}},"cosmos.staking.v1beta1.BondStatus":{"description":"BondStatus is the status of a validator.\n\n - BOND_STATUS_UNSPECIFIED: UNSPECIFIED defines an invalid validator status.\n - BOND_STATUS_UNBONDED: UNBONDED defines a validator that is not bonded.\n - BOND_STATUS_UNBONDING: UNBONDING defines a validator that is unbonding.\n - BOND_STATUS_BONDED: BONDED defines a validator that is bonded.","type":"string","default":"BOND_STATUS_UNSPECIFIED","enum":["BOND_STATUS_UNSPECIFIED","BOND_STATUS_UNBONDED","BOND_STATUS_UNBONDING","BOND_STATUS_BONDED"]},"cosmos.staking.v1beta1.Commission":{"description":"Commission defines commission parameters for a given validator.","type":"object","properties":{"commission_rates":{"description":"commission_rates defines the initial commission rates to be used for creating a validator.","$ref":"#/definitions/cosmos.staking.v1beta1.CommissionRates"},"update_time":{"description":"update_time is the last time the commission rate was changed.","type":"string","format":"date-time"}}},"cosmos.staking.v1beta1.CommissionRates":{"description":"CommissionRates defines the initial commission rates to be used for creating\na validator.","type":"object","properties":{"max_change_rate":{"description":"max_change_rate defines the maximum daily increase of the validator commission, as a fraction.","type":"string"},"max_rate":{"description":"max_rate defines the maximum commission rate which validator can ever charge, as a fraction.","type":"string"},"rate":{"description":"rate is the commission rate charged to delegators, as a fraction.","type":"string"}}},"cosmos.staking.v1beta1.Delegation":{"description":"Delegation represents the bond with tokens held by an account. It is\nowned by one delegator, and is associated with the voting power of one\nvalidator.","type":"object","properties":{"delegator_address":{"description":"delegator_address is the encoded address of the delegator.","type":"string"},"shares":{"description":"shares define the delegation shares received.","type":"string"},"validator_address":{"description":"validator_address is the encoded address of the validator.","type":"string"}}},"cosmos.staking.v1beta1.DelegationResponse":{"description":"DelegationResponse is equivalent to Delegation except that it contains a\nbalance in addition to shares which is more suitable for client responses.","type":"object","properties":{"balance":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"delegation":{"$ref":"#/definitions/cosmos.staking.v1beta1.Delegation"}}},"cosmos.staking.v1beta1.Description":{"description":"Description defines a validator description.","type":"object","properties":{"details":{"description":"details define other optional details.","type":"string"},"identity":{"description":"identity defines an optional identity signature (ex. UPort or Keybase).","type":"string"},"moniker":{"description":"moniker defines a human-readable name for the validator.","type":"string"},"security_contact":{"description":"security_contact defines an optional email for security contact.","type":"string"},"website":{"description":"website defines an optional website link.","type":"string"}}},"cosmos.staking.v1beta1.HistoricalInfo":{"description":"HistoricalInfo contains header and validator information for a given block.\nIt is stored as part of staking module's state, which persists the `n` most\nrecent HistoricalInfo\n(`n` is set by the staking module's `historical_entries` parameter).","type":"object","properties":{"header":{"$ref":"#/definitions/tendermint.types.Header"},"valset":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.Validator"}}}},"cosmos.staking.v1beta1.MsgBeginRedelegate":{"description":"MsgBeginRedelegate defines a SDK message for performing a redelegation\nof coins from a delegator and source validator to a destination validator.","type":"object","properties":{"amount":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"delegator_address":{"type":"string"},"validator_dst_address":{"type":"string"},"validator_src_address":{"type":"string"}}},"cosmos.staking.v1beta1.MsgBeginRedelegateResponse":{"description":"MsgBeginRedelegateResponse defines the Msg/BeginRedelegate response type.","type":"object","properties":{"completion_time":{"type":"string","format":"date-time"}}},"cosmos.staking.v1beta1.MsgCancelUnbondingDelegation":{"type":"object","title":"MsgCancelUnbondingDelegation defines the SDK message for performing a cancel unbonding delegation for delegator","properties":{"amount":{"title":"amount is always less than or equal to unbonding delegation entry balance","$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"creation_height":{"description":"creation_height is the height which the unbonding took place.","type":"string","format":"int64"},"delegator_address":{"type":"string"},"validator_address":{"type":"string"}}},"cosmos.staking.v1beta1.MsgCancelUnbondingDelegationResponse":{"type":"object","title":"MsgCancelUnbondingDelegationResponse"},"cosmos.staking.v1beta1.MsgCreateValidator":{"description":"MsgCreateValidator defines a SDK message for creating a new validator.","type":"object","properties":{"commission":{"$ref":"#/definitions/cosmos.staking.v1beta1.CommissionRates"},"delegator_address":{"description":"Deprecated: Use of Delegator Address in MsgCreateValidator is deprecated.\nThe validator address bytes and delegator address bytes refer to the same account while creating validator (defer\nonly in bech32 notation).","type":"string"},"description":{"$ref":"#/definitions/cosmos.staking.v1beta1.Description"},"min_self_delegation":{"type":"string"},"pubkey":{"$ref":"#/definitions/google.protobuf.Any"},"validator_address":{"type":"string"},"value":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"cosmos.staking.v1beta1.MsgCreateValidatorResponse":{"description":"MsgCreateValidatorResponse defines the Msg/CreateValidator response type.","type":"object"},"cosmos.staking.v1beta1.MsgDelegate":{"description":"MsgDelegate defines a SDK message for performing a delegation of coins\nfrom a delegator to a validator.","type":"object","properties":{"amount":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"delegator_address":{"type":"string"},"validator_address":{"type":"string"}}},"cosmos.staking.v1beta1.MsgDelegateResponse":{"description":"MsgDelegateResponse defines the Msg/Delegate response type.","type":"object"},"cosmos.staking.v1beta1.MsgEditValidator":{"description":"MsgEditValidator defines a SDK message for editing an existing validator.","type":"object","properties":{"commission_rate":{"type":"string","title":"We pass a reference to the new commission rate and min self delegation as\nit's not mandatory to update. If not updated, the deserialized rate will be\nzero with no way to distinguish if an update was intended.\nREF: #2373"},"description":{"$ref":"#/definitions/cosmos.staking.v1beta1.Description"},"min_self_delegation":{"type":"string"},"validator_address":{"type":"string"}}},"cosmos.staking.v1beta1.MsgEditValidatorResponse":{"description":"MsgEditValidatorResponse defines the Msg/EditValidator response type.","type":"object"},"cosmos.staking.v1beta1.MsgUndelegate":{"description":"MsgUndelegate defines a SDK message for performing an undelegation from a\ndelegate and a validator.","type":"object","properties":{"amount":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"delegator_address":{"type":"string"},"validator_address":{"type":"string"}}},"cosmos.staking.v1beta1.MsgUndelegateResponse":{"description":"MsgUndelegateResponse defines the Msg/Undelegate response type.","type":"object","properties":{"amount":{"title":"amount returns the amount of undelegated coins","$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"completion_time":{"type":"string","format":"date-time"}}},"cosmos.staking.v1beta1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the x/staking parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/cosmos.staking.v1beta1.Params"}}},"cosmos.staking.v1beta1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"cosmos.staking.v1beta1.Params":{"description":"Params defines the parameters for the x/staking module.","type":"object","properties":{"bond_denom":{"description":"bond_denom defines the bondable coin denomination.","type":"string"},"historical_entries":{"description":"historical_entries is the number of historical entries to persist.","type":"integer","format":"int64"},"max_entries":{"description":"max_entries is the max entries for either unbonding delegation or redelegation (per pair/trio).","type":"integer","format":"int64"},"max_validators":{"description":"max_validators is the maximum number of validators.","type":"integer","format":"int64"},"min_commission_rate":{"type":"string","title":"min_commission_rate is the chain-wide minimum commission rate that a validator can charge their delegators"},"unbonding_time":{"description":"unbonding_time is the time duration of unbonding.","type":"string"}}},"cosmos.staking.v1beta1.Pool":{"description":"Pool is used for tracking bonded and not-bonded token supply of the bond\ndenomination.","type":"object","properties":{"bonded_tokens":{"type":"string"},"not_bonded_tokens":{"type":"string"}}},"cosmos.staking.v1beta1.QueryDelegationResponse":{"description":"QueryDelegationResponse is response type for the Query/Delegation RPC method.","type":"object","properties":{"delegation_response":{"description":"delegation_responses defines the delegation info of a delegation.","$ref":"#/definitions/cosmos.staking.v1beta1.DelegationResponse"}}},"cosmos.staking.v1beta1.QueryDelegatorDelegationsResponse":{"description":"QueryDelegatorDelegationsResponse is response type for the\nQuery/DelegatorDelegations RPC method.","type":"object","properties":{"delegation_responses":{"description":"delegation_responses defines all the delegations' info of a delegator.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.DelegationResponse"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.staking.v1beta1.QueryDelegatorUnbondingDelegationsResponse":{"description":"QueryUnbondingDelegatorDelegationsResponse is response type for the\nQuery/UnbondingDelegatorDelegations RPC method.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"unbonding_responses":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.UnbondingDelegation"}}}},"cosmos.staking.v1beta1.QueryDelegatorValidatorResponse":{"description":"QueryDelegatorValidatorResponse response type for the\nQuery/DelegatorValidator RPC method.","type":"object","properties":{"validator":{"description":"validator defines the validator info.","$ref":"#/definitions/cosmos.staking.v1beta1.Validator"}}},"cosmos.staking.v1beta1.QueryDelegatorValidatorsResponse":{"description":"QueryDelegatorValidatorsResponse is response type for the\nQuery/DelegatorValidators RPC method.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"validators":{"description":"validators defines the validators' info of a delegator.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.Validator"}}}},"cosmos.staking.v1beta1.QueryHistoricalInfoResponse":{"description":"QueryHistoricalInfoResponse is response type for the Query/HistoricalInfo RPC\nmethod.","type":"object","properties":{"hist":{"description":"hist defines the historical info at the given height.","$ref":"#/definitions/cosmos.staking.v1beta1.HistoricalInfo"}}},"cosmos.staking.v1beta1.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params holds all the parameters of this module.","$ref":"#/definitions/cosmos.staking.v1beta1.Params"}}},"cosmos.staking.v1beta1.QueryPoolResponse":{"description":"QueryPoolResponse is response type for the Query/Pool RPC method.","type":"object","properties":{"pool":{"description":"pool defines the pool info.","$ref":"#/definitions/cosmos.staking.v1beta1.Pool"}}},"cosmos.staking.v1beta1.QueryRedelegationsResponse":{"description":"QueryRedelegationsResponse is response type for the Query/Redelegations RPC\nmethod.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"redelegation_responses":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.RedelegationResponse"}}}},"cosmos.staking.v1beta1.QueryUnbondingDelegationResponse":{"description":"QueryDelegationResponse is response type for the Query/UnbondingDelegation\nRPC method.","type":"object","properties":{"unbond":{"description":"unbond defines the unbonding information of a delegation.","$ref":"#/definitions/cosmos.staking.v1beta1.UnbondingDelegation"}}},"cosmos.staking.v1beta1.QueryValidatorDelegationsResponse":{"type":"object","title":"QueryValidatorDelegationsResponse is response type for the\nQuery/ValidatorDelegations RPC method","properties":{"delegation_responses":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.DelegationResponse"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"cosmos.staking.v1beta1.QueryValidatorResponse":{"type":"object","title":"QueryValidatorResponse is response type for the Query/Validator RPC method","properties":{"validator":{"description":"validator defines the validator info.","$ref":"#/definitions/cosmos.staking.v1beta1.Validator"}}},"cosmos.staking.v1beta1.QueryValidatorUnbondingDelegationsResponse":{"description":"QueryValidatorUnbondingDelegationsResponse is response type for the\nQuery/ValidatorUnbondingDelegations RPC method.","type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"unbonding_responses":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.UnbondingDelegation"}}}},"cosmos.staking.v1beta1.QueryValidatorsResponse":{"type":"object","title":"QueryValidatorsResponse is response type for the Query/Validators RPC method","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"validators":{"description":"validators contains all the queried validators.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.Validator"}}}},"cosmos.staking.v1beta1.Redelegation":{"description":"Redelegation contains the list of a particular delegator's redelegating bonds\nfrom a particular source validator to a particular destination validator.","type":"object","properties":{"delegator_address":{"description":"delegator_address is the bech32-encoded address of the delegator.","type":"string"},"entries":{"description":"entries are the redelegation entries.\n\nredelegation entries","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.RedelegationEntry"}},"validator_dst_address":{"description":"validator_dst_address is the validator redelegation destination operator address.","type":"string"},"validator_src_address":{"description":"validator_src_address is the validator redelegation source operator address.","type":"string"}}},"cosmos.staking.v1beta1.RedelegationEntry":{"description":"RedelegationEntry defines a redelegation object with relevant metadata.","type":"object","properties":{"completion_time":{"description":"completion_time defines the unix time for redelegation completion.","type":"string","format":"date-time"},"creation_height":{"description":"creation_height defines the height which the redelegation took place.","type":"string","format":"int64"},"initial_balance":{"description":"initial_balance defines the initial balance when redelegation started.","type":"string"},"shares_dst":{"description":"shares_dst is the amount of destination-validator shares created by redelegation.","type":"string"},"unbonding_id":{"type":"string","format":"uint64","title":"Incrementing id that uniquely identifies this entry"},"unbonding_on_hold_ref_count":{"type":"string","format":"int64","title":"Strictly positive if this entry's unbonding has been stopped by external modules"}}},"cosmos.staking.v1beta1.RedelegationEntryResponse":{"description":"RedelegationEntryResponse is equivalent to a RedelegationEntry except that it\ncontains a balance in addition to shares which is more suitable for client\nresponses.","type":"object","properties":{"balance":{"type":"string"},"redelegation_entry":{"$ref":"#/definitions/cosmos.staking.v1beta1.RedelegationEntry"}}},"cosmos.staking.v1beta1.RedelegationResponse":{"description":"RedelegationResponse is equivalent to a Redelegation except that its entries\ncontain a balance in addition to shares which is more suitable for client\nresponses.","type":"object","properties":{"entries":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.RedelegationEntryResponse"}},"redelegation":{"$ref":"#/definitions/cosmos.staking.v1beta1.Redelegation"}}},"cosmos.staking.v1beta1.UnbondingDelegation":{"description":"UnbondingDelegation stores all of a single delegator's unbonding bonds\nfor a single validator in an time-ordered list.","type":"object","properties":{"delegator_address":{"description":"delegator_address is the encoded address of the delegator.","type":"string"},"entries":{"description":"entries are the unbonding delegation entries.\n\nunbonding delegation entries","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.staking.v1beta1.UnbondingDelegationEntry"}},"validator_address":{"description":"validator_address is the encoded address of the validator.","type":"string"}}},"cosmos.staking.v1beta1.UnbondingDelegationEntry":{"description":"UnbondingDelegationEntry defines an unbonding object with relevant metadata.","type":"object","properties":{"balance":{"description":"balance defines the tokens to receive at completion.","type":"string"},"completion_time":{"description":"completion_time is the unix time for unbonding completion.","type":"string","format":"date-time"},"creation_height":{"description":"creation_height is the height which the unbonding took place.","type":"string","format":"int64"},"initial_balance":{"description":"initial_balance defines the tokens initially scheduled to receive at completion.","type":"string"},"unbonding_id":{"type":"string","format":"uint64","title":"Incrementing id that uniquely identifies this entry"},"unbonding_on_hold_ref_count":{"type":"string","format":"int64","title":"Strictly positive if this entry's unbonding has been stopped by external modules"}}},"cosmos.staking.v1beta1.Validator":{"description":"Validator defines a validator, together with the total amount of the\nValidator's bond shares and their exchange rate to coins. Slashing results in\na decrease in the exchange rate, allowing correct calculation of future\nundelegations without iterating over delegators. When coins are delegated to\nthis validator, the validator is credited with a delegation whose number of\nbond shares is based on the amount of coins delegated divided by the current\nexchange rate. Voting power can be calculated as total bonded shares\nmultiplied by exchange rate.","type":"object","properties":{"commission":{"description":"commission defines the commission parameters.","$ref":"#/definitions/cosmos.staking.v1beta1.Commission"},"consensus_pubkey":{"description":"consensus_pubkey is the consensus public key of the validator, as a Protobuf Any.","$ref":"#/definitions/google.protobuf.Any"},"delegator_shares":{"description":"delegator_shares defines total shares issued to a validator's delegators.","type":"string"},"description":{"description":"description defines the description terms for the validator.","$ref":"#/definitions/cosmos.staking.v1beta1.Description"},"jailed":{"description":"jailed defined whether the validator has been jailed from bonded status or not.","type":"boolean"},"min_self_delegation":{"description":"min_self_delegation is the validator's self declared minimum self delegation.","type":"string"},"operator_address":{"description":"operator_address defines the address of the validator's operator; bech encoded in JSON.","type":"string"},"status":{"description":"status is the validator status (bonded/unbonding/unbonded).","$ref":"#/definitions/cosmos.staking.v1beta1.BondStatus"},"tokens":{"description":"tokens define the delegated tokens (incl. self-delegation).","type":"string"},"unbonding_height":{"description":"unbonding_height defines, if unbonding, the height at which this validator has begun unbonding.","type":"string","format":"int64"},"unbonding_ids":{"type":"array","title":"list of unbonding ids, each uniquely identifing an unbonding of this validator","items":{"type":"string","format":"uint64"}},"unbonding_on_hold_ref_count":{"type":"string","format":"int64","title":"strictly positive if this validator's unbonding has been stopped by external modules"},"unbonding_time":{"description":"unbonding_time defines, if unbonding, the min time for the validator to complete unbonding.","type":"string","format":"date-time"}}},"cosmos.store.streaming.abci.ListenCommitRequest":{"type":"object","title":"ListenCommitRequest is the request type for the ListenCommit RPC method","properties":{"block_height":{"type":"string","format":"int64","title":"explicitly pass in block height as ResponseCommit does not contain this info"},"change_set":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.store.v1beta1.StoreKVPair"}},"res":{"$ref":"#/definitions/tendermint.abci.ResponseCommit"}}},"cosmos.store.streaming.abci.ListenCommitResponse":{"type":"object","title":"ListenCommitResponse is the response type for the ListenCommit RPC method"},"cosmos.store.streaming.abci.ListenFinalizeBlockRequest":{"type":"object","title":"ListenEndBlockRequest is the request type for the ListenEndBlock RPC method","properties":{"req":{"$ref":"#/definitions/tendermint.abci.RequestFinalizeBlock"},"res":{"$ref":"#/definitions/tendermint.abci.ResponseFinalizeBlock"}}},"cosmos.store.streaming.abci.ListenFinalizeBlockResponse":{"type":"object","title":"ListenEndBlockResponse is the response type for the ListenEndBlock RPC method"},"cosmos.store.v1beta1.StoreKVPair":{"type":"object","title":"StoreKVPair is a KVStore KVPair used for listening to state changes (Sets and Deletes)\nIt optionally includes the StoreKey for the originating KVStore and a Boolean flag to distinguish between Sets and\nDeletes","properties":{"delete":{"type":"boolean","title":"true indicates a delete operation, false indicates a set operation"},"key":{"type":"string","format":"byte"},"store_key":{"type":"string","title":"the store key for the KVStore this pair originates from"},"value":{"type":"string","format":"byte"}}},"cosmos.tx.signing.v1beta1.SignMode":{"description":"SignMode represents a signing mode with its own security guarantees.\n\nThis enum should be considered a registry of all known sign modes\nin the Cosmos ecosystem. Apps are not expected to support all known\nsign modes. Apps that would like to support custom sign modes are\nencouraged to open a small PR against this file to add a new case\nto this SignMode enum describing their sign mode so that different\napps have a consistent version of this enum.\n\n - SIGN_MODE_UNSPECIFIED: SIGN_MODE_UNSPECIFIED specifies an unknown signing mode and will be\nrejected.\n - SIGN_MODE_DIRECT: SIGN_MODE_DIRECT specifies a signing mode which uses SignDoc and is\nverified with raw bytes from Tx.\n - SIGN_MODE_TEXTUAL: SIGN_MODE_TEXTUAL is a future signing mode that will verify some\nhuman-readable textual representation on top of the binary representation\nfrom SIGN_MODE_DIRECT.\n\nSince: cosmos-sdk 0.50\n - SIGN_MODE_DIRECT_AUX: SIGN_MODE_DIRECT_AUX specifies a signing mode which uses\nSignDocDirectAux. As opposed to SIGN_MODE_DIRECT, this sign mode does not\nrequire signers signing over other signers' `signer_info`.\n\nSince: cosmos-sdk 0.46\n - SIGN_MODE_LEGACY_AMINO_JSON: SIGN_MODE_LEGACY_AMINO_JSON is a backwards compatibility mode which uses\nAmino JSON and will be removed in the future.\n - SIGN_MODE_EIP_191: SIGN_MODE_EIP_191 specifies the sign mode for EIP 191 signing on the Cosmos\nSDK. Ref: https://eips.ethereum.org/EIPS/eip-191\n\nCurrently, SIGN_MODE_EIP_191 is registered as a SignMode enum variant,\nbut is not implemented on the SDK by default. To enable EIP-191, you need\nto pass a custom `TxConfig` that has an implementation of\n`SignModeHandler` for EIP-191. The SDK may decide to fully support\nEIP-191 in the future.\n\nSince: cosmos-sdk 0.45.2","type":"string","default":"SIGN_MODE_UNSPECIFIED","enum":["SIGN_MODE_UNSPECIFIED","SIGN_MODE_DIRECT","SIGN_MODE_TEXTUAL","SIGN_MODE_DIRECT_AUX","SIGN_MODE_LEGACY_AMINO_JSON","SIGN_MODE_EIP_191"]},"cosmos.tx.v1beta1.AuthInfo":{"description":"AuthInfo describes the fee and signer modes that are used to sign a\ntransaction.","type":"object","properties":{"fee":{"description":"Fee is the fee and gas limit for the transaction. The first signer is the\nprimary signer and the one which pays the fee. The fee can be calculated\nbased on the cost of evaluating the body and doing signature verification\nof the signers. This can be estimated via simulation.","$ref":"#/definitions/cosmos.tx.v1beta1.Fee"},"signer_infos":{"description":"signer_infos defines the signing modes for the required signers. The number\nand order of elements must match the required signers from TxBody's\nmessages. The first element is the primary signer and the one which pays\nthe fee.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.tx.v1beta1.SignerInfo"}},"tip":{"description":"Tip is the optional tip used for transactions fees paid in another denom.\n\nThis field is ignored if the chain didn't enable tips, i.e. didn't add the\n`TipDecorator` in its posthandler.","$ref":"#/definitions/cosmos.tx.v1beta1.Tip"}}},"cosmos.tx.v1beta1.BroadcastMode":{"description":"BroadcastMode specifies the broadcast mode for the TxService.Broadcast RPC\nmethod.\n\n - BROADCAST_MODE_UNSPECIFIED: zero-value for mode ordering\n - BROADCAST_MODE_BLOCK: DEPRECATED: use BROADCAST_MODE_SYNC instead,\nBROADCAST_MODE_BLOCK is not supported by the SDK from v0.47.x onwards.\n - BROADCAST_MODE_SYNC: BROADCAST_MODE_SYNC defines a tx broadcasting mode where the client waits\nfor a CheckTx execution response only.\n - BROADCAST_MODE_ASYNC: BROADCAST_MODE_ASYNC defines a tx broadcasting mode where the client\nreturns immediately.","type":"string","default":"BROADCAST_MODE_UNSPECIFIED","enum":["BROADCAST_MODE_UNSPECIFIED","BROADCAST_MODE_BLOCK","BROADCAST_MODE_SYNC","BROADCAST_MODE_ASYNC"]},"cosmos.tx.v1beta1.BroadcastTxRequest":{"description":"BroadcastTxRequest is the request type for the Service.BroadcastTxRequest\nRPC method.","type":"object","properties":{"mode":{"$ref":"#/definitions/cosmos.tx.v1beta1.BroadcastMode"},"tx_bytes":{"description":"tx_bytes is the raw transaction.","type":"string","format":"byte"}}},"cosmos.tx.v1beta1.BroadcastTxResponse":{"description":"BroadcastTxResponse is the response type for the\nService.BroadcastTx method.","type":"object","properties":{"tx_response":{"description":"tx_response is the queried TxResponses.","$ref":"#/definitions/cosmos.base.abci.v1beta1.TxResponse"}}},"cosmos.tx.v1beta1.Fee":{"description":"Fee includes the amount of coins paid in fees and the maximum\ngas to be used by the transaction. The ratio yields an effective \"gasprice\",\nwhich must be above some miminum to be accepted into the mempool.","type":"object","properties":{"amount":{"type":"array","title":"amount is the amount of coins to be paid as a fee","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"gas_limit":{"type":"string","format":"uint64","title":"gas_limit is the maximum gas that can be used in transaction processing\nbefore an out of gas error occurs"},"granter":{"type":"string","title":"if set, the fee payer (either the first signer or the value of the payer\nfield) requests that a fee grant be used to pay fees instead of the fee\npayer's own balance. If an appropriate fee grant does not exist or the\nchain does not support fee grants, this will fail"},"payer":{"description":"if unset, the first signer is responsible for paying the fees. If set, the\nspecified account must pay the fees. the payer must be a tx signer (and\nthus have signed this field in AuthInfo). setting this field does *not*\nchange the ordering of required signers for the transaction.","type":"string"}}},"cosmos.tx.v1beta1.GetBlockWithTxsResponse":{"description":"GetBlockWithTxsResponse is the response type for the Service.GetBlockWithTxs\nmethod.","type":"object","properties":{"block":{"$ref":"#/definitions/tendermint.types.Block"},"block_id":{"$ref":"#/definitions/tendermint.types.BlockID"},"pagination":{"description":"pagination defines a pagination for the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"txs":{"description":"txs are the transactions in the block.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.tx.v1beta1.Tx"}}}},"cosmos.tx.v1beta1.GetTxResponse":{"description":"GetTxResponse is the response type for the Service.GetTx method.","type":"object","properties":{"tx":{"description":"tx is the queried transaction.","$ref":"#/definitions/cosmos.tx.v1beta1.Tx"},"tx_response":{"description":"tx_response is the queried TxResponses.","$ref":"#/definitions/cosmos.base.abci.v1beta1.TxResponse"}}},"cosmos.tx.v1beta1.GetTxsEventResponse":{"description":"GetTxsEventResponse is the response type for the Service.TxsByEvents\nRPC method.","type":"object","properties":{"pagination":{"description":"pagination defines a pagination for the response.\nDeprecated post v0.46.x: use total instead.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"total":{"type":"string","format":"uint64","title":"total is total number of results available"},"tx_responses":{"description":"tx_responses is the list of queried TxResponses.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.abci.v1beta1.TxResponse"}},"txs":{"description":"txs is the list of queried transactions.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.tx.v1beta1.Tx"}}}},"cosmos.tx.v1beta1.ModeInfo":{"description":"ModeInfo describes the signing mode of a single or nested multisig signer.","type":"object","properties":{"multi":{"title":"multi represents a nested multisig signer","$ref":"#/definitions/cosmos.tx.v1beta1.ModeInfo.Multi"},"single":{"title":"single represents a single signer","$ref":"#/definitions/cosmos.tx.v1beta1.ModeInfo.Single"}}},"cosmos.tx.v1beta1.ModeInfo.Multi":{"type":"object","title":"Multi is the mode info for a multisig public key","properties":{"bitarray":{"title":"bitarray specifies which keys within the multisig are signing","$ref":"#/definitions/cosmos.crypto.multisig.v1beta1.CompactBitArray"},"mode_infos":{"type":"array","title":"mode_infos is the corresponding modes of the signers of the multisig\nwhich could include nested multisig public keys","items":{"type":"object","$ref":"#/definitions/cosmos.tx.v1beta1.ModeInfo"}}}},"cosmos.tx.v1beta1.ModeInfo.Single":{"type":"object","title":"Single is the mode info for a single signer. It is structured as a message\nto allow for additional fields such as locale for SIGN_MODE_TEXTUAL in the\nfuture","properties":{"mode":{"title":"mode is the signing mode of the single signer","$ref":"#/definitions/cosmos.tx.signing.v1beta1.SignMode"}}},"cosmos.tx.v1beta1.OrderBy":{"description":"- ORDER_BY_UNSPECIFIED: ORDER_BY_UNSPECIFIED specifies an unknown sorting order. OrderBy defaults\nto ASC in this case.\n - ORDER_BY_ASC: ORDER_BY_ASC defines ascending order\n - ORDER_BY_DESC: ORDER_BY_DESC defines descending order","type":"string","title":"OrderBy defines the sorting order","default":"ORDER_BY_UNSPECIFIED","enum":["ORDER_BY_UNSPECIFIED","ORDER_BY_ASC","ORDER_BY_DESC"]},"cosmos.tx.v1beta1.SignerInfo":{"description":"SignerInfo describes the public key and signing mode of a single top-level\nsigner.","type":"object","properties":{"mode_info":{"title":"mode_info describes the signing mode of the signer and is a nested\nstructure to support nested multisig pubkey's","$ref":"#/definitions/cosmos.tx.v1beta1.ModeInfo"},"public_key":{"description":"public_key is the public key of the signer. It is optional for accounts\nthat already exist in state. If unset, the verifier can use the required \\\nsigner address for this position and lookup the public key.","$ref":"#/definitions/google.protobuf.Any"},"sequence":{"description":"sequence is the sequence of the account, which describes the\nnumber of committed transactions signed by a given address. It is used to\nprevent replay attacks.","type":"string","format":"uint64"}}},"cosmos.tx.v1beta1.SimulateRequest":{"description":"SimulateRequest is the request type for the Service.Simulate\nRPC method.","type":"object","properties":{"tx":{"description":"tx is the transaction to simulate.\nDeprecated. Send raw tx bytes instead.","$ref":"#/definitions/cosmos.tx.v1beta1.Tx"},"tx_bytes":{"description":"tx_bytes is the raw transaction.","type":"string","format":"byte"}}},"cosmos.tx.v1beta1.SimulateResponse":{"description":"SimulateResponse is the response type for the\nService.SimulateRPC method.","type":"object","properties":{"gas_info":{"description":"gas_info is the information about gas used in the simulation.","$ref":"#/definitions/cosmos.base.abci.v1beta1.GasInfo"},"result":{"description":"result is the result of the simulation.","$ref":"#/definitions/cosmos.base.abci.v1beta1.Result"}}},"cosmos.tx.v1beta1.Tip":{"description":"Tip is the tip used for meta-transactions.","type":"object","properties":{"amount":{"type":"array","title":"amount is the amount of the tip","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"tipper":{"type":"string","title":"tipper is the address of the account paying for the tip"}}},"cosmos.tx.v1beta1.Tx":{"description":"Tx is the standard type used for broadcasting transactions.","type":"object","properties":{"auth_info":{"title":"auth_info is the authorization related content of the transaction,\nspecifically signers, signer modes and fee","$ref":"#/definitions/cosmos.tx.v1beta1.AuthInfo"},"body":{"title":"body is the processable content of the transaction","$ref":"#/definitions/cosmos.tx.v1beta1.TxBody"},"signatures":{"description":"signatures is a list of signatures that matches the length and order of\nAuthInfo's signer_infos to allow connecting signature meta information like\npublic key and signing mode by position.","type":"array","items":{"type":"string","format":"byte"}}}},"cosmos.tx.v1beta1.TxBody":{"description":"TxBody is the body of a transaction that all signers sign over.","type":"object","properties":{"extension_options":{"type":"array","title":"extension_options are arbitrary options that can be added by chains\nwhen the default options are not sufficient. If any of these are present\nand can't be handled, the transaction will be rejected","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"memo":{"description":"memo is any arbitrary note/comment to be added to the transaction.\nWARNING: in clients, any publicly exposed text should not be called memo,\nbut should be called `note` instead (see\nhttps://github.com/cosmos/cosmos-sdk/issues/9122).","type":"string"},"messages":{"description":"messages is a list of messages to be executed. The required signers of\nthose messages define the number and order of elements in AuthInfo's\nsigner_infos and Tx's signatures. Each required signer address is added to\nthe list only the first time it occurs.\nBy convention, the first required signer (usually from the first message)\nis referred to as the primary signer and pays the fee for the whole\ntransaction.","type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"non_critical_extension_options":{"type":"array","title":"extension_options are arbitrary options that can be added by chains\nwhen the default options are not sufficient. If any of these are present\nand can't be handled, they will be ignored","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"timeout_height":{"description":"timeout_height is the block height after which this transaction will not\nbe processed by the chain.","type":"string","format":"uint64"},"timeout_timestamp":{"description":"timeout_timestamp is the block time after which this transaction will not\nbe processed by the chain.\n\nNote, if unordered=true this value MUST be set\nand will act as a short-lived TTL in which the transaction is deemed valid\nand kept in memory to prevent duplicates.","type":"string","format":"date-time"},"unordered":{"description":"unordered, when set to true, indicates that the transaction signer(s)\nintend for the transaction to be evaluated and executed in an un-ordered\nfashion. Specifically, the account's nonce will NOT be checked or\nincremented, which allows for fire-and-forget as well as concurrent\ntransaction execution.\n\nNote, when set to true, the existing 'timeout_timestamp' value must\nbe set and will be used to correspond to a timestamp in which the transaction is deemed\nvalid.\n\nWhen true, the sequence value MUST be 0, and any transaction with unordered=true and a non-zero sequence value will\nbe rejected.\nExternal services that make assumptions about sequence values may need to be updated because of this.","type":"boolean"}}},"cosmos.tx.v1beta1.TxDecodeAminoRequest":{"description":"TxDecodeAminoRequest is the request type for the Service.TxDecodeAmino\nRPC method.","type":"object","properties":{"amino_binary":{"type":"string","format":"byte"}}},"cosmos.tx.v1beta1.TxDecodeAminoResponse":{"description":"TxDecodeAminoResponse is the response type for the Service.TxDecodeAmino\nRPC method.","type":"object","properties":{"amino_json":{"type":"string"}}},"cosmos.tx.v1beta1.TxDecodeRequest":{"description":"TxDecodeRequest is the request type for the Service.TxDecode\nRPC method.","type":"object","properties":{"tx_bytes":{"description":"tx_bytes is the raw transaction.","type":"string","format":"byte"}}},"cosmos.tx.v1beta1.TxDecodeResponse":{"description":"TxDecodeResponse is the response type for the\nService.TxDecode method.","type":"object","properties":{"tx":{"description":"tx is the decoded transaction.","$ref":"#/definitions/cosmos.tx.v1beta1.Tx"}}},"cosmos.tx.v1beta1.TxEncodeAminoRequest":{"description":"TxEncodeAminoRequest is the request type for the Service.TxEncodeAmino\nRPC method.","type":"object","properties":{"amino_json":{"type":"string"}}},"cosmos.tx.v1beta1.TxEncodeAminoResponse":{"description":"TxEncodeAminoResponse is the response type for the Service.TxEncodeAmino\nRPC method.","type":"object","properties":{"amino_binary":{"type":"string","format":"byte"}}},"cosmos.tx.v1beta1.TxEncodeRequest":{"description":"TxEncodeRequest is the request type for the Service.TxEncode\nRPC method.","type":"object","properties":{"tx":{"description":"tx is the transaction to encode.","$ref":"#/definitions/cosmos.tx.v1beta1.Tx"}}},"cosmos.tx.v1beta1.TxEncodeResponse":{"description":"TxEncodeResponse is the response type for the\nService.TxEncode method.","type":"object","properties":{"tx_bytes":{"description":"tx_bytes is the encoded transaction bytes.","type":"string","format":"byte"}}},"cosmos.upgrade.v1beta1.ModuleVersion":{"description":"ModuleVersion specifies a module and its consensus version.","type":"object","properties":{"name":{"type":"string","title":"name of the app module"},"version":{"type":"string","format":"uint64","title":"consensus version of the app module"}}},"cosmos.upgrade.v1beta1.MsgCancelUpgrade":{"description":"MsgCancelUpgrade is the Msg/CancelUpgrade request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"}}},"cosmos.upgrade.v1beta1.MsgCancelUpgradeResponse":{"description":"MsgCancelUpgradeResponse is the Msg/CancelUpgrade response type.","type":"object"},"cosmos.upgrade.v1beta1.MsgSoftwareUpgrade":{"description":"MsgSoftwareUpgrade is the Msg/SoftwareUpgrade request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"plan":{"description":"plan is the upgrade plan.","$ref":"#/definitions/cosmos.upgrade.v1beta1.Plan"}}},"cosmos.upgrade.v1beta1.MsgSoftwareUpgradeResponse":{"description":"MsgSoftwareUpgradeResponse is the Msg/SoftwareUpgrade response type.","type":"object"},"cosmos.upgrade.v1beta1.Plan":{"description":"Plan specifies information about a planned upgrade and when it should occur.","type":"object","properties":{"height":{"description":"The height at which the upgrade must be performed.","type":"string","format":"int64"},"info":{"type":"string","title":"Any application specific upgrade info to be included on-chain\nsuch as a git commit that validators could automatically upgrade to"},"name":{"description":"Sets the name for the upgrade. This name will be used by the upgraded\nversion of the software to apply any special \"on-upgrade\" commands during\nthe first BeginBlock method after the upgrade is applied. It is also used\nto detect whether a software version can handle a given upgrade. If no\nupgrade handler with this name has been set in the software, it will be\nassumed that the software is out-of-date when the upgrade Time or Height is\nreached and the software will exit.","type":"string"},"time":{"description":"Deprecated: Time based upgrades have been deprecated. Time based upgrade logic\nhas been removed from the SDK.\nIf this field is not empty, an error will be thrown.","type":"string","format":"date-time"},"upgraded_client_state":{"description":"Deprecated: UpgradedClientState field has been deprecated. IBC upgrade logic has been\nmoved to the IBC module in the sub module 02-client.\nIf this field is not empty, an error will be thrown.","$ref":"#/definitions/google.protobuf.Any"}}},"cosmos.upgrade.v1beta1.QueryAppliedPlanResponse":{"description":"QueryAppliedPlanResponse is the response type for the Query/AppliedPlan RPC\nmethod.","type":"object","properties":{"height":{"description":"height is the block height at which the plan was applied.","type":"string","format":"int64"}}},"cosmos.upgrade.v1beta1.QueryAuthorityResponse":{"type":"object","title":"QueryAuthorityResponse is the response type for Query/Authority","properties":{"address":{"type":"string"}}},"cosmos.upgrade.v1beta1.QueryCurrentPlanResponse":{"description":"QueryCurrentPlanResponse is the response type for the Query/CurrentPlan RPC\nmethod.","type":"object","properties":{"plan":{"description":"plan is the current upgrade plan.","$ref":"#/definitions/cosmos.upgrade.v1beta1.Plan"}}},"cosmos.upgrade.v1beta1.QueryModuleVersionsResponse":{"description":"QueryModuleVersionsResponse is the response type for the Query/ModuleVersions\nRPC method.","type":"object","properties":{"module_versions":{"description":"module_versions is a list of module names with their consensus versions.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.upgrade.v1beta1.ModuleVersion"}}}},"cosmos.upgrade.v1beta1.QueryUpgradedConsensusStateResponse":{"description":"QueryUpgradedConsensusStateResponse is the response type for the Query/UpgradedConsensusState\nRPC method.","type":"object","properties":{"upgraded_consensus_state":{"type":"string","format":"byte"}}},"cosmos.vesting.v1beta1.MsgCreatePeriodicVestingAccount":{"description":"MsgCreateVestingAccount defines a message that enables creating a vesting\naccount.","type":"object","properties":{"from_address":{"type":"string"},"start_time":{"description":"start of vesting as unix time (in seconds).","type":"string","format":"int64"},"to_address":{"type":"string"},"vesting_periods":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.vesting.v1beta1.Period"}}}},"cosmos.vesting.v1beta1.MsgCreatePeriodicVestingAccountResponse":{"description":"MsgCreateVestingAccountResponse defines the Msg/CreatePeriodicVestingAccount\nresponse type.","type":"object"},"cosmos.vesting.v1beta1.MsgCreatePermanentLockedAccount":{"description":"MsgCreatePermanentLockedAccount defines a message that enables creating a permanent\nlocked account.","type":"object","properties":{"amount":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"from_address":{"type":"string"},"to_address":{"type":"string"}}},"cosmos.vesting.v1beta1.MsgCreatePermanentLockedAccountResponse":{"description":"MsgCreatePermanentLockedAccountResponse defines the Msg/CreatePermanentLockedAccount response type.","type":"object"},"cosmos.vesting.v1beta1.MsgCreateVestingAccount":{"description":"MsgCreateVestingAccount defines a message that enables creating a vesting\naccount.","type":"object","properties":{"amount":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"delayed":{"type":"boolean"},"end_time":{"description":"end of vesting as unix time (in seconds).","type":"string","format":"int64"},"from_address":{"type":"string"},"to_address":{"type":"string"}}},"cosmos.vesting.v1beta1.MsgCreateVestingAccountResponse":{"description":"MsgCreateVestingAccountResponse defines the Msg/CreateVestingAccount response type.","type":"object"},"cosmos.vesting.v1beta1.Period":{"description":"Period defines a length of time and amount of coins that will vest.","type":"object","properties":{"amount":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"length":{"description":"Period duration in seconds.","type":"string","format":"int64"}}},"gamm.poolmodels.balancer.MsgCreateBalancerPool":{"type":"object","title":"===================== MsgCreatePool","properties":{"pool_assets":{"type":"array","items":{"type":"object","$ref":"#/definitions/gamm.poolmodels.balancer.PoolAsset"}},"pool_params":{"$ref":"#/definitions/gamm.poolmodels.balancer.PoolParams"},"sender":{"type":"string"}}},"gamm.poolmodels.balancer.MsgCreateBalancerPoolResponse":{"type":"object","title":"Returns the poolID","properties":{"pool_id":{"type":"string","format":"uint64"}}},"gamm.poolmodels.balancer.PoolAsset":{"description":"Pool asset is an internal struct that combines the amount of the\ntoken in the pool, and its balancer weight.\nThis is an awkward packaging of data,\nand should be revisited in a future state migration.","type":"object","properties":{"token":{"description":"Coins we are talking about,\nthe denomination must be unique amongst all PoolAssets for this pool.","$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"weight":{"type":"string","title":"Weight that is not normalized. This weight must be less than 2^50"}}},"gamm.poolmodels.balancer.PoolParams":{"description":"PoolParams defined the parameters that will be managed by the pool\ngovernance in the future. This params are not managed by the chain\ngovernance. Instead they will be managed by the token holders of the pool.","type":"object","properties":{"exit_fee":{"type":"string","title":"N.B.: exit fee is disabled during pool creation in x/poolmanager. While old\npools can maintain a non-zero fee. No new pool can be created with non-zero\nfee anymore"},"swap_fee":{"type":"string"}}},"gamm.poolmodels.stableswap.MsgCreateStableswapPool":{"type":"object","title":"===================== MsgCreatePool","properties":{"future_pool_governor":{"type":"string"},"initial_pool_liquidity":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"pool_params":{"$ref":"#/definitions/gamm.poolmodels.stableswap.PoolParams"},"scaling_factor_controller":{"type":"string"},"scaling_factors":{"type":"array","items":{"type":"string","format":"uint64"}},"sender":{"type":"string"}}},"gamm.poolmodels.stableswap.MsgCreateStableswapPoolResponse":{"description":"Returns a poolID with custom poolName.","type":"object","properties":{"pool_id":{"type":"string","format":"uint64"}}},"gamm.poolmodels.stableswap.MsgStableSwapAdjustScalingFactors":{"description":"Sender must be the pool's scaling_factor_governor in order for the tx to\nsucceed. Adjusts stableswap scaling factors.","type":"object","properties":{"pool_id":{"type":"string","format":"uint64"},"scaling_factors":{"type":"array","items":{"type":"string","format":"uint64"}},"sender":{"type":"string"}}},"gamm.poolmodels.stableswap.MsgStableSwapAdjustScalingFactorsResponse":{"type":"object"},"gamm.poolmodels.stableswap.PoolParams":{"description":"PoolParams defined the parameters that will be managed by the pool\ngovernance in the future. This params are not managed by the chain\ngovernance. Instead they will be managed by the token holders of the pool.\nThe pool's token holders are specified in future_pool_governor.","type":"object","properties":{"exit_fee":{"type":"string","title":"N.B.: exit fee is disabled during pool creation in x/poolmanager. While old\npools can maintain a non-zero fee. No new pool can be created with non-zero\nfee anymore"},"swap_fee":{"type":"string"}}},"gamm.v1beta1.IBCTransferInfo":{"type":"object","title":"===================== IBC Transfer Info","properties":{"memo":{"type":"string"},"receiver":{"type":"string"},"source_channel":{"type":"string"},"timeout_timestamp":{"type":"string","format":"uint64"}}},"gamm.v1beta1.MsgExitPool":{"type":"object","title":"===================== MsgExitPool","properties":{"pool_id":{"type":"string","format":"uint64"},"sender":{"type":"string"},"share_in_amount":{"type":"string"},"token_out_mins":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"gamm.v1beta1.MsgExitPoolResponse":{"type":"object","properties":{"token_out":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"gamm.v1beta1.MsgExitSwapExternAmountOut":{"type":"object","title":"===================== MsgExitSwapExternAmountOut","properties":{"pool_id":{"type":"string","format":"uint64"},"sender":{"type":"string"},"share_in_max_amount":{"type":"string"},"token_out":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"gamm.v1beta1.MsgExitSwapExternAmountOutResponse":{"type":"object","properties":{"share_in_amount":{"type":"string"}}},"gamm.v1beta1.MsgExitSwapShareAmountIn":{"type":"object","title":"===================== MsgExitSwapShareAmountIn","properties":{"pool_id":{"type":"string","format":"uint64"},"sender":{"type":"string"},"share_in_amount":{"type":"string"},"token_out_denom":{"type":"string"},"token_out_min_amount":{"type":"string"}}},"gamm.v1beta1.MsgExitSwapShareAmountInResponse":{"type":"object","properties":{"token_out_amount":{"type":"string"}}},"gamm.v1beta1.MsgJoinPool":{"type":"object","title":"===================== MsgJoinPool\nThis is really MsgJoinPoolNoSwap","properties":{"pool_id":{"type":"string","format":"uint64"},"sender":{"type":"string"},"share_out_amount":{"type":"string"},"token_in_maxs":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"gamm.v1beta1.MsgJoinPoolResponse":{"type":"object","properties":{"share_out_amount":{"type":"string"},"token_in":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"gamm.v1beta1.MsgJoinSwapExternAmountIn":{"type":"object","title":"===================== MsgJoinSwapExternAmountIn\nTODO: Rename to MsgJoinSwapExactAmountIn","properties":{"pool_id":{"type":"string","format":"uint64"},"sender":{"type":"string"},"share_out_min_amount":{"type":"string","title":"repeated cosmos.base.v1beta1.Coin tokensIn = 5 [\n (gogoproto.moretags) = \"yaml:\\\"tokens_in\\\"\",\n (gogoproto.nullable) = false\n ];"},"token_in":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"gamm.v1beta1.MsgJoinSwapExternAmountInResponse":{"type":"object","properties":{"share_out_amount":{"type":"string"}}},"gamm.v1beta1.MsgJoinSwapShareAmountOut":{"type":"object","title":"===================== MsgJoinSwapShareAmountOut","properties":{"pool_id":{"type":"string","format":"uint64"},"sender":{"type":"string"},"share_out_amount":{"type":"string"},"token_in_denom":{"type":"string"},"token_in_max_amount":{"type":"string"}}},"gamm.v1beta1.MsgJoinSwapShareAmountOutResponse":{"type":"object","properties":{"token_in_amount":{"type":"string"}}},"gamm.v1beta1.MsgSwapExactAmountIn":{"type":"object","title":"===================== MsgSwapExactAmountIn","properties":{"affiliates":{"type":"array","title":"affiliates are optional fee recipients that receive fees calculated from token_out_min_amount","items":{"type":"object","$ref":"#/definitions/poolmanager.v1beta1.Affiliate"}},"routes":{"type":"array","items":{"type":"object","$ref":"#/definitions/poolmanager.v1beta1.SwapAmountInRoute"}},"sender":{"type":"string"},"token_in":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"token_out_min_amount":{"type":"string"}}},"gamm.v1beta1.MsgSwapExactAmountInResponse":{"type":"object","properties":{"token_out_amount":{"type":"string"}}},"gamm.v1beta1.MsgSwapExactAmountInWithIBCTransfer":{"type":"object","title":"===================== MsgSwapExactAmountInWithIBCTransfer","properties":{"affiliates":{"type":"array","title":"affiliates are optional fee recipients that receive fees calculated from token_out_min_amount","items":{"type":"object","$ref":"#/definitions/poolmanager.v1beta1.Affiliate"}},"ibc_transfer_info":{"$ref":"#/definitions/gamm.v1beta1.IBCTransferInfo"},"routes":{"type":"array","items":{"type":"object","$ref":"#/definitions/poolmanager.v1beta1.SwapAmountInRoute"}},"sender":{"type":"string"},"token_in":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"token_out_min_amount":{"type":"string"}}},"gamm.v1beta1.MsgSwapExactAmountInWithIBCTransferResponse":{"type":"object","properties":{"token_out_amount":{"type":"string"}}},"gamm.v1beta1.MsgSwapExactAmountOut":{"type":"object","properties":{"routes":{"type":"array","items":{"type":"object","$ref":"#/definitions/poolmanager.v1beta1.SwapAmountOutRoute"}},"sender":{"type":"string"},"token_in_max_amount":{"type":"string"},"token_out":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"gamm.v1beta1.MsgSwapExactAmountOutResponse":{"type":"object","properties":{"token_in_amount":{"type":"string"}}},"gamm.v1beta1.Params":{"type":"object","title":"Params holds parameters for the incentives module"},"gamm.v1beta1.ParamsResponse":{"type":"object","properties":{"params":{"$ref":"#/definitions/gamm.v1beta1.Params"}}},"gamm.v1beta1.QueryCalcExitPoolCoinsFromSharesResponse":{"type":"object","properties":{"tokens_out":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"gamm.v1beta1.QueryCalcJoinPoolNoSwapSharesRequest":{"type":"object","title":"=============================== CalcJoinPoolNoSwapShares","properties":{"pool_id":{"type":"string","format":"uint64"},"tokens_in":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"gamm.v1beta1.QueryCalcJoinPoolNoSwapSharesResponse":{"type":"object","properties":{"shares_out":{"type":"string"},"tokens_out":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"gamm.v1beta1.QueryCalcJoinPoolSharesResponse":{"type":"object","properties":{"share_out_amount":{"type":"string"},"tokens_out":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"gamm.v1beta1.QueryNumPoolsResponse":{"type":"object","properties":{"num_pools":{"type":"string","format":"uint64"}}},"gamm.v1beta1.QueryPoolParamsResponse":{"type":"object","properties":{"params":{"$ref":"#/definitions/google.protobuf.Any"}}},"gamm.v1beta1.QueryPoolResponse":{"type":"object","title":"Deprecated: please use the alternative in x/poolmanager","properties":{"pool":{"$ref":"#/definitions/google.protobuf.Any"}}},"gamm.v1beta1.QueryPoolTypeResponse":{"type":"object","properties":{"pool_type":{"type":"string"}}},"gamm.v1beta1.QueryPoolsResponse":{"type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"pools":{"type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}}}},"gamm.v1beta1.QueryPoolsWithFilterResponse":{"type":"object","properties":{"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"},"pools":{"type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}}}},"gamm.v1beta1.QuerySpotPriceResponse":{"description":"QuerySpotPriceResponse defines the gRPC response structure for a SpotPrice\nquery.","type":"object","properties":{"spot_price":{"type":"string","title":"String of the Dec. Ex) 10.203uatom"}}},"gamm.v1beta1.QuerySwapExactAmountInResponse":{"type":"object","properties":{"token_out_amount":{"type":"string"}}},"gamm.v1beta1.QuerySwapExactAmountOutResponse":{"type":"object","properties":{"token_in_amount":{"type":"string"}}},"gamm.v1beta1.QueryTotalLiquidityResponse":{"type":"object","properties":{"liquidity":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"gamm.v1beta1.QueryTotalPoolLiquidityResponse":{"type":"object","title":"Deprecated: please use the alternative in x/poolmanager","properties":{"liquidity":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"gamm.v1beta1.QueryTotalSharesResponse":{"type":"object","properties":{"total_shares":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"gamm.v2.QuerySpotPriceResponse":{"type":"object","title":"Deprecated: please use alternate in x/poolmanager","properties":{"spot_price":{"type":"string","title":"String of the Dec. Ex) 10.203uatom"}}},"google.protobuf.Any":{"type":"object","properties":{"@type":{"type":"string"}},"additionalProperties":{}},"google.rpc.Status":{"type":"object","properties":{"code":{"type":"integer","format":"int32"},"details":{"type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}},"message":{"type":"string"}}},"ibc.applications.interchain_accounts.controller.v1.MsgRegisterInterchainAccount":{"type":"object","title":"MsgRegisterInterchainAccount defines the payload for Msg/RegisterAccount","properties":{"connection_id":{"type":"string"},"ordering":{"$ref":"#/definitions/ibc.core.channel.v1.Order"},"owner":{"type":"string"},"version":{"type":"string"}}},"ibc.applications.interchain_accounts.controller.v1.MsgRegisterInterchainAccountResponse":{"type":"object","title":"MsgRegisterInterchainAccountResponse defines the response for Msg/RegisterAccount","properties":{"channel_id":{"type":"string"},"port_id":{"type":"string"}}},"ibc.applications.interchain_accounts.controller.v1.MsgSendTx":{"type":"object","title":"MsgSendTx defines the payload for Msg/SendTx","properties":{"connection_id":{"type":"string"},"owner":{"type":"string"},"packet_data":{"$ref":"#/definitions/ibc.applications.interchain_accounts.v1.InterchainAccountPacketData"},"relative_timeout":{"description":"Relative timeout timestamp provided will be added to the current block time during transaction execution.\nThe timeout timestamp must be non-zero.","type":"string","format":"uint64"}}},"ibc.applications.interchain_accounts.controller.v1.MsgSendTxResponse":{"type":"object","title":"MsgSendTxResponse defines the response for MsgSendTx","properties":{"sequence":{"type":"string","format":"uint64"}}},"ibc.applications.interchain_accounts.controller.v1.MsgUpdateParams":{"type":"object","title":"MsgUpdateParams defines the payload for Msg/UpdateParams","properties":{"params":{"description":"params defines the 27-interchain-accounts/controller parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.Params"},"signer":{"type":"string","title":"signer address"}}},"ibc.applications.interchain_accounts.controller.v1.MsgUpdateParamsResponse":{"type":"object","title":"MsgUpdateParamsResponse defines the response for Msg/UpdateParams"},"ibc.applications.interchain_accounts.controller.v1.Params":{"description":"Params defines the set of on-chain interchain accounts parameters.\nThe following parameters may be used to disable the controller submodule.","type":"object","properties":{"controller_enabled":{"description":"controller_enabled enables or disables the controller submodule.","type":"boolean"}}},"ibc.applications.interchain_accounts.controller.v1.QueryInterchainAccountResponse":{"description":"QueryInterchainAccountResponse the response type for the Query/InterchainAccount RPC method.","type":"object","properties":{"address":{"type":"string"}}},"ibc.applications.interchain_accounts.controller.v1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/ibc.applications.interchain_accounts.controller.v1.Params"}}},"ibc.applications.interchain_accounts.host.v1.MsgModuleQuerySafe":{"type":"object","title":"MsgModuleQuerySafe defines the payload for Msg/ModuleQuerySafe","properties":{"requests":{"description":"requests defines the module safe queries to execute.","type":"array","items":{"type":"object","$ref":"#/definitions/ibc.applications.interchain_accounts.host.v1.QueryRequest"}},"signer":{"type":"string","title":"signer address"}}},"ibc.applications.interchain_accounts.host.v1.MsgModuleQuerySafeResponse":{"type":"object","title":"MsgModuleQuerySafeResponse defines the response for Msg/ModuleQuerySafe","properties":{"height":{"type":"string","format":"uint64","title":"height at which the responses were queried"},"responses":{"type":"array","title":"protobuf encoded responses for each query","items":{"type":"string","format":"byte"}}}},"ibc.applications.interchain_accounts.host.v1.MsgUpdateParams":{"type":"object","title":"MsgUpdateParams defines the payload for Msg/UpdateParams","properties":{"params":{"description":"params defines the 27-interchain-accounts/host parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/ibc.applications.interchain_accounts.host.v1.Params"},"signer":{"type":"string","title":"signer address"}}},"ibc.applications.interchain_accounts.host.v1.MsgUpdateParamsResponse":{"type":"object","title":"MsgUpdateParamsResponse defines the response for Msg/UpdateParams"},"ibc.applications.interchain_accounts.host.v1.Params":{"description":"Params defines the set of on-chain interchain accounts parameters.\nThe following parameters may be used to disable the host submodule.","type":"object","properties":{"allow_messages":{"description":"allow_messages defines a list of sdk message typeURLs allowed to be executed on a host chain.","type":"array","items":{"type":"string"}},"host_enabled":{"description":"host_enabled enables or disables the host submodule.","type":"boolean"}}},"ibc.applications.interchain_accounts.host.v1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/ibc.applications.interchain_accounts.host.v1.Params"}}},"ibc.applications.interchain_accounts.host.v1.QueryRequest":{"description":"QueryRequest defines the parameters for a particular query request\nby an interchain account.","type":"object","properties":{"data":{"type":"string","format":"byte","title":"data defines the payload of the query request as defined by ADR-021.\nhttps://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-021-protobuf-query-encoding.md#custom-query-registration-and-routing"},"path":{"type":"string","title":"path defines the path of the query request as defined by ADR-021.\nhttps://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-021-protobuf-query-encoding.md#custom-query-registration-and-routing"}}},"ibc.applications.interchain_accounts.v1.InterchainAccountPacketData":{"description":"InterchainAccountPacketData is comprised of a raw transaction, type of transaction and optional memo field.","type":"object","properties":{"data":{"type":"string","format":"byte"},"memo":{"type":"string"},"type":{"$ref":"#/definitions/ibc.applications.interchain_accounts.v1.Type"}}},"ibc.applications.interchain_accounts.v1.Type":{"description":"- TYPE_UNSPECIFIED: Default zero value enumeration\n - TYPE_EXECUTE_TX: Execute a transaction on an interchain accounts host chain","type":"string","title":"Type defines a classification of message issued from a controller chain to its associated interchain accounts\nhost","default":"TYPE_UNSPECIFIED","enum":["TYPE_UNSPECIFIED","TYPE_EXECUTE_TX"]},"ibc.applications.transfer.v1.Denom":{"description":"Denom holds the base denom of a Token and a trace of the chains it was sent through.","type":"object","properties":{"base":{"type":"string","title":"the base token denomination"},"trace":{"type":"array","title":"the trace of the token","items":{"type":"object","$ref":"#/definitions/ibc.applications.transfer.v1.Hop"}}}},"ibc.applications.transfer.v1.Hop":{"type":"object","title":"Hop defines a port ID, channel ID pair specifying a unique \"hop\" in a trace","properties":{"channel_id":{"type":"string"},"port_id":{"type":"string"}}},"ibc.applications.transfer.v1.MsgTransfer":{"type":"object","title":"MsgTransfer defines a msg to transfer fungible tokens (i.e Coins) between\nICS20 enabled chains. See ICS Spec here:\nhttps://github.com/cosmos/ibc/tree/master/spec/app/ics-020-fungible-token-transfer#data-structures","properties":{"encoding":{"type":"string","title":"optional encoding"},"memo":{"type":"string","title":"optional memo"},"receiver":{"type":"string","title":"the recipient address on the destination chain"},"sender":{"type":"string","title":"the sender address"},"source_channel":{"type":"string","title":"the channel by which the packet will be sent"},"source_port":{"type":"string","title":"the port on which the packet will be sent"},"timeout_height":{"description":"Timeout height relative to the current block height.\nIf you are sending with IBC v1 protocol, either timeout_height or timeout_timestamp must be set.\nIf you are sending with IBC v2 protocol, timeout_timestamp must be set, and timeout_height must be omitted.","$ref":"#/definitions/ibc.core.client.v1.Height"},"timeout_timestamp":{"description":"Timeout timestamp in absolute nanoseconds since unix epoch.\nIf you are sending with IBC v1 protocol, either timeout_height or timeout_timestamp must be set.\nIf you are sending with IBC v2 protocol, timeout_timestamp must be set.","type":"string","format":"uint64"},"token":{"title":"token to be transferred","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"ibc.applications.transfer.v1.MsgTransferResponse":{"description":"MsgTransferResponse defines the Msg/Transfer response type.","type":"object","properties":{"sequence":{"type":"string","format":"uint64","title":"sequence number of the transfer packet sent"}}},"ibc.applications.transfer.v1.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"params":{"description":"params defines the transfer parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/ibc.applications.transfer.v1.Params"},"signer":{"type":"string","title":"signer address"}}},"ibc.applications.transfer.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"ibc.applications.transfer.v1.Params":{"description":"Params defines the set of IBC transfer parameters.\nNOTE: To prevent a single token from being transferred, set the\nTransfersEnabled parameter to true and then set the bank module's SendEnabled\nparameter for the denomination to false.","type":"object","properties":{"receive_enabled":{"description":"receive_enabled enables or disables all cross-chain token transfers to this\nchain.","type":"boolean"},"send_enabled":{"description":"send_enabled enables or disables all cross-chain token transfers from this\nchain.","type":"boolean"}}},"ibc.applications.transfer.v1.QueryDenomHashResponse":{"description":"QueryDenomHashResponse is the response type for the Query/DenomHash RPC\nmethod.","type":"object","properties":{"hash":{"description":"hash (in hex format) of the denomination trace information.","type":"string"}}},"ibc.applications.transfer.v1.QueryDenomResponse":{"description":"QueryDenomResponse is the response type for the Query/Denom RPC\nmethod.","type":"object","properties":{"denom":{"description":"denom returns the requested denomination.","$ref":"#/definitions/ibc.applications.transfer.v1.Denom"}}},"ibc.applications.transfer.v1.QueryDenomsResponse":{"description":"QueryDenomsResponse is the response type for the Query/Denoms RPC\nmethod.","type":"object","properties":{"denoms":{"description":"denoms returns all denominations.","type":"array","items":{"type":"object","$ref":"#/definitions/ibc.applications.transfer.v1.Denom"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.applications.transfer.v1.QueryEscrowAddressResponse":{"description":"QueryEscrowAddressResponse is the response type of the EscrowAddress RPC method.","type":"object","properties":{"escrow_address":{"type":"string","title":"the escrow account address"}}},"ibc.applications.transfer.v1.QueryParamsResponse":{"description":"QueryParamsResponse is the response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/ibc.applications.transfer.v1.Params"}}},"ibc.applications.transfer.v1.QueryTotalEscrowForDenomResponse":{"description":"QueryTotalEscrowForDenomResponse is the response type for TotalEscrowForDenom RPC method.","type":"object","properties":{"amount":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"ibc.core.channel.v1.Channel":{"description":"Channel defines pipeline for exactly-once packet delivery between specific\nmodules on separate blockchains, which has at least one end capable of\nsending packets and one end capable of receiving packets.","type":"object","properties":{"connection_hops":{"type":"array","title":"list of connection identifiers, in order, along which packets sent on\nthis channel will travel","items":{"type":"string"}},"counterparty":{"title":"counterparty channel end","$ref":"#/definitions/ibc.core.channel.v1.Counterparty"},"ordering":{"title":"whether the channel is ordered or unordered","$ref":"#/definitions/ibc.core.channel.v1.Order"},"state":{"title":"current state of the channel end","$ref":"#/definitions/ibc.core.channel.v1.State"},"version":{"type":"string","title":"opaque channel version, which is agreed upon during the handshake"}}},"ibc.core.channel.v1.Counterparty":{"type":"object","title":"Counterparty defines a channel end counterparty","properties":{"channel_id":{"type":"string","title":"channel end on the counterparty chain"},"port_id":{"description":"port on the counterparty chain which owns the other end of the channel.","type":"string"}}},"ibc.core.channel.v1.IdentifiedChannel":{"description":"IdentifiedChannel defines a channel with additional port and channel\nidentifier fields.","type":"object","properties":{"channel_id":{"type":"string","title":"channel identifier"},"connection_hops":{"type":"array","title":"list of connection identifiers, in order, along which packets sent on\nthis channel will travel","items":{"type":"string"}},"counterparty":{"title":"counterparty channel end","$ref":"#/definitions/ibc.core.channel.v1.Counterparty"},"ordering":{"title":"whether the channel is ordered or unordered","$ref":"#/definitions/ibc.core.channel.v1.Order"},"port_id":{"type":"string","title":"port identifier"},"state":{"title":"current state of the channel end","$ref":"#/definitions/ibc.core.channel.v1.State"},"version":{"type":"string","title":"opaque channel version, which is agreed upon during the handshake"}}},"ibc.core.channel.v1.MsgAcknowledgement":{"type":"object","title":"MsgAcknowledgement receives incoming IBC acknowledgement","properties":{"acknowledgement":{"type":"string","format":"byte"},"packet":{"$ref":"#/definitions/ibc.core.channel.v1.Packet"},"proof_acked":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgAcknowledgementResponse":{"description":"MsgAcknowledgementResponse defines the Msg/Acknowledgement response type.","type":"object","properties":{"result":{"$ref":"#/definitions/ibc.core.channel.v1.ResponseResultType"}}},"ibc.core.channel.v1.MsgChannelCloseConfirm":{"description":"MsgChannelCloseConfirm defines a msg sent by a Relayer to Chain B\nto acknowledge the change of channel state to CLOSED on Chain A.","type":"object","properties":{"channel_id":{"type":"string"},"port_id":{"type":"string"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_init":{"type":"string","format":"byte"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelCloseConfirmResponse":{"description":"MsgChannelCloseConfirmResponse defines the Msg/ChannelCloseConfirm response\ntype.","type":"object"},"ibc.core.channel.v1.MsgChannelCloseInit":{"description":"MsgChannelCloseInit defines a msg sent by a Relayer to Chain A\nto close a channel with Chain B.","type":"object","properties":{"channel_id":{"type":"string"},"port_id":{"type":"string"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelCloseInitResponse":{"description":"MsgChannelCloseInitResponse defines the Msg/ChannelCloseInit response type.","type":"object"},"ibc.core.channel.v1.MsgChannelOpenAck":{"description":"MsgChannelOpenAck defines a msg sent by a Relayer to Chain A to acknowledge\nthe change of channel state to TRYOPEN on Chain B.","type":"object","properties":{"channel_id":{"type":"string"},"counterparty_channel_id":{"type":"string"},"counterparty_version":{"type":"string"},"port_id":{"type":"string"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_try":{"type":"string","format":"byte"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelOpenAckResponse":{"description":"MsgChannelOpenAckResponse defines the Msg/ChannelOpenAck response type.","type":"object"},"ibc.core.channel.v1.MsgChannelOpenConfirm":{"description":"MsgChannelOpenConfirm defines a msg sent by a Relayer to Chain B to\nacknowledge the change of channel state to OPEN on Chain A.","type":"object","properties":{"channel_id":{"type":"string"},"port_id":{"type":"string"},"proof_ack":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelOpenConfirmResponse":{"description":"MsgChannelOpenConfirmResponse defines the Msg/ChannelOpenConfirm response\ntype.","type":"object"},"ibc.core.channel.v1.MsgChannelOpenInit":{"description":"MsgChannelOpenInit defines an sdk.Msg to initialize a channel handshake. It\nis called by a relayer on Chain A.","type":"object","properties":{"channel":{"$ref":"#/definitions/ibc.core.channel.v1.Channel"},"port_id":{"type":"string"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelOpenInitResponse":{"description":"MsgChannelOpenInitResponse defines the Msg/ChannelOpenInit response type.","type":"object","properties":{"channel_id":{"type":"string"},"version":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelOpenTry":{"description":"MsgChannelOpenInit defines a msg sent by a Relayer to try to open a channel\non Chain B. The version field within the Channel field has been deprecated. Its\nvalue will be ignored by core IBC.","type":"object","properties":{"channel":{"description":"NOTE: the version field within the channel has been deprecated. Its value will be ignored by core IBC.","$ref":"#/definitions/ibc.core.channel.v1.Channel"},"counterparty_version":{"type":"string"},"port_id":{"type":"string"},"previous_channel_id":{"description":"Deprecated: this field is unused. Crossing hello's are no longer supported in core IBC.","type":"string"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_init":{"type":"string","format":"byte"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgChannelOpenTryResponse":{"description":"MsgChannelOpenTryResponse defines the Msg/ChannelOpenTry response type.","type":"object","properties":{"channel_id":{"type":"string"},"version":{"type":"string"}}},"ibc.core.channel.v1.MsgRecvPacket":{"type":"object","title":"MsgRecvPacket receives incoming IBC packet","properties":{"packet":{"$ref":"#/definitions/ibc.core.channel.v1.Packet"},"proof_commitment":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgRecvPacketResponse":{"description":"MsgRecvPacketResponse defines the Msg/RecvPacket response type.","type":"object","properties":{"result":{"$ref":"#/definitions/ibc.core.channel.v1.ResponseResultType"}}},"ibc.core.channel.v1.MsgTimeout":{"type":"object","title":"MsgTimeout receives timed-out packet","properties":{"next_sequence_recv":{"type":"string","format":"uint64"},"packet":{"$ref":"#/definitions/ibc.core.channel.v1.Packet"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_unreceived":{"type":"string","format":"byte"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgTimeoutOnClose":{"description":"MsgTimeoutOnClose timed-out packet upon counterparty channel closure.","type":"object","properties":{"next_sequence_recv":{"type":"string","format":"uint64"},"packet":{"$ref":"#/definitions/ibc.core.channel.v1.Packet"},"proof_close":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_unreceived":{"type":"string","format":"byte"},"signer":{"type":"string"}}},"ibc.core.channel.v1.MsgTimeoutOnCloseResponse":{"description":"MsgTimeoutOnCloseResponse defines the Msg/TimeoutOnClose response type.","type":"object","properties":{"result":{"$ref":"#/definitions/ibc.core.channel.v1.ResponseResultType"}}},"ibc.core.channel.v1.MsgTimeoutResponse":{"description":"MsgTimeoutResponse defines the Msg/Timeout response type.","type":"object","properties":{"result":{"$ref":"#/definitions/ibc.core.channel.v1.ResponseResultType"}}},"ibc.core.channel.v1.Order":{"description":"- ORDER_NONE_UNSPECIFIED: zero-value for channel ordering\n - ORDER_UNORDERED: packets can be delivered in any order, which may differ from the order in\nwhich they were sent.\n - ORDER_ORDERED: packets are delivered exactly in the order which they were sent","type":"string","title":"Order defines if a channel is ORDERED or UNORDERED","default":"ORDER_NONE_UNSPECIFIED","enum":["ORDER_NONE_UNSPECIFIED","ORDER_UNORDERED","ORDER_ORDERED"]},"ibc.core.channel.v1.Packet":{"type":"object","title":"Packet defines a type that carries data across different chains through IBC","properties":{"data":{"type":"string","format":"byte","title":"actual opaque bytes transferred directly to the application module"},"destination_channel":{"description":"identifies the channel end on the receiving chain.","type":"string"},"destination_port":{"description":"identifies the port on the receiving chain.","type":"string"},"sequence":{"description":"number corresponds to the order of sends and receives, where a Packet\nwith an earlier sequence number must be sent and received before a Packet\nwith a later sequence number.","type":"string","format":"uint64"},"source_channel":{"description":"identifies the channel end on the sending chain.","type":"string"},"source_port":{"description":"identifies the port on the sending chain.","type":"string"},"timeout_height":{"title":"block height after which the packet times out","$ref":"#/definitions/ibc.core.client.v1.Height"},"timeout_timestamp":{"type":"string","format":"uint64","title":"block timestamp (in nanoseconds) after which the packet times out"}}},"ibc.core.channel.v1.PacketState":{"description":"PacketState defines the generic type necessary to retrieve and store\npacket commitments, acknowledgements, and receipts.\nCaller is responsible for knowing the context necessary to interpret this\nstate as a commitment, acknowledgement, or a receipt.","type":"object","properties":{"channel_id":{"description":"channel unique identifier.","type":"string"},"data":{"description":"embedded data that represents packet state.","type":"string","format":"byte"},"port_id":{"description":"channel port identifier.","type":"string"},"sequence":{"description":"packet sequence.","type":"string","format":"uint64"}}},"ibc.core.channel.v1.QueryChannelClientStateResponse":{"type":"object","title":"QueryChannelClientStateResponse is the Response type for the\nQuery/QueryChannelClientState RPC method","properties":{"identified_client_state":{"title":"client state associated with the channel","$ref":"#/definitions/ibc.core.client.v1.IdentifiedClientState"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v1.QueryChannelConsensusStateResponse":{"type":"object","title":"QueryChannelClientStateResponse is the Response type for the\nQuery/QueryChannelClientState RPC method","properties":{"client_id":{"type":"string","title":"client ID associated with the consensus state"},"consensus_state":{"title":"consensus state associated with the channel","$ref":"#/definitions/google.protobuf.Any"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v1.QueryChannelResponse":{"description":"QueryChannelResponse is the response type for the Query/Channel RPC method.\nBesides the Channel end, it includes a proof and the height from which the\nproof was retrieved.","type":"object","properties":{"channel":{"title":"channel associated with the request identifiers","$ref":"#/definitions/ibc.core.channel.v1.Channel"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v1.QueryChannelsResponse":{"description":"QueryChannelsResponse is the response type for the Query/Channels RPC method.","type":"object","properties":{"channels":{"description":"list of stored channels of the chain.","type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.channel.v1.IdentifiedChannel"}},"height":{"title":"query block height","$ref":"#/definitions/ibc.core.client.v1.Height"},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.channel.v1.QueryConnectionChannelsResponse":{"type":"object","title":"QueryConnectionChannelsResponse is the Response type for the\nQuery/QueryConnectionChannels RPC method","properties":{"channels":{"description":"list of channels associated with a connection.","type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.channel.v1.IdentifiedChannel"}},"height":{"title":"query block height","$ref":"#/definitions/ibc.core.client.v1.Height"},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.channel.v1.QueryNextSequenceReceiveResponse":{"type":"object","title":"QuerySequenceResponse is the response type for the\nQuery/QueryNextSequenceReceiveResponse RPC method","properties":{"next_sequence_receive":{"type":"string","format":"uint64","title":"next sequence receive number"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v1.QueryNextSequenceSendResponse":{"type":"object","title":"QueryNextSequenceSendResponse is the request type for the\nQuery/QueryNextSequenceSend RPC method","properties":{"next_sequence_send":{"type":"string","format":"uint64","title":"next sequence send number"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v1.QueryPacketAcknowledgementResponse":{"type":"object","title":"QueryPacketAcknowledgementResponse defines the client query response for a\npacket which also includes a proof and the height from which the\nproof was retrieved","properties":{"acknowledgement":{"type":"string","format":"byte","title":"packet associated with the request fields"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v1.QueryPacketAcknowledgementsResponse":{"type":"object","title":"QueryPacketAcknowledgemetsResponse is the request type for the\nQuery/QueryPacketAcknowledgements RPC method","properties":{"acknowledgements":{"type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.channel.v1.PacketState"}},"height":{"title":"query block height","$ref":"#/definitions/ibc.core.client.v1.Height"},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.channel.v1.QueryPacketCommitmentResponse":{"type":"object","title":"QueryPacketCommitmentResponse defines the client query response for a packet\nwhich also includes a proof and the height from which the proof was\nretrieved","properties":{"commitment":{"type":"string","format":"byte","title":"packet associated with the request fields"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v1.QueryPacketCommitmentsResponse":{"type":"object","title":"QueryPacketCommitmentsResponse is the request type for the\nQuery/QueryPacketCommitments RPC method","properties":{"commitments":{"type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.channel.v1.PacketState"}},"height":{"title":"query block height","$ref":"#/definitions/ibc.core.client.v1.Height"},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.channel.v1.QueryPacketReceiptResponse":{"type":"object","title":"QueryPacketReceiptResponse defines the client query response for a packet\nreceipt which also includes a proof, and the height from which the proof was\nretrieved","properties":{"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"},"received":{"type":"boolean","title":"success flag for if receipt exists"}}},"ibc.core.channel.v1.QueryUnreceivedAcksResponse":{"type":"object","title":"QueryUnreceivedAcksResponse is the response type for the\nQuery/UnreceivedAcks RPC method","properties":{"height":{"title":"query block height","$ref":"#/definitions/ibc.core.client.v1.Height"},"sequences":{"type":"array","title":"list of unreceived acknowledgement sequences","items":{"type":"string","format":"uint64"}}}},"ibc.core.channel.v1.QueryUnreceivedPacketsResponse":{"type":"object","title":"QueryUnreceivedPacketsResponse is the response type for the\nQuery/UnreceivedPacketCommitments RPC method","properties":{"height":{"title":"query block height","$ref":"#/definitions/ibc.core.client.v1.Height"},"sequences":{"type":"array","title":"list of unreceived packet sequences","items":{"type":"string","format":"uint64"}}}},"ibc.core.channel.v1.ResponseResultType":{"description":"- RESPONSE_RESULT_TYPE_UNSPECIFIED: Default zero value enumeration\n - RESPONSE_RESULT_TYPE_NOOP: The message did not call the IBC application callbacks (because, for example, the packet had already been relayed)\n - RESPONSE_RESULT_TYPE_SUCCESS: The message was executed successfully\n - RESPONSE_RESULT_TYPE_FAILURE: The message was executed unsuccessfully","type":"string","title":"ResponseResultType defines the possible outcomes of the execution of a message","default":"RESPONSE_RESULT_TYPE_UNSPECIFIED","enum":["RESPONSE_RESULT_TYPE_UNSPECIFIED","RESPONSE_RESULT_TYPE_NOOP","RESPONSE_RESULT_TYPE_SUCCESS","RESPONSE_RESULT_TYPE_FAILURE"]},"ibc.core.channel.v1.State":{"description":"State defines if a channel is in one of the following states:\nCLOSED, INIT, TRYOPEN, OPEN, or UNINITIALIZED.\n\n - STATE_UNINITIALIZED_UNSPECIFIED: Default State\n - STATE_INIT: A channel has just started the opening handshake.\n - STATE_TRYOPEN: A channel has acknowledged the handshake step on the counterparty chain.\n - STATE_OPEN: A channel has completed the handshake. Open channels are\nready to send and receive packets.\n - STATE_CLOSED: A channel has been closed and can no longer be used to send or receive\npackets.","type":"string","default":"STATE_UNINITIALIZED_UNSPECIFIED","enum":["STATE_UNINITIALIZED_UNSPECIFIED","STATE_INIT","STATE_TRYOPEN","STATE_OPEN","STATE_CLOSED"]},"ibc.core.channel.v2.Acknowledgement":{"description":"Acknowledgement contains a list of all ack results associated with a single packet.\nIn the case of a successful receive, the acknowledgement will contain an app acknowledgement\nfor each application that received a payload in the same order that the payloads were sent\nin the packet.\nIf the receive is not successful, the acknowledgement will contain a single app acknowledgment\nwhich will be a constant error acknowledgment as defined by the IBC v2 protocol.","type":"object","properties":{"app_acknowledgements":{"type":"array","items":{"type":"string","format":"byte"}}}},"ibc.core.channel.v2.MsgAcknowledgement":{"description":"MsgAcknowledgement receives incoming IBC acknowledgement.","type":"object","properties":{"acknowledgement":{"$ref":"#/definitions/ibc.core.channel.v2.Acknowledgement"},"packet":{"$ref":"#/definitions/ibc.core.channel.v2.Packet"},"proof_acked":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"signer":{"type":"string"}}},"ibc.core.channel.v2.MsgAcknowledgementResponse":{"description":"MsgAcknowledgementResponse defines the Msg/Acknowledgement response type.","type":"object","properties":{"result":{"$ref":"#/definitions/ibc.core.channel.v2.ResponseResultType"}}},"ibc.core.channel.v2.MsgRecvPacket":{"description":"MsgRecvPacket receives an incoming IBC packet.","type":"object","properties":{"packet":{"$ref":"#/definitions/ibc.core.channel.v2.Packet"},"proof_commitment":{"type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"signer":{"type":"string"}}},"ibc.core.channel.v2.MsgRecvPacketResponse":{"description":"MsgRecvPacketResponse defines the Msg/RecvPacket response type.","type":"object","properties":{"result":{"$ref":"#/definitions/ibc.core.channel.v2.ResponseResultType"}}},"ibc.core.channel.v2.MsgSendPacket":{"description":"MsgSendPacket sends an outgoing IBC packet.","type":"object","properties":{"payloads":{"type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.channel.v2.Payload"}},"signer":{"type":"string"},"source_client":{"type":"string"},"timeout_timestamp":{"type":"string","format":"uint64"}}},"ibc.core.channel.v2.MsgSendPacketResponse":{"description":"MsgSendPacketResponse defines the Msg/SendPacket response type.","type":"object","properties":{"sequence":{"type":"string","format":"uint64"}}},"ibc.core.channel.v2.MsgTimeout":{"type":"object","title":"MsgTimeout receives timed-out packet","properties":{"packet":{"$ref":"#/definitions/ibc.core.channel.v2.Packet"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_unreceived":{"type":"string","format":"byte"},"signer":{"type":"string"}}},"ibc.core.channel.v2.MsgTimeoutResponse":{"description":"MsgTimeoutResponse defines the Msg/Timeout response type.","type":"object","properties":{"result":{"$ref":"#/definitions/ibc.core.channel.v2.ResponseResultType"}}},"ibc.core.channel.v2.Packet":{"type":"object","title":"Packet defines a type that carries data across different chains through IBC","properties":{"destination_client":{"description":"identifies the receiving client on the receiving chain.","type":"string"},"payloads":{"description":"a list of payloads, each one for a specific application.","type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.channel.v2.Payload"}},"sequence":{"description":"number corresponds to the order of sends and receives, where a Packet\nwith an earlier sequence number must be sent and received before a Packet\nwith a later sequence number.","type":"string","format":"uint64"},"source_client":{"description":"identifies the sending client on the sending chain.","type":"string"},"timeout_timestamp":{"description":"timeout timestamp in seconds after which the packet times out.","type":"string","format":"uint64"}}},"ibc.core.channel.v2.PacketState":{"description":"PacketState defines the generic type necessary to retrieve and store\npacket commitments, acknowledgements, and receipts.\nCaller is responsible for knowing the context necessary to interpret this\nstate as a commitment, acknowledgement, or a receipt.","type":"object","properties":{"client_id":{"description":"client unique identifier.","type":"string"},"data":{"description":"embedded data that represents packet state.","type":"string","format":"byte"},"sequence":{"description":"packet sequence.","type":"string","format":"uint64"}}},"ibc.core.channel.v2.Payload":{"type":"object","title":"Payload contains the source and destination ports and payload for the application (version, encoding, raw bytes)","properties":{"destination_port":{"description":"specifies the destination port of the packet.","type":"string"},"encoding":{"description":"the encoding used for the provided value.","type":"string"},"source_port":{"description":"specifies the source port of the packet.","type":"string"},"value":{"description":"the raw bytes for the payload.","type":"string","format":"byte"},"version":{"description":"version of the specified application.","type":"string"}}},"ibc.core.channel.v2.QueryNextSequenceSendResponse":{"type":"object","title":"QueryNextSequenceSendResponse is the response type for the Query/QueryNextSequenceSend RPC method","properties":{"next_sequence_send":{"type":"string","format":"uint64","title":"next sequence send number"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v2.QueryPacketAcknowledgementResponse":{"description":"QueryPacketAcknowledgementResponse is the response type for the Query/PacketAcknowledgement RPC method.","type":"object","properties":{"acknowledgement":{"type":"string","format":"byte","title":"acknowledgement associated with the request fields"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v2.QueryPacketAcknowledgementsResponse":{"type":"object","title":"QueryPacketAcknowledgemetsResponse is the request type for the\nQuery/QueryPacketAcknowledgements RPC method","properties":{"acknowledgements":{"type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.channel.v2.PacketState"}},"height":{"title":"query block height","$ref":"#/definitions/ibc.core.client.v1.Height"},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.channel.v2.QueryPacketCommitmentResponse":{"description":"QueryPacketCommitmentResponse is the response type for the Query/PacketCommitment RPC method.","type":"object","properties":{"commitment":{"type":"string","format":"byte","title":"packet associated with the request fields"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.channel.v2.QueryPacketCommitmentsResponse":{"description":"QueryPacketCommitmentResponse is the response type for the Query/PacketCommitment RPC method.","type":"object","properties":{"commitments":{"description":"collection of packet commitments for the requested channel identifier.","type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.channel.v2.PacketState"}},"height":{"description":"query block height.","$ref":"#/definitions/ibc.core.client.v1.Height"},"pagination":{"description":"pagination response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.channel.v2.QueryPacketReceiptResponse":{"description":"QueryPacketReceiptResponse is the response type for the Query/PacketReceipt RPC method.","type":"object","properties":{"proof":{"type":"string","format":"byte","title":"merkle proof of existence or absence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"},"received":{"type":"boolean","title":"success flag for if receipt exists"}}},"ibc.core.channel.v2.QueryUnreceivedAcksResponse":{"type":"object","title":"QueryUnreceivedAcksResponse is the response type for the\nQuery/UnreceivedAcks RPC method","properties":{"height":{"title":"query block height","$ref":"#/definitions/ibc.core.client.v1.Height"},"sequences":{"type":"array","title":"list of unreceived acknowledgement sequences","items":{"type":"string","format":"uint64"}}}},"ibc.core.channel.v2.QueryUnreceivedPacketsResponse":{"type":"object","title":"QueryUnreceivedPacketsResponse is the response type for the Query/UnreceivedPacketCommitments RPC method","properties":{"height":{"title":"query block height","$ref":"#/definitions/ibc.core.client.v1.Height"},"sequences":{"type":"array","title":"list of unreceived packet sequences","items":{"type":"string","format":"uint64"}}}},"ibc.core.channel.v2.ResponseResultType":{"description":"- RESPONSE_RESULT_TYPE_UNSPECIFIED: Default zero value enumeration\n - RESPONSE_RESULT_TYPE_NOOP: The message did not call the IBC application callbacks (because, for example, the packet had already been relayed)\n - RESPONSE_RESULT_TYPE_SUCCESS: The message was executed successfully\n - RESPONSE_RESULT_TYPE_FAILURE: The message was executed unsuccessfully","type":"string","title":"ResponseResultType defines the possible outcomes of the execution of a message","default":"RESPONSE_RESULT_TYPE_UNSPECIFIED","enum":["RESPONSE_RESULT_TYPE_UNSPECIFIED","RESPONSE_RESULT_TYPE_NOOP","RESPONSE_RESULT_TYPE_SUCCESS","RESPONSE_RESULT_TYPE_FAILURE"]},"ibc.core.client.v1.ConsensusStateWithHeight":{"description":"ConsensusStateWithHeight defines a consensus state with an additional height\nfield.","type":"object","properties":{"consensus_state":{"title":"consensus state","$ref":"#/definitions/google.protobuf.Any"},"height":{"title":"consensus state height","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.client.v1.Height":{"description":"Normally the RevisionHeight is incremented at each height while keeping\nRevisionNumber the same. However some consensus algorithms may choose to\nreset the height in certain conditions e.g. hard forks, state-machine\nbreaking changes In these cases, the RevisionNumber is incremented so that\nheight continues to be monitonically increasing even as the RevisionHeight\ngets reset\n\nPlease note that json tags for generated Go code are overridden to explicitly exclude the omitempty jsontag.\nThis enforces the Go json marshaller to always emit zero values for both revision_number and revision_height.","type":"object","title":"Height is a monotonically increasing data type\nthat can be compared against another Height for the purposes of updating and\nfreezing clients","properties":{"revision_height":{"type":"string","format":"uint64","title":"the height within the given revision"},"revision_number":{"type":"string","format":"uint64","title":"the revision that the client is currently on"}}},"ibc.core.client.v1.IdentifiedClientState":{"description":"IdentifiedClientState defines a client state with an additional client\nidentifier field.","type":"object","properties":{"client_id":{"type":"string","title":"client identifier"},"client_state":{"title":"client state","$ref":"#/definitions/google.protobuf.Any"}}},"ibc.core.client.v1.MsgCreateClient":{"type":"object","title":"MsgCreateClient defines a message to create an IBC client","properties":{"client_state":{"title":"light client state","$ref":"#/definitions/google.protobuf.Any"},"consensus_state":{"description":"consensus state associated with the client that corresponds to a given\nheight.","$ref":"#/definitions/google.protobuf.Any"},"signer":{"type":"string","title":"signer address"}}},"ibc.core.client.v1.MsgCreateClientResponse":{"description":"MsgCreateClientResponse defines the Msg/CreateClient response type.","type":"object","properties":{"client_id":{"type":"string"}}},"ibc.core.client.v1.MsgDeleteClientCreator":{"type":"object","title":"MsgDeleteClientCreator defines a message to delete the client creator of a client","properties":{"client_id":{"type":"string","title":"client identifier"},"signer":{"type":"string","title":"signer address"}}},"ibc.core.client.v1.MsgDeleteClientCreatorResponse":{"description":"MsgDeleteClientCreatorResponse defines the Msg/DeleteClientCreator response type.","type":"object"},"ibc.core.client.v1.MsgIBCSoftwareUpgrade":{"type":"object","title":"MsgIBCSoftwareUpgrade defines the message used to schedule an upgrade of an IBC client using a v1 governance proposal","properties":{"plan":{"$ref":"#/definitions/cosmos.upgrade.v1beta1.Plan"},"signer":{"type":"string","title":"signer address"},"upgraded_client_state":{"description":"An UpgradedClientState must be provided to perform an IBC breaking upgrade.\nThis will make the chain commit to the correct upgraded (self) client state\nbefore the upgrade occurs, so that connecting chains can verify that the\nnew upgraded client is valid by verifying a proof on the previous version\nof the chain. This will allow IBC connections to persist smoothly across\nplanned chain upgrades. Correspondingly, the UpgradedClientState field has been\ndeprecated in the Cosmos SDK to allow for this logic to exist solely in\nthe 02-client module.","$ref":"#/definitions/google.protobuf.Any"}}},"ibc.core.client.v1.MsgIBCSoftwareUpgradeResponse":{"description":"MsgIBCSoftwareUpgradeResponse defines the Msg/IBCSoftwareUpgrade response type.","type":"object"},"ibc.core.client.v1.MsgRecoverClient":{"description":"MsgRecoverClient defines the message used to recover a frozen or expired client.","type":"object","properties":{"signer":{"type":"string","title":"signer address"},"subject_client_id":{"type":"string","title":"the client identifier for the client to be updated if the proposal passes"},"substitute_client_id":{"type":"string","title":"the substitute client identifier for the client which will replace the subject\nclient"}}},"ibc.core.client.v1.MsgRecoverClientResponse":{"description":"MsgRecoverClientResponse defines the Msg/RecoverClient response type.","type":"object"},"ibc.core.client.v1.MsgSubmitMisbehaviour":{"description":"MsgSubmitMisbehaviour defines an sdk.Msg type that submits Evidence for\nlight client misbehaviour.\nThis message has been deprecated. Use MsgUpdateClient instead.","type":"object","properties":{"client_id":{"type":"string","title":"client unique identifier"},"misbehaviour":{"title":"misbehaviour used for freezing the light client","$ref":"#/definitions/google.protobuf.Any"},"signer":{"type":"string","title":"signer address"}}},"ibc.core.client.v1.MsgSubmitMisbehaviourResponse":{"description":"MsgSubmitMisbehaviourResponse defines the Msg/SubmitMisbehaviour response\ntype.","type":"object"},"ibc.core.client.v1.MsgUpdateClient":{"description":"MsgUpdateClient defines an sdk.Msg to update a IBC client state using\nthe given client message.","type":"object","properties":{"client_id":{"type":"string","title":"client unique identifier"},"client_message":{"title":"client message to update the light client","$ref":"#/definitions/google.protobuf.Any"},"signer":{"type":"string","title":"signer address"}}},"ibc.core.client.v1.MsgUpdateClientResponse":{"description":"MsgUpdateClientResponse defines the Msg/UpdateClient response type.","type":"object"},"ibc.core.client.v1.MsgUpdateParams":{"description":"MsgUpdateParams defines the sdk.Msg type to update the client parameters.","type":"object","properties":{"params":{"description":"params defines the client parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/ibc.core.client.v1.Params"},"signer":{"type":"string","title":"signer address"}}},"ibc.core.client.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the MsgUpdateParams response type.","type":"object"},"ibc.core.client.v1.MsgUpgradeClient":{"type":"object","title":"MsgUpgradeClient defines an sdk.Msg to upgrade an IBC client to a new client\nstate","properties":{"client_id":{"type":"string","title":"client unique identifier"},"client_state":{"title":"upgraded client state","$ref":"#/definitions/google.protobuf.Any"},"consensus_state":{"title":"upgraded consensus state, only contains enough information to serve as a\nbasis of trust in update logic","$ref":"#/definitions/google.protobuf.Any"},"proof_upgrade_client":{"type":"string","format":"byte","title":"proof that old chain committed to new client"},"proof_upgrade_consensus_state":{"type":"string","format":"byte","title":"proof that old chain committed to new consensus state"},"signer":{"type":"string","title":"signer address"}}},"ibc.core.client.v1.MsgUpgradeClientResponse":{"description":"MsgUpgradeClientResponse defines the Msg/UpgradeClient response type.","type":"object"},"ibc.core.client.v1.Params":{"description":"Params defines the set of IBC light client parameters.","type":"object","properties":{"allowed_clients":{"description":"allowed_clients defines the list of allowed client state types which can be created\nand interacted with. If a client type is removed from the allowed clients list, usage\nof this client will be disabled until it is added again to the list.","type":"array","items":{"type":"string"}}}},"ibc.core.client.v1.QueryClientCreatorResponse":{"description":"QueryClientCreatorResponse is the response type for the Query/ClientCreator RPC\nmethod.","type":"object","properties":{"creator":{"type":"string","title":"creator of the client"}}},"ibc.core.client.v1.QueryClientParamsResponse":{"description":"QueryClientParamsResponse is the response type for the Query/ClientParams RPC\nmethod.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/ibc.core.client.v1.Params"}}},"ibc.core.client.v1.QueryClientStateResponse":{"description":"QueryClientStateResponse is the response type for the Query/ClientState RPC\nmethod. Besides the client state, it includes a proof and the height from\nwhich the proof was retrieved.","type":"object","properties":{"client_state":{"title":"client state associated with the request identifier","$ref":"#/definitions/google.protobuf.Any"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.client.v1.QueryClientStatesResponse":{"description":"QueryClientStatesResponse is the response type for the Query/ClientStates RPC\nmethod.","type":"object","properties":{"client_states":{"description":"list of stored ClientStates of the chain.","type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.client.v1.IdentifiedClientState"}},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.client.v1.QueryClientStatusResponse":{"description":"QueryClientStatusResponse is the response type for the Query/ClientStatus RPC\nmethod. It returns the current status of the IBC client.","type":"object","properties":{"status":{"type":"string"}}},"ibc.core.client.v1.QueryConsensusStateHeightsResponse":{"type":"object","title":"QueryConsensusStateHeightsResponse is the response type for the\nQuery/ConsensusStateHeights RPC method","properties":{"consensus_state_heights":{"type":"array","title":"consensus state heights","items":{"type":"object","$ref":"#/definitions/ibc.core.client.v1.Height"}},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.client.v1.QueryConsensusStateResponse":{"type":"object","title":"QueryConsensusStateResponse is the response type for the Query/ConsensusState\nRPC method","properties":{"consensus_state":{"title":"consensus state associated with the client identifier at the given height","$ref":"#/definitions/google.protobuf.Any"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.client.v1.QueryConsensusStatesResponse":{"type":"object","title":"QueryConsensusStatesResponse is the response type for the\nQuery/ConsensusStates RPC method","properties":{"consensus_states":{"type":"array","title":"consensus states associated with the identifier","items":{"type":"object","$ref":"#/definitions/ibc.core.client.v1.ConsensusStateWithHeight"}},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.client.v1.QueryUpgradedClientStateResponse":{"description":"QueryUpgradedClientStateResponse is the response type for the\nQuery/UpgradedClientState RPC method.","type":"object","properties":{"upgraded_client_state":{"title":"client state associated with the request identifier","$ref":"#/definitions/google.protobuf.Any"}}},"ibc.core.client.v1.QueryUpgradedConsensusStateResponse":{"description":"QueryUpgradedConsensusStateResponse is the response type for the\nQuery/UpgradedConsensusState RPC method.","type":"object","properties":{"upgraded_consensus_state":{"title":"Consensus state associated with the request identifier","$ref":"#/definitions/google.protobuf.Any"}}},"ibc.core.client.v1.QueryVerifyMembershipRequest":{"type":"object","title":"QueryVerifyMembershipRequest is the request type for the Query/VerifyMembership RPC method","properties":{"block_delay":{"type":"string","format":"uint64","title":"optional block delay"},"client_id":{"description":"client unique identifier.","type":"string"},"merkle_path":{"description":"the commitment key path.","$ref":"#/definitions/ibc.core.commitment.v2.MerklePath"},"proof":{"description":"the proof to be verified by the client.","type":"string","format":"byte"},"proof_height":{"description":"the height of the commitment root at which the proof is verified.","$ref":"#/definitions/ibc.core.client.v1.Height"},"time_delay":{"type":"string","format":"uint64","title":"optional time delay"},"value":{"description":"the value which is proven.","type":"string","format":"byte"}}},"ibc.core.client.v1.QueryVerifyMembershipResponse":{"type":"object","title":"QueryVerifyMembershipResponse is the response type for the Query/VerifyMembership RPC method","properties":{"success":{"description":"boolean indicating success or failure of proof verification.","type":"boolean"}}},"ibc.core.client.v2.Config":{"type":"object","title":"Config is a **per-client** configuration struct that sets which relayers are allowed to relay v2 IBC messages\nfor a given client.\nIf it is set, then only relayers in the allow list can send v2 messages\nIf it is not set, then the client allows permissionless relaying of v2 messages","properties":{"allowed_relayers":{"type":"array","title":"allowed_relayers defines the set of allowed relayers for IBC V2 protocol for the given client","items":{"type":"string"}}}},"ibc.core.client.v2.CounterpartyInfo":{"type":"object","title":"CounterpartyInfo defines the key that the counterparty will use to message our client","properties":{"client_id":{"type":"string","title":"client identifier is the identifier used to send packet messages to our client"},"merkle_prefix":{"type":"array","title":"merkle prefix key is the prefix that ics provable keys are stored under","items":{"type":"string","format":"byte"}}}},"ibc.core.client.v2.MsgRegisterCounterparty":{"type":"object","title":"MsgRegisterCounterparty defines a message to register a counterparty on a client","properties":{"client_id":{"type":"string","title":"client identifier"},"counterparty_client_id":{"type":"string","title":"counterparty client identifier"},"counterparty_merkle_prefix":{"type":"array","title":"counterparty merkle prefix","items":{"type":"string","format":"byte"}},"signer":{"type":"string","title":"signer address"}}},"ibc.core.client.v2.MsgRegisterCounterpartyResponse":{"description":"MsgRegisterCounterpartyResponse defines the Msg/RegisterCounterparty response type.","type":"object"},"ibc.core.client.v2.MsgUpdateClientConfig":{"type":"object","title":"MsgUpdateClientConfig defines the sdk.Msg type to update the configuration for a given client","properties":{"client_id":{"type":"string","title":"client identifier"},"config":{"description":"NOTE: All fields in the config must be supplied.","title":"allowed relayers","$ref":"#/definitions/ibc.core.client.v2.Config"},"signer":{"type":"string","title":"signer address"}}},"ibc.core.client.v2.MsgUpdateClientConfigResponse":{"description":"MsgUpdateClientConfigResponse defines the MsgUpdateClientConfig response type.","type":"object"},"ibc.core.client.v2.QueryConfigResponse":{"type":"object","title":"QueryConfigResponse is the response type for the Query/Config RPC method","properties":{"config":{"$ref":"#/definitions/ibc.core.client.v2.Config"}}},"ibc.core.client.v2.QueryCounterpartyInfoResponse":{"description":"QueryCounterpartyInfoResponse is the response type for the\nQuery/CounterpartyInfo RPC method.","type":"object","properties":{"counterparty_info":{"$ref":"#/definitions/ibc.core.client.v2.CounterpartyInfo"}}},"ibc.core.commitment.v1.MerklePrefix":{"type":"object","title":"MerklePrefix is merkle path prefixed to the key.\nThe constructed key from the Path and the key will be append(Path.KeyPath,\nappend(Path.KeyPrefix, key...))","properties":{"key_prefix":{"type":"string","format":"byte"}}},"ibc.core.commitment.v2.MerklePath":{"description":"MerklePath is the path used to verify commitment proofs, which can be an\narbitrary structured object (defined by a commitment type).\nICS-23 verification supports membership proofs for nested merkle trees.\nThe ICS-24 standard provable keys MUST be stored in the lowest level tree with an optional prefix.\nThe IC24 provable tree may then be stored in a higher level tree(s) that hash up to the root hash\nstored in the consensus state of the client.\nEach element of the path represents the key of a merkle tree from the root to the leaf.\nThe elements of the path before the final element must be the path to the tree that contains\nthe ICS24 provable store. Thus, it should remain constant for all ICS24 proofs.\nThe final element of the path is the key of the leaf in the ICS24 provable store,\nThus IBC core will append the ICS24 path to the final element of the MerklePath\nstored in the counterparty to create the full path to the leaf for proof verification.\nExamples:\nCosmos SDK:\nThe Cosmos SDK commits to a multi-tree where each store is an IAVL tree and all store hashes\nare hashed in a simple merkle tree to get the final root hash. Thus, the MerklePath in the counterparty\nMerklePrefix has the following structure: [\"ibc\", \"\"]\nThe core IBC handler will append the ICS24 path to the final element of the MerklePath\nlike so: [\"ibc\", \"{packetCommitmentPath}\"] which will then be used for final verification.\nEthereum:\nThe Ethereum client commits to a single Patricia merkle trie. The ICS24 provable store is managed\nby the smart contract state. Each smart contract has a specific prefix reserved within the global trie.\nThus the MerklePath in the counterparty is the prefix to the smart contract state in the global trie.\nSince there is only one tree in the commitment structure of ethereum the MerklePath in the counterparty\nMerklePrefix has the following structure: [\"IBCCoreContractAddressStoragePrefix\"]\nThe core IBC handler will append the ICS24 path to the final element of the MerklePath\nlike so: [\"IBCCoreContractAddressStoragePrefix{packetCommitmentPath}\"] which will then be used for final\nverification. Thus the MerklePath in the counterparty MerklePrefix is the nested key path from the root hash of the\nconsensus state down to the ICS24 provable store. The IBC handler retrieves the counterparty key path to the ICS24\nprovable store from the MerklePath and appends the ICS24 path to get the final key path to the value being verified\nby the client against the root hash in the client's consensus state.","type":"object","properties":{"key_path":{"type":"array","items":{"type":"string","format":"byte"}}}},"ibc.core.connection.v1.ConnectionEnd":{"description":"ConnectionEnd defines a stateful object on a chain connected to another\nseparate one.\nNOTE: there must only be 2 defined ConnectionEnds to establish\na connection between two chains.","type":"object","properties":{"client_id":{"description":"client associated with this connection.","type":"string"},"counterparty":{"description":"counterparty chain associated with this connection.","$ref":"#/definitions/ibc.core.connection.v1.Counterparty"},"delay_period":{"description":"delay period that must pass before a consensus state can be used for\npacket-verification NOTE: delay period logic is only implemented by some\nclients.","type":"string","format":"uint64"},"state":{"description":"current state of the connection end.","$ref":"#/definitions/ibc.core.connection.v1.State"},"versions":{"description":"IBC version which can be utilised to determine encodings or protocols for\nchannels or packets utilising this connection.","type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.connection.v1.Version"}}}},"ibc.core.connection.v1.Counterparty":{"description":"Counterparty defines the counterparty chain associated with a connection end.","type":"object","properties":{"client_id":{"description":"identifies the client on the counterparty chain associated with a given\nconnection.","type":"string"},"connection_id":{"description":"identifies the connection end on the counterparty chain associated with a\ngiven connection.","type":"string"},"prefix":{"description":"commitment merkle prefix of the counterparty chain.","$ref":"#/definitions/ibc.core.commitment.v1.MerklePrefix"}}},"ibc.core.connection.v1.IdentifiedConnection":{"description":"IdentifiedConnection defines a connection with additional connection\nidentifier field.","type":"object","properties":{"client_id":{"description":"client associated with this connection.","type":"string"},"counterparty":{"description":"counterparty chain associated with this connection.","$ref":"#/definitions/ibc.core.connection.v1.Counterparty"},"delay_period":{"description":"delay period associated with this connection.","type":"string","format":"uint64"},"id":{"description":"connection identifier.","type":"string"},"state":{"description":"current state of the connection end.","$ref":"#/definitions/ibc.core.connection.v1.State"},"versions":{"type":"array","title":"IBC version which can be utilised to determine encodings or protocols for\nchannels or packets utilising this connection","items":{"type":"object","$ref":"#/definitions/ibc.core.connection.v1.Version"}}}},"ibc.core.connection.v1.MsgConnectionOpenAck":{"description":"MsgConnectionOpenAck defines a msg sent by a Relayer to Chain A to\nacknowledge the change of connection state to TRYOPEN on Chain B.","type":"object","properties":{"client_state":{"description":"Deprecated: this field is unused.","$ref":"#/definitions/google.protobuf.Any"},"connection_id":{"type":"string"},"consensus_height":{"description":"Deprecated: this field is unused.","$ref":"#/definitions/ibc.core.client.v1.Height"},"counterparty_connection_id":{"type":"string"},"host_consensus_state_proof":{"description":"Deprecated: this field is unused.","type":"string","format":"byte"},"proof_client":{"description":"Deprecated: this field is unused.","type":"string","format":"byte"},"proof_consensus":{"description":"Deprecated: this field is unused.","type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_try":{"type":"string","format":"byte","title":"proof of the initialization the connection on Chain B: `UNINITIALIZED -\u003e\nTRYOPEN`"},"signer":{"type":"string"},"version":{"$ref":"#/definitions/ibc.core.connection.v1.Version"}}},"ibc.core.connection.v1.MsgConnectionOpenAckResponse":{"description":"MsgConnectionOpenAckResponse defines the Msg/ConnectionOpenAck response type.","type":"object"},"ibc.core.connection.v1.MsgConnectionOpenConfirm":{"description":"MsgConnectionOpenConfirm defines a msg sent by a Relayer to Chain B to\nacknowledge the change of connection state to OPEN on Chain A.","type":"object","properties":{"connection_id":{"type":"string"},"proof_ack":{"type":"string","format":"byte","title":"proof for the change of the connection state on Chain A: `INIT -\u003e OPEN`"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"signer":{"type":"string"}}},"ibc.core.connection.v1.MsgConnectionOpenConfirmResponse":{"description":"MsgConnectionOpenConfirmResponse defines the Msg/ConnectionOpenConfirm\nresponse type.","type":"object"},"ibc.core.connection.v1.MsgConnectionOpenInit":{"description":"MsgConnectionOpenInit defines the msg sent by an account on Chain A to\ninitialize a connection with Chain B.","type":"object","properties":{"client_id":{"type":"string"},"counterparty":{"$ref":"#/definitions/ibc.core.connection.v1.Counterparty"},"delay_period":{"type":"string","format":"uint64"},"signer":{"type":"string"},"version":{"$ref":"#/definitions/ibc.core.connection.v1.Version"}}},"ibc.core.connection.v1.MsgConnectionOpenInitResponse":{"description":"MsgConnectionOpenInitResponse defines the Msg/ConnectionOpenInit response\ntype.","type":"object"},"ibc.core.connection.v1.MsgConnectionOpenTry":{"description":"MsgConnectionOpenTry defines a msg sent by a Relayer to try to open a\nconnection on Chain B.","type":"object","properties":{"client_id":{"type":"string"},"client_state":{"description":"Deprecated: this field is unused.","$ref":"#/definitions/google.protobuf.Any"},"consensus_height":{"description":"Deprecated: this field is unused.","$ref":"#/definitions/ibc.core.client.v1.Height"},"counterparty":{"$ref":"#/definitions/ibc.core.connection.v1.Counterparty"},"counterparty_versions":{"type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.connection.v1.Version"}},"delay_period":{"type":"string","format":"uint64"},"host_consensus_state_proof":{"description":"Deprecated: this field is unused.","type":"string","format":"byte"},"previous_connection_id":{"description":"Deprecated: this field is unused. Crossing hellos are no longer supported in core IBC.","type":"string"},"proof_client":{"description":"Deprecated: this field is unused.","type":"string","format":"byte"},"proof_consensus":{"description":"Deprecated: this field is unused.","type":"string","format":"byte"},"proof_height":{"$ref":"#/definitions/ibc.core.client.v1.Height"},"proof_init":{"type":"string","format":"byte","title":"proof of the initialization the connection on Chain A: `UNINITIALIZED -\u003e\nINIT`"},"signer":{"type":"string"}}},"ibc.core.connection.v1.MsgConnectionOpenTryResponse":{"description":"MsgConnectionOpenTryResponse defines the Msg/ConnectionOpenTry response type.","type":"object"},"ibc.core.connection.v1.MsgUpdateParams":{"description":"MsgUpdateParams defines the sdk.Msg type to update the connection parameters.","type":"object","properties":{"params":{"description":"params defines the connection parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/ibc.core.connection.v1.Params"},"signer":{"type":"string","title":"signer address"}}},"ibc.core.connection.v1.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the MsgUpdateParams response type.","type":"object"},"ibc.core.connection.v1.Params":{"description":"Params defines the set of Connection parameters.","type":"object","properties":{"max_expected_time_per_block":{"description":"maximum expected time per block (in nanoseconds), used to enforce block delay. This parameter should reflect the\nlargest amount of time that the chain might reasonably take to produce the next block under normal operating\nconditions. A safe choice is 3-5x the expected time per block.","type":"string","format":"uint64"}}},"ibc.core.connection.v1.QueryClientConnectionsResponse":{"type":"object","title":"QueryClientConnectionsResponse is the response type for the\nQuery/ClientConnections RPC method","properties":{"connection_paths":{"description":"slice of all the connection paths associated with a client.","type":"array","items":{"type":"string"}},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was generated","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.connection.v1.QueryConnectionClientStateResponse":{"type":"object","title":"QueryConnectionClientStateResponse is the response type for the\nQuery/ConnectionClientState RPC method","properties":{"identified_client_state":{"title":"client state associated with the channel","$ref":"#/definitions/ibc.core.client.v1.IdentifiedClientState"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.connection.v1.QueryConnectionConsensusStateResponse":{"type":"object","title":"QueryConnectionConsensusStateResponse is the response type for the\nQuery/ConnectionConsensusState RPC method","properties":{"client_id":{"type":"string","title":"client ID associated with the consensus state"},"consensus_state":{"title":"consensus state associated with the channel","$ref":"#/definitions/google.protobuf.Any"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.connection.v1.QueryConnectionParamsResponse":{"description":"QueryConnectionParamsResponse is the response type for the Query/ConnectionParams RPC method.","type":"object","properties":{"params":{"description":"params defines the parameters of the module.","$ref":"#/definitions/ibc.core.connection.v1.Params"}}},"ibc.core.connection.v1.QueryConnectionResponse":{"description":"QueryConnectionResponse is the response type for the Query/Connection RPC\nmethod. Besides the connection end, it includes a proof and the height from\nwhich the proof was retrieved.","type":"object","properties":{"connection":{"title":"connection associated with the request identifier","$ref":"#/definitions/ibc.core.connection.v1.ConnectionEnd"},"proof":{"type":"string","format":"byte","title":"merkle proof of existence"},"proof_height":{"title":"height at which the proof was retrieved","$ref":"#/definitions/ibc.core.client.v1.Height"}}},"ibc.core.connection.v1.QueryConnectionsResponse":{"description":"QueryConnectionsResponse is the response type for the Query/Connections RPC\nmethod.","type":"object","properties":{"connections":{"description":"list of stored connections of the chain.","type":"array","items":{"type":"object","$ref":"#/definitions/ibc.core.connection.v1.IdentifiedConnection"}},"height":{"title":"query block height","$ref":"#/definitions/ibc.core.client.v1.Height"},"pagination":{"title":"pagination response","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.core.connection.v1.State":{"description":"State defines if a connection is in one of the following states:\nINIT, TRYOPEN, OPEN or UNINITIALIZED.\n\n - STATE_UNINITIALIZED_UNSPECIFIED: Default State\n - STATE_INIT: A connection end has just started the opening handshake.\n - STATE_TRYOPEN: A connection end has acknowledged the handshake step on the counterparty\nchain.\n - STATE_OPEN: A connection end has completed the handshake.","type":"string","default":"STATE_UNINITIALIZED_UNSPECIFIED","enum":["STATE_UNINITIALIZED_UNSPECIFIED","STATE_INIT","STATE_TRYOPEN","STATE_OPEN"]},"ibc.core.connection.v1.Version":{"description":"Version defines the versioning scheme used to negotiate the IBC version in\nthe connection handshake.","type":"object","properties":{"features":{"type":"array","title":"list of features compatible with the specified identifier","items":{"type":"string"}},"identifier":{"type":"string","title":"unique version identifier"}}},"ibc.lightclients.wasm.v1.MsgMigrateContract":{"description":"MsgMigrateContract defines the request type for the MigrateContract rpc.","type":"object","properties":{"checksum":{"type":"string","format":"byte","title":"checksum is the sha256 hash of the new wasm byte code for the contract"},"client_id":{"type":"string","title":"the client id of the contract"},"msg":{"type":"string","format":"byte","title":"the json encoded message to be passed to the contract on migration"},"signer":{"type":"string","title":"signer address"}}},"ibc.lightclients.wasm.v1.MsgMigrateContractResponse":{"type":"object","title":"MsgMigrateContractResponse defines the response type for the MigrateContract rpc"},"ibc.lightclients.wasm.v1.MsgRemoveChecksum":{"description":"MsgRemoveChecksum defines the request type for the MsgRemoveChecksum rpc.","type":"object","properties":{"checksum":{"type":"string","format":"byte","title":"checksum is the sha256 hash to be removed from the store"},"signer":{"type":"string","title":"signer address"}}},"ibc.lightclients.wasm.v1.MsgRemoveChecksumResponse":{"type":"object","title":"MsgStoreChecksumResponse defines the response type for the StoreCode rpc"},"ibc.lightclients.wasm.v1.MsgStoreCode":{"description":"MsgStoreCode defines the request type for the StoreCode rpc.","type":"object","properties":{"signer":{"type":"string","title":"signer address"},"wasm_byte_code":{"type":"string","format":"byte","title":"wasm byte code of light client contract. It can be raw or gzip compressed"}}},"ibc.lightclients.wasm.v1.MsgStoreCodeResponse":{"type":"object","title":"MsgStoreCodeResponse defines the response type for the StoreCode rpc","properties":{"checksum":{"type":"string","format":"byte","title":"checksum is the sha256 hash of the stored code"}}},"ibc.lightclients.wasm.v1.QueryChecksumsResponse":{"description":"QueryChecksumsResponse is the response type for the Query/Checksums RPC method.","type":"object","properties":{"checksums":{"description":"checksums is a list of the hex encoded checksums of all wasm codes stored.","type":"array","items":{"type":"string"}},"pagination":{"description":"pagination defines the pagination in the response.","$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"ibc.lightclients.wasm.v1.QueryCodeResponse":{"description":"QueryCodeResponse is the response type for the Query/Code RPC method.","type":"object","properties":{"data":{"type":"string","format":"byte"}}},"ibcratelimit.AddressLimit":{"type":"object","title":"AddressLimit defines limits per address","properties":{"max_amount":{"type":"string","title":"max_amount is the maximum total amount allowed per address in the timeframe\nValue is represented as an integer (e.g., \"1000000\" = 1,000,000 tokens)\nIf set to 0, amount limit is disabled"},"max_transfers":{"type":"string","format":"int64","title":"max_transfers is the maximum number of transfers allowed per address in the timeframe\nIf set to 0, transfer count limit is disabled"},"timeframe_duration":{"type":"string","format":"int64","title":"timeframe_duration is the duration of the timeframe"},"timeframe_type":{"title":"timeframe_type defines the type of timeframe (block, hour, day)","$ref":"#/definitions/ibcratelimit.TimeframeType"}}},"ibcratelimit.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the module parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/ibcratelimit.Params"}}},"ibcratelimit.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"ibcratelimit.MsgUpdateRateLimit":{"description":"MsgUpdateRateLimit is the Msg/UpdateRateLimit request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"rate_limit":{"description":"rate_limit defines the rate limit configuration to update or add.\nIf a rate limit with the same channel_id and denom exists, it will be updated.\nOtherwise, it will be appended to the list.","$ref":"#/definitions/ibcratelimit.RateLimitConfig"}}},"ibcratelimit.MsgUpdateRateLimitResponse":{"description":"MsgUpdateRateLimitResponse defines the response structure for executing a\nMsgUpdateRateLimit message.","type":"object"},"ibcratelimit.Params":{"description":"Params defines the parameters for the module.","type":"object","properties":{"rate_limits":{"type":"array","title":"rate_limits is an array of rate limit configurations\nEach configuration can specify channel_id, denom, and various limit types (supply_shift_limits, unique_sender_limits, address_limits)\nConfigurations are checked in order, and the first matching config is used\nIf no config matches, the transfer is allowed (no rate limit)","items":{"type":"object","$ref":"#/definitions/ibcratelimit.RateLimitConfig"}}}},"ibcratelimit.RateLimitConfig":{"type":"object","title":"RateLimitConfig defines a rate limit configuration for a specific channel and denom","properties":{"address_limits":{"type":"array","title":"address_limits defines per-address transfer limits\nAll limits are checked, and the transfer is rejected if any limit would be exceeded","items":{"type":"object","$ref":"#/definitions/ibcratelimit.AddressLimit"}},"channel_id":{"type":"string","title":"channel_id is the IBC channel ID this rate limit applies to\nIf empty, applies to all channels"},"denom":{"type":"string","title":"denom is the denomination this rate limit applies to\nMust be specified (empty denoms are not allowed)"},"supply_shift_limits":{"type":"array","title":"supply_shift_limits defines multiple timeframe limits for supply shift\nAll limits are checked, and the transfer is rejected if any limit would be exceeded","items":{"type":"object","$ref":"#/definitions/ibcratelimit.TimeframeLimit"}},"unique_sender_limits":{"type":"array","title":"unique_sender_limits defines limits on unique senders per channel\nAll limits are checked, and the transfer is rejected if any limit would be exceeded","items":{"type":"object","$ref":"#/definitions/ibcratelimit.UniqueSenderLimit"}}}},"ibcratelimit.TimeframeLimit":{"type":"object","title":"TimeframeLimit defines a limit for a specific timeframe","properties":{"max_amount":{"type":"string","title":"max_amount is the maximum absolute amount of supply change allowed in this timeframe\nValue is represented as an integer (e.g., \"1000000\" = 1,000,000 tokens)\nIf set to 0, this limit is disabled"},"timeframe_duration":{"type":"string","format":"int64","title":"timeframe_duration is the duration of the timeframe\nFor BLOCK: number of blocks\nFor HOUR: number of hours (will be converted to blocks using block time)\nFor DAY: number of days (will be converted to blocks using block time)"},"timeframe_type":{"title":"timeframe_type defines the type of timeframe (block, hour, day)","$ref":"#/definitions/ibcratelimit.TimeframeType"}}},"ibcratelimit.TimeframeType":{"description":"- TIMEFRAME_TYPE_BLOCK: Duration in blocks\n - TIMEFRAME_TYPE_HOUR: Duration in hours (converted to blocks using block time)\n - TIMEFRAME_TYPE_DAY: Duration in days (converted to blocks using block time)","type":"string","title":"TimeframeType defines the type of timeframe","default":"TIMEFRAME_TYPE_UNSPECIFIED","enum":["TIMEFRAME_TYPE_UNSPECIFIED","TIMEFRAME_TYPE_BLOCK","TIMEFRAME_TYPE_HOUR","TIMEFRAME_TYPE_DAY"]},"ibcratelimit.UniqueSenderLimit":{"type":"object","title":"UniqueSenderLimit defines limits on unique senders per channel","properties":{"max_unique_senders":{"type":"string","format":"int64","title":"max_unique_senders is the maximum number of unique senders allowed in the timeframe\nIf set to 0, this limit is disabled"},"timeframe_duration":{"type":"string","format":"int64","title":"timeframe_duration is the duration of the timeframe"},"timeframe_type":{"title":"timeframe_type defines the type of timeframe (block, hour, day)","$ref":"#/definitions/ibcratelimit.TimeframeType"}}},"managersplitter.ManagerSplitter":{"description":"ManagerSplitter defines the manager splitter entity.","type":"object","properties":{"address":{"description":"The module address of this manager splitter (derived from module name + ID).","type":"string"},"admin":{"description":"Permanent and static admin address. Has full control and can always execute all permissions.","type":"string"},"permissions":{"description":"Permissions mapping each CollectionPermission field to execution criteria.","$ref":"#/definitions/managersplitter.ManagerSplitterPermissions"}}},"managersplitter.ManagerSplitterPermissions":{"description":"ManagerSplitterPermissions mirrors the CollectionPermissions structure\nbut maps each permission to criteria for execution.","type":"object","properties":{"canAddMoreAliasPaths":{"description":"Permissions related to adding more alias paths to the collection.","$ref":"#/definitions/managersplitter.PermissionCriteria"},"canAddMoreCosmosCoinWrapperPaths":{"description":"Permissions related to adding more cosmos coin wrapper paths to the collection.","$ref":"#/definitions/managersplitter.PermissionCriteria"},"canArchiveCollection":{"description":"Permissions related to archiving the collection.","$ref":"#/definitions/managersplitter.PermissionCriteria"},"canDeleteCollection":{"description":"Permissions related to deleting the collection.","$ref":"#/definitions/managersplitter.PermissionCriteria"},"canUpdateCollectionApprovals":{"description":"Permissions related to updating collection approvals.","$ref":"#/definitions/managersplitter.PermissionCriteria"},"canUpdateCollectionMetadata":{"description":"Permissions related to updating the metadata of the collection.","$ref":"#/definitions/managersplitter.PermissionCriteria"},"canUpdateCustomData":{"description":"Permissions related to updating custom data for the collection.","$ref":"#/definitions/managersplitter.PermissionCriteria"},"canUpdateManager":{"description":"Permissions related to updating the collection's manager.","$ref":"#/definitions/managersplitter.PermissionCriteria"},"canUpdateStandards":{"description":"Permissions related to updating standards for the collection.","$ref":"#/definitions/managersplitter.PermissionCriteria"},"canUpdateTokenMetadata":{"description":"Permissions related to updating token metadata for specific tokens.","$ref":"#/definitions/managersplitter.PermissionCriteria"},"canUpdateValidTokenIds":{"description":"Permissions related to creating more tokens for the collection.","$ref":"#/definitions/managersplitter.PermissionCriteria"}}},"managersplitter.MsgCreateManagerSplitter":{"description":"MsgCreateManagerSplitter creates a new manager splitter entity.","type":"object","properties":{"admin":{"description":"Admin address creating the entity.","type":"string"},"permissions":{"description":"Permissions mapping each CollectionPermission field to execution criteria.","$ref":"#/definitions/managersplitter.ManagerSplitterPermissions"}}},"managersplitter.MsgCreateManagerSplitterResponse":{"description":"MsgCreateManagerSplitterResponse is the response to MsgCreateManagerSplitter.","type":"object","properties":{"address":{"description":"The address of the created manager splitter.","type":"string"}}},"managersplitter.MsgDeleteManagerSplitter":{"description":"MsgDeleteManagerSplitter deletes a manager splitter entity.","type":"object","properties":{"address":{"description":"Address of the manager splitter to delete.","type":"string"},"admin":{"description":"Admin address deleting the entity.","type":"string"}}},"managersplitter.MsgDeleteManagerSplitterResponse":{"description":"MsgDeleteManagerSplitterResponse is the response to MsgDeleteManagerSplitter.","type":"object"},"managersplitter.MsgExecuteUniversalUpdateCollection":{"description":"MsgExecuteUniversalUpdateCollection executes a UniversalUpdateCollection message\nthrough the manager splitter, checking permissions before execution.","type":"object","properties":{"executor":{"description":"Address executing the message (must be approved or admin).","type":"string"},"managerSplitterAddress":{"description":"Address of the manager splitter to execute through.","type":"string"},"universalUpdateCollectionMsg":{"description":"The UniversalUpdateCollection message to execute.","$ref":"#/definitions/tokenization.MsgUniversalUpdateCollection"}}},"managersplitter.MsgExecuteUniversalUpdateCollectionResponse":{"description":"MsgExecuteUniversalUpdateCollectionResponse is the response to MsgExecuteUniversalUpdateCollection.","type":"object","properties":{"collectionId":{"description":"ID of the collection that was updated.","type":"string"}}},"managersplitter.MsgUpdateManagerSplitter":{"description":"MsgUpdateManagerSplitter updates an existing manager splitter entity.","type":"object","properties":{"address":{"description":"Address of the manager splitter to update.","type":"string"},"admin":{"description":"Admin address updating the entity.","type":"string"},"permissions":{"description":"New permissions to set.","$ref":"#/definitions/managersplitter.ManagerSplitterPermissions"}}},"managersplitter.MsgUpdateManagerSplitterResponse":{"description":"MsgUpdateManagerSplitterResponse is the response to MsgUpdateManagerSplitter.","type":"object"},"managersplitter.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the module parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/managersplitter.Params"}}},"managersplitter.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"managersplitter.Params":{"description":"Params defines the parameters for the module.","type":"object"},"managersplitter.PermissionCriteria":{"description":"PermissionCriteria defines the criteria for executing a permission.\nCurrently supports approved addresses (whitelist).","type":"object","properties":{"approvedAddresses":{"description":"List of approved addresses that can execute this permission.","type":"array","items":{"type":"string"}}}},"managersplitter.QueryAllManagerSplittersResponse":{"description":"QueryAllManagerSplittersResponse is response type for the Query/AllManagerSplitters RPC method.","type":"object","properties":{"managerSplitters":{"type":"array","items":{"type":"object","$ref":"#/definitions/managersplitter.ManagerSplitter"}},"pagination":{"$ref":"#/definitions/cosmos.base.query.v1beta1.PageResponse"}}},"managersplitter.QueryGetManagerSplitterResponse":{"description":"QueryGetManagerSplitterResponse is response type for the Query/ManagerSplitter RPC method.","type":"object","properties":{"managerSplitter":{"$ref":"#/definitions/managersplitter.ManagerSplitter"}}},"managersplitter.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params holds all the parameters of this module.","$ref":"#/definitions/managersplitter.Params"}}},"poolmanager.v1beta1.Affiliate":{"type":"object","title":"===================== Affiliate\nAffiliate represents an affiliate fee recipient","properties":{"address":{"type":"string","title":"address is the affiliate recipient address"},"basis_points_fee":{"type":"string","title":"basis_points_fee is the fee in basis points (1/10000, e.g., 100 = 1%)"}}},"poolmanager.v1beta1.AllPoolsResponse":{"type":"object","properties":{"pools":{"type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}}}},"poolmanager.v1beta1.AllRegisteredAlloyedPoolsResponse":{"type":"object","properties":{"contract_states":{"type":"array","items":{"type":"object","$ref":"#/definitions/poolmanager.v1beta1.AlloyContractTakerFeeShareState"}}}},"poolmanager.v1beta1.AllTakerFeeShareAccumulatorsResponse":{"type":"object","properties":{"taker_fee_skim_accumulators":{"type":"array","items":{"type":"object","$ref":"#/definitions/poolmanager.v1beta1.TakerFeeSkimAccumulator"}}}},"poolmanager.v1beta1.AllTakerFeeShareAgreementsResponse":{"type":"object","properties":{"taker_fee_share_agreements":{"type":"array","items":{"type":"object","$ref":"#/definitions/poolmanager.v1beta1.TakerFeeShareAgreement"}}}},"poolmanager.v1beta1.AlloyContractTakerFeeShareState":{"description":"AlloyContractTakerFeeShareState contains the contract address of the alloyed\nasset pool, along with the adjusted taker fee share agreements for any asset\nwithin the alloyed asset pool that has a taker fee share agreement. If for\ninstance there are two denoms, and denomA makes up 50 percent and denomB\nmakes up 50 percent, and denom A has a taker fee share agreement with a skim\npercent of 10%, then the adjusted taker fee share agreement for denomA will\nbe 5%.","type":"object","properties":{"contract_address":{"description":"contract_address is the address of the alloyed asset pool contract.","type":"string"},"taker_fee_share_agreements":{"description":"taker_fee_share_agreements is the adjusted taker fee share agreements for\nany asset within the alloyed asset pool that has a taker fee share\nagreement.","type":"array","items":{"type":"object","$ref":"#/definitions/poolmanager.v1beta1.TakerFeeShareAgreement"}}}},"poolmanager.v1beta1.DenomPairTakerFee":{"type":"object","properties":{"denom0":{"description":"DEPRECATED: Now that we are using uni-directional trading pairs, we are\nusing tokenInDenom and tokenOutDenom instead of denom0 and denom1 to\nprevent confusion.","type":"string"},"denom1":{"type":"string"},"taker_fee":{"type":"string"},"tokenInDenom":{"type":"string"},"tokenOutDenom":{"type":"string"}}},"poolmanager.v1beta1.EstimateSwapExactAmountInResponse":{"type":"object","properties":{"token_out_amount":{"type":"string"}}},"poolmanager.v1beta1.EstimateSwapExactAmountOutResponse":{"type":"object","properties":{"token_in_amount":{"type":"string"}}},"poolmanager.v1beta1.EstimateTradeBasedOnPriceImpactResponse":{"description":"EstimateTradeBasedOnPriceImpactResponse represents the response data\nfor an estimated trade based on price impact. If a trade fails to be\nestimated the response would be 0,0 for input_coin and output_coin and will\nnot error.","type":"object","properties":{"input_coin":{"description":"input_coin is the actual input amount that would be tradeable\nunder the specified price impact.","$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"output_coin":{"description":"output_coin is the amount of tokens of the ToCoinDenom type\nthat will be received for the actual InputCoin trade.","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"poolmanager.v1beta1.ListPoolsByDenomResponse":{"type":"object","properties":{"pools":{"type":"array","items":{"type":"object","$ref":"#/definitions/google.protobuf.Any"}}}},"poolmanager.v1beta1.MsgSetDenomPairTakerFee":{"type":"object","title":"===================== MsgSetDenomPairTakerFee","properties":{"denom_pair_taker_fee":{"type":"array","items":{"type":"object","$ref":"#/definitions/poolmanager.v1beta1.DenomPairTakerFee"}},"sender":{"type":"string"}}},"poolmanager.v1beta1.MsgSetDenomPairTakerFeeResponse":{"type":"object","properties":{"success":{"type":"boolean"}}},"poolmanager.v1beta1.MsgSetTakerFeeShareAgreementForDenom":{"type":"object","title":"===================== MsgSetTakerFeeShareAgreementForDenom","properties":{"denom":{"description":"denom is the denom that the taker fee share agreement is being set for.\nEx. If this is set to \"nBTC\", then any trade route that includes \"nBTC\"\nwill have the skim_percent skimmed from the taker fees and sent to the\nskim_address.","type":"string"},"sender":{"type":"string"},"skim_address":{"description":"skim_address is the address belonging to the respective bridge provider\nthat the skimmed taker fees will be sent to at the end of each epoch.","type":"string"},"skim_percent":{"description":"skim_percent is the percentage of taker fees that will be skimmed for the\nbridge provider, in the event that the bridge provider's denom is included\nin the swap route.","type":"string"}}},"poolmanager.v1beta1.MsgSetTakerFeeShareAgreementForDenomResponse":{"type":"object"},"poolmanager.v1beta1.MsgSplitRouteSwapExactAmountIn":{"type":"object","title":"===================== MsgSplitRouteSwapExactAmountIn","properties":{"routes":{"type":"array","items":{"type":"object","$ref":"#/definitions/poolmanager.v1beta1.SwapAmountInSplitRoute"}},"sender":{"type":"string"},"token_in_denom":{"type":"string"},"token_out_min_amount":{"type":"string"}}},"poolmanager.v1beta1.MsgSplitRouteSwapExactAmountInResponse":{"type":"object","properties":{"token_out_amount":{"type":"string"}}},"poolmanager.v1beta1.MsgSplitRouteSwapExactAmountOut":{"type":"object","title":"===================== MsgSplitRouteSwapExactAmountOut","properties":{"routes":{"type":"array","items":{"type":"object","$ref":"#/definitions/poolmanager.v1beta1.SwapAmountOutSplitRoute"}},"sender":{"type":"string"},"token_in_max_amount":{"type":"string"},"token_out_denom":{"type":"string"}}},"poolmanager.v1beta1.MsgSplitRouteSwapExactAmountOutResponse":{"type":"object","properties":{"token_in_amount":{"type":"string"}}},"poolmanager.v1beta1.MsgSwapExactAmountIn":{"type":"object","title":"===================== MsgSwapExactAmountIn","properties":{"routes":{"type":"array","items":{"type":"object","$ref":"#/definitions/poolmanager.v1beta1.SwapAmountInRoute"}},"sender":{"type":"string"},"token_in":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"},"token_out_min_amount":{"type":"string"}}},"poolmanager.v1beta1.MsgSwapExactAmountInResponse":{"type":"object","properties":{"token_out_amount":{"type":"string"}}},"poolmanager.v1beta1.MsgSwapExactAmountOut":{"type":"object","title":"===================== MsgSwapExactAmountOut","properties":{"routes":{"type":"array","items":{"type":"object","$ref":"#/definitions/poolmanager.v1beta1.SwapAmountOutRoute"}},"sender":{"type":"string"},"token_in_max_amount":{"type":"string"},"token_out":{"$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"poolmanager.v1beta1.MsgSwapExactAmountOutResponse":{"type":"object","properties":{"token_in_amount":{"type":"string"}}},"poolmanager.v1beta1.NumPoolsResponse":{"type":"object","properties":{"num_pools":{"type":"string","format":"uint64"}}},"poolmanager.v1beta1.Params":{"type":"object","title":"Params holds parameters for the poolmanager module","properties":{"taker_fee_params":{"description":"taker_fee_params is the container of taker fee parameters.","$ref":"#/definitions/poolmanager.v1beta1.TakerFeeParams"}}},"poolmanager.v1beta1.ParamsResponse":{"type":"object","properties":{"params":{"$ref":"#/definitions/poolmanager.v1beta1.Params"}}},"poolmanager.v1beta1.PoolResponse":{"type":"object","properties":{"pool":{"$ref":"#/definitions/google.protobuf.Any"}}},"poolmanager.v1beta1.RegisteredAlloyedPoolFromDenomResponse":{"type":"object","properties":{"contract_state":{"$ref":"#/definitions/poolmanager.v1beta1.AlloyContractTakerFeeShareState"}}},"poolmanager.v1beta1.RegisteredAlloyedPoolFromPoolIdResponse":{"type":"object","properties":{"contract_state":{"$ref":"#/definitions/poolmanager.v1beta1.AlloyContractTakerFeeShareState"}}},"poolmanager.v1beta1.SpotPriceResponse":{"description":"SpotPriceResponse defines the gRPC response structure for a SpotPrice\nquery.","type":"object","properties":{"spot_price":{"type":"string","title":"String of the Dec. Ex) 10.203uatom"}}},"poolmanager.v1beta1.SwapAmountInRoute":{"type":"object","properties":{"pool_id":{"type":"string","format":"uint64"},"token_out_denom":{"type":"string"}}},"poolmanager.v1beta1.SwapAmountInSplitRoute":{"type":"object","properties":{"pools":{"type":"array","items":{"type":"object","$ref":"#/definitions/poolmanager.v1beta1.SwapAmountInRoute"}},"token_in_amount":{"type":"string"}}},"poolmanager.v1beta1.SwapAmountOutRoute":{"type":"object","properties":{"pool_id":{"type":"string","format":"uint64"},"token_in_denom":{"type":"string"}}},"poolmanager.v1beta1.SwapAmountOutSplitRoute":{"type":"object","properties":{"pools":{"type":"array","items":{"type":"object","$ref":"#/definitions/poolmanager.v1beta1.SwapAmountOutRoute"}},"token_out_amount":{"type":"string"}}},"poolmanager.v1beta1.TakerFeeDistributionPercentage":{"description":"TakerFeeDistributionPercentage defines what percent of the taker fee category\ngets distributed to the available categories.","type":"object","properties":{"community_pool":{"type":"string"},"staking_rewards":{"type":"string"}}},"poolmanager.v1beta1.TakerFeeParams":{"description":"TakerFeeParams consolidates the taker fee parameters for the poolmanager.","type":"object","properties":{"admin_addresses":{"description":"admin_addresses is a list of addresses that are allowed to set and remove\ncustom taker fees for denom pairs. Governance also has the ability to set\nand remove custom taker fees for denom pairs, but with the normal\ngovernance delay.","type":"array","items":{"type":"string"}},"community_pool_denom_to_swap_non_whitelisted_assets_to":{"description":"community_pool_denom_to_swap_non_whitelisted_assets_to is the denom that\nnon-whitelisted taker fees will be swapped to before being sent to\nthe community pool.","type":"string"},"community_pool_denom_whitelist":{"description":"community_pool_denom_whitelist is a list of denoms that should be sent\ndirectly to the community pool instead of being swapped to the\n`community_pool_denom_to_swap_non_whitelisted_assets_to`.","type":"array","items":{"type":"string"}},"default_taker_fee":{"description":"default_taker_fee is the fee used when creating a new pool that doesn't\nfall under a custom pool taker fee or stableswap taker fee category.","type":"string"},"non_osmo_taker_fee_distribution":{"description":"non_osmo_taker_fee_distribution defines the distribution of taker fees\ngenerated in non-OSMO. As of this writing, it has two categories:\n- staking_rewards: the percent of the taker fee that gets swapped to OSMO\n and then distributed to stakers.\n- community_pool: the percent of the taker fee that gets sent to the\n community pool. Note: If the non-OSMO asset is an authorized_quote_denom,\n that denom is sent directly to the community pool. Otherwise, it is\n swapped to the community_pool_denom_to_swap_non_whitelisted_assets_to and\n then sent to the community pool as that denom.","$ref":"#/definitions/poolmanager.v1beta1.TakerFeeDistributionPercentage"},"osmo_taker_fee_distribution":{"description":"osmo_taker_fee_distribution defines the distribution of taker fees\ngenerated in OSMO. As of this writing, it has two categories:\n- staking_rewards: the percent of the taker fee that gets distributed to\n stakers.\n- community_pool: the percent of the taker fee that gets sent to the\n community pool.","$ref":"#/definitions/poolmanager.v1beta1.TakerFeeDistributionPercentage"},"reduced_fee_whitelist":{"description":"reduced_fee_whitelist is a list of addresses that are\nallowed to pay a reduce taker fee when performing a swap\n(i.e. swap without paying the taker fee).\nIt is intended to be used for integrators who meet qualifying factors\nthat are approved by governance.\nInitially, the taker fee is allowed to be bypassed completely. However\nIn the future, we will charge a reduced taker fee instead of no fee at all.","type":"array","items":{"type":"string"}}}},"poolmanager.v1beta1.TakerFeeShareAgreement":{"description":"TakerFeeShareAgreement represents the agreement between the Osmosis protocol\nand a specific denom to share a certain percent of taker fees generated in\nany route that contains said denom. For example, if the agreement specifies a\n10% skim_percent, this means 10% of the taker fees generated in a swap route\ncontaining the specified denom will be sent to the address specified\nin the skim_address field at the end of each epoch. These skim_percents are\nadditive, so if three taker fee agreements have skim percents of 10%, 20%,\nand 30%, the total skim percent for the route will be 60%.","type":"object","properties":{"denom":{"description":"denom is the denom that has the taker fee share agreement.","type":"string"},"skim_address":{"description":"skim_address is the address belonging to the respective denom\nthat the skimmed taker fees will be sent to at the end of each epoch.","type":"string"},"skim_percent":{"description":"skim_percent is the percentage of taker fees that will be skimmed for the\ndenom, in the event that the denom is included in the swap route.","type":"string"}}},"poolmanager.v1beta1.TakerFeeShareAgreementFromDenomResponse":{"type":"object","properties":{"taker_fee_share_agreement":{"$ref":"#/definitions/poolmanager.v1beta1.TakerFeeShareAgreement"}}},"poolmanager.v1beta1.TakerFeeShareDenomsToAccruedValueResponse":{"type":"object","properties":{"amount":{"type":"string"}}},"poolmanager.v1beta1.TakerFeeSkimAccumulator":{"description":"TakerFeeSkimAccumulator accumulates the total skimmed taker fees for each\ndenom that has a taker fee share agreement.","type":"object","properties":{"denom":{"description":"denom is the denom that has the taker fee share agreement.","type":"string"},"skimmed_taker_fees":{"description":"skimmed_taker_fees is the total skimmed taker fees for the denom.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"poolmanager.v1beta1.TotalLiquidityResponse":{"type":"object","properties":{"liquidity":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"poolmanager.v1beta1.TotalPoolLiquidityResponse":{"type":"object","properties":{"liquidity":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"poolmanager.v1beta1.TotalVolumeForPoolResponse":{"type":"object","properties":{"volume":{"type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}}},"poolmanager.v1beta1.TradingPairTakerFeeResponse":{"type":"object","properties":{"taker_fee":{"type":"string"}}},"poolmanager.v2.SpotPriceResponse":{"description":"SpotPriceResponse defines the gRPC response structure for a SpotPrice\nquery.","type":"object","properties":{"spot_price":{"type":"string","title":"String of the BigDec. Ex) 10.203uatom"}}},"sendmanager.MsgSendWithAliasRouting":{"description":"MsgSendWithAliasRouting defines a message for sending coins with alias denom routing.\nThis message mirrors cosmos bank MsgSend but routes through sendmanager to handle\nboth standard coins and alias denoms (e.g., badgeslp:).","type":"object","properties":{"amount":{"description":"amount is the list of coins to send.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"from_address":{"description":"from_address is the address of the account sending the coins.","type":"string"},"to_address":{"description":"to_address is the address of the account receiving the coins.","type":"string"}}},"sendmanager.MsgSendWithAliasRoutingResponse":{"description":"MsgSendWithAliasRoutingResponse defines the response structure for executing a\nMsgSendWithAliasRouting message.","type":"object"},"sendmanager.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the module parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/sendmanager.Params"}}},"sendmanager.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"sendmanager.Params":{"description":"Params defines the parameters for the module.","type":"object"},"sendmanager.QueryBalanceResponse":{"description":"QueryBalanceResponse is response type for the Query/Balance RPC method.","type":"object","properties":{"balance":{"description":"balance is the balance of the specified denom for the address.","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}}},"sendmanager.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params holds all the parameters of this module.","$ref":"#/definitions/sendmanager.Params"}}},"tendermint.abci.CheckTxType":{"type":"string","default":"NEW","enum":["NEW","RECHECK"]},"tendermint.abci.CommitInfo":{"type":"object","properties":{"round":{"type":"integer","format":"int32"},"votes":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.VoteInfo"}}}},"tendermint.abci.Event":{"description":"Event allows application developers to attach additional information to\nResponseFinalizeBlock and ResponseCheckTx.\nLater, transactions may be queried using these events.","type":"object","properties":{"attributes":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.EventAttribute"}},"type":{"type":"string"}}},"tendermint.abci.EventAttribute":{"description":"EventAttribute is a single key-value pair, associated with an event.","type":"object","properties":{"index":{"type":"boolean","title":"nondeterministic"},"key":{"type":"string"},"value":{"type":"string"}}},"tendermint.abci.ExecTxResult":{"description":"ExecTxResult contains results of executing one individual transaction.\n\n* Its structure is equivalent to #ResponseDeliverTx which will be deprecated/deleted","type":"object","properties":{"code":{"type":"integer","format":"int64"},"codespace":{"type":"string"},"data":{"type":"string","format":"byte"},"events":{"type":"array","title":"nondeterministic","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Event"}},"gas_used":{"type":"string","format":"int64"},"gas_wanted":{"type":"string","format":"int64"},"info":{"type":"string","title":"nondeterministic"},"log":{"type":"string","title":"nondeterministic"}}},"tendermint.abci.ExtendedCommitInfo":{"description":"ExtendedCommitInfo is similar to CommitInfo except that it is only used in\nthe PrepareProposal request such that CometBFT can provide vote extensions\nto the application.","type":"object","properties":{"round":{"description":"The round at which the block proposer decided in the previous height.","type":"integer","format":"int32"},"votes":{"description":"List of validators' addresses in the last validator set with their voting\ninformation, including vote extensions.","type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.ExtendedVoteInfo"}}}},"tendermint.abci.ExtendedVoteInfo":{"type":"object","properties":{"block_id_flag":{"title":"block_id_flag indicates whether the validator voted for a block, nil, or did not vote at all","$ref":"#/definitions/tendermint.types.BlockIDFlag"},"extension_signature":{"type":"string","format":"byte","title":"Vote extension signature created by CometBFT"},"validator":{"description":"The validator that sent the vote.","$ref":"#/definitions/tendermint.abci.Validator"},"vote_extension":{"description":"Non-deterministic extension provided by the sending validator's application.","type":"string","format":"byte"}}},"tendermint.abci.Misbehavior":{"type":"object","properties":{"height":{"type":"string","format":"int64","title":"The height when the offense occurred"},"time":{"type":"string","format":"date-time","title":"The corresponding time where the offense occurred"},"total_voting_power":{"type":"string","format":"int64","title":"Total voting power of the validator set in case the ABCI application does\nnot store historical validators.\nhttps://github.com/tendermint/tendermint/issues/4581"},"type":{"$ref":"#/definitions/tendermint.abci.MisbehaviorType"},"validator":{"title":"The offending validator","$ref":"#/definitions/tendermint.abci.Validator"}}},"tendermint.abci.MisbehaviorType":{"type":"string","default":"UNKNOWN","enum":["UNKNOWN","DUPLICATE_VOTE","LIGHT_CLIENT_ATTACK"]},"tendermint.abci.RequestApplySnapshotChunk":{"type":"object","title":"Applies a snapshot chunk","properties":{"chunk":{"type":"string","format":"byte"},"index":{"type":"integer","format":"int64"},"sender":{"type":"string"}}},"tendermint.abci.RequestCheckTx":{"type":"object","properties":{"tx":{"type":"string","format":"byte"},"type":{"$ref":"#/definitions/tendermint.abci.CheckTxType"}}},"tendermint.abci.RequestCommit":{"type":"object"},"tendermint.abci.RequestEcho":{"type":"object","properties":{"message":{"type":"string"}}},"tendermint.abci.RequestExtendVote":{"type":"object","title":"Extends a vote with application-injected data","properties":{"hash":{"type":"string","format":"byte","title":"the hash of the block that this vote may be referring to"},"height":{"type":"string","format":"int64","title":"the height of the extended vote"},"misbehavior":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Misbehavior"}},"next_validators_hash":{"type":"string","format":"byte"},"proposed_last_commit":{"$ref":"#/definitions/tendermint.abci.CommitInfo"},"proposer_address":{"description":"address of the public key of the original proposer of the block.","type":"string","format":"byte"},"time":{"type":"string","format":"date-time","title":"info of the block that this vote may be referring to"},"txs":{"type":"array","items":{"type":"string","format":"byte"}}}},"tendermint.abci.RequestFinalizeBlock":{"type":"object","properties":{"decided_last_commit":{"$ref":"#/definitions/tendermint.abci.CommitInfo"},"hash":{"description":"hash is the merkle root hash of the fields of the decided block.","type":"string","format":"byte"},"height":{"type":"string","format":"int64"},"misbehavior":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Misbehavior"}},"next_validators_hash":{"type":"string","format":"byte"},"proposer_address":{"description":"proposer_address is the address of the public key of the original proposer of the block.","type":"string","format":"byte"},"time":{"type":"string","format":"date-time"},"txs":{"type":"array","items":{"type":"string","format":"byte"}}}},"tendermint.abci.RequestFlush":{"type":"object"},"tendermint.abci.RequestInfo":{"type":"object","properties":{"abci_version":{"type":"string"},"block_version":{"type":"string","format":"uint64"},"p2p_version":{"type":"string","format":"uint64"},"version":{"type":"string"}}},"tendermint.abci.RequestInitChain":{"type":"object","properties":{"app_state_bytes":{"type":"string","format":"byte"},"chain_id":{"type":"string"},"consensus_params":{"$ref":"#/definitions/tendermint.types.ConsensusParams"},"initial_height":{"type":"string","format":"int64"},"time":{"type":"string","format":"date-time"},"validators":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.ValidatorUpdate"}}}},"tendermint.abci.RequestListSnapshots":{"type":"object","title":"lists available snapshots"},"tendermint.abci.RequestLoadSnapshotChunk":{"type":"object","title":"loads a snapshot chunk","properties":{"chunk":{"type":"integer","format":"int64"},"format":{"type":"integer","format":"int64"},"height":{"type":"string","format":"uint64"}}},"tendermint.abci.RequestOfferSnapshot":{"type":"object","title":"offers a snapshot to the application","properties":{"app_hash":{"type":"string","format":"byte","title":"light client-verified app hash for snapshot height"},"snapshot":{"title":"snapshot offered by peers","$ref":"#/definitions/tendermint.abci.Snapshot"}}},"tendermint.abci.RequestPrepareProposal":{"type":"object","properties":{"height":{"type":"string","format":"int64"},"local_last_commit":{"$ref":"#/definitions/tendermint.abci.ExtendedCommitInfo"},"max_tx_bytes":{"description":"the modified transactions cannot exceed this size.","type":"string","format":"int64"},"misbehavior":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Misbehavior"}},"next_validators_hash":{"type":"string","format":"byte"},"proposer_address":{"description":"address of the public key of the validator proposing the block.","type":"string","format":"byte"},"time":{"type":"string","format":"date-time"},"txs":{"description":"txs is an array of transactions that will be included in a block,\nsent to the app for possible modifications.","type":"array","items":{"type":"string","format":"byte"}}}},"tendermint.abci.RequestProcessProposal":{"type":"object","properties":{"hash":{"description":"hash is the merkle root hash of the fields of the proposed block.","type":"string","format":"byte"},"height":{"type":"string","format":"int64"},"misbehavior":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Misbehavior"}},"next_validators_hash":{"type":"string","format":"byte"},"proposed_last_commit":{"$ref":"#/definitions/tendermint.abci.CommitInfo"},"proposer_address":{"description":"address of the public key of the original proposer of the block.","type":"string","format":"byte"},"time":{"type":"string","format":"date-time"},"txs":{"type":"array","items":{"type":"string","format":"byte"}}}},"tendermint.abci.RequestQuery":{"type":"object","properties":{"data":{"type":"string","format":"byte"},"height":{"type":"string","format":"int64"},"path":{"type":"string"},"prove":{"type":"boolean"}}},"tendermint.abci.RequestVerifyVoteExtension":{"type":"object","title":"Verify the vote extension","properties":{"hash":{"type":"string","format":"byte","title":"the hash of the block that this received vote corresponds to"},"height":{"type":"string","format":"int64"},"validator_address":{"type":"string","format":"byte","title":"the validator that signed the vote extension"},"vote_extension":{"type":"string","format":"byte"}}},"tendermint.abci.ResponseApplySnapshotChunk":{"type":"object","properties":{"refetch_chunks":{"type":"array","title":"Chunks to refetch and reapply","items":{"type":"integer","format":"int64"}},"reject_senders":{"type":"array","title":"Chunk senders to reject and ban","items":{"type":"string"}},"result":{"$ref":"#/definitions/tendermint.abci.ResponseApplySnapshotChunk.Result"}}},"tendermint.abci.ResponseApplySnapshotChunk.Result":{"type":"string","title":"- UNKNOWN: Unknown result, abort all snapshot restoration\n - ACCEPT: Chunk successfully accepted\n - ABORT: Abort all snapshot restoration\n - RETRY: Retry chunk (combine with refetch and reject)\n - RETRY_SNAPSHOT: Retry snapshot (combine with refetch and reject)\n - REJECT_SNAPSHOT: Reject this snapshot, try others","default":"UNKNOWN","enum":["UNKNOWN","ACCEPT","ABORT","RETRY","RETRY_SNAPSHOT","REJECT_SNAPSHOT"]},"tendermint.abci.ResponseCheckTx":{"type":"object","properties":{"code":{"type":"integer","format":"int64"},"codespace":{"type":"string"},"data":{"type":"string","format":"byte"},"events":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Event"}},"gas_used":{"type":"string","format":"int64"},"gas_wanted":{"type":"string","format":"int64"},"info":{"type":"string","title":"nondeterministic"},"log":{"type":"string","title":"nondeterministic"}}},"tendermint.abci.ResponseCommit":{"type":"object","properties":{"retain_height":{"type":"string","format":"int64"}}},"tendermint.abci.ResponseEcho":{"type":"object","properties":{"message":{"type":"string"}}},"tendermint.abci.ResponseExtendVote":{"type":"object","properties":{"vote_extension":{"type":"string","format":"byte"}}},"tendermint.abci.ResponseFinalizeBlock":{"type":"object","properties":{"app_hash":{"description":"app_hash is the hash of the applications' state which is used to confirm that execution of the transactions was\ndeterministic. It is up to the application to decide which algorithm to use.","type":"string","format":"byte"},"consensus_param_updates":{"description":"updates to the consensus params, if any.","$ref":"#/definitions/tendermint.types.ConsensusParams"},"events":{"type":"array","title":"set of block events emmitted as part of executing the block","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Event"}},"tx_results":{"type":"array","title":"the result of executing each transaction including the events\nthe particular transction emitted. This should match the order\nof the transactions delivered in the block itself","items":{"type":"object","$ref":"#/definitions/tendermint.abci.ExecTxResult"}},"validator_updates":{"description":"a list of updates to the validator set. These will reflect the validator set at current height + 2.","type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.ValidatorUpdate"}}}},"tendermint.abci.ResponseFlush":{"type":"object"},"tendermint.abci.ResponseInfo":{"type":"object","properties":{"app_version":{"type":"string","format":"uint64"},"data":{"type":"string"},"last_block_app_hash":{"type":"string","format":"byte"},"last_block_height":{"type":"string","format":"int64"},"version":{"type":"string"}}},"tendermint.abci.ResponseInitChain":{"type":"object","properties":{"app_hash":{"type":"string","format":"byte"},"consensus_params":{"$ref":"#/definitions/tendermint.types.ConsensusParams"},"validators":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.ValidatorUpdate"}}}},"tendermint.abci.ResponseListSnapshots":{"type":"object","properties":{"snapshots":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.abci.Snapshot"}}}},"tendermint.abci.ResponseLoadSnapshotChunk":{"type":"object","properties":{"chunk":{"type":"string","format":"byte"}}},"tendermint.abci.ResponseOfferSnapshot":{"type":"object","properties":{"result":{"$ref":"#/definitions/tendermint.abci.ResponseOfferSnapshot.Result"}}},"tendermint.abci.ResponseOfferSnapshot.Result":{"type":"string","title":"- UNKNOWN: Unknown result, abort all snapshot restoration\n - ACCEPT: Snapshot accepted, apply chunks\n - ABORT: Abort all snapshot restoration\n - REJECT: Reject this specific snapshot, try others\n - REJECT_FORMAT: Reject all snapshots of this format, try others\n - REJECT_SENDER: Reject all snapshots from the sender(s), try others","default":"UNKNOWN","enum":["UNKNOWN","ACCEPT","ABORT","REJECT","REJECT_FORMAT","REJECT_SENDER"]},"tendermint.abci.ResponsePrepareProposal":{"type":"object","properties":{"txs":{"type":"array","items":{"type":"string","format":"byte"}}}},"tendermint.abci.ResponseProcessProposal":{"type":"object","properties":{"status":{"$ref":"#/definitions/tendermint.abci.ResponseProcessProposal.ProposalStatus"}}},"tendermint.abci.ResponseProcessProposal.ProposalStatus":{"type":"string","default":"UNKNOWN","enum":["UNKNOWN","ACCEPT","REJECT"]},"tendermint.abci.ResponseQuery":{"type":"object","properties":{"code":{"type":"integer","format":"int64"},"codespace":{"type":"string"},"height":{"type":"string","format":"int64"},"index":{"type":"string","format":"int64"},"info":{"type":"string","title":"nondeterministic"},"key":{"type":"string","format":"byte"},"log":{"description":"bytes data = 2; // use \"value\" instead.\n\nnondeterministic","type":"string"},"proof_ops":{"$ref":"#/definitions/tendermint.crypto.ProofOps"},"value":{"type":"string","format":"byte"}}},"tendermint.abci.ResponseVerifyVoteExtension":{"type":"object","properties":{"status":{"$ref":"#/definitions/tendermint.abci.ResponseVerifyVoteExtension.VerifyStatus"}}},"tendermint.abci.ResponseVerifyVoteExtension.VerifyStatus":{"description":" - REJECT: Rejecting the vote extension will reject the entire precommit by the sender.\nIncorrectly implementing this thus has liveness implications as it may affect\nCometBFT's ability to receive 2/3+ valid votes to finalize the block.\nHonest nodes should never be rejected.","type":"string","default":"UNKNOWN","enum":["UNKNOWN","ACCEPT","REJECT"]},"tendermint.abci.Snapshot":{"type":"object","properties":{"chunks":{"type":"integer","format":"int64","title":"Number of chunks in the snapshot"},"format":{"type":"integer","format":"int64","title":"The application-specific snapshot format"},"hash":{"type":"string","format":"byte","title":"Arbitrary snapshot hash, equal only if identical"},"height":{"type":"string","format":"uint64","title":"The height at which the snapshot was taken"},"metadata":{"type":"string","format":"byte","title":"Arbitrary application metadata"}}},"tendermint.abci.Validator":{"type":"object","properties":{"address":{"type":"string","format":"byte","title":"The first 20 bytes of SHA256(public key)"},"power":{"description":"The voting power","type":"string","format":"int64","title":"PubKey pub_key = 2 [(gogoproto.nullable)=false];"}}},"tendermint.abci.ValidatorUpdate":{"type":"object","properties":{"power":{"type":"string","format":"int64"},"pub_key":{"$ref":"#/definitions/tendermint.crypto.PublicKey"}}},"tendermint.abci.VoteInfo":{"type":"object","properties":{"block_id_flag":{"$ref":"#/definitions/tendermint.types.BlockIDFlag"},"validator":{"$ref":"#/definitions/tendermint.abci.Validator"}}},"tendermint.crypto.ProofOp":{"type":"object","title":"ProofOp defines an operation used for calculating Merkle root\nThe data could be arbitrary format, providing nessecary data\nfor example neighbouring node hash","properties":{"data":{"type":"string","format":"byte"},"key":{"type":"string","format":"byte"},"type":{"type":"string"}}},"tendermint.crypto.ProofOps":{"type":"object","title":"ProofOps is Merkle proof defined by the list of ProofOps","properties":{"ops":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.crypto.ProofOp"}}}},"tendermint.crypto.PublicKey":{"type":"object","title":"PublicKey defines the keys available for use with Validators","properties":{"ed25519":{"type":"string","format":"byte"},"secp256k1":{"type":"string","format":"byte"}}},"tendermint.p2p.DefaultNodeInfo":{"type":"object","properties":{"channels":{"type":"string","format":"byte"},"default_node_id":{"type":"string"},"listen_addr":{"type":"string"},"moniker":{"type":"string"},"network":{"type":"string"},"other":{"$ref":"#/definitions/tendermint.p2p.DefaultNodeInfoOther"},"protocol_version":{"$ref":"#/definitions/tendermint.p2p.ProtocolVersion"},"version":{"type":"string"}}},"tendermint.p2p.DefaultNodeInfoOther":{"type":"object","properties":{"rpc_address":{"type":"string"},"tx_index":{"type":"string"}}},"tendermint.p2p.ProtocolVersion":{"type":"object","properties":{"app":{"type":"string","format":"uint64"},"block":{"type":"string","format":"uint64"},"p2p":{"type":"string","format":"uint64"}}},"tendermint.types.ABCIParams":{"description":"ABCIParams configure functionality specific to the Application Blockchain Interface.","type":"object","properties":{"vote_extensions_enable_height":{"description":"vote_extensions_enable_height configures the first height during which\nvote extensions will be enabled. During this specified height, and for all\nsubsequent heights, precommit messages that do not contain valid extension data\nwill be considered invalid. Prior to this height, vote extensions will not\nbe used or accepted by validators on the network.\n\nOnce enabled, vote extensions will be created by the application in ExtendVote,\npassed to the application for validation in VerifyVoteExtension and given\nto the application to use when proposing a block during PrepareProposal.","type":"string","format":"int64"}}},"tendermint.types.Block":{"type":"object","properties":{"data":{"$ref":"#/definitions/tendermint.types.Data"},"evidence":{"$ref":"#/definitions/tendermint.types.EvidenceList"},"header":{"$ref":"#/definitions/tendermint.types.Header"},"last_commit":{"$ref":"#/definitions/tendermint.types.Commit"}}},"tendermint.types.BlockID":{"type":"object","title":"BlockID","properties":{"hash":{"type":"string","format":"byte"},"part_set_header":{"$ref":"#/definitions/tendermint.types.PartSetHeader"}}},"tendermint.types.BlockIDFlag":{"description":"- BLOCK_ID_FLAG_UNKNOWN: indicates an error condition\n - BLOCK_ID_FLAG_ABSENT: the vote was not received\n - BLOCK_ID_FLAG_COMMIT: voted for the block that received the majority\n - BLOCK_ID_FLAG_NIL: voted for nil","type":"string","title":"BlockIdFlag indicates which BlockID the signature is for","default":"BLOCK_ID_FLAG_UNKNOWN","enum":["BLOCK_ID_FLAG_UNKNOWN","BLOCK_ID_FLAG_ABSENT","BLOCK_ID_FLAG_COMMIT","BLOCK_ID_FLAG_NIL"]},"tendermint.types.BlockParams":{"description":"BlockParams contains limits on the block size.","type":"object","properties":{"max_bytes":{"type":"string","format":"int64","title":"Max block size, in bytes.\nNote: must be greater than 0"},"max_gas":{"type":"string","format":"int64","title":"Max gas per block.\nNote: must be greater or equal to -1"}}},"tendermint.types.Commit":{"description":"Commit contains the evidence that a block was committed by a set of validators.","type":"object","properties":{"block_id":{"$ref":"#/definitions/tendermint.types.BlockID"},"height":{"type":"string","format":"int64"},"round":{"type":"integer","format":"int32"},"signatures":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.types.CommitSig"}}}},"tendermint.types.CommitSig":{"description":"CommitSig is a part of the Vote included in a Commit.","type":"object","properties":{"block_id_flag":{"$ref":"#/definitions/tendermint.types.BlockIDFlag"},"signature":{"type":"string","format":"byte"},"timestamp":{"type":"string","format":"date-time"},"validator_address":{"type":"string","format":"byte"}}},"tendermint.types.ConsensusParams":{"description":"ConsensusParams contains consensus critical parameters that determine the\nvalidity of blocks.","type":"object","properties":{"abci":{"$ref":"#/definitions/tendermint.types.ABCIParams"},"block":{"$ref":"#/definitions/tendermint.types.BlockParams"},"evidence":{"$ref":"#/definitions/tendermint.types.EvidenceParams"},"validator":{"$ref":"#/definitions/tendermint.types.ValidatorParams"},"version":{"$ref":"#/definitions/tendermint.types.VersionParams"}}},"tendermint.types.Data":{"type":"object","title":"Data contains the set of transactions included in the block","properties":{"txs":{"description":"Txs that will be applied by state @ block.Height+1.\nNOTE: not all txs here are valid. We're just agreeing on the order first.\nThis means that block.AppHash does not include these txs.","type":"array","items":{"type":"string","format":"byte"}}}},"tendermint.types.DuplicateVoteEvidence":{"description":"DuplicateVoteEvidence contains evidence of a validator signed two conflicting votes.","type":"object","properties":{"timestamp":{"type":"string","format":"date-time"},"total_voting_power":{"type":"string","format":"int64"},"validator_power":{"type":"string","format":"int64"},"vote_a":{"$ref":"#/definitions/tendermint.types.Vote"},"vote_b":{"$ref":"#/definitions/tendermint.types.Vote"}}},"tendermint.types.Evidence":{"type":"object","properties":{"duplicate_vote_evidence":{"$ref":"#/definitions/tendermint.types.DuplicateVoteEvidence"},"light_client_attack_evidence":{"$ref":"#/definitions/tendermint.types.LightClientAttackEvidence"}}},"tendermint.types.EvidenceList":{"type":"object","properties":{"evidence":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.types.Evidence"}}}},"tendermint.types.EvidenceParams":{"description":"EvidenceParams determine how we handle evidence of malfeasance.","type":"object","properties":{"max_age_duration":{"description":"Max age of evidence, in time.\n\nIt should correspond with an app's \"unbonding period\" or other similar\nmechanism for handling [Nothing-At-Stake\nattacks](https://github.com/ethereum/wiki/wiki/Proof-of-Stake-FAQ#what-is-the-nothing-at-stake-problem-and-how-can-it-be-fixed).","type":"string"},"max_age_num_blocks":{"description":"Max age of evidence, in blocks.\n\nThe basic formula for calculating this is: MaxAgeDuration / {average block\ntime}.","type":"string","format":"int64"},"max_bytes":{"type":"string","format":"int64","title":"This sets the maximum size of total evidence in bytes that can be committed in a single block.\nand should fall comfortably under the max block bytes.\nDefault is 1048576 or 1MB"}}},"tendermint.types.Header":{"description":"Header defines the structure of a block header.","type":"object","properties":{"app_hash":{"type":"string","format":"byte","title":"state after txs from the previous block"},"chain_id":{"type":"string"},"consensus_hash":{"type":"string","format":"byte","title":"consensus params for current block"},"data_hash":{"type":"string","format":"byte","title":"transactions"},"evidence_hash":{"description":"evidence included in the block","type":"string","format":"byte","title":"consensus info"},"height":{"type":"string","format":"int64"},"last_block_id":{"title":"prev block info","$ref":"#/definitions/tendermint.types.BlockID"},"last_commit_hash":{"description":"commit from validators from the last block","type":"string","format":"byte","title":"hashes of block data"},"last_results_hash":{"type":"string","format":"byte","title":"root hash of all results from the txs from the previous block"},"next_validators_hash":{"type":"string","format":"byte","title":"validators for the next block"},"proposer_address":{"type":"string","format":"byte","title":"original proposer of the block"},"time":{"type":"string","format":"date-time"},"validators_hash":{"description":"validators for the current block","type":"string","format":"byte","title":"hashes from the app output from the prev block"},"version":{"title":"basic block info","$ref":"#/definitions/tendermint.version.Consensus"}}},"tendermint.types.LightBlock":{"type":"object","properties":{"signed_header":{"$ref":"#/definitions/tendermint.types.SignedHeader"},"validator_set":{"$ref":"#/definitions/tendermint.types.ValidatorSet"}}},"tendermint.types.LightClientAttackEvidence":{"description":"LightClientAttackEvidence contains evidence of a set of validators attempting to mislead a light client.","type":"object","properties":{"byzantine_validators":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.types.Validator"}},"common_height":{"type":"string","format":"int64"},"conflicting_block":{"$ref":"#/definitions/tendermint.types.LightBlock"},"timestamp":{"type":"string","format":"date-time"},"total_voting_power":{"type":"string","format":"int64"}}},"tendermint.types.PartSetHeader":{"type":"object","title":"PartsetHeader","properties":{"hash":{"type":"string","format":"byte"},"total":{"type":"integer","format":"int64"}}},"tendermint.types.SignedHeader":{"type":"object","properties":{"commit":{"$ref":"#/definitions/tendermint.types.Commit"},"header":{"$ref":"#/definitions/tendermint.types.Header"}}},"tendermint.types.SignedMsgType":{"description":"SignedMsgType is a type of signed message in the consensus.\n\n - SIGNED_MSG_TYPE_PREVOTE: Votes\n - SIGNED_MSG_TYPE_PROPOSAL: Proposals","type":"string","default":"SIGNED_MSG_TYPE_UNKNOWN","enum":["SIGNED_MSG_TYPE_UNKNOWN","SIGNED_MSG_TYPE_PREVOTE","SIGNED_MSG_TYPE_PRECOMMIT","SIGNED_MSG_TYPE_PROPOSAL"]},"tendermint.types.Validator":{"type":"object","properties":{"address":{"type":"string","format":"byte"},"proposer_priority":{"type":"string","format":"int64"},"pub_key":{"$ref":"#/definitions/tendermint.crypto.PublicKey"},"voting_power":{"type":"string","format":"int64"}}},"tendermint.types.ValidatorParams":{"description":"ValidatorParams restrict the public key types validators can use.\nNOTE: uses ABCI pubkey naming, not Amino names.","type":"object","properties":{"pub_key_types":{"type":"array","items":{"type":"string"}}}},"tendermint.types.ValidatorSet":{"type":"object","properties":{"proposer":{"$ref":"#/definitions/tendermint.types.Validator"},"total_voting_power":{"type":"string","format":"int64"},"validators":{"type":"array","items":{"type":"object","$ref":"#/definitions/tendermint.types.Validator"}}}},"tendermint.types.VersionParams":{"description":"VersionParams contains the ABCI application version.","type":"object","properties":{"app":{"type":"string","format":"uint64"}}},"tendermint.types.Vote":{"description":"Vote represents a prevote or precommit vote from validators for\nconsensus.","type":"object","properties":{"block_id":{"description":"zero if vote is nil.","$ref":"#/definitions/tendermint.types.BlockID"},"extension":{"description":"Vote extension provided by the application. Only valid for precommit\nmessages.","type":"string","format":"byte"},"extension_signature":{"description":"Vote extension signature by the validator if they participated in\nconsensus for the associated block.\nOnly valid for precommit messages.","type":"string","format":"byte"},"height":{"type":"string","format":"int64"},"round":{"type":"integer","format":"int32"},"signature":{"description":"Vote signature by the validator if they participated in consensus for the\nassociated block.","type":"string","format":"byte"},"timestamp":{"type":"string","format":"date-time"},"type":{"$ref":"#/definitions/tendermint.types.SignedMsgType"},"validator_address":{"type":"string","format":"byte"},"validator_index":{"type":"integer","format":"int32"}}},"tendermint.version.Consensus":{"description":"Consensus captures the consensus rules for processing a block in the blockchain,\nincluding all blockchain data structures and the rules of the application's\nstate transition machine.","type":"object","properties":{"app":{"type":"string","format":"uint64"},"block":{"type":"string","format":"uint64"}}},"tokenization.ActionPermission":{"description":"ActionPermission defines the permissions for performing an action.\n\nThis is simple and straightforward as the only thing we need to check is the permitted/forbidden times.","type":"object","properties":{"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}}}},"tokenization.AddressChecks":{"type":"object","title":"AddressChecks defines checks for address types (EVM contract, liquidity pool, etc.)","properties":{"mustBeEvmContract":{"description":"Require the address to be an EVM contract (has code).","type":"boolean"},"mustBeLiquidityPool":{"description":"Require the address to be a liquidity pool.","type":"boolean"},"mustNotBeEvmContract":{"description":"Require the address to not be an EVM contract (no code).","type":"boolean"},"mustNotBeLiquidityPool":{"description":"Require the address to not be a liquidity pool.","type":"boolean"}}},"tokenization.AddressList":{"type":"object","title":"An AddressList is a list of addresses that are referenced by an ID.\nAddressLists are used in defining approvals ia a reusbale identifier. \nNote: We also support a reserved ID system by string ID; \"Mint\", \"!Mint\"","properties":{"addresses":{"description":"List of addresses included in the list.","type":"array","items":{"type":"string"}},"createdBy":{"description":"The user or entity who created the address list.","type":"string"},"customData":{"description":"Custom arbitrary data or additional information related to the address list.","type":"string"},"listId":{"description":"Unique identifier for the address list.","type":"string"},"uri":{"description":"URI (Uniform Resource Identifier) associated with the address list to provide metadata, if applicable.","type":"string"},"whitelist":{"description":"Indicates whether the list includes the specified addresses (true) or excludes them (false).","type":"boolean"}}},"tokenization.AddressListInput":{"description":"AddressListInput is used for creating address lists via MsgCreateAddressLists.\nIt contains all fields from AddressList except createdBy, which is automatically set from the message creator.","type":"object","properties":{"addresses":{"description":"List of addresses included in the list.","type":"array","items":{"type":"string"}},"customData":{"description":"Custom arbitrary data or additional information related to the address list.","type":"string"},"listId":{"description":"Unique identifier for the address list.","type":"string"},"uri":{"description":"URI (Uniform Resource Identifier) associated with the address list to provide metadata, if applicable.","type":"string"},"whitelist":{"description":"Indicates whether the list includes the specified addresses (true) or excludes them (false).","type":"boolean"}}},"tokenization.AliasPath":{"type":"object","properties":{"conversion":{"description":"The conversion between cosmos coin and token balances.","$ref":"#/definitions/tokenization.ConversionWithoutDenom"},"denom":{"description":"The denomination (denom) to be used for the alias.","type":"string"},"denomUnits":{"description":"Denomination units for the alias. Defines how the coin can be displayed with different decimal places and symbols.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.DenomUnit"}},"metadata":{"description":"The metadata for this alias path.","$ref":"#/definitions/tokenization.PathMetadata"},"symbol":{"description":"The symbol for the alias (e.g., \"BADGE\", \"NFT\"). Used for display purposes. Note that this may not be the default.","type":"string"}}},"tokenization.AliasPathAddObject":{"type":"object","properties":{"conversion":{"$ref":"#/definitions/tokenization.ConversionWithoutDenom"},"denom":{"type":"string"},"denomUnits":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.DenomUnit"}},"metadata":{"description":"The metadata for this alias path.","$ref":"#/definitions/tokenization.PathMetadata"},"symbol":{"type":"string"}}},"tokenization.AltTimeChecks":{"type":"object","title":"AltTimeChecks defines alternative time-based checks for approval denial.\nIf the transfer time falls within any of the specified offline hours or days, the approval is denied.\nUses UTC timezone for neutral timezone approach.\nofflineHours: ranges of hours (0-23) when transfers should be denied\nofflineDays: ranges of days (0-6, where 0=Sunday, 1=Monday, ..., 6=Saturday) when transfers should be denied","properties":{"offlineDays":{"description":"Days (0-6, where 0=Sunday, 1=Monday, ..., 6=Saturday) when transfers should be denied.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"offlineDaysOfMonth":{"description":"Days of month (1-31) when transfers should be denied.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"offlineHours":{"description":"Hours (0-23) when transfers should be denied.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"offlineMonths":{"description":"Months (1-12, where 1=January, 12=December) when transfers should be denied.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"offlineWeeksOfYear":{"description":"Weeks of year (1-52) when transfers should be denied. Uses ISO 8601 week numbering.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"timezoneOffsetMinutes":{"description":"Timezone offset magnitude in minutes from UTC. Default 0 = UTC. Examples: 300 for EST (UTC-5), 330 for IST (UTC+5:30).\nAll time checks are evaluated after applying this offset to the block time.","type":"string"},"timezoneOffsetNegative":{"type":"boolean","title":"If true, the timezone offset is subtracted (west of UTC). If false, it is added (east of UTC).\nExample: EST (UTC-5) = timezoneOffsetMinutes: 300, timezoneOffsetNegative: true"}}},"tokenization.ApprovalAmounts":{"description":"ApprovalAmounts defines approval amounts per unique \"from,\" \"to,\" and/or \"initiated by\" address.\nIf any of these are nil or \"0\", we assume unlimited approvals.\nIf they are set to a value, then the running tally of the amounts transferred for the specified token IDs and ownership times \nmust not exceed the corresponding value.","type":"object","properties":{"amountTrackerId":{"description":"The ID of the amount tracker associated with this approval.\nWe use this ID to track the number of transfers and amounts transferred.","type":"string"},"overallApprovalAmount":{"description":"Overall approval amount.","type":"string"},"perFromAddressApprovalAmount":{"description":"Approval amount per \"from\" address.","type":"string"},"perInitiatedByAddressApprovalAmount":{"description":"Approval amount per \"initiated by\" address.","type":"string"},"perToAddressApprovalAmount":{"description":"Approval amount per \"to\" address.","type":"string"},"resetTimeIntervals":{"description":"Time intervals to reset the trackers at.","$ref":"#/definitions/tokenization.ResetTimeIntervals"}}},"tokenization.ApprovalChange":{"description":"ApprovalChange represents a change to an approval (created, edited, or deleted).","type":"object","properties":{"action":{"type":"string"},"approvalId":{"type":"string"},"approvalLevel":{"type":"string"},"version":{"type":"string"}}},"tokenization.ApprovalCriteria":{"description":"ApprovalCriteria defines the criteria for approving transfers.\nAll criteria must be satisfied for the approval to be considered valid.","type":"object","properties":{"allowBackedMinting":{"description":"If true, this collection approval allows backed minting operations (CosmosCoinBackedPath).\nWhen false, this approval cannot be used for transfers involving backed minting addresses.\nThis prevents accidental allowances when toListIds is \"All\".","type":"boolean"},"allowSpecialWrapping":{"description":"If true, this collection approval allows special wrapping operations (CosmosCoinWrapperPath).\nWhen false, this approval cannot be used for transfers involving wrapping addresses.\nThis prevents accidental allowances when toListIds is \"All\".","type":"boolean"},"altTimeChecks":{"description":"Alternative time-based checks for approval denial (offline hours/days). Defines time periods\nduring which this approval should be denied, such as specific hours of the day or days of the week.","$ref":"#/definitions/tokenization.AltTimeChecks"},"approvalAmounts":{"description":"Threshold limit of amounts that can be transferred using this approval. Tracks cumulative amounts\ntransferred and enforces maximum limits per approval.","$ref":"#/definitions/tokenization.ApprovalAmounts"},"autoDeletionOptions":{"description":"Auto-deletion options for this approval. Defines conditions under which this approval should be\nautomatically deleted (e.g., after a certain number of uses or time period).","$ref":"#/definitions/tokenization.AutoDeletionOptions"},"coinTransfers":{"description":"The sdk.Coins that need to be transferred for approval. Defines required coin transfers (e.g., fees,\nroyalties) that must be executed alongside the token transfer for the approval to be valid.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.CoinTransfer"}},"dynamicStoreChallenges":{"description":"Dynamic store challenges that the initiator must pass for approval. The initiator must provide\nvalid proofs that satisfy all specified dynamic store challenges (e.g., key-value store lookups).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.DynamicStoreChallenge"}},"ethSignatureChallenges":{"description":"ETH signature challenges that the initiator must pass for approval. The initiator must provide\nvalid Ethereum signatures for all specified challenges. Each signature can only be used once.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ETHSignatureChallenge"}},"evmQueryChallenges":{"description":"EVM query challenges that must pass for approval. Read-only contract queries\nthat verify external EVM state (e.g., token ownership in another contract).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.EVMQueryChallenge"}},"initiatorChecks":{"description":"Address checks for the initiator of the transfer. Validates that the initiator address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.AddressChecks"},"maxNumTransfers":{"description":"Maximum number of transfers that can be processed using this approval. Tracks the count of transfers\nand enforces the limit to prevent exceeding the allowed number of uses.","$ref":"#/definitions/tokenization.MaxNumTransfers"},"merkleChallenges":{"description":"Merkle challenges that must be satisfied for approval. The initiator must provide valid Merkle proofs\nthat satisfy all specified challenges. Each challenge requires a proof that leads to a specific root hash.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.MerkleChallenge"}},"mustOwnTokens":{"description":"Must own tokens for approval. Defines token ownership requirements that must be satisfied for\nthe approval to be valid. The initiator must own the specified tokens at the specified ownership times.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.MustOwnTokens"}},"mustPrioritize":{"description":"If true, this approval must be explicitly prioritized in PrioritizedApprovals to be used.\nThis allows fine-grained control over which approvals are applied when multiple approvals could match.","type":"boolean"},"overridesFromOutgoingApprovals":{"description":"Overrides the user's outgoing approvals for approval. If true, this collection-level approval\ntakes precedence over any outgoing approvals defined by the sender, allowing the collection to\ncontrol outgoing transfer behavior.","type":"boolean"},"overridesToIncomingApprovals":{"description":"Overrides the user's incoming approvals for approval. If true, this collection-level approval\ntakes precedence over any incoming approvals defined by the recipient, allowing the collection to\ncontrol incoming transfer behavior.","type":"boolean"},"predeterminedBalances":{"description":"Predetermined balances that must be used for each approval. Defines the exact token amounts and IDs\nthat can be transferred when using this approval.","$ref":"#/definitions/tokenization.PredeterminedBalances"},"recipientChecks":{"description":"Address checks for the recipient of the transfer. Validates that the recipient address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.AddressChecks"},"requireFromDoesNotEqualInitiatedBy":{"description":"Require the \"from\" address to not be equal to the \"initiated by\" address for approval.\nIf true, transfers where the sender equals the initiator are forbidden.","type":"boolean"},"requireFromEqualsInitiatedBy":{"description":"Require the \"from\" address to be equal to the \"initiated by\" address for approval.\nIf true, only transfers where the sender matches the initiator are allowed.","type":"boolean"},"requireToDoesNotEqualInitiatedBy":{"description":"Require the \"to\" address to not be equal to the \"initiated by\" address for approval.\nIf true, transfers where the recipient equals the initiator are forbidden.","type":"boolean"},"requireToEqualsInitiatedBy":{"description":"Require the \"to\" address to be equal to the \"initiated by\" address for approval.\nIf true, only transfers where the recipient matches the initiator are allowed.","type":"boolean"},"senderChecks":{"description":"Address checks for the sender of the transfer. Validates that the sender address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.AddressChecks"},"userApprovalSettings":{"description":"Issuer-imposed constraints on user-level coin transfers. Propagated to user-level approvals\nduring greedy transfer matching (same pattern as userRoyalties). Only applicable on collection-level approvals.\nIf conflicting settings across multiple matched approvals, the transfer is rejected (like royalties).","$ref":"#/definitions/tokenization.UserApprovalSettings"},"votingChallenges":{"description":"Voting challenges that must be satisfied for approval. The initiator must provide\nvalid votes that meet the quorum threshold for all specified challenges.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.VotingChallenge"}}}},"tokenization.ApprovalIdentifierDetails":{"description":"ApprovalIdentifierDetails defines the details to identify a specific approval.","type":"object","properties":{"approvalId":{"description":"The ID of the approval.","type":"string"},"approvalLevel":{"description":"The level of the approval. Can be \"collection\", \"incoming\", or \"outgoing\".","type":"string"},"approverAddress":{"description":"The address of the approver. Leave blank \"\" if approvalLevel == \"collection\".","type":"string"},"version":{"description":"The version of the approval.","type":"string"}}},"tokenization.ApprovalTracker":{"description":"ApprovalTracker defines the tracker for approvals. This tracks the cumulative number of transfers and associated balances transferred.","type":"object","properties":{"amounts":{"description":"Cumulative balances associated with the transfers that have been processed.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.Balance"}},"lastUpdatedAt":{"description":"Last updated at time.","type":"string"},"numTransfers":{"description":"The number of transfers that have been processed.","type":"string"}}},"tokenization.ApprovalUsed":{"description":"ApprovalUsed represents an approval that was consumed during a transfer.","type":"object","properties":{"approvalId":{"type":"string"},"approvalLevel":{"type":"string"},"approverAddress":{"type":"string"},"version":{"type":"string"}}},"tokenization.AutoDeletionOptions":{"description":"AutoDeletionOptions defines the options for auto-deletion of approvals.","type":"object","properties":{"afterOneUse":{"type":"boolean","title":"After one use?"},"afterOverallMaxNumTransfers":{"type":"boolean","title":"After overall max number of uses threshold is met?"},"allowCounterpartyPurge":{"type":"boolean","title":"Allow counterparty to purge this approval if they are the only initiator"},"allowPurgeIfExpired":{"type":"boolean","title":"Allow others to call PurgeApprovals on behalf of this approval owner"}}},"tokenization.Balance":{"description":"Balance represents the balance of a token for a specific user.\nThe user amounts xAmount of a token specified for the time ranges specified.\n\nExample: User A owns x10 of token IDs 1-10 from 1/1/2020 to 1/1/2021.\n\nIf times or tokenIDs have len \u003e 1, then the user owns all token IDs specified for all time ranges specified.","type":"object","properties":{"amount":{"description":"The amount of the token owned by the user.","type":"string"},"ownershipTimes":{"description":"The time ranges during which the user owns the token.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"tokenIds":{"description":"The token IDs for which the user owns the token.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}}}},"tokenization.CoinTransfer":{"type":"object","properties":{"coins":{"description":"The sdk.Coins to be transferred.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"overrideFromWithApproverAddress":{"description":"By default, the from address is the initiator of the transaction.\nIf this is set to true, we will override the from address with the approver address.\nNote: This is not applicable for collection approvals (since approverAddress == '').","type":"boolean"},"overrideToWithInitiator":{"description":"By default, the to address is what is specified in the coin transfer.\nIf this is set to true, we will override the to address with the initiator of the transaction.","type":"boolean"},"to":{"description":"The address of the recipient of the transfer.","type":"string"}}},"tokenization.CoinTransferProto":{"description":"CoinTransferProto represents a coin transfer that occurred during a transaction.","type":"object","properties":{"amount":{"type":"string"},"denom":{"type":"string"},"from":{"type":"string"},"isProtocolFee":{"type":"boolean"},"to":{"type":"string"}}},"tokenization.CollectionApproval":{"type":"object","title":"CollectionApproval defines the rules for the approval of a transfer on the collection level","properties":{"approvalCriteria":{"description":"The criteria that must be met for this approval to be considered.","$ref":"#/definitions/tokenization.ApprovalCriteria"},"approvalId":{"description":"The ID of this approval. Must be unique per level (i.e. collection, outgoing, incoming).","type":"string"},"customData":{"description":"Arbitrary custom data associated with this approval.","type":"string"},"fromListId":{"description":"The list ID for the sender of the transfer.","type":"string"},"initiatedByListId":{"description":"The list ID for the user who initiated the transfer.","type":"string"},"ownershipTimes":{"description":"The allowed range of ownership times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"toListId":{"description":"The list ID for the recipient of the transfer.","type":"string"},"tokenIds":{"description":"The allowed range of token IDs for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"transferTimes":{"description":"The allowed range of transfer times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"uri":{"description":"The URI associated with this approval, optionally providing metadata about the approval.","type":"string"},"version":{"description":"Version of the approval. Maintained internally.","type":"string"}}},"tokenization.CollectionApprovalPermission":{"description":"CollectionApprovalPermission defines what collection approved transfers can be updated vs. are locked.\n\nEach transfer is broken down to a (from, to, initiatedBy, transferTime, tokenId) tuple.\nFor a transfer to match, we need to match ALL of the fields in the combination. \nThese are determined by the fromListId, toListId, initiatedByListId, transferTimes, tokenIds fields.\nAddressLists are used for (from, to, initiatedBy) which are a permanent list of addresses identified by an ID (see AddressLists). \n\npermanentlyPermitted/ForbiddenTimes: when can the manager execute this permission?\n\nEx: Let's say we are updating the transferability for the transfer tuple (\"AllWithoutMint\", \"AllWithoutMint\", \"AllWithoutMint\", 10, 1000).\nWe would check to find the FIRST CollectionApprovalPermission that matches this combination.\nIf we find a match, we would check the permitted/forbidden times to see if we can execute this permission (default is ALLOWED).\n\nEx: So if you wanted to freeze the transferability to enforce that token ID 1 will always be transferable, you could set\nthe combination (\"AllWithoutMint\", \"AllWithoutMint\", \"AllWithoutMint\", \"All Transfer Times\", 1) to always be forbidden.","type":"object","properties":{"approvalId":{"description":"Identifier for the approvalId. You can use \"All\" or \"!approvalId\" for shorthand.\nIf you use \"All\", this approval will match to all approvalIds.\nIf you use \"!approvalId\", this approval will match to all approvalIds except for approvalId.\nIf you use \"approvalId\", this approval will match to only the specified approvalId and fail on all others.","type":"string"},"fromListId":{"description":"Identifier for the sender list.","type":"string"},"initiatedByListId":{"description":"Identifier for the initiator list (who is approved?).","type":"string"},"ownershipTimes":{"description":"Specifies the ownership times for the tokens in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"toListId":{"description":"Identifier for the recipient list.","type":"string"},"tokenIds":{"description":"Specifies the token IDs involved in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"transferTimes":{"description":"Specifies the times when the transfer can occur.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}}}},"tokenization.CollectionInvariants":{"description":"CollectionInvariants defines the invariants that apply to a collection.","type":"object","properties":{"cosmosCoinBackedPath":{"description":"The IBC backed (sdk.coin) path for the collection. Only one path is allowed.","$ref":"#/definitions/tokenization.CosmosCoinBackedPath"},"disablePoolCreation":{"description":"If true, disallows pool creation with this collection's assets.\nWhen true, any attempt to create a pool with tokenization assets from this collection will fail.","type":"boolean"},"evmQueryChallenges":{"type":"array","title":"EVM query invariants that must pass after all transfers complete.\nThese are checked once per message after all balance updates, with access to ALL recipient addresses.\nPlaceholders: $sender, $recipients (comma-separated), $initiator, $collectionId, $recipient","items":{"type":"object","$ref":"#/definitions/tokenization.EVMQueryChallenge"}},"maxSupplyPerId":{"description":"Maximum supply per token ID. Checked against Total address balances after transfers complete.\nA value of 0 means no limit (unlimited).","type":"string"},"noCustomOwnershipTimes":{"description":"If true, all ownership times must be full ranges [{ start: 1, end: GoMaxUInt64 }].\nThis prevents time-based restrictions on token ownership.","type":"boolean"},"noForcefulPostMintTransfers":{"description":"If true, disallows any collection approvals that have overridesFromOutgoingApprovals or overridesToIncomingApprovals set to true.\nThis prevents forceful transfers that bypass user-level approvals.\nThis only applies to transfers where the from address does not equal \"Mint\".","type":"boolean"}}},"tokenization.CollectionMetadata":{"description":"This message defines the metadata for the collection.\nThe interpretation of this metadata should follow the collection standard.","type":"object","properties":{"customData":{"description":"Custom data or additional information related to the collection metadata.","type":"string"},"uri":{"description":"The URI (Uniform Resource Identifier) associated with the collection metadata.","type":"string"}}},"tokenization.CollectionPermissions":{"description":"CollectionPermissions defines the permissions for the collection (i.e., what the manager can and cannot do).\n\nThere are three types of permissions for a collection: ActionPermission, TokenIdsActionPermission, and CollectionApprovalPermission.\n\nThe permission type allows fine-grained access control for each action.\n- ActionPermission: defines when the manager can perform an action or update a field.\n- TokenIdsActionPermission: defines when the manager can perform an action for specific tokens\n- CollectionApprovalPermission: defines when the manager can update the transferability of the collection and what transfers can be updated vs. locked.\n\nNote there are a few different times here which could get confusing:\n- permanentlyPermitted/ForbiddenTimes - the times that a permission can be performed\n- transferTimes - the times that a transfer occurs\n- ownershipTimes - the times when a token is owned by a user\n\nThe permitted/permanentlyForbiddenTimes are used to determine when a permission can be executed.\nOnce a time is set to be permitted or forbidden, it is PERMANENT and cannot be changed.\nIf a time is not set to be permitted or forbidden, it is considered NEUTRAL and can be updated but is ALLOWED by default.\n\nIMPORTANT: We take first-match only for the permissions. This means that if you forbid time T in array index 0 and permit time T in index 1, \nwe will only check the first permission (forbid time T) and not the second permission (permit time T).","type":"object","properties":{"canAddMoreAliasPaths":{"description":"Permissions related to adding more alias paths to the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ActionPermission"}},"canAddMoreCosmosCoinWrapperPaths":{"description":"Permissions related to adding more cosmos coin wrapper paths to the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ActionPermission"}},"canArchiveCollection":{"description":"Permissions related to archiving the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ActionPermission"}},"canDeleteCollection":{"description":"Permissions related to deleting the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ActionPermission"}},"canUpdateCollectionApprovals":{"description":"Permissions related to updating collection approvals.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.CollectionApprovalPermission"}},"canUpdateCollectionMetadata":{"description":"Permissions related to updating the metadata of the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ActionPermission"}},"canUpdateCustomData":{"description":"Permissions related to updating custom data for the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ActionPermission"}},"canUpdateManager":{"description":"Permissions related to updating the collection's manager.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ActionPermission"}},"canUpdateStandards":{"description":"Permissions related to updating standards for the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ActionPermission"}},"canUpdateTokenMetadata":{"description":"Permissions related to updating token metadata for specific tokens.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.TokenIdsActionPermission"}},"canUpdateValidTokenIds":{"description":"Permissions related to creating more tokens for the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.TokenIdsActionPermission"}}}},"tokenization.CollectionStats":{"description":"CollectionStats tracks aggregated statistics for a collection.","type":"object","properties":{"balances":{"type":"array","title":"Tracks circulating supply as Balance[] for proper range handling","items":{"type":"object","$ref":"#/definitions/tokenization.Balance"}},"holderCount":{"type":"string"}}},"tokenization.Conversion":{"description":"Conversion defines a bidirectional conversion between a cosmos coin (with denom) and token balances.","type":"object","properties":{"sideA":{"description":"Side A: The cosmos coin side of the conversion (amount + denom).","$ref":"#/definitions/tokenization.ConversionSideAWithDenom"},"sideB":{"description":"Side B: The token balances side of the conversion.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.Balance"}}}},"tokenization.ConversionSideA":{"description":"ConversionSideA represents the cosmos coin amount side of a conversion without denomination.","type":"object","properties":{"amount":{"description":"The amount of the cosmos coin (0 decimals).","type":"string"}}},"tokenization.ConversionSideAWithDenom":{"description":"ConversionSideAWithDenom represents the cosmos coin side of a conversion with denomination.","type":"object","properties":{"amount":{"description":"The amount of the cosmos coin (0 decimals).","type":"string"},"denom":{"description":"The denomination of the cosmos coin.","type":"string"}}},"tokenization.ConversionWithoutDenom":{"description":"ConversionWithoutDenom defines a bidirectional conversion between a cosmos coin amount (without denom) and token balances.\nThe denom is stored at the base level (e.g., in AliasPath or CosmosCoinWrapperPath).","type":"object","properties":{"sideA":{"description":"Side A: The cosmos coin amount side of the conversion (amount only, denom stored separately).","$ref":"#/definitions/tokenization.ConversionSideA"},"sideB":{"description":"Side B: The token balances side of the conversion.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.Balance"}}}},"tokenization.CosmosCoinBackedPath":{"type":"object","properties":{"address":{"description":"The address associated with this backed path. Used for routing and escrowing IBC tokens.","type":"string"},"conversion":{"description":"The conversion between IBC cosmos coin and token balances.","$ref":"#/definitions/tokenization.Conversion"}}},"tokenization.CosmosCoinBackedPathAddObject":{"type":"object","properties":{"conversion":{"$ref":"#/definitions/tokenization.Conversion"}}},"tokenization.CosmosCoinWrapperPath":{"type":"object","properties":{"address":{"description":"The BitBadges address associated with this wrapper path. Used for routing and identifying the wrapper.","type":"string"},"allowOverrideWithAnyValidToken":{"description":"If true, allows this wrapper path to be used with any valid token ID in the collection via an {id} placeholder.","type":"boolean"},"conversion":{"description":"The conversion between cosmos coin and token balances.","$ref":"#/definitions/tokenization.ConversionWithoutDenom"},"denom":{"description":"The denomination (denom) to be used for the wrapped coin or the alias denom.","type":"string"},"denomUnits":{"description":"Denomination units for the wrapped coin. Defines how the coin can be displayed with different\ndecimal places and symbols (e.g., base unit, display unit). You can specify which is the default display unit (base level or one of these).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.DenomUnit"}},"metadata":{"description":"The metadata for this wrapper path.","$ref":"#/definitions/tokenization.PathMetadata"},"symbol":{"description":"The symbol for the wrapped coin (e.g., \"BADGE\", \"NFT\"). Used for display purposes. Note that this may not be the default.","type":"string"}}},"tokenization.CosmosCoinWrapperPathAddObject":{"type":"object","properties":{"allowOverrideWithAnyValidToken":{"type":"boolean"},"conversion":{"$ref":"#/definitions/tokenization.ConversionWithoutDenom"},"denom":{"type":"string"},"denomUnits":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.DenomUnit"}},"metadata":{"description":"The metadata for this wrapper path.","$ref":"#/definitions/tokenization.PathMetadata"},"symbol":{"type":"string"}}},"tokenization.DenomUnit":{"type":"object","properties":{"decimals":{"description":"The number of decimal places for this unit. Defines the precision of the unit.","type":"string"},"isDefaultDisplay":{"description":"If true, this is the default display unit. Only one unit should be marked as the default display unit.\nThis unit will be used by default when displaying the coin amount. If none are marked default, we use the base level.","type":"boolean"},"metadata":{"description":"The metadata for this denomination unit.","$ref":"#/definitions/tokenization.PathMetadata"},"symbol":{"description":"The symbol for this unit (e.g., \"BADGE\", \"nBADGE\"). Used for display purposes.","type":"string"}}},"tokenization.DynamicStore":{"description":"A DynamicStore is a flexible storage object that can store arbitrary data.\nIt is identified by a unique ID assigned by the blockchain, which is a uint64 that increments.\nDynamic stores are created by users and can only be updated or deleted by their creator.\nThey provide a way to store custom data on-chain with proper access control.","type":"object","properties":{"createdBy":{"description":"The address of the creator of this dynamic store.","type":"string"},"customData":{"description":"Custom data field for storing arbitrary data associated with this dynamic store.","type":"string"},"defaultValue":{"description":"The default value for uninitialized addresses (true/false).","type":"boolean"},"globalEnabled":{"description":"Global kill switch state (defaults to true on creation, can be toggled via UpdateDynamicStore).\nWhen false, all approvals using this store via DynamicStoreChallenge will fail immediately.","type":"boolean"},"storeId":{"description":"The unique identifier for this dynamic store. This is assigned by the blockchain.","type":"string"},"uri":{"description":"URI for additional metadata or resources associated with this dynamic store.","type":"string"}}},"tokenization.DynamicStoreChallenge":{"description":"DynamicStoreChallenge defines a challenge that requires the initiator to pass a dynamic store check.","type":"object","properties":{"ownershipCheckParty":{"description":"The party to check ownership for. Options are \"initiator\", \"sender\", \"recipient\", or any valid bb1 address.\nIf a valid bb1 address is provided, ownership will be checked for that specific address.\nThis enables use cases like halt tokens where ownership is checked for an arbitrary address (e.g., halt token owner).\nDefaults to \"initiator\" if empty or if the value is not a recognized option or valid bb1 address.","type":"string"},"storeId":{"description":"The ID of the dynamic store to check.","type":"string"}}},"tokenization.DynamicStoreValue":{"description":"A DynamicStoreValue stores a boolean value for a specific address in a dynamic store.\nThis allows the creator to set true/false values per address that can be checked during approval.","type":"object","properties":{"address":{"description":"The address for which this value is stored.","type":"string"},"storeId":{"description":"The unique identifier for this dynamic store.","type":"string"},"value":{"description":"The boolean value (true/false).","type":"boolean"}}},"tokenization.ETHSignatureChallenge":{"description":"ETHSignatureChallenge defines a rule for the approval in the form of an Ethereum signature challenge.\n\nAn ETH signature challenge is a challenge where the user must provide a valid Ethereum signature for a specific nonce.\nThe signature scheme is ETHSign(nonce + \"-\" + initiatorAddress + \"-\" + collectionId + \"-\" + approverAddress + \"-\" + approvalLevel + \"-\" + approvalId + \"-\" + challengeId) and each signature can only be used once.\nAll challenges must be met with valid solutions for the transfer to be approved.\n\nIMPORTANT: We track the usage of each signature to prevent replay attacks. Each signature can only be used once.\nIf you update the challenge ID, then the used signatures tracker will reset and start a new tally.\nWe recommend using a unique challenge ID for each challenge to prevent overlap and unexpected behavior.","type":"object","properties":{"challengeTrackerId":{"description":"The ID of this ETH signature challenge for tracking the number of uses per signature.","type":"string"},"customData":{"description":"Arbitrary custom data associated with this ETH signature challenge.","type":"string"},"signer":{"description":"The Ethereum address that must sign the nonce for verification.","type":"string"},"uri":{"description":"The URI associated with this ETH signature challenge, optionally providing metadata about the challenge.","type":"string"}}},"tokenization.ETHSignatureProof":{"description":"ETHSignatureProof represents an Ethereum signature proof for a challenge.","type":"object","properties":{"nonce":{"description":"The nonce that was signed. The signature scheme is ETHSign(nonce + \"-\" + initiatorAddress + \"-\" + collectionId + \"-\" + approverAddress + \"-\" + approvalLevel + \"-\" + approvalId + \"-\" + challengeId).","type":"string"},"signature":{"description":"The Ethereum signature of the nonce.","type":"string"}}},"tokenization.EVMQueryChallenge":{"description":"EVMQueryChallenge defines a rule for approval via read-only EVM contract query.\n\nThe challenge executes a staticcall to the specified contract with the given calldata.\nThe result is compared against the expected result (if provided) or checked for non-zero return.\n\nIMPORTANT: This is read-only and cannot modify state. The query is executed with a gas limit\nto prevent DoS attacks. All results are deterministic since EVM state is consistent within a block.","type":"object","properties":{"calldata":{"type":"string","title":"ABI-encoded function selector + arguments (hex string without 0x prefix)\nExample: \"70a08231000000000000000000000000{address}\" for balanceOf(address)\nCan use placeholders: $initiator, $sender, $recipient (replaced at runtime)"},"comparisonOperator":{"description":"Comparison operator: \"eq\" (equals), \"ne\" (not equals), \"gt\" (greater than), \"gte\", \"lt\", \"lte\"\nOnly \"eq\" and \"ne\" work for non-numeric types. Default is \"eq\".","type":"string"},"contractAddress":{"type":"string","title":"The EVM contract address to query (0x format or bb1 format)"},"customData":{"type":"string","title":"Arbitrary custom data"},"expectedResult":{"description":"Expected return value (hex string without 0x prefix). If empty, any non-error result passes.\nFor boolean checks, use \"0000...0001\" for true.","type":"string"},"gasLimit":{"type":"string","title":"Gas limit for the query (default 100000, max 500000)"},"uri":{"type":"string","title":"The URI associated with this challenge (metadata)"}}},"tokenization.IncomingApprovalCriteria":{"description":"IncomingApprovalCriteria defines the criteria for approving incoming transfers.\nThis is used for user-level incoming approvals and only includes fields relevant to incoming transfers.\nAll criteria must be satisfied for the approval to be considered valid.","type":"object","properties":{"altTimeChecks":{"description":"Alternative time-based checks for approval denial (offline hours/days). Defines time periods\nduring which this approval should be denied, such as specific hours of the day or days of the week.","$ref":"#/definitions/tokenization.AltTimeChecks"},"approvalAmounts":{"description":"Threshold limit of amounts that can be transferred using this approval. Tracks cumulative amounts\ntransferred and enforces maximum limits per approval.","$ref":"#/definitions/tokenization.ApprovalAmounts"},"autoDeletionOptions":{"description":"Auto-deletion options for this approval. Defines conditions under which this approval should be\nautomatically deleted (e.g., after a certain number of uses or time period).","$ref":"#/definitions/tokenization.AutoDeletionOptions"},"coinTransfers":{"description":"The sdk.Coins that need to be transferred for approval. Defines required coin transfers (e.g., fees,\nroyalties) that must be executed alongside the token transfer for the approval to be valid.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.CoinTransfer"}},"dynamicStoreChallenges":{"description":"Dynamic store challenges that the initiator must pass for approval. The initiator must provide\nvalid proofs that satisfy all specified dynamic store challenges (e.g., key-value store lookups).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.DynamicStoreChallenge"}},"ethSignatureChallenges":{"description":"ETH signature challenges that the initiator must pass for approval. The initiator must provide\nvalid Ethereum signatures for all specified challenges. Each signature can only be used once.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ETHSignatureChallenge"}},"evmQueryChallenges":{"description":"EVM query challenges that must pass for approval. Read-only contract queries\nthat verify external EVM state (e.g., token ownership in another contract).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.EVMQueryChallenge"}},"initiatorChecks":{"description":"Address checks for the initiator of the transfer. Validates that the initiator address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.AddressChecks"},"maxNumTransfers":{"description":"Maximum number of transfers that can be processed using this approval. Tracks the count of transfers\nand enforces the limit to prevent exceeding the allowed number of uses.","$ref":"#/definitions/tokenization.MaxNumTransfers"},"merkleChallenges":{"description":"Merkle challenges that must be satisfied for approval. The initiator must provide valid Merkle proofs\nthat satisfy all specified challenges. Each challenge requires a proof that leads to a specific root hash.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.MerkleChallenge"}},"mustOwnTokens":{"description":"Must own tokens for approval. Defines token ownership requirements that must be satisfied for\nthe approval to be valid. The initiator must own the specified tokens at the specified ownership times.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.MustOwnTokens"}},"mustPrioritize":{"description":"If true, this approval must be explicitly prioritized in PrioritizedApprovals to be used.\nThis allows fine-grained control over which approvals are applied when multiple approvals could match.","type":"boolean"},"predeterminedBalances":{"description":"Predetermined balances that must be used for each approval. Defines the exact token amounts and IDs\nthat can be transferred when using this approval.","$ref":"#/definitions/tokenization.PredeterminedBalances"},"requireFromDoesNotEqualInitiatedBy":{"description":"Require the \"from\" address to not be equal to the \"initiated by\" address for approval.\nIf true, transfers where the sender equals the initiator are forbidden.","type":"boolean"},"requireFromEqualsInitiatedBy":{"description":"Require the \"from\" address to be equal to the \"initiated by\" address for approval.\nIf true, only transfers where the sender matches the initiator are allowed.","type":"boolean"},"senderChecks":{"description":"Address checks for the sender of the transfer. Validates that the sender address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).\nNote: No recipient checks are included for incoming approvals since the recipient is the user themselves.","$ref":"#/definitions/tokenization.AddressChecks"},"votingChallenges":{"description":"Voting challenges that must be satisfied for approval. The initiator must provide\nvalid votes that meet the quorum threshold for all specified challenges.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.VotingChallenge"}}}},"tokenization.IncrementedBalances":{"description":"IncrementedBalances represents balances that are incremented by specific amounts, according to the order calculation method.","type":"object","properties":{"allowAmountScaling":{"description":"When true, the actual transfer can be any evenly divisible integer multiple (\u003e=1x) of startBalances.\napprovalCriteria.coinTransfers are scaled by the same multiplier.\nAll other IncrementedBalances fields must be zero/false/nil when this is true.","type":"boolean"},"allowOverrideTimestamp":{"description":"Whether to allow overriding the timestamp for the balances (only applicable with durationFromTimestamp set).","type":"boolean"},"allowOverrideWithAnyValidToken":{"type":"boolean","title":"Allow override of any valid ID"},"durationFromTimestamp":{"description":"The amount of unix milliseconds to approve starting from now. Incompatible with incrementOwnershipTimesBy.","type":"string"},"incrementOwnershipTimesBy":{"description":"The amount by which to increment ownership times. Incompatible with approveStartingFromNowBy.","type":"string"},"incrementTokenIdsBy":{"description":"The amount by which to increment token IDs.","type":"string"},"maxScalingMultiplier":{"description":"Maximum allowed scaling multiplier. Must be \u003e 0 when allowAmountScaling is true.\nThe chain rejects transfers where the computed multiplier exceeds this cap.\nIgnored (set to \"0\") when allowAmountScaling is false.","type":"string"},"recurringOwnershipTimes":{"description":"Recurring ownership times.","$ref":"#/definitions/tokenization.RecurringOwnershipTimes"},"startBalances":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.Balance"}}}},"tokenization.InvariantsAddObject":{"description":"InvariantsAddObject is used for adding invariants without specifying addresses.\nAddresses are generated by the keeper and stored in the collection.","type":"object","properties":{"cosmosCoinBackedPath":{"description":"The IBC backed (sdk.coin) path for the collection. Only one path is allowed.\nAddress will be generated by the keeper.","$ref":"#/definitions/tokenization.CosmosCoinBackedPathAddObject"},"disablePoolCreation":{"description":"If true, disallows pool creation with this collection's assets.\nWhen true, any attempt to create a pool with tokenization assets from this collection will fail.","type":"boolean"},"evmQueryChallenges":{"type":"array","title":"EVM query invariants that must pass after all transfers complete.\nThese are checked once per message after all balance updates, with access to ALL recipient addresses.\nPlaceholders: $sender, $recipients (comma-separated), $initiator, $collectionId, $recipient","items":{"type":"object","$ref":"#/definitions/tokenization.EVMQueryChallenge"}},"maxSupplyPerId":{"description":"Maximum supply per token ID. Checked against Total address balances after transfers complete.\nA value of 0 means no limit (unlimited).","type":"string"},"noCustomOwnershipTimes":{"description":"If true, all ownership times must be full ranges [{ start: 1, end: GoMaxUInt64 }].\nThis prevents time-based restrictions on token ownership.","type":"boolean"},"noForcefulPostMintTransfers":{"description":"If true, disallows any collection approvals that have overridesFromOutgoingApprovals or overridesToIncomingApprovals set to true.\nThis prevents forceful transfers that bypass user-level approvals.\nThis only applies to transfers where the from address does not equal \"Mint\".","type":"boolean"}}},"tokenization.ManualBalances":{"description":"ManualBalances represents a list of manual balances entered for the predetermined balances criteria. Order is calculated according to the calculation method set.","type":"object","properties":{"balances":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.Balance"}}}},"tokenization.MaxNumTransfers":{"description":"MaxNumTransfers defines the maximum number of transfers per unique \"from,\" \"to,\" and/or \"initiated by\" address.\nIf any of these are nil or \"0\", we assume unlimited approvals.\nIf they are set to a value, then the running tally of the number of transfers for the specified token IDs and ownership times\nmust not exceed the corresponding value.","type":"object","properties":{"amountTrackerId":{"description":"The ID of the amount tracker associated with this approval.\nWe use this ID to track the number of transfers and amounts transferred.","type":"string"},"overallMaxNumTransfers":{"description":"Overall maximum number of transfers.","type":"string"},"perFromAddressMaxNumTransfers":{"description":"Maximum number of transfers per \"from\" address.","type":"string"},"perInitiatedByAddressMaxNumTransfers":{"description":"Maximum number of transfers per \"initiated by\" address.","type":"string"},"perToAddressMaxNumTransfers":{"description":"Maximum number of transfers per \"to\" address.","type":"string"},"resetTimeIntervals":{"description":"Time intervals to reset the trackers at.","$ref":"#/definitions/tokenization.ResetTimeIntervals"}}},"tokenization.MerkleChallenge":{"description":"Challenges define a rule for the approval in the form of a Merkle challenge.\n\nA Merkle challenge is a challenge where the user must provide a Merkle proof to a Merkle tree. If they provide a valid proof,\nthen the challenge is met. All challenges must be met with valid solutions for the transfer to be approved.\n\nIMPORTANT: Merkle challenges currently are limited to SHA256 hashes. See documentation for MerkleChallenge for more details and tutorials.\n\nIMPORTANT: We track the number of uses per leaf according to the challengeTrackerId specified by the parent approval of this challenge.\nIf you update the challenge ID, then the used leaves tracker will reset and start a new tally.\nWe recommend using a unique challenge ID for each challenge to prevent overlap and unexpected behavior.","type":"object","properties":{"challengeTrackerId":{"description":"The ID of this Merkle challenge for tracking the number of uses per leaf.","type":"string"},"customData":{"description":"Arbitrary custom data associated with this Merkle challenge.","type":"string"},"expectedProofLength":{"description":"The expected length of the Merkle path for verification. Used to prevent Merkle path truncation attacks.","type":"string"},"leafSigner":{"description":"Ethereum address that must sign the leaf. Used to protect against man-in-the-middle attacks.\nSignature scheme: sign(leaf + \"-\" + creatorAddress), verified using elliptic curve signature verification.","type":"string"},"maxUsesPerLeaf":{"description":"The maximum number of times each leaf can be used. Must be 1 if useCreatorAddressAsLeaf is false to prevent replay attacks.","type":"string"},"root":{"description":"The root hash of the Merkle tree to which the Merkle path must lead for verification.","type":"string"},"uri":{"description":"The URI associated with this Merkle challenge, optionally providing metadata about the challenge.","type":"string"},"useCreatorAddressAsLeaf":{"description":"If true, we will override the user's leaf for their proof with their creator address. Used for whitelist trees where all leaves are valid BitBadges addresses.","type":"boolean"}}},"tokenization.MerklePathItem":{"description":"MerklePathItem represents an item in a Merkle path.","type":"object","properties":{"aunt":{"description":"The hash of the sibling node (aunt) in the Merkle path.","type":"string"},"onRight":{"description":"Indicates whether the aunt node is on the right side of the path.","type":"boolean"}}},"tokenization.MerkleProof":{"description":"MerkleProof represents a Merkle proof, consistent with Tendermint/Crypto Merkle tree.","type":"object","properties":{"aunts":{"description":"List of Merkle path items (aunts) that make up the proof.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.MerklePathItem"}},"leaf":{"description":"The hash of the leaf node for which the proof is generated.","type":"string"},"leafSignature":{"description":"The signature of the leaf node tying the address to the leaf node.","type":"string"}}},"tokenization.MsgCastVote":{"description":"MsgCastVote allows a voter to cast or update their vote for a voting challenge.","type":"object","properties":{"approvalId":{"description":"The approval ID.","type":"string"},"approvalLevel":{"description":"The approval level (\"collection\", \"incoming\", or \"outgoing\").","type":"string"},"approverAddress":{"description":"The approver address (empty string for collection-level approvals).","type":"string"},"collectionId":{"description":"The collection ID for the voting challenge.","type":"string"},"creator":{"description":"The address of the voter casting the vote.","type":"string"},"proposalId":{"description":"The proposal ID (challenge ID) from the VotingChallenge.","type":"string"},"yesWeight":{"description":"The percentage weight (0-100) allocated to \"yes\" vote.\nThe remaining percentage (100 - yesWeight) is allocated to \"no\" vote.\nExample: yesWeight=70 means 70% yes, 30% no.","type":"string"}}},"tokenization.MsgCastVoteResponse":{"type":"object"},"tokenization.MsgCreateAddressLists":{"description":"MsgCreateAddressLists is used to create address lists.","type":"object","properties":{"addressLists":{"description":"Address lists to create. The createdBy field will be automatically set to the creator address.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.AddressListInput"}},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.MsgCreateAddressListsResponse":{"description":"MsgCreateAddressListsResponse is the response to MsgCreateAddressLists.","type":"object"},"tokenization.MsgCreateCollection":{"description":"MsgCreateCollection is used to create a new collection.","type":"object","properties":{"aliasPathsToAdd":{"description":"Alias (non-wrapping) paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.AliasPathAddObject"}},"collectionApprovals":{"description":"Collection approvals.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.CollectionApproval"}},"collectionMetadata":{"description":"Collection metadata.","$ref":"#/definitions/tokenization.CollectionMetadata"},"collectionPermissions":{"description":"Collection permissions.","$ref":"#/definitions/tokenization.CollectionPermissions"},"cosmosCoinWrapperPathsToAdd":{"description":"IBC wrapper paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.CosmosCoinWrapperPathAddObject"}},"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"Custom data.","type":"string"},"defaultBalances":{"title":"The default balances for the user","$ref":"#/definitions/tokenization.UserBalanceStore"},"invariants":{"description":"Collection-level invariants that cannot be broken.\nAddresses are generated by the keeper and stored in the collection.","$ref":"#/definitions/tokenization.InvariantsAddObject"},"isArchived":{"description":"isArchived flag.","type":"boolean"},"manager":{"description":"Manager address.","type":"string"},"mintEscrowCoinsToTransfer":{"description":"Coins to be transferred to the mint escrow address.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"standards":{"description":"Standards entries.","type":"array","items":{"type":"string"}},"tokenMetadata":{"description":"Token metadata entries.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.TokenMetadata"}},"validTokenIds":{"type":"array","title":"New token IDs to add to this collection","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}}}},"tokenization.MsgCreateCollectionResponse":{"description":"MsgCreateCollectionResponse is the response to MsgCreateCollection.","type":"object","properties":{"approvalChanges":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ApprovalChange"}},"collectionId":{"description":"ID of the collection.","type":"string"},"reviewItems":{"type":"array","items":{"type":"string"}}}},"tokenization.MsgCreateDynamicStore":{"description":"MsgCreateDynamicStore is used to create a new dynamic store.","type":"object","properties":{"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"Custom data field for storing arbitrary data associated with this dynamic store.","type":"string"},"defaultValue":{"description":"The default value for uninitialized addresses (true/false).","type":"boolean"},"uri":{"description":"URI for additional metadata or resources associated with this dynamic store.","type":"string"}}},"tokenization.MsgCreateDynamicStoreResponse":{"description":"MsgCreateDynamicStoreResponse is the response to MsgCreateDynamicStore.","type":"object","properties":{"reviewItems":{"type":"array","items":{"type":"string"}},"storeId":{"description":"ID of the dynamic store.","type":"string"}}},"tokenization.MsgDeleteCollection":{"description":"MsgDeleteCollection is used to delete a collection.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.MsgDeleteCollectionResponse":{"description":"MsgDeleteCollectionResponse is the response to MsgDeleteCollection.","type":"object"},"tokenization.MsgDeleteDynamicStore":{"description":"MsgDeleteDynamicStore is used to delete a dynamic store.","type":"object","properties":{"creator":{"description":"Address of the creator.","type":"string"},"storeId":{"description":"ID of the dynamic store to delete.","type":"string"}}},"tokenization.MsgDeleteDynamicStoreResponse":{"description":"MsgDeleteDynamicStoreResponse is the response to MsgDeleteDynamicStore.","type":"object"},"tokenization.MsgDeleteIncomingApproval":{"description":"MsgDeleteIncomingApproval is a helper message to delete a single incoming approval.","type":"object","properties":{"approvalId":{"description":"The ID of the approval to delete.","type":"string"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.MsgDeleteIncomingApprovalResponse":{"description":"MsgDeleteIncomingApprovalResponse is the response to MsgDeleteIncomingApproval.","type":"object","properties":{"found":{"type":"boolean"},"reviewItems":{"type":"array","items":{"type":"string"}},"version":{"type":"string"}}},"tokenization.MsgDeleteOutgoingApproval":{"description":"MsgDeleteOutgoingApproval is a helper message to delete a single outgoing approval.","type":"object","properties":{"approvalId":{"description":"The ID of the approval to delete.","type":"string"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.MsgDeleteOutgoingApprovalResponse":{"description":"MsgDeleteOutgoingApprovalResponse is the response to MsgDeleteOutgoingApproval.","type":"object","properties":{"found":{"type":"boolean"},"reviewItems":{"type":"array","items":{"type":"string"}},"version":{"type":"string"}}},"tokenization.MsgPurgeApprovals":{"description":"MsgPurgeApprovals is a helper message to purge expired approvals.","type":"object","properties":{"approvalsToPurge":{"description":"Specific approvals to purge. If empty, purges all applicable approvals based on other flags.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ApprovalIdentifierDetails"}},"approverAddress":{"description":"Address of the user whose approvals to purge. If empty, defaults to creator.","type":"string"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"purgeCounterpartyApprovals":{"description":"Whether to purge counterparty approvals (approvals where the creator is the only initiator).","type":"boolean"},"purgeExpired":{"description":"Whether to purge expired approvals (approvals with no future valid transfer times).","type":"boolean"}}},"tokenization.MsgPurgeApprovalsResponse":{"description":"MsgPurgeApprovalsResponse is the response to MsgPurgeApprovals.","type":"object","properties":{"numPurged":{"description":"Number of approvals purged.","type":"string"},"purgedApprovalIds":{"type":"array","items":{"type":"string"}},"reviewItems":{"type":"array","items":{"type":"string"}}}},"tokenization.MsgSetCollectionApprovals":{"type":"object","title":"MsgSetCollectionApprovals sets the collection approvals and canUpdateCollectionApprovals permission","properties":{"canUpdateCollectionApprovals":{"type":"array","title":"Permission to update collection approvals","items":{"type":"object","$ref":"#/definitions/tokenization.CollectionApprovalPermission"}},"collectionApprovals":{"description":"New collection approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.CollectionApproval"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.MsgSetCollectionApprovalsResponse":{"description":"MsgSetCollectionApprovalsResponse is the response to MsgSetCollectionApprovals.","type":"object","properties":{"approvalChanges":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ApprovalChange"}},"collectionId":{"description":"ID of the collection.","type":"string"},"reviewItems":{"type":"array","items":{"type":"string"}}}},"tokenization.MsgSetCollectionMetadata":{"type":"object","title":"MsgSetCollectionMetadata sets the collection metadata and canUpdateCollectionMetadata permission","properties":{"canUpdateCollectionMetadata":{"type":"array","title":"Permission to update collection metadata","items":{"type":"object","$ref":"#/definitions/tokenization.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"collectionMetadata":{"description":"New collection metadata to set.","$ref":"#/definitions/tokenization.CollectionMetadata"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.MsgSetCollectionMetadataResponse":{"description":"MsgSetCollectionMetadataResponse is the response to MsgSetCollectionMetadata.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.MsgSetCustomData":{"type":"object","title":"MsgSetCustomData sets the custom data and canUpdateCustomData permission","properties":{"canUpdateCustomData":{"type":"array","title":"Permission to update custom data","items":{"type":"object","$ref":"#/definitions/tokenization.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"New custom data to set.","type":"string"}}},"tokenization.MsgSetCustomDataResponse":{"description":"MsgSetCustomDataResponse is the response to MsgSetCustomData.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.MsgSetDynamicStoreValue":{"description":"MsgSetDynamicStoreValue is used to set a boolean value for a specific address in a dynamic store.","type":"object","properties":{"address":{"description":"The address for which to set the value.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"storeId":{"description":"ID of the dynamic store.","type":"string"},"value":{"description":"The boolean value to set (true/false).","type":"boolean"}}},"tokenization.MsgSetDynamicStoreValueResponse":{"description":"MsgSetDynamicStoreValueResponse is the response to MsgSetDynamicStoreValue.","type":"object","properties":{"previousValue":{"type":"string"},"reviewItems":{"type":"array","items":{"type":"string"}}}},"tokenization.MsgSetIncomingApproval":{"description":"MsgSetIncomingApproval is a helper message to set a single incoming approval.","type":"object","properties":{"approval":{"description":"The incoming approval to set.","$ref":"#/definitions/tokenization.UserIncomingApproval"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.MsgSetIncomingApprovalResponse":{"description":"MsgSetIncomingApprovalResponse is the response to MsgSetIncomingApproval.","type":"object","properties":{"action":{"type":"string"},"reviewItems":{"type":"array","items":{"type":"string"}},"version":{"type":"string"}}},"tokenization.MsgSetIsArchived":{"type":"object","title":"MsgSetIsArchived sets the isArchived and canArchiveCollection permission","properties":{"canArchiveCollection":{"type":"array","title":"Permission to archive collection","items":{"type":"object","$ref":"#/definitions/tokenization.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"isArchived":{"description":"New isArchived to set.","type":"boolean"}}},"tokenization.MsgSetIsArchivedResponse":{"description":"MsgSetIsArchivedResponse is the response to MsgSetIsArchived.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.MsgSetManager":{"type":"object","title":"MsgSetManager sets the manager and canUpdateManager permission","properties":{"canUpdateManager":{"type":"array","title":"Permission to update manager","items":{"type":"object","$ref":"#/definitions/tokenization.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"manager":{"description":"New manager to set.","type":"string"}}},"tokenization.MsgSetManagerResponse":{"description":"MsgSetManagerResponse is the response to MsgSetManager.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.MsgSetOutgoingApproval":{"description":"MsgSetOutgoingApproval is a helper message to set a single outgoing approval.","type":"object","properties":{"approval":{"description":"The outgoing approval to set.","$ref":"#/definitions/tokenization.UserOutgoingApproval"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.MsgSetOutgoingApprovalResponse":{"description":"MsgSetOutgoingApprovalResponse is the response to MsgSetOutgoingApproval.","type":"object","properties":{"action":{"type":"string"},"reviewItems":{"type":"array","items":{"type":"string"}},"version":{"type":"string"}}},"tokenization.MsgSetReservedProtocolAddress":{"description":"MsgSetReservedProtocolAddress sets or unsets a reserved protocol address (governance-only).","type":"object","properties":{"address":{"description":"Address to set or unset as reserved protocol address.","type":"string"},"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"isReservedProtocol":{"description":"Whether the address should be a reserved protocol address (true) or not (false).","type":"boolean"}}},"tokenization.MsgSetReservedProtocolAddressResponse":{"description":"MsgSetReservedProtocolAddressResponse is the response to MsgSetReservedProtocolAddress.","type":"object"},"tokenization.MsgSetStandards":{"type":"object","title":"MsgSetStandards sets the standards and canUpdateStandards permission","properties":{"canUpdateStandards":{"type":"array","title":"Permission to update standards","items":{"type":"object","$ref":"#/definitions/tokenization.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"standards":{"description":"New standards to set.","type":"array","items":{"type":"string"}}}},"tokenization.MsgSetStandardsResponse":{"description":"MsgSetStandardsResponse is the response to MsgSetStandards.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.MsgSetTokenMetadata":{"type":"object","title":"MsgSetTokenMetadata sets the token metadata and canUpdateTokenMetadata permission","properties":{"canUpdateTokenMetadata":{"type":"array","title":"Permission to update token metadata","items":{"type":"object","$ref":"#/definitions/tokenization.TokenIdsActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"tokenMetadata":{"description":"New token metadata to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.TokenMetadata"}}}},"tokenization.MsgSetTokenMetadataResponse":{"description":"MsgSetTokenMetadataResponse is the response to MsgSetTokenMetadata.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.MsgSetValidTokenIds":{"type":"object","title":"MsgSetValidTokenIds sets the validTokenIds and canUpdateValidTokenIds permission","properties":{"canUpdateValidTokenIds":{"type":"array","title":"Permission to update valid token IDs","items":{"type":"object","$ref":"#/definitions/tokenization.TokenIdsActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"validTokenIds":{"type":"array","title":"New token IDs to add to this collection","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}}}},"tokenization.MsgSetValidTokenIdsResponse":{"description":"MsgSetValidTokenIdsResponse is the response to MsgSetValidTokenIds.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.MsgTransferTokens":{"description":"MsgTransferTokens is used to transfer tokens.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"transfers":{"description":"Transfers to execute.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.Transfer"}}}},"tokenization.MsgTransferTokensResponse":{"description":"MsgTransferTokensResponse is the response to MsgTransferTokens.","type":"object","properties":{"approvalsUsed":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ApprovalUsed"}},"balancesTransferred":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.Balance"}},"coinTransfers":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.CoinTransferProto"}},"reviewItems":{"type":"array","items":{"type":"string"}}}},"tokenization.MsgUniversalUpdateCollection":{"description":"MsgUniversalUpdateCollection is used to define MsgServer types for all requests and responses for Msgs of the tokens module.\nIt is a universal interface that can be used for both creating and updating collections.\nWe have it defined for legacy purposes, but it is recommended to use MsgCreateCollection and MsgUpdateCollection instead.","type":"object","properties":{"aliasPathsToAdd":{"description":"Alias (non-wrapping) paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.AliasPathAddObject"}},"collectionApprovals":{"description":"New collection approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.CollectionApproval"}},"collectionId":{"description":"ID of the collection (0 for new collection).","type":"string"},"collectionMetadata":{"description":"New collection metadata to set.","$ref":"#/definitions/tokenization.CollectionMetadata"},"collectionPermissions":{"description":"New collection permissions to set.","$ref":"#/definitions/tokenization.CollectionPermissions"},"cosmosCoinWrapperPathsToAdd":{"description":"IBC wrapper paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.CosmosCoinWrapperPathAddObject"}},"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"New custom data to set.","type":"string"},"defaultBalances":{"title":"The default balances for the user","$ref":"#/definitions/tokenization.UserBalanceStore"},"invariants":{"description":"Collection-level invariants that cannot be broken.\nThese are set upon genesis and cannot be modified.\nAddresses are generated by the keeper and stored in the collection.","$ref":"#/definitions/tokenization.InvariantsAddObject"},"isArchived":{"description":"New isArchived to set.","type":"boolean"},"manager":{"description":"New manager to set.","type":"string"},"mintEscrowCoinsToTransfer":{"description":"Coins to be transferred to the mint escrow address.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"standards":{"description":"New standards to set.","type":"array","items":{"type":"string"}},"tokenMetadata":{"description":"New token metadata to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.TokenMetadata"}},"updateCollectionApprovals":{"description":"Indicates if collection approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCollectionMetadata":{"description":"Indicates if the collection metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCollectionPermissions":{"description":"Indicates if collection permissions should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCustomData":{"description":"Indicates if the custom data should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateIsArchived":{"description":"Indicates if the isArchived should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateManager":{"description":"Indicates if the manager should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateStandards":{"description":"Indicates if the standards should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateTokenMetadata":{"description":"Indicates if the token metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateValidTokenIds":{"description":"Indicates if the valid token IDs should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"validTokenIds":{"type":"array","title":"New token IDs to add to this collection","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}}}},"tokenization.MsgUniversalUpdateCollectionResponse":{"description":"MsgUniversalUpdateCollectionResponse is the response to MsgUniversalUpdateCollection.","type":"object","properties":{"approvalChanges":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ApprovalChange"}},"collectionId":{"description":"ID of the collection.","type":"string"},"reviewItems":{"type":"array","items":{"type":"string"}}}},"tokenization.MsgUpdateCollection":{"description":"MsgUpdateCollection is used to update a collection.","type":"object","properties":{"aliasPathsToAdd":{"description":"Alias (non-wrapping) paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.AliasPathAddObject"}},"collectionApprovals":{"description":"New collection approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.CollectionApproval"}},"collectionId":{"description":"ID of the collection (0 for new collection).","type":"string"},"collectionMetadata":{"description":"New collection metadata to set.","$ref":"#/definitions/tokenization.CollectionMetadata"},"collectionPermissions":{"description":"New collection permissions to set.","$ref":"#/definitions/tokenization.CollectionPermissions"},"cosmosCoinWrapperPathsToAdd":{"description":"IBC wrapper paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.CosmosCoinWrapperPathAddObject"}},"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"New custom data to set.","type":"string"},"invariants":{"description":"Collection-level invariants that cannot be broken.\nThese are set upon genesis and cannot be modified.\nAddresses are generated by the keeper and stored in the collection.","$ref":"#/definitions/tokenization.InvariantsAddObject"},"isArchived":{"description":"New isArchived to set.","type":"boolean"},"manager":{"description":"New manager to set.","type":"string"},"mintEscrowCoinsToTransfer":{"description":"Coins to be transferred to the mint escrow address.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"standards":{"description":"New standards to set.","type":"array","items":{"type":"string"}},"tokenMetadata":{"description":"New token metadata to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.TokenMetadata"}},"updateCollectionApprovals":{"description":"Indicates if collection approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCollectionMetadata":{"description":"Indicates if the collection metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCollectionPermissions":{"description":"Indicates if collection permissions should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCustomData":{"description":"Indicates if the custom data should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateIsArchived":{"description":"Indicates if the isArchived should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateManager":{"description":"Indicates if the manager should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateStandards":{"description":"Indicates if the standards should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateTokenMetadata":{"description":"Indicates if the token metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateValidTokenIds":{"description":"Indicates if the valid token IDs should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"validTokenIds":{"type":"array","title":"New token IDs to add to this collection","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}}}},"tokenization.MsgUpdateCollectionResponse":{"description":"MsgUpdateCollectionResponse is the response to MsgUpdateCollection.","type":"object","properties":{"approvalChanges":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ApprovalChange"}},"collectionId":{"description":"ID of the collection.","type":"string"},"reviewItems":{"type":"array","items":{"type":"string"}}}},"tokenization.MsgUpdateDynamicStore":{"description":"MsgUpdateDynamicStore is used to update an existing dynamic store.","type":"object","properties":{"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"Custom data field for storing arbitrary data associated with this dynamic store.","type":"string"},"defaultValue":{"description":"The new default value for uninitialized addresses (true/false).","type":"boolean"},"globalEnabled":{"description":"The global kill switch state (true = enabled, false = disabled/halted).\nCallers should query the current value first if they want to keep it unchanged.","type":"boolean"},"storeId":{"description":"ID of the dynamic store to update.","type":"string"},"uri":{"description":"URI for additional metadata or resources associated with this dynamic store.","type":"string"}}},"tokenization.MsgUpdateDynamicStoreResponse":{"description":"MsgUpdateDynamicStoreResponse is the response to MsgUpdateDynamicStore.","type":"object"},"tokenization.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the module parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/tokenization.Params"}}},"tokenization.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"tokenization.MsgUpdateUserApprovals":{"description":"MsgUpdateUserApprovals is used to update user approvals.","type":"object","properties":{"autoApproveAllIncomingTransfers":{"description":"Auto-approve setting for all incoming transfers.","type":"boolean"},"autoApproveSelfInitiatedIncomingTransfers":{"description":"Auto-approve setting for self-initiated incoming transfers.","type":"boolean"},"autoApproveSelfInitiatedOutgoingTransfers":{"description":"Auto-approve setting for self-initiated outgoing transfers.","type":"boolean"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"incomingApprovals":{"description":"New incoming approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UserIncomingApproval"}},"outgoingApprovals":{"description":"New outgoing approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UserOutgoingApproval"}},"updateAutoApproveAllIncomingTransfers":{"description":"Indicates if auto-approve settings for all incoming transfers should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateAutoApproveSelfInitiatedIncomingTransfers":{"description":"Indicates if auto-approve settings for self-initiated incoming transfers should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateAutoApproveSelfInitiatedOutgoingTransfers":{"description":"Indicates if auto-approve settings for self-initiated outgoing transfers should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateIncomingApprovals":{"description":"Indicates if incoming approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateOutgoingApprovals":{"description":"Indicates if outgoing approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateUserPermissions":{"description":"Indicates if user permissions should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"userPermissions":{"description":"New user permissions to set.","$ref":"#/definitions/tokenization.UserPermissions"}}},"tokenization.MsgUpdateUserApprovalsResponse":{"description":"MsgUpdateUserApprovalsResponse is the response to MsgUpdateUserApprovals.","type":"object","properties":{"incomingChanges":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ApprovalChange"}},"outgoingChanges":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ApprovalChange"}},"reviewItems":{"type":"array","items":{"type":"string"}}}},"tokenization.MustOwnTokens":{"description":"MustOwnTokens represents a condition where a user must own specific tokens\nto be approved to transfer.\n\n- collectionId: The ID of the collection for the tokens that must be owned\n- amountRange: The range of amounts the user must own (min to max)\n- ownershipTimes: The time ranges during which the user must own the tokens.\n- tokenIds: The token IDs the user must own.\n- overrideWithCurrentTime: If true, auto override ownershipTimes with the current time.\n- mustSatisfyForAllAssets: If true, the user must own all specified tokens; otherwise, owning any one for \u003e= 1 millisecond is sufficient.","type":"object","properties":{"amountRange":{"description":"The range of amounts the user must own (min to max).","$ref":"#/definitions/tokenization.UintRange"},"collectionId":{"description":"The ID of the collection.","type":"string"},"mustSatisfyForAllAssets":{"description":"If true, the user must meet ownership requirements for all specified tokens; else, must meet requirements for any single token.","type":"boolean"},"overrideWithCurrentTime":{"description":"If true, override ownershipTimes with the current time.","type":"boolean"},"ownershipCheckParty":{"description":"The party to check ownership for. Options are \"initiator\", \"sender\", \"recipient\", or any valid bb1 address.\nIf a valid bb1 address is provided, ownership will be checked for that specific address.\nThis enables use cases like halt tokens where ownership is checked for an arbitrary address (e.g., halt token owner).\nDefaults to \"initiator\" if empty or if the value is not a recognized option or valid bb1 address.","type":"string"},"ownershipTimes":{"description":"The time ranges during which the user must own the tokens.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"tokenIds":{"description":"The token IDs the user must own.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}}}},"tokenization.OutgoingApprovalCriteria":{"description":"OutgoingApprovalCriteria defines the criteria for approving outgoing transfers.\nThis is used for user-level outgoing approvals and only includes fields relevant to outgoing transfers.\nAll criteria must be satisfied for the approval to be considered valid.","type":"object","properties":{"altTimeChecks":{"description":"Alternative time-based checks for approval denial (offline hours/days). Defines time periods\nduring which this approval should be denied, such as specific hours of the day or days of the week.","$ref":"#/definitions/tokenization.AltTimeChecks"},"approvalAmounts":{"description":"Threshold limit of amounts that can be transferred using this approval. Tracks cumulative amounts\ntransferred and enforces maximum limits per approval.","$ref":"#/definitions/tokenization.ApprovalAmounts"},"autoDeletionOptions":{"description":"Auto-deletion options for this approval. Defines conditions under which this approval should be\nautomatically deleted (e.g., after a certain number of uses or time period).","$ref":"#/definitions/tokenization.AutoDeletionOptions"},"coinTransfers":{"description":"The sdk.Coins that need to be transferred for approval. Defines required coin transfers (e.g., fees,\nroyalties) that must be executed alongside the token transfer for the approval to be valid.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.CoinTransfer"}},"dynamicStoreChallenges":{"description":"Dynamic store challenges that the initiator must pass for approval. The initiator must provide\nvalid proofs that satisfy all specified dynamic store challenges (e.g., key-value store lookups).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.DynamicStoreChallenge"}},"ethSignatureChallenges":{"description":"ETH signature challenges that the initiator must pass for approval. The initiator must provide\nvalid Ethereum signatures for all specified challenges. Each signature can only be used once.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ETHSignatureChallenge"}},"evmQueryChallenges":{"description":"EVM query challenges that must pass for approval. Read-only contract queries\nthat verify external EVM state (e.g., token ownership in another contract).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.EVMQueryChallenge"}},"initiatorChecks":{"description":"Address checks for the initiator of the transfer. Validates that the initiator address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.AddressChecks"},"maxNumTransfers":{"description":"Maximum number of transfers that can be processed using this approval. Tracks the count of transfers\nand enforces the limit to prevent exceeding the allowed number of uses.","$ref":"#/definitions/tokenization.MaxNumTransfers"},"merkleChallenges":{"description":"Merkle challenges that must be satisfied for approval. The initiator must provide valid Merkle proofs\nthat satisfy all specified challenges. Each challenge requires a proof that leads to a specific root hash.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.MerkleChallenge"}},"mustOwnTokens":{"description":"Must own tokens for approval. Defines token ownership requirements that must be satisfied for\nthe approval to be valid. The initiator must own the specified tokens at the specified ownership times.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.MustOwnTokens"}},"mustPrioritize":{"description":"If true, this approval must be explicitly prioritized in PrioritizedApprovals to be used.\nThis allows fine-grained control over which approvals are applied when multiple approvals could match.","type":"boolean"},"predeterminedBalances":{"description":"Predetermined balances that must be used for each approval. Defines the exact token amounts and IDs\nthat can be transferred when using this approval.","$ref":"#/definitions/tokenization.PredeterminedBalances"},"recipientChecks":{"description":"Address checks for the recipient of the transfer. Validates that the recipient address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).\nNote: No sender checks are included for outgoing approvals since the sender is the user themselves.","$ref":"#/definitions/tokenization.AddressChecks"},"requireToDoesNotEqualInitiatedBy":{"description":"Require the \"to\" address to not be equal to the \"initiated by\" address for approval.\nIf true, transfers where the recipient equals the initiator are forbidden.","type":"boolean"},"requireToEqualsInitiatedBy":{"description":"Require the \"to\" address to be equal to the \"initiated by\" address for approval.\nIf true, only transfers where the recipient matches the initiator are allowed.","type":"boolean"},"votingChallenges":{"description":"Voting challenges that must be satisfied for approval. The initiator must provide\nvalid votes that meet the quorum threshold for all specified challenges.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.VotingChallenge"}}}},"tokenization.Params":{"description":"Params defines the parameters for the module.","type":"object","properties":{"affiliate_percentage":{"type":"string","title":"affiliate_percentage defines the percentage of the transfer amount that goes to the affiliate"},"allowed_denoms":{"type":"array","title":"allowed_denoms defines the list of denoms that are allowed to be used in coin_transfers","items":{"type":"string"}}}},"tokenization.PathMetadata":{"description":"This message defines the metadata for paths (alias paths and cosmos coin wrapper paths).\nThe interpretation of this metadata should follow the collection standard.","type":"object","properties":{"customData":{"description":"Custom data or additional information related to the path metadata.","type":"string"},"uri":{"description":"The URI (Uniform Resource Identifier) associated with the path metadata.","type":"string"}}},"tokenization.PrecalculateBalancesFromApprovalDetails":{"description":"PrecalculateBalancesFromApprovalDetails defines the details for precalculating balances from an approval.","type":"object","properties":{"approvalId":{"description":"The ID of the approval.","type":"string"},"approvalLevel":{"description":"The level of the approval. Can be \"collection\", \"incoming\", or \"outgoing\".","type":"string"},"approverAddress":{"description":"The address of the approver. Leave blank \"\" if approvalLevel == \"collection\".","type":"string"},"precalculationOptions":{"description":"The options for precalculating the balances.","$ref":"#/definitions/tokenization.PrecalculationOptions"},"version":{"description":"The version of the approval.","type":"string"}}},"tokenization.PrecalculationOptions":{"description":"PrecalculationOptions defines the options for precalculating the balances.","type":"object","properties":{"overrideTimestamp":{"description":"The timestamp to override with when calculating the balances.","type":"string"},"scalingMultiplier":{"description":"When \u003e 0 and allowAmountScaling is true on the approval, all precalculated balance amounts\nare multiplied by this value. Must be \u003c= maxScalingMultiplier. 0 means no scaling (returns 1x base).","type":"string"},"tokenIdsOverride":{"description":"The IDs to override for the transfer. Only applicable if using this option in precalculation.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}}}},"tokenization.PredeterminedBalances":{"description":"PredeterminedBalances represents balances with predetermined order calculation.","type":"object","properties":{"incrementedBalances":{"description":"Balances that have a starting amount and increment. If this is nil, then we use the manual balances.","$ref":"#/definitions/tokenization.IncrementedBalances"},"manualBalances":{"description":"Manual balances that can be entered. If this is nil, then we use the incremented balances.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ManualBalances"}},"orderCalculationMethod":{"description":"The method to calculate the order of predetermined balances.","$ref":"#/definitions/tokenization.PredeterminedOrderCalculationMethod"}}},"tokenization.PredeterminedOrderCalculationMethod":{"description":"PredeterminedOrderCalculationMethod defines the method to calculate predetermined balances order.","type":"object","properties":{"challengeTrackerId":{"description":"If useMerkleChallengeLeafIndex is set, then this is the ID of the challenge tracker associated with this calculation method.","type":"string"},"useMerkleChallengeLeafIndex":{"description":"Use the Merkle challenge leaf index to calculate the order. Ex: Transfer that uses leaf index 0 gets the first balance, transfer that uses leaf index 1 gets the second balance, etc.","type":"boolean"},"useOverallNumTransfers":{"description":"Use the overall number of transfers to calculate the order. Ex: First transfer gets the first balance, second transfer gets the second balance, etc.","type":"boolean"},"usePerFromAddressNumTransfers":{"description":"Use the number of transfers per \"from\" address to calculate the order. Ex: First transfer from address A gets the first balance, second transfer from address A gets the second balance, etc.","type":"boolean"},"usePerInitiatedByAddressNumTransfers":{"description":"Use the number of transfers per \"initiated by\" address to calculate the order. Ex: First transfer initiated by address A gets the first balance, second transfer initiated by address A gets the second balance, etc.","type":"boolean"},"usePerToAddressNumTransfers":{"description":"Use the number of transfers per \"to\" address to calculate the order. Ex: First transfer to address A gets the first balance, second transfer to address A gets the second balance, etc.","type":"boolean"}}},"tokenization.QueryGetAddressListResponse":{"type":"object","properties":{"list":{"$ref":"#/definitions/tokenization.AddressList"}}},"tokenization.QueryGetAllReservedProtocolAddressesResponse":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string"}}}},"tokenization.QueryGetApprovalTrackerResponse":{"type":"object","properties":{"tracker":{"$ref":"#/definitions/tokenization.ApprovalTracker"}}},"tokenization.QueryGetBalanceForTokenResponse":{"type":"object","properties":{"balance":{"type":"string"}}},"tokenization.QueryGetBalanceResponse":{"type":"object","properties":{"balance":{"$ref":"#/definitions/tokenization.UserBalanceStore"}}},"tokenization.QueryGetChallengeTrackerResponse":{"type":"object","properties":{"numUsed":{"type":"string"}}},"tokenization.QueryGetCollectionResponse":{"type":"object","properties":{"collection":{"$ref":"#/definitions/tokenization.TokenCollection"}}},"tokenization.QueryGetCollectionStatsResponse":{"type":"object","properties":{"stats":{"$ref":"#/definitions/tokenization.CollectionStats"}}},"tokenization.QueryGetDynamicStoreResponse":{"type":"object","properties":{"store":{"$ref":"#/definitions/tokenization.DynamicStore"}}},"tokenization.QueryGetDynamicStoreValueResponse":{"type":"object","properties":{"value":{"$ref":"#/definitions/tokenization.DynamicStoreValue"}}},"tokenization.QueryGetETHSignatureTrackerResponse":{"type":"object","properties":{"numUsed":{"type":"string"}}},"tokenization.QueryGetVoteResponse":{"type":"object","properties":{"vote":{"$ref":"#/definitions/tokenization.VoteProof"}}},"tokenization.QueryGetVotesResponse":{"type":"object","properties":{"votes":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.VoteProof"}}}},"tokenization.QueryGetWrappableBalancesResponse":{"type":"object","properties":{"amount":{"type":"string"}}},"tokenization.QueryIsAddressReservedProtocolResponse":{"type":"object","properties":{"isReservedProtocol":{"type":"boolean"}}},"tokenization.QueryParamsResponse":{"description":"QueryParamsResponse is response type for the Query/Params RPC method.","type":"object","properties":{"params":{"description":"params holds all the parameters of this module.","$ref":"#/definitions/tokenization.Params"}}},"tokenization.RecurringOwnershipTimes":{"description":"RecurringOwnershipTimes represents a list of recurring ownership times.","type":"object","properties":{"chargePeriodLength":{"type":"string","title":"Grace period length where you can charge the next interval (nextStartTime - chargePeriodLength) until (nextStartTime) = charge period"},"intervalLength":{"description":"The interval length in unix milliseconds.","type":"string"},"startTime":{"description":"The original start time of the first interval.","type":"string"}}},"tokenization.ResetTimeIntervals":{"description":"Time intervals to reset the trackers at.","type":"object","properties":{"intervalLength":{"description":"Interval length in unix milliseconds.","type":"string"},"startTime":{"description":"Original start time of the first interval.","type":"string"}}},"tokenization.TokenCollection":{"description":"A TokenCollection is the top-level object for a collection of tokens. \nIt defines everything about the collection, such as the manager, metadata, etc.\n\nAll collections are identified by a collectionId assigned by the blockchain, which is a uint64 that increments (i.e. the first collection has ID 1).\n\nAll collections can have a manager who is responsible for managing the collection and can be granted certain admin\npermissions, such as the ability to mint new tokens.\n\nCollections may have different balance types: standard vs. off-chain - indexed vs. inherited.vs off-chain - non-indexed vs non-public.\n\nSee documentation for more details.","type":"object","properties":{"aliasPaths":{"description":"The alias (non-wrapping) paths for the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.AliasPath"}},"collectionApprovals":{"description":"Transferability of the collection for collections with standard balances, subject to changes over time.\nOverrides user approvals for a transfer if specified.\nTransfer must satisfy both user and collection-level approvals.\nOnly applicable to on-chain balances.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.CollectionApproval"}},"collectionId":{"description":"The unique identifier for this collection. This is assigned by the blockchain. First collection has ID 1.","type":"string"},"collectionMetadata":{"description":"The metadata for the collection itself.","$ref":"#/definitions/tokenization.CollectionMetadata"},"collectionPermissions":{"description":"Permissions that define what the manager of the collection can do or not do.","$ref":"#/definitions/tokenization.CollectionPermissions"},"cosmosCoinWrapperPaths":{"description":"The IBC wrapper (sdk.coin) paths for the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.CosmosCoinWrapperPath"}},"createdBy":{"description":"The user or entity who created the collection.","type":"string"},"customData":{"description":"An arbitrary field that can store any data.","type":"string"},"defaultBalances":{"description":"The default store of a balance / approvals for a user, upon genesis.","$ref":"#/definitions/tokenization.UserBalanceStore"},"invariants":{"description":"Collection-level invariants that cannot be broken.\nThese are set upon genesis and cannot be modified.","$ref":"#/definitions/tokenization.CollectionInvariants"},"isArchived":{"description":"Whether the collection is archived or not.\nWhen archived, it becomes read-only, and no transactions can be processed until it is unarchived.","type":"boolean"},"manager":{"description":"The address of the manager of this collection.","type":"string"},"mintEscrowAddress":{"description":"The generated address of the collection. Also used to escrow Mint balances.","type":"string"},"standards":{"description":"Standards that define how to interpret the fields of the collection.","type":"array","items":{"type":"string"}},"tokenMetadata":{"description":"The metadata for each token in the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.TokenMetadata"}},"validTokenIds":{"description":"The valid token IDs for this collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}}}},"tokenization.TokenIdsActionPermission":{"description":"TokenIdsActionPermission defines the permissions for performing an action for specific tokens.\nCurrently, this is only used for creating new tokens.\n\nEx: If you want to lock the ability to create new tokens for tokenIds [1,2] at ownershipTimes 1/1/2020 - 1/1/2021, \nyou could set the combination (tokenIds: [1,2], ownershipTimes: [1/1/2020 - 1/1/2021]) to always be forbidden.","type":"object","properties":{"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"tokenIds":{"description":"Specifies the token IDs involved in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}}}},"tokenization.TokenMetadata":{"description":"This message defines the metadata for specific token IDs.\nThe interpretation of this metadata should follow the collection standard.","type":"object","properties":{"customData":{"description":"Custom data or additional information related to the token metadata.","type":"string"},"tokenIds":{"description":"The token IDs to which this metadata applies.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"uri":{"description":"The URI (Uniform Resource Identifier) associated with the token metadata.","type":"string"}}},"tokenization.Transfer":{"description":"Transfer defines the details of a transfer of tokens.","type":"object","properties":{"balances":{"description":"The balances to be transferred.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.Balance"}},"ethSignatureProofs":{"description":"The ETH signature proofs / solutions for all ETH signature challenges required for the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ETHSignatureProof"}},"from":{"description":"The address of the sender of the transfer.","type":"string"},"memo":{"description":"The memo for the transfer.","type":"string"},"merkleProofs":{"description":"The Merkle proofs / solutions for all Merkle challenges required for the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.MerkleProof"}},"onlyCheckPrioritizedCollectionApprovals":{"description":"Whether to only check prioritized approvals for the transfer. \nIf true, we will only check the prioritized approvals and fail if none of them match (i.e. do not check any non-prioritized approvals).\nIf false, we will check the prioritized approvals first and then scan through the rest of the approvals.","type":"boolean"},"onlyCheckPrioritizedIncomingApprovals":{"description":"Whether to only check prioritized approvals for the transfer. \nIf true, we will only check the prioritized approvals and fail if none of them match (i.e. do not check any non-prioritized approvals).\nIf false, we will check the prioritized approvals first and then scan through the rest of the approvals.","type":"boolean"},"onlyCheckPrioritizedOutgoingApprovals":{"description":"Whether to only check prioritized approvals for the transfer. \nIf true, we will only check the prioritized approvals and fail if none of them match (i.e. do not check any non-prioritized approvals).\nIf false, we will check the prioritized approvals first and then scan through the rest of the approvals.","type":"boolean"},"precalculateBalancesFromApproval":{"description":"If defined, we will use the predeterminedBalances from the specified approval to calculate the balances at execution time.\nWe will override the balances field with the precalculated balances. Only applicable for approvals with predeterminedBalances set.","$ref":"#/definitions/tokenization.PrecalculateBalancesFromApprovalDetails"},"prioritizedApprovals":{"description":"The prioritized approvals for the transfer. By default, we scan linearly through the approvals and use the first match.\nThis field can be used to prioritize specific approvals and scan through them first.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ApprovalIdentifierDetails"}},"toAddresses":{"description":"The addresses of the recipients of the transfer.","type":"array","items":{"type":"string"}}}},"tokenization.UintRange":{"description":"The UintRange is a range of IDs from some start to some end (inclusive).\nuintRanges are one of the core types used.\n\nThey are used for everything from token IDs to time ranges to min/max balance amounts.\n\nSee the BitBadges documentation for more information.","type":"object","properties":{"end":{"description":"The ending value of the range (inclusive).","type":"string"},"start":{"description":"The starting value of the range (inclusive).","type":"string"}}},"tokenization.UserApprovalSettings":{"description":"UserApprovalSettings defines issuer-imposed constraints on user-level approvals.\nSet on collection-level ApprovalCriteria and propagated to user-level approvals\nduring greedy transfer matching. Each balance slice carries its own settings.","type":"object","properties":{"allowedDenoms":{"description":"Restricts which denoms user-level coinTransfers can reference (beyond params-level AllowedDenoms).\nIf empty, all params-allowed denoms are permitted.","type":"array","items":{"type":"string"}},"disableUserCoinTransfers":{"description":"If true, user-level approvals cannot trigger coinTransfers at all for transfers matched by this collection approval.","type":"boolean"},"userRoyalties":{"description":"User-level royalties to enforce for transfers matched by this collection approval.","$ref":"#/definitions/tokenization.UserRoyalties"}}},"tokenization.UserBalanceStore":{"description":"UserBalanceStore is the store for the user balances for a collection.\n\nIt consists of a list of balances, a list of approved outgoing transfers, and a list of approved incoming transfers,\nas well as the permissions for updating the approved incoming/outgoing transfers.\n\nUpon initialization, all fields (minus the balances) are set to the defaults specified by the collection.\n\nThe outgoing transfers can be used to allow / disallow transfers which are sent from this user.\nIf a transfer has no match, then it is disallowed by default, unless from == initiatedBy (i.e. initiated by this user)\nand autoApproveSelfInitiatedOutgoingTransfers is set to true.\n\nThe incoming transfers can be used to allow / disallow transfers which are sent to this user.\nIf a transfer has no match, then it is disallowed by default, unless to == initiatedBy (i.e. initiated by this user)\nand autoApproveSelfInitiatedIncomingTransfers is set to true.\n\nNote that the user approved transfers are only checked if the collection approved transfers do not specify to override\nthe user approved transfers. \n\nThe permissions are used to determine whether the user can update the approved incoming/outgoing transfers and auto approvals.","type":"object","properties":{"autoApproveAllIncomingTransfers":{"description":"Whether to auto-approve all incoming transfers by default. \nThis is just shorthand for adding an accept everything incoming approval\nwith no restrictions.","type":"boolean"},"autoApproveSelfInitiatedIncomingTransfers":{"description":"Whether to auto-approve self-initiated incoming transfers for this user (i.e. to == initiatedBy).","type":"boolean"},"autoApproveSelfInitiatedOutgoingTransfers":{"description":"Whether to auto-approve self-initiated outgoing transfers for this user (i.e. from == initiatedBy).","type":"boolean"},"balances":{"description":"The list of balances associated with this user.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.Balance"}},"incomingApprovals":{"description":"The list of approved incoming transfers for this user.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UserIncomingApproval"}},"outgoingApprovals":{"description":"The list of approved outgoing transfers for this user.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UserOutgoingApproval"}},"userPermissions":{"description":"The permissions for this user's actions and transfers.","$ref":"#/definitions/tokenization.UserPermissions"}}},"tokenization.UserIncomingApproval":{"description":"UserIncomingApproval defines the rules for the approval of an incoming transfer to a user.","type":"object","properties":{"approvalCriteria":{"description":"The criteria that must be met for this approval to be considered.","$ref":"#/definitions/tokenization.IncomingApprovalCriteria"},"approvalId":{"description":"The ID of this approval. Must be unique per level (i.e. collection, outgoing, incoming).","type":"string"},"customData":{"description":"Arbitrary custom data associated with this approval.","type":"string"},"fromListId":{"description":"The list ID for the sender of the transfer.","type":"string"},"initiatedByListId":{"description":"The list ID for the user who initiated the transfer.","type":"string"},"ownershipTimes":{"description":"The allowed range of ownership times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"tokenIds":{"description":"The allowed range of token IDs for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"transferTimes":{"description":"The allowed range of transfer times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"uri":{"description":"The URI associated with this approval, optionally providing metadata about the approval.","type":"string"},"version":{"description":"Version of the approval. Maintained internally.","type":"string"}}},"tokenization.UserIncomingApprovalPermission":{"description":"UserIncomingApprovalPermission defines the permissions for updating the user's approved incoming transfers.\n\nSee CollectionApprovalPermission for more details. This is equivalent without the toListId field because that is always the user.","type":"object","properties":{"approvalId":{"description":"Identifier for the approvalId. You can use \"All\" or \"!approvalId\" for shorthand.\nIf you use \"All\", this approval will match to all approvalIds.\nIf you use \"!approvalId\", this approval will match to all approvalIds except for approvalId.\nIf you use \"approvalId\", this approval will match to only the specified approvalId and fail on all others.","type":"string"},"fromListId":{"description":"Identifier for the sender list.","type":"string"},"initiatedByListId":{"description":"Identifier for the initiator list (who is approved?).","type":"string"},"ownershipTimes":{"description":"Specifies the ownership times for the tokens in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"tokenIds":{"description":"Specifies the token IDs involved in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"transferTimes":{"description":"Specifies the times when the transfer can occur.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}}}},"tokenization.UserOutgoingApproval":{"description":"UserOutgoingApproval defines the rules for the approval of an outgoing transfer from a user.","type":"object","properties":{"approvalCriteria":{"description":"The criteria that must be met for this approval to be considered.","$ref":"#/definitions/tokenization.OutgoingApprovalCriteria"},"approvalId":{"description":"The ID of this approval. Must be unique per level (i.e. collection, outgoing, incoming).","type":"string"},"customData":{"description":"Arbitrary custom data associated with this approval.","type":"string"},"initiatedByListId":{"description":"The list ID for the user who initiated the transfer.","type":"string"},"ownershipTimes":{"description":"The allowed range of ownership times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"toListId":{"description":"The list ID for the recipient of the transfer.","type":"string"},"tokenIds":{"description":"The allowed range of token IDs for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"transferTimes":{"description":"The allowed range of transfer times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"uri":{"description":"The URI associated with this approval, optionally providing metadata about the approval.","type":"string"},"version":{"description":"Version of the approval. Maintained internally.","type":"string"}}},"tokenization.UserOutgoingApprovalPermission":{"description":"UserOutgoingApprovalPermission defines the permissions for updating the user's approved outgoing transfers.","type":"object","properties":{"approvalId":{"description":"Identifier for the approvalId. You can use \"All\" or \"!approvalId\" for shorthand.\nIf you use \"All\", this approval will match to all approvalIds.\nIf you use \"!approvalId\", this approval will match to all approvalIds except for approvalId.\nIf you use \"approvalId\", this approval will match to only the specified approvalId and fail on all others.","type":"string"},"initiatedByListId":{"description":"Identifier for the initiator list (who is approved?).","type":"string"},"ownershipTimes":{"description":"Specifies the ownership times for the tokens in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"toListId":{"description":"Identifier for the recipient list.","type":"string"},"tokenIds":{"description":"Specifies the token IDs involved in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}},"transferTimes":{"description":"Specifies the times when the transfer can occur.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UintRange"}}}},"tokenization.UserPermissions":{"description":"UserPermissions defines the permissions for the user about their approvals (i.e., what the user can and cannot do).\n\nSee CollectionPermissions for more details on the different types of permissions.\n\ncanUpdateOutgoingApprovals and canUpdateOutgoingApprovals follow the same as the canUpdateCollectionApprovals in CollectionPermissions,\nbut certain fields are removed because they are not relevant to the user.","type":"object","properties":{"canUpdateAutoApproveAllIncomingTransfers":{"description":"Permissions related to updating auto-approval settings for all incoming transfers (whether they are allowed by default).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ActionPermission"}},"canUpdateAutoApproveSelfInitiatedIncomingTransfers":{"description":"Permissions related to updating auto-approval settings for self-initiated incoming transfers (whether they are allowed by default).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ActionPermission"}},"canUpdateAutoApproveSelfInitiatedOutgoingTransfers":{"description":"Permissions related to updating auto-approval settings for self-initiated outgoing transfers (whether they are allowed by default).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.ActionPermission"}},"canUpdateIncomingApprovals":{"description":"Permissions related to updating the user's approved incoming transfers.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UserIncomingApprovalPermission"}},"canUpdateOutgoingApprovals":{"description":"Permissions related to updating the user's approved outgoing transfers.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.UserOutgoingApprovalPermission"}}}},"tokenization.UserRoyalties":{"description":"UserRoyalties defines the royalties for a user.","type":"object","properties":{"payoutAddress":{"description":"Payout address for the royalties.","type":"string"},"percentage":{"description":"Percentage of the transfer amount to apply as royalties. 1 to 10000 represents basis points.","type":"string"}}},"tokenization.VoteProof":{"description":"VoteProof represents a vote cast for a voting challenge.","type":"object","properties":{"proposalId":{"description":"The proposal ID this vote is for.","type":"string"},"votedAt":{"description":"Timestamp (unix ms) when this vote was cast. Set automatically by the chain.","type":"string"},"voter":{"description":"The address of the voter casting the vote.","type":"string"},"yesWeight":{"description":"The percentage weight (0-100) allocated to \"yes\" vote.\nThe remaining percentage (100 - yesWeight) is allocated to \"no\" vote.\nExample: yesWeight=70 means 70% yes, 30% no.","type":"string"}}},"tokenization.Voter":{"description":"Voter defines a voter with their address and weight.","type":"object","properties":{"address":{"description":"The address of the voter.","type":"string"},"weight":{"description":"The weight of this voter's vote.","type":"string"}}},"tokenization.VotingChallenge":{"description":"VotingChallenge defines a rule for approval in the form of a voting/multi-sig challenge.\nRequires a weighted quorum threshold to be met through votes from specified voters.\nAll challenges must be met with valid solutions for the transfer to be approved.\n\nIMPORTANT: Votes are stored separately and can be updated. The threshold is calculated as a percentage\nof total possible weight (all voters), not just voted weight. If you update the proposal ID, then the\nvote tracker will reset and start a new tally. We recommend using a unique proposal ID for each challenge\nto prevent overlap and unexpected behavior.","type":"object","properties":{"customData":{"description":"Arbitrary custom data associated with this voting challenge.","type":"string"},"delayAfterQuorum":{"description":"Mandatory delay in milliseconds after quorum is reached before the transfer can execute.\nIf set, the transfer will fail until: now \u003e= quorumReachedTimestamp + delayAfterQuorum.\nDuring the delay, signers can remove their votes to cancel (quorum drops = delay resets).","type":"string"},"proposalId":{"type":"string","title":"The ID of this voting challenge for tracking votes (scoped like challengeTrackerId).\nFormat: collectionId-approverAddress-approvalLevel-approvalId-challengeId"},"quorumThreshold":{"description":"The quorum threshold as a percentage (0-100) of total possible weight that must vote \"yes\".\nExample: 50 means 50% of total voter weight must vote yes for approval.","type":"string"},"resetAfterExecution":{"description":"If true, all votes for this challenge are cleared after a successful transfer execution.\nThis makes the challenge reusable (e.g., for vault withdrawals that need fresh approval each time).","type":"boolean"},"uri":{"description":"The URI associated with this voting challenge.","type":"string"},"voters":{"description":"List of voters with their weights. Each voter can cast a weighted vote.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.Voter"}}}},"tokenization.v27.ActionPermission":{"description":"ActionPermission defines the permissions for performing an action.\n\nThis is simple and straightforward as the only thing we need to check is the permitted/forbidden times.","type":"object","properties":{"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}}}},"tokenization.v27.AddressChecks":{"type":"object","title":"AddressChecks defines checks for address types (EVM contract, liquidity pool, etc.)","properties":{"mustBeEvmContract":{"description":"Require the address to be an EVM contract (has code).","type":"boolean"},"mustBeLiquidityPool":{"description":"Require the address to be a liquidity pool.","type":"boolean"},"mustNotBeEvmContract":{"description":"Require the address to not be an EVM contract (no code).","type":"boolean"},"mustNotBeLiquidityPool":{"description":"Require the address to not be a liquidity pool.","type":"boolean"}}},"tokenization.v27.AddressListInput":{"description":"AddressListInput is used for creating address lists via MsgCreateAddressLists.\nIt contains all fields from AddressList except createdBy, which is automatically set from the message creator.","type":"object","properties":{"addresses":{"description":"List of addresses included in the list.","type":"array","items":{"type":"string"}},"customData":{"description":"Custom arbitrary data or additional information related to the address list.","type":"string"},"listId":{"description":"Unique identifier for the address list.","type":"string"},"uri":{"description":"URI (Uniform Resource Identifier) associated with the address list to provide metadata, if applicable.","type":"string"},"whitelist":{"description":"Indicates whether the list includes the specified addresses (true) or excludes them (false).","type":"boolean"}}},"tokenization.v27.AliasPathAddObject":{"type":"object","properties":{"conversion":{"$ref":"#/definitions/tokenization.v27.ConversionWithoutDenom"},"denom":{"type":"string"},"denomUnits":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.DenomUnit"}},"metadata":{"description":"The metadata for this alias path.","$ref":"#/definitions/tokenization.v27.PathMetadata"},"symbol":{"type":"string"}}},"tokenization.v27.AltTimeChecks":{"type":"object","title":"AltTimeChecks defines alternative time-based checks for approval denial.\nIf the transfer time falls within any of the specified offline hours or days, the approval is denied.\nUses UTC timezone for neutral timezone approach.\nofflineHours: ranges of hours (0-23) when transfers should be denied\nofflineDays: ranges of days (0-6, where 0=Sunday, 1=Monday, ..., 6=Saturday) when transfers should be denied","properties":{"offlineDays":{"description":"Days (0-6, where 0=Sunday, 1=Monday, ..., 6=Saturday) when transfers should be denied. Uses UTC timezone.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"offlineHours":{"description":"Hours (0-23) when transfers should be denied. Uses UTC timezone.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}}}},"tokenization.v27.ApprovalAmounts":{"description":"ApprovalAmounts defines approval amounts per unique \"from,\" \"to,\" and/or \"initiated by\" address.\nIf any of these are nil or \"0\", we assume unlimited approvals.\nIf they are set to a value, then the running tally of the amounts transferred for the specified token IDs and ownership times \nmust not exceed the corresponding value.","type":"object","properties":{"amountTrackerId":{"description":"The ID of the amount tracker associated with this approval.\nWe use this ID to track the number of transfers and amounts transferred.","type":"string"},"overallApprovalAmount":{"description":"Overall approval amount.","type":"string"},"perFromAddressApprovalAmount":{"description":"Approval amount per \"from\" address.","type":"string"},"perInitiatedByAddressApprovalAmount":{"description":"Approval amount per \"initiated by\" address.","type":"string"},"perToAddressApprovalAmount":{"description":"Approval amount per \"to\" address.","type":"string"},"resetTimeIntervals":{"description":"Time intervals to reset the trackers at.","$ref":"#/definitions/tokenization.v27.ResetTimeIntervals"}}},"tokenization.v27.ApprovalCriteria":{"description":"ApprovalCriteria defines the criteria for approving transfers.\nAll criteria must be satisfied for the approval to be considered valid.","type":"object","properties":{"allowBackedMinting":{"description":"If true, this collection approval allows backed minting operations (CosmosCoinBackedPath).\nWhen false, this approval cannot be used for transfers involving backed minting addresses.\nThis prevents accidental allowances when toListIds is \"All\".","type":"boolean"},"allowSpecialWrapping":{"description":"If true, this collection approval allows special wrapping operations (CosmosCoinWrapperPath).\nWhen false, this approval cannot be used for transfers involving wrapping addresses.\nThis prevents accidental allowances when toListIds is \"All\".","type":"boolean"},"altTimeChecks":{"description":"Alternative time-based checks for approval denial (offline hours/days). Defines time periods\nduring which this approval should be denied, such as specific hours of the day or days of the week.","$ref":"#/definitions/tokenization.v27.AltTimeChecks"},"approvalAmounts":{"description":"Threshold limit of amounts that can be transferred using this approval. Tracks cumulative amounts\ntransferred and enforces maximum limits per approval.","$ref":"#/definitions/tokenization.v27.ApprovalAmounts"},"autoDeletionOptions":{"description":"Auto-deletion options for this approval. Defines conditions under which this approval should be\nautomatically deleted (e.g., after a certain number of uses or time period).","$ref":"#/definitions/tokenization.v27.AutoDeletionOptions"},"coinTransfers":{"description":"The sdk.Coins that need to be transferred for approval. Defines required coin transfers (e.g., fees,\nroyalties) that must be executed alongside the token transfer for the approval to be valid.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.CoinTransfer"}},"dynamicStoreChallenges":{"description":"Dynamic store challenges that the initiator must pass for approval. The initiator must provide\nvalid proofs that satisfy all specified dynamic store challenges (e.g., key-value store lookups).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.DynamicStoreChallenge"}},"ethSignatureChallenges":{"description":"ETH signature challenges that the initiator must pass for approval. The initiator must provide\nvalid Ethereum signatures for all specified challenges. Each signature can only be used once.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ETHSignatureChallenge"}},"evmQueryChallenges":{"description":"EVM query challenges that must pass for approval. Read-only contract queries\nthat verify external EVM state (e.g., token ownership in another contract).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.EVMQueryChallenge"}},"initiatorChecks":{"description":"Address checks for the initiator of the transfer. Validates that the initiator address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.v27.AddressChecks"},"maxNumTransfers":{"description":"Maximum number of transfers that can be processed using this approval. Tracks the count of transfers\nand enforces the limit to prevent exceeding the allowed number of uses.","$ref":"#/definitions/tokenization.v27.MaxNumTransfers"},"merkleChallenges":{"description":"Merkle challenges that must be satisfied for approval. The initiator must provide valid Merkle proofs\nthat satisfy all specified challenges. Each challenge requires a proof that leads to a specific root hash.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.MerkleChallenge"}},"mustOwnTokens":{"description":"Must own tokens for approval. Defines token ownership requirements that must be satisfied for\nthe approval to be valid. The initiator must own the specified tokens at the specified ownership times.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.MustOwnTokens"}},"mustPrioritize":{"description":"If true, this approval must be explicitly prioritized in PrioritizedApprovals to be used.\nThis allows fine-grained control over which approvals are applied when multiple approvals could match.","type":"boolean"},"overridesFromOutgoingApprovals":{"description":"Overrides the user's outgoing approvals for approval. If true, this collection-level approval\ntakes precedence over any outgoing approvals defined by the sender, allowing the collection to\ncontrol outgoing transfer behavior.","type":"boolean"},"overridesToIncomingApprovals":{"description":"Overrides the user's incoming approvals for approval. If true, this collection-level approval\ntakes precedence over any incoming approvals defined by the recipient, allowing the collection to\ncontrol incoming transfer behavior.","type":"boolean"},"predeterminedBalances":{"description":"Predetermined balances that must be used for each approval. Defines the exact token amounts and IDs\nthat can be transferred when using this approval.","$ref":"#/definitions/tokenization.v27.PredeterminedBalances"},"recipientChecks":{"description":"Address checks for the recipient of the transfer. Validates that the recipient address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.v27.AddressChecks"},"requireFromDoesNotEqualInitiatedBy":{"description":"Require the \"from\" address to not be equal to the \"initiated by\" address for approval.\nIf true, transfers where the sender equals the initiator are forbidden.","type":"boolean"},"requireFromEqualsInitiatedBy":{"description":"Require the \"from\" address to be equal to the \"initiated by\" address for approval.\nIf true, only transfers where the sender matches the initiator are allowed.","type":"boolean"},"requireToDoesNotEqualInitiatedBy":{"description":"Require the \"to\" address to not be equal to the \"initiated by\" address for approval.\nIf true, transfers where the recipient equals the initiator are forbidden.","type":"boolean"},"requireToEqualsInitiatedBy":{"description":"Require the \"to\" address to be equal to the \"initiated by\" address for approval.\nIf true, only transfers where the recipient matches the initiator are allowed.","type":"boolean"},"senderChecks":{"description":"Address checks for the sender of the transfer. Validates that the sender address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.v27.AddressChecks"},"userRoyalties":{"description":"User level royalties to apply to the transfer. Defines the percentage and payout address for\nroyalties that should be collected when this approval is used for a transfer.","$ref":"#/definitions/tokenization.v27.UserRoyalties"},"votingChallenges":{"description":"Voting challenges that must be satisfied for approval. The initiator must provide\nvalid votes that meet the quorum threshold for all specified challenges.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.VotingChallenge"}}}},"tokenization.v27.ApprovalIdentifierDetails":{"description":"ApprovalIdentifierDetails defines the details to identify a specific approval.","type":"object","properties":{"approvalId":{"description":"The ID of the approval.","type":"string"},"approvalLevel":{"description":"The level of the approval. Can be \"collection\", \"incoming\", or \"outgoing\".","type":"string"},"approverAddress":{"description":"The address of the approver. Leave blank \"\" if approvalLevel == \"collection\".","type":"string"},"version":{"description":"The version of the approval.","type":"string"}}},"tokenization.v27.AutoDeletionOptions":{"description":"AutoDeletionOptions defines the options for auto-deletion of approvals.","type":"object","properties":{"afterOneUse":{"type":"boolean","title":"After one use?"},"afterOverallMaxNumTransfers":{"type":"boolean","title":"After overall max number of uses threshold is met?"},"allowCounterpartyPurge":{"type":"boolean","title":"Allow counterparty to purge this approval if they are the only initiator"},"allowPurgeIfExpired":{"type":"boolean","title":"Allow others to call PurgeApprovals on behalf of this approval owner"}}},"tokenization.v27.Balance":{"description":"Balance represents the balance of a token for a specific user.\nThe user amounts xAmount of a token specified for the time ranges specified.\n\nExample: User A owns x10 of token IDs 1-10 from 1/1/2020 to 1/1/2021.\n\nIf times or tokenIDs have len \u003e 1, then the user owns all token IDs specified for all time ranges specified.","type":"object","properties":{"amount":{"description":"The amount of the token owned by the user.","type":"string"},"ownershipTimes":{"description":"The time ranges during which the user owns the token.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"tokenIds":{"description":"The token IDs for which the user owns the token.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}}}},"tokenization.v27.CoinTransfer":{"type":"object","properties":{"coins":{"description":"The sdk.Coins to be transferred.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"overrideFromWithApproverAddress":{"description":"By default, the from address is the initiator of the transaction.\nIf this is set to true, we will override the from address with the approver address.\nNote: This is not applicable for collection approvals (since approverAddress == '').","type":"boolean"},"overrideToWithInitiator":{"description":"By default, the to address is what is specified in the coin transfer.\nIf this is set to true, we will override the to address with the initiator of the transaction.","type":"boolean"},"to":{"description":"The address of the recipient of the transfer.","type":"string"}}},"tokenization.v27.CollectionApproval":{"type":"object","title":"CollectionApproval defines the rules for the approval of a transfer on the collection level","properties":{"approvalCriteria":{"description":"The criteria that must be met for this approval to be considered.","$ref":"#/definitions/tokenization.v27.ApprovalCriteria"},"approvalId":{"description":"The ID of this approval. Must be unique per level (i.e. collection, outgoing, incoming).","type":"string"},"customData":{"description":"Arbitrary custom data associated with this approval.","type":"string"},"fromListId":{"description":"The list ID for the sender of the transfer.","type":"string"},"initiatedByListId":{"description":"The list ID for the user who initiated the transfer.","type":"string"},"ownershipTimes":{"description":"The allowed range of ownership times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"toListId":{"description":"The list ID for the recipient of the transfer.","type":"string"},"tokenIds":{"description":"The allowed range of token IDs for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"transferTimes":{"description":"The allowed range of transfer times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"uri":{"description":"The URI associated with this approval, optionally providing metadata about the approval.","type":"string"},"version":{"description":"Version of the approval. Maintained internally.","type":"string"}}},"tokenization.v27.CollectionApprovalPermission":{"description":"CollectionApprovalPermission defines what collection approved transfers can be updated vs. are locked.\n\nEach transfer is broken down to a (from, to, initiatedBy, transferTime, tokenId) tuple.\nFor a transfer to match, we need to match ALL of the fields in the combination. \nThese are determined by the fromListId, toListId, initiatedByListId, transferTimes, tokenIds fields.\nAddressLists are used for (from, to, initiatedBy) which are a permanent list of addresses identified by an ID (see AddressLists). \n\npermanentlyPermitted/ForbiddenTimes: when can the manager execute this permission?\n\nEx: Let's say we are updating the transferability for the transfer tuple (\"AllWithoutMint\", \"AllWithoutMint\", \"AllWithoutMint\", 10, 1000).\nWe would check to find the FIRST CollectionApprovalPermission that matches this combination.\nIf we find a match, we would check the permitted/forbidden times to see if we can execute this permission (default is ALLOWED).\n\nEx: So if you wanted to freeze the transferability to enforce that token ID 1 will always be transferable, you could set\nthe combination (\"AllWithoutMint\", \"AllWithoutMint\", \"AllWithoutMint\", \"All Transfer Times\", 1) to always be forbidden.","type":"object","properties":{"approvalId":{"description":"Identifier for the approvalId. You can use \"All\" or \"!approvalId\" for shorthand.\nIf you use \"All\", this approval will match to all approvalIds.\nIf you use \"!approvalId\", this approval will match to all approvalIds except for approvalId.\nIf you use \"approvalId\", this approval will match to only the specified approvalId and fail on all others.","type":"string"},"fromListId":{"description":"Identifier for the sender list.","type":"string"},"initiatedByListId":{"description":"Identifier for the initiator list (who is approved?).","type":"string"},"ownershipTimes":{"description":"Specifies the ownership times for the tokens in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"toListId":{"description":"Identifier for the recipient list.","type":"string"},"tokenIds":{"description":"Specifies the token IDs involved in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"transferTimes":{"description":"Specifies the times when the transfer can occur.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}}}},"tokenization.v27.CollectionMetadata":{"description":"This message defines the metadata for the collection.\nThe interpretation of this metadata should follow the collection standard.","type":"object","properties":{"customData":{"description":"Custom data or additional information related to the collection metadata.","type":"string"},"uri":{"description":"The URI (Uniform Resource Identifier) associated with the collection metadata.","type":"string"}}},"tokenization.v27.CollectionPermissions":{"description":"CollectionPermissions defines the permissions for the collection (i.e., what the manager can and cannot do).\n\nThere are three types of permissions for a collection: ActionPermission, TokenIdsActionPermission, and CollectionApprovalPermission.\n\nThe permission type allows fine-grained access control for each action.\n- ActionPermission: defines when the manager can perform an action or update a field.\n- TokenIdsActionPermission: defines when the manager can perform an action for specific tokens\n- CollectionApprovalPermission: defines when the manager can update the transferability of the collection and what transfers can be updated vs. locked.\n\nNote there are a few different times here which could get confusing:\n- permanentlyPermitted/ForbiddenTimes - the times that a permission can be performed\n- transferTimes - the times that a transfer occurs\n- ownershipTimes - the times when a token is owned by a user\n\nThe permitted/permanentlyForbiddenTimes are used to determine when a permission can be executed.\nOnce a time is set to be permitted or forbidden, it is PERMANENT and cannot be changed.\nIf a time is not set to be permitted or forbidden, it is considered NEUTRAL and can be updated but is ALLOWED by default.\n\nIMPORTANT: We take first-match only for the permissions. This means that if you forbid time T in array index 0 and permit time T in index 1, \nwe will only check the first permission (forbid time T) and not the second permission (permit time T).","type":"object","properties":{"canAddMoreAliasPaths":{"description":"Permissions related to adding more alias paths to the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ActionPermission"}},"canAddMoreCosmosCoinWrapperPaths":{"description":"Permissions related to adding more cosmos coin wrapper paths to the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ActionPermission"}},"canArchiveCollection":{"description":"Permissions related to archiving the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ActionPermission"}},"canDeleteCollection":{"description":"Permissions related to deleting the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ActionPermission"}},"canUpdateCollectionApprovals":{"description":"Permissions related to updating collection approvals.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.CollectionApprovalPermission"}},"canUpdateCollectionMetadata":{"description":"Permissions related to updating the metadata of the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ActionPermission"}},"canUpdateCustomData":{"description":"Permissions related to updating custom data for the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ActionPermission"}},"canUpdateManager":{"description":"Permissions related to updating the collection's manager.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ActionPermission"}},"canUpdateStandards":{"description":"Permissions related to updating standards for the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ActionPermission"}},"canUpdateTokenMetadata":{"description":"Permissions related to updating token metadata for specific tokens.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.TokenIdsActionPermission"}},"canUpdateValidTokenIds":{"description":"Permissions related to creating more tokens for the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.TokenIdsActionPermission"}}}},"tokenization.v27.Conversion":{"description":"Conversion defines a bidirectional conversion between a cosmos coin (with denom) and token balances.","type":"object","properties":{"sideA":{"description":"Side A: The cosmos coin side of the conversion (amount + denom).","$ref":"#/definitions/tokenization.v27.ConversionSideAWithDenom"},"sideB":{"description":"Side B: The token balances side of the conversion.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.Balance"}}}},"tokenization.v27.ConversionSideA":{"description":"ConversionSideA represents the cosmos coin amount side of a conversion without denomination.","type":"object","properties":{"amount":{"description":"The amount of the cosmos coin (0 decimals).","type":"string"}}},"tokenization.v27.ConversionSideAWithDenom":{"description":"ConversionSideAWithDenom represents the cosmos coin side of a conversion with denomination.","type":"object","properties":{"amount":{"description":"The amount of the cosmos coin (0 decimals).","type":"string"},"denom":{"description":"The denomination of the cosmos coin.","type":"string"}}},"tokenization.v27.ConversionWithoutDenom":{"description":"ConversionWithoutDenom defines a bidirectional conversion between a cosmos coin amount (without denom) and token balances.\nThe denom is stored at the base level (e.g., in AliasPath or CosmosCoinWrapperPath).","type":"object","properties":{"sideA":{"description":"Side A: The cosmos coin amount side of the conversion (amount only, denom stored separately).","$ref":"#/definitions/tokenization.v27.ConversionSideA"},"sideB":{"description":"Side B: The token balances side of the conversion.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.Balance"}}}},"tokenization.v27.CosmosCoinBackedPathAddObject":{"type":"object","properties":{"conversion":{"$ref":"#/definitions/tokenization.v27.Conversion"}}},"tokenization.v27.CosmosCoinWrapperPathAddObject":{"type":"object","properties":{"allowOverrideWithAnyValidToken":{"type":"boolean"},"conversion":{"$ref":"#/definitions/tokenization.v27.ConversionWithoutDenom"},"denom":{"type":"string"},"denomUnits":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.DenomUnit"}},"metadata":{"description":"The metadata for this wrapper path.","$ref":"#/definitions/tokenization.v27.PathMetadata"},"symbol":{"type":"string"}}},"tokenization.v27.DenomUnit":{"type":"object","properties":{"decimals":{"description":"The number of decimal places for this unit. Defines the precision of the unit.","type":"string"},"isDefaultDisplay":{"description":"If true, this is the default display unit. Only one unit should be marked as the default display unit.\nThis unit will be used by default when displaying the coin amount. If none are marked default, we use the base level.","type":"boolean"},"metadata":{"description":"The metadata for this denomination unit.","$ref":"#/definitions/tokenization.v27.PathMetadata"},"symbol":{"description":"The symbol for this unit (e.g., \"BADGE\", \"nBADGE\"). Used for display purposes.","type":"string"}}},"tokenization.v27.DynamicStoreChallenge":{"description":"DynamicStoreChallenge defines a challenge that requires the initiator to pass a dynamic store check.","type":"object","properties":{"ownershipCheckParty":{"description":"The party to check ownership for. Options are \"initiator\", \"sender\", \"recipient\", or any valid bb1 address.\nIf a valid bb1 address is provided, ownership will be checked for that specific address.\nThis enables use cases like halt tokens where ownership is checked for an arbitrary address (e.g., halt token owner).\nDefaults to \"initiator\" if empty or if the value is not a recognized option or valid bb1 address.","type":"string"},"storeId":{"description":"The ID of the dynamic store to check.","type":"string"}}},"tokenization.v27.ETHSignatureChallenge":{"description":"ETHSignatureChallenge defines a rule for the approval in the form of an Ethereum signature challenge.\n\nAn ETH signature challenge is a challenge where the user must provide a valid Ethereum signature for a specific nonce.\nThe signature scheme is ETHSign(nonce + \"-\" + initiatorAddress + \"-\" + collectionId + \"-\" + approverAddress + \"-\" + approvalLevel + \"-\" + approvalId + \"-\" + challengeId) and each signature can only be used once.\nAll challenges must be met with valid solutions for the transfer to be approved.\n\nIMPORTANT: We track the usage of each signature to prevent replay attacks. Each signature can only be used once.\nIf you update the challenge ID, then the used signatures tracker will reset and start a new tally.\nWe recommend using a unique challenge ID for each challenge to prevent overlap and unexpected behavior.","type":"object","properties":{"challengeTrackerId":{"description":"The ID of this ETH signature challenge for tracking the number of uses per signature.","type":"string"},"customData":{"description":"Arbitrary custom data associated with this ETH signature challenge.","type":"string"},"signer":{"description":"The Ethereum address that must sign the nonce for verification.","type":"string"},"uri":{"description":"The URI associated with this ETH signature challenge, optionally providing metadata about the challenge.","type":"string"}}},"tokenization.v27.ETHSignatureProof":{"description":"ETHSignatureProof represents an Ethereum signature proof for a challenge.","type":"object","properties":{"nonce":{"description":"The nonce that was signed. The signature scheme is ETHSign(nonce + \"-\" + initiatorAddress + \"-\" + collectionId + \"-\" + approverAddress + \"-\" + approvalLevel + \"-\" + approvalId + \"-\" + challengeId).","type":"string"},"signature":{"description":"The Ethereum signature of the nonce.","type":"string"}}},"tokenization.v27.EVMQueryChallenge":{"description":"EVMQueryChallenge defines a rule for approval via read-only EVM contract query.\n\nThe challenge executes a staticcall to the specified contract with the given calldata.\nThe result is compared against the expected result (if provided) or checked for non-zero return.\n\nIMPORTANT: This is read-only and cannot modify state. The query is executed with a gas limit\nto prevent DoS attacks. All results are deterministic since EVM state is consistent within a block.","type":"object","properties":{"calldata":{"type":"string","title":"ABI-encoded function selector + arguments (hex string without 0x prefix)\nExample: \"70a08231000000000000000000000000{address}\" for balanceOf(address)\nCan use placeholders: $initiator, $sender, $recipient (replaced at runtime)"},"comparisonOperator":{"description":"Comparison operator: \"eq\" (equals), \"ne\" (not equals), \"gt\" (greater than), \"gte\", \"lt\", \"lte\"\nOnly \"eq\" and \"ne\" work for non-numeric types. Default is \"eq\".","type":"string"},"contractAddress":{"type":"string","title":"The EVM contract address to query (0x format or bb1 format)"},"customData":{"type":"string","title":"Arbitrary custom data"},"expectedResult":{"description":"Expected return value (hex string without 0x prefix). If empty, any non-error result passes.\nFor boolean checks, use \"0000...0001\" for true.","type":"string"},"gasLimit":{"type":"string","title":"Gas limit for the query (default 100000, max 500000)"},"uri":{"type":"string","title":"The URI associated with this challenge (metadata)"}}},"tokenization.v27.IncomingApprovalCriteria":{"description":"IncomingApprovalCriteria defines the criteria for approving incoming transfers.\nThis is used for user-level incoming approvals and only includes fields relevant to incoming transfers.\nAll criteria must be satisfied for the approval to be considered valid.","type":"object","properties":{"altTimeChecks":{"description":"Alternative time-based checks for approval denial (offline hours/days). Defines time periods\nduring which this approval should be denied, such as specific hours of the day or days of the week.","$ref":"#/definitions/tokenization.v27.AltTimeChecks"},"approvalAmounts":{"description":"Threshold limit of amounts that can be transferred using this approval. Tracks cumulative amounts\ntransferred and enforces maximum limits per approval.","$ref":"#/definitions/tokenization.v27.ApprovalAmounts"},"autoDeletionOptions":{"description":"Auto-deletion options for this approval. Defines conditions under which this approval should be\nautomatically deleted (e.g., after a certain number of uses or time period).","$ref":"#/definitions/tokenization.v27.AutoDeletionOptions"},"coinTransfers":{"description":"The sdk.Coins that need to be transferred for approval. Defines required coin transfers (e.g., fees,\nroyalties) that must be executed alongside the token transfer for the approval to be valid.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.CoinTransfer"}},"dynamicStoreChallenges":{"description":"Dynamic store challenges that the initiator must pass for approval. The initiator must provide\nvalid proofs that satisfy all specified dynamic store challenges (e.g., key-value store lookups).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.DynamicStoreChallenge"}},"ethSignatureChallenges":{"description":"ETH signature challenges that the initiator must pass for approval. The initiator must provide\nvalid Ethereum signatures for all specified challenges. Each signature can only be used once.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ETHSignatureChallenge"}},"evmQueryChallenges":{"description":"EVM query challenges that must pass for approval. Read-only contract queries\nthat verify external EVM state (e.g., token ownership in another contract).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.EVMQueryChallenge"}},"initiatorChecks":{"description":"Address checks for the initiator of the transfer. Validates that the initiator address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.v27.AddressChecks"},"maxNumTransfers":{"description":"Maximum number of transfers that can be processed using this approval. Tracks the count of transfers\nand enforces the limit to prevent exceeding the allowed number of uses.","$ref":"#/definitions/tokenization.v27.MaxNumTransfers"},"merkleChallenges":{"description":"Merkle challenges that must be satisfied for approval. The initiator must provide valid Merkle proofs\nthat satisfy all specified challenges. Each challenge requires a proof that leads to a specific root hash.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.MerkleChallenge"}},"mustOwnTokens":{"description":"Must own tokens for approval. Defines token ownership requirements that must be satisfied for\nthe approval to be valid. The initiator must own the specified tokens at the specified ownership times.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.MustOwnTokens"}},"mustPrioritize":{"description":"If true, this approval must be explicitly prioritized in PrioritizedApprovals to be used.\nThis allows fine-grained control over which approvals are applied when multiple approvals could match.","type":"boolean"},"predeterminedBalances":{"description":"Predetermined balances that must be used for each approval. Defines the exact token amounts and IDs\nthat can be transferred when using this approval.","$ref":"#/definitions/tokenization.v27.PredeterminedBalances"},"requireFromDoesNotEqualInitiatedBy":{"description":"Require the \"from\" address to not be equal to the \"initiated by\" address for approval.\nIf true, transfers where the sender equals the initiator are forbidden.","type":"boolean"},"requireFromEqualsInitiatedBy":{"description":"Require the \"from\" address to be equal to the \"initiated by\" address for approval.\nIf true, only transfers where the sender matches the initiator are allowed.","type":"boolean"},"senderChecks":{"description":"Address checks for the sender of the transfer. Validates that the sender address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).\nNote: No recipient checks are included for incoming approvals since the recipient is the user themselves.","$ref":"#/definitions/tokenization.v27.AddressChecks"},"votingChallenges":{"description":"Voting challenges that must be satisfied for approval. The initiator must provide\nvalid votes that meet the quorum threshold for all specified challenges.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.VotingChallenge"}}}},"tokenization.v27.IncrementedBalances":{"description":"IncrementedBalances represents balances that are incremented by specific amounts, according to the order calculation method.","type":"object","properties":{"allowOverrideTimestamp":{"description":"Whether to allow overriding the timestamp for the balances (only applicable with durationFromTimestamp set).","type":"boolean"},"allowOverrideWithAnyValidToken":{"type":"boolean","title":"Allow override of any valid ID"},"durationFromTimestamp":{"description":"The amount of unix milliseconds to approve starting from now. Incompatible with incrementOwnershipTimesBy.","type":"string"},"incrementOwnershipTimesBy":{"description":"The amount by which to increment ownership times. Incompatible with approveStartingFromNowBy.","type":"string"},"incrementTokenIdsBy":{"description":"The amount by which to increment token IDs.","type":"string"},"recurringOwnershipTimes":{"description":"Recurring ownership times.","$ref":"#/definitions/tokenization.v27.RecurringOwnershipTimes"},"startBalances":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.Balance"}}}},"tokenization.v27.InvariantsAddObject":{"description":"InvariantsAddObject is used for adding invariants without specifying addresses.\nAddresses are generated by the keeper and stored in the collection.","type":"object","properties":{"cosmosCoinBackedPath":{"description":"The IBC backed (sdk.coin) path for the collection. Only one path is allowed.\nAddress will be generated by the keeper.","$ref":"#/definitions/tokenization.v27.CosmosCoinBackedPathAddObject"},"disablePoolCreation":{"description":"If true, disallows pool creation with this collection's assets.\nWhen true, any attempt to create a pool with tokenization assets from this collection will fail.","type":"boolean"},"evmQueryChallenges":{"type":"array","title":"EVM query invariants that must pass after all transfers complete.\nThese are checked once per message after all balance updates, with access to ALL recipient addresses.\nPlaceholders: $sender, $recipients (comma-separated), $initiator, $collectionId, $recipient","items":{"type":"object","$ref":"#/definitions/tokenization.v27.EVMQueryChallenge"}},"maxSupplyPerId":{"description":"Maximum supply per token ID. Checked against Total address balances after transfers complete.\nA value of 0 means no limit (unlimited).","type":"string"},"noCustomOwnershipTimes":{"description":"If true, all ownership times must be full ranges [{ start: 1, end: GoMaxUInt64 }].\nThis prevents time-based restrictions on token ownership.","type":"boolean"},"noForcefulPostMintTransfers":{"description":"If true, disallows any collection approvals that have overridesFromOutgoingApprovals or overridesToIncomingApprovals set to true.\nThis prevents forceful transfers that bypass user-level approvals.\nThis only applies to transfers where the from address does not equal \"Mint\".","type":"boolean"}}},"tokenization.v27.ManualBalances":{"description":"ManualBalances represents a list of manual balances entered for the predetermined balances criteria. Order is calculated according to the calculation method set.","type":"object","properties":{"balances":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.Balance"}}}},"tokenization.v27.MaxNumTransfers":{"description":"MaxNumTransfers defines the maximum number of transfers per unique \"from,\" \"to,\" and/or \"initiated by\" address.\nIf any of these are nil or \"0\", we assume unlimited approvals.\nIf they are set to a value, then the running tally of the number of transfers for the specified token IDs and ownership times\nmust not exceed the corresponding value.","type":"object","properties":{"amountTrackerId":{"description":"The ID of the amount tracker associated with this approval.\nWe use this ID to track the number of transfers and amounts transferred.","type":"string"},"overallMaxNumTransfers":{"description":"Overall maximum number of transfers.","type":"string"},"perFromAddressMaxNumTransfers":{"description":"Maximum number of transfers per \"from\" address.","type":"string"},"perInitiatedByAddressMaxNumTransfers":{"description":"Maximum number of transfers per \"initiated by\" address.","type":"string"},"perToAddressMaxNumTransfers":{"description":"Maximum number of transfers per \"to\" address.","type":"string"},"resetTimeIntervals":{"description":"Time intervals to reset the trackers at.","$ref":"#/definitions/tokenization.v27.ResetTimeIntervals"}}},"tokenization.v27.MerkleChallenge":{"description":"Challenges define a rule for the approval in the form of a Merkle challenge.\n\nA Merkle challenge is a challenge where the user must provide a Merkle proof to a Merkle tree. If they provide a valid proof,\nthen the challenge is met. All challenges must be met with valid solutions for the transfer to be approved.\n\nIMPORTANT: Merkle challenges currently are limited to SHA256 hashes. See documentation for MerkleChallenge for more details and tutorials.\n\nIMPORTANT: We track the number of uses per leaf according to the challengeTrackerId specified by the parent approval of this challenge.\nIf you update the challenge ID, then the used leaves tracker will reset and start a new tally.\nWe recommend using a unique challenge ID for each challenge to prevent overlap and unexpected behavior.","type":"object","properties":{"challengeTrackerId":{"description":"The ID of this Merkle challenge for tracking the number of uses per leaf.","type":"string"},"customData":{"description":"Arbitrary custom data associated with this Merkle challenge.","type":"string"},"expectedProofLength":{"description":"The expected length of the Merkle path for verification. Used to prevent Merkle path truncation attacks.","type":"string"},"leafSigner":{"description":"Ethereum address that must sign the leaf. Used to protect against man-in-the-middle attacks.\nSignature scheme: sign(leaf + \"-\" + creatorAddress), verified using elliptic curve signature verification.","type":"string"},"maxUsesPerLeaf":{"description":"The maximum number of times each leaf can be used. Must be 1 if useCreatorAddressAsLeaf is false to prevent replay attacks.","type":"string"},"root":{"description":"The root hash of the Merkle tree to which the Merkle path must lead for verification.","type":"string"},"uri":{"description":"The URI associated with this Merkle challenge, optionally providing metadata about the challenge.","type":"string"},"useCreatorAddressAsLeaf":{"description":"If true, we will override the user's leaf for their proof with their creator address. Used for whitelist trees where all leaves are valid BitBadges addresses.","type":"boolean"}}},"tokenization.v27.MerklePathItem":{"description":"MerklePathItem represents an item in a Merkle path.","type":"object","properties":{"aunt":{"description":"The hash of the sibling node (aunt) in the Merkle path.","type":"string"},"onRight":{"description":"Indicates whether the aunt node is on the right side of the path.","type":"boolean"}}},"tokenization.v27.MerkleProof":{"description":"MerkleProof represents a Merkle proof, consistent with Tendermint/Crypto Merkle tree.","type":"object","properties":{"aunts":{"description":"List of Merkle path items (aunts) that make up the proof.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.MerklePathItem"}},"leaf":{"description":"The hash of the leaf node for which the proof is generated.","type":"string"},"leafSignature":{"description":"The signature of the leaf node tying the address to the leaf node.","type":"string"}}},"tokenization.v27.MsgCastVote":{"description":"MsgCastVote allows a voter to cast or update their vote for a voting challenge.","type":"object","properties":{"approvalId":{"description":"The approval ID.","type":"string"},"approvalLevel":{"description":"The approval level (\"collection\", \"incoming\", or \"outgoing\").","type":"string"},"approverAddress":{"description":"The approver address (empty string for collection-level approvals).","type":"string"},"collectionId":{"description":"The collection ID for the voting challenge.","type":"string"},"creator":{"description":"The address of the voter casting the vote.","type":"string"},"proposalId":{"description":"The proposal ID (challenge ID) from the VotingChallenge.","type":"string"},"yesWeight":{"description":"The percentage weight (0-100) allocated to \"yes\" vote.\nThe remaining percentage (100 - yesWeight) is allocated to \"no\" vote.\nExample: yesWeight=70 means 70% yes, 30% no.","type":"string"}}},"tokenization.v27.MsgCastVoteResponse":{"type":"object"},"tokenization.v27.MsgCreateAddressLists":{"description":"MsgCreateAddressLists is used to create address lists.","type":"object","properties":{"addressLists":{"description":"Address lists to create. The createdBy field will be automatically set to the creator address.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.AddressListInput"}},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v27.MsgCreateAddressListsResponse":{"description":"MsgCreateAddressListsResponse is the response to MsgCreateAddressLists.","type":"object"},"tokenization.v27.MsgCreateCollection":{"description":"MsgCreateCollection is used to create a new collection.","type":"object","properties":{"aliasPathsToAdd":{"description":"Alias (non-wrapping) paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.AliasPathAddObject"}},"collectionApprovals":{"description":"Collection approvals.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.CollectionApproval"}},"collectionMetadata":{"description":"Collection metadata.","$ref":"#/definitions/tokenization.v27.CollectionMetadata"},"collectionPermissions":{"description":"Collection permissions.","$ref":"#/definitions/tokenization.v27.CollectionPermissions"},"cosmosCoinWrapperPathsToAdd":{"description":"IBC wrapper paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.CosmosCoinWrapperPathAddObject"}},"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"Custom data.","type":"string"},"defaultBalances":{"title":"The default balances for the user","$ref":"#/definitions/tokenization.v27.UserBalanceStore"},"invariants":{"description":"Collection-level invariants that cannot be broken.\nAddresses are generated by the keeper and stored in the collection.","$ref":"#/definitions/tokenization.v27.InvariantsAddObject"},"isArchived":{"description":"isArchived flag.","type":"boolean"},"manager":{"description":"Manager address.","type":"string"},"mintEscrowCoinsToTransfer":{"description":"Coins to be transferred to the mint escrow address.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"standards":{"description":"Standards entries.","type":"array","items":{"type":"string"}},"tokenMetadata":{"description":"Token metadata entries.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.TokenMetadata"}},"validTokenIds":{"type":"array","title":"New token IDs to add to this collection","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}}}},"tokenization.v27.MsgCreateCollectionResponse":{"description":"MsgCreateCollectionResponse is the response to MsgCreateCollection.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v27.MsgCreateDynamicStore":{"description":"MsgCreateDynamicStore is used to create a new dynamic store.","type":"object","properties":{"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"Custom data field for storing arbitrary data associated with this dynamic store.","type":"string"},"defaultValue":{"description":"The default value for uninitialized addresses (true/false).","type":"boolean"},"uri":{"description":"URI for additional metadata or resources associated with this dynamic store.","type":"string"}}},"tokenization.v27.MsgCreateDynamicStoreResponse":{"description":"MsgCreateDynamicStoreResponse is the response to MsgCreateDynamicStore.","type":"object","properties":{"storeId":{"description":"ID of the dynamic store.","type":"string"}}},"tokenization.v27.MsgDeleteCollection":{"description":"MsgDeleteCollection is used to delete a collection.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v27.MsgDeleteCollectionResponse":{"description":"MsgDeleteCollectionResponse is the response to MsgDeleteCollection.","type":"object"},"tokenization.v27.MsgDeleteDynamicStore":{"description":"MsgDeleteDynamicStore is used to delete a dynamic store.","type":"object","properties":{"creator":{"description":"Address of the creator.","type":"string"},"storeId":{"description":"ID of the dynamic store to delete.","type":"string"}}},"tokenization.v27.MsgDeleteDynamicStoreResponse":{"description":"MsgDeleteDynamicStoreResponse is the response to MsgDeleteDynamicStore.","type":"object"},"tokenization.v27.MsgDeleteIncomingApproval":{"description":"MsgDeleteIncomingApproval is a helper message to delete a single incoming approval.","type":"object","properties":{"approvalId":{"description":"The ID of the approval to delete.","type":"string"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v27.MsgDeleteIncomingApprovalResponse":{"description":"MsgDeleteIncomingApprovalResponse is the response to MsgDeleteIncomingApproval.","type":"object"},"tokenization.v27.MsgDeleteOutgoingApproval":{"description":"MsgDeleteOutgoingApproval is a helper message to delete a single outgoing approval.","type":"object","properties":{"approvalId":{"description":"The ID of the approval to delete.","type":"string"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v27.MsgDeleteOutgoingApprovalResponse":{"description":"MsgDeleteOutgoingApprovalResponse is the response to MsgDeleteOutgoingApproval.","type":"object"},"tokenization.v27.MsgPurgeApprovals":{"description":"MsgPurgeApprovals is a helper message to purge expired approvals.","type":"object","properties":{"approvalsToPurge":{"description":"Specific approvals to purge. If empty, purges all applicable approvals based on other flags.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ApprovalIdentifierDetails"}},"approverAddress":{"description":"Address of the user whose approvals to purge. If empty, defaults to creator.","type":"string"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"purgeCounterpartyApprovals":{"description":"Whether to purge counterparty approvals (approvals where the creator is the only initiator).","type":"boolean"},"purgeExpired":{"description":"Whether to purge expired approvals (approvals with no future valid transfer times).","type":"boolean"}}},"tokenization.v27.MsgPurgeApprovalsResponse":{"description":"MsgPurgeApprovalsResponse is the response to MsgPurgeApprovals.","type":"object","properties":{"numPurged":{"description":"Number of approvals purged.","type":"string"}}},"tokenization.v27.MsgSetCollectionApprovals":{"type":"object","title":"MsgSetCollectionApprovals sets the collection approvals and canUpdateCollectionApprovals permission","properties":{"canUpdateCollectionApprovals":{"type":"array","title":"Permission to update collection approvals","items":{"type":"object","$ref":"#/definitions/tokenization.v27.CollectionApprovalPermission"}},"collectionApprovals":{"description":"New collection approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.CollectionApproval"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v27.MsgSetCollectionApprovalsResponse":{"description":"MsgSetCollectionApprovalsResponse is the response to MsgSetCollectionApprovals.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v27.MsgSetCollectionMetadata":{"type":"object","title":"MsgSetCollectionMetadata sets the collection metadata and canUpdateCollectionMetadata permission","properties":{"canUpdateCollectionMetadata":{"type":"array","title":"Permission to update collection metadata","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"collectionMetadata":{"description":"New collection metadata to set.","$ref":"#/definitions/tokenization.v27.CollectionMetadata"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v27.MsgSetCollectionMetadataResponse":{"description":"MsgSetCollectionMetadataResponse is the response to MsgSetCollectionMetadata.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v27.MsgSetCustomData":{"type":"object","title":"MsgSetCustomData sets the custom data and canUpdateCustomData permission","properties":{"canUpdateCustomData":{"type":"array","title":"Permission to update custom data","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"New custom data to set.","type":"string"}}},"tokenization.v27.MsgSetCustomDataResponse":{"description":"MsgSetCustomDataResponse is the response to MsgSetCustomData.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v27.MsgSetDynamicStoreValue":{"description":"MsgSetDynamicStoreValue is used to set a boolean value for a specific address in a dynamic store.","type":"object","properties":{"address":{"description":"The address for which to set the value.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"storeId":{"description":"ID of the dynamic store.","type":"string"},"value":{"description":"The boolean value to set (true/false).","type":"boolean"}}},"tokenization.v27.MsgSetDynamicStoreValueResponse":{"description":"MsgSetDynamicStoreValueResponse is the response to MsgSetDynamicStoreValue.","type":"object"},"tokenization.v27.MsgSetIncomingApproval":{"description":"MsgSetIncomingApproval is a helper message to set a single incoming approval.","type":"object","properties":{"approval":{"description":"The incoming approval to set.","$ref":"#/definitions/tokenization.v27.UserIncomingApproval"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v27.MsgSetIncomingApprovalResponse":{"description":"MsgSetIncomingApprovalResponse is the response to MsgSetIncomingApproval.","type":"object"},"tokenization.v27.MsgSetIsArchived":{"type":"object","title":"MsgSetIsArchived sets the isArchived and canArchiveCollection permission","properties":{"canArchiveCollection":{"type":"array","title":"Permission to archive collection","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"isArchived":{"description":"New isArchived to set.","type":"boolean"}}},"tokenization.v27.MsgSetIsArchivedResponse":{"description":"MsgSetIsArchivedResponse is the response to MsgSetIsArchived.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v27.MsgSetManager":{"type":"object","title":"MsgSetManager sets the manager and canUpdateManager permission","properties":{"canUpdateManager":{"type":"array","title":"Permission to update manager","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"manager":{"description":"New manager to set.","type":"string"}}},"tokenization.v27.MsgSetManagerResponse":{"description":"MsgSetManagerResponse is the response to MsgSetManager.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v27.MsgSetOutgoingApproval":{"description":"MsgSetOutgoingApproval is a helper message to set a single outgoing approval.","type":"object","properties":{"approval":{"description":"The outgoing approval to set.","$ref":"#/definitions/tokenization.v27.UserOutgoingApproval"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v27.MsgSetOutgoingApprovalResponse":{"description":"MsgSetOutgoingApprovalResponse is the response to MsgSetOutgoingApproval.","type":"object"},"tokenization.v27.MsgSetReservedProtocolAddress":{"description":"MsgSetReservedProtocolAddress sets or unsets a reserved protocol address (governance-only).","type":"object","properties":{"address":{"description":"Address to set or unset as reserved protocol address.","type":"string"},"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"isReservedProtocol":{"description":"Whether the address should be a reserved protocol address (true) or not (false).","type":"boolean"}}},"tokenization.v27.MsgSetReservedProtocolAddressResponse":{"description":"MsgSetReservedProtocolAddressResponse is the response to MsgSetReservedProtocolAddress.","type":"object"},"tokenization.v27.MsgSetStandards":{"type":"object","title":"MsgSetStandards sets the standards and canUpdateStandards permission","properties":{"canUpdateStandards":{"type":"array","title":"Permission to update standards","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"standards":{"description":"New standards to set.","type":"array","items":{"type":"string"}}}},"tokenization.v27.MsgSetStandardsResponse":{"description":"MsgSetStandardsResponse is the response to MsgSetStandards.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v27.MsgSetTokenMetadata":{"type":"object","title":"MsgSetTokenMetadata sets the token metadata and canUpdateTokenMetadata permission","properties":{"canUpdateTokenMetadata":{"type":"array","title":"Permission to update token metadata","items":{"type":"object","$ref":"#/definitions/tokenization.v27.TokenIdsActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"tokenMetadata":{"description":"New token metadata to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.TokenMetadata"}}}},"tokenization.v27.MsgSetTokenMetadataResponse":{"description":"MsgSetTokenMetadataResponse is the response to MsgSetTokenMetadata.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v27.MsgSetValidTokenIds":{"type":"object","title":"MsgSetValidTokenIds sets the validTokenIds and canUpdateValidTokenIds permission","properties":{"canUpdateValidTokenIds":{"type":"array","title":"Permission to update valid token IDs","items":{"type":"object","$ref":"#/definitions/tokenization.v27.TokenIdsActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"validTokenIds":{"type":"array","title":"New token IDs to add to this collection","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}}}},"tokenization.v27.MsgSetValidTokenIdsResponse":{"description":"MsgSetValidTokenIdsResponse is the response to MsgSetValidTokenIds.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v27.MsgTransferTokens":{"description":"MsgTransferTokens is used to transfer tokens.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"transfers":{"description":"Transfers to execute.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.Transfer"}}}},"tokenization.v27.MsgTransferTokensResponse":{"description":"MsgTransferTokensResponse is the response to MsgTransferTokens.","type":"object"},"tokenization.v27.MsgUniversalUpdateCollection":{"description":"MsgUniversalUpdateCollection is used to define MsgServer types for all requests and responses for Msgs of the tokens module.\nIt is a universal interface that can be used for both creating and updating collections.\nWe have it defined for legacy purposes, but it is recommended to use MsgCreateCollection and MsgUpdateCollection instead.","type":"object","properties":{"aliasPathsToAdd":{"description":"Alias (non-wrapping) paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.AliasPathAddObject"}},"collectionApprovals":{"description":"New collection approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.CollectionApproval"}},"collectionId":{"description":"ID of the collection (0 for new collection).","type":"string"},"collectionMetadata":{"description":"New collection metadata to set.","$ref":"#/definitions/tokenization.v27.CollectionMetadata"},"collectionPermissions":{"description":"New collection permissions to set.","$ref":"#/definitions/tokenization.v27.CollectionPermissions"},"cosmosCoinWrapperPathsToAdd":{"description":"IBC wrapper paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.CosmosCoinWrapperPathAddObject"}},"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"New custom data to set.","type":"string"},"defaultBalances":{"title":"The default balances for the user","$ref":"#/definitions/tokenization.v27.UserBalanceStore"},"invariants":{"description":"Collection-level invariants that cannot be broken.\nThese are set upon genesis and cannot be modified.\nAddresses are generated by the keeper and stored in the collection.","$ref":"#/definitions/tokenization.v27.InvariantsAddObject"},"isArchived":{"description":"New isArchived to set.","type":"boolean"},"manager":{"description":"New manager to set.","type":"string"},"mintEscrowCoinsToTransfer":{"description":"Coins to be transferred to the mint escrow address.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"standards":{"description":"New standards to set.","type":"array","items":{"type":"string"}},"tokenMetadata":{"description":"New token metadata to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.TokenMetadata"}},"updateCollectionApprovals":{"description":"Indicates if collection approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCollectionMetadata":{"description":"Indicates if the collection metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCollectionPermissions":{"description":"Indicates if collection permissions should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCustomData":{"description":"Indicates if the custom data should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateIsArchived":{"description":"Indicates if the isArchived should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateManager":{"description":"Indicates if the manager should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateStandards":{"description":"Indicates if the standards should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateTokenMetadata":{"description":"Indicates if the token metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateValidTokenIds":{"description":"Indicates if the valid token IDs should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"validTokenIds":{"type":"array","title":"New token IDs to add to this collection","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}}}},"tokenization.v27.MsgUniversalUpdateCollectionResponse":{"description":"MsgUniversalUpdateCollectionResponse is the response to MsgUniversalUpdateCollection.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v27.MsgUpdateCollection":{"description":"MsgUpdateCollection is used to update a collection.","type":"object","properties":{"aliasPathsToAdd":{"description":"Alias (non-wrapping) paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.AliasPathAddObject"}},"collectionApprovals":{"description":"New collection approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.CollectionApproval"}},"collectionId":{"description":"ID of the collection (0 for new collection).","type":"string"},"collectionMetadata":{"description":"New collection metadata to set.","$ref":"#/definitions/tokenization.v27.CollectionMetadata"},"collectionPermissions":{"description":"New collection permissions to set.","$ref":"#/definitions/tokenization.v27.CollectionPermissions"},"cosmosCoinWrapperPathsToAdd":{"description":"IBC wrapper paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.CosmosCoinWrapperPathAddObject"}},"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"New custom data to set.","type":"string"},"invariants":{"description":"Collection-level invariants that cannot be broken.\nThese are set upon genesis and cannot be modified.\nAddresses are generated by the keeper and stored in the collection.","$ref":"#/definitions/tokenization.v27.InvariantsAddObject"},"isArchived":{"description":"New isArchived to set.","type":"boolean"},"manager":{"description":"New manager to set.","type":"string"},"mintEscrowCoinsToTransfer":{"description":"Coins to be transferred to the mint escrow address.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"standards":{"description":"New standards to set.","type":"array","items":{"type":"string"}},"tokenMetadata":{"description":"New token metadata to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.TokenMetadata"}},"updateCollectionApprovals":{"description":"Indicates if collection approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCollectionMetadata":{"description":"Indicates if the collection metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCollectionPermissions":{"description":"Indicates if collection permissions should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCustomData":{"description":"Indicates if the custom data should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateIsArchived":{"description":"Indicates if the isArchived should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateManager":{"description":"Indicates if the manager should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateStandards":{"description":"Indicates if the standards should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateTokenMetadata":{"description":"Indicates if the token metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateValidTokenIds":{"description":"Indicates if the valid token IDs should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"validTokenIds":{"type":"array","title":"New token IDs to add to this collection","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}}}},"tokenization.v27.MsgUpdateCollectionResponse":{"description":"MsgUpdateCollectionResponse is the response to MsgUpdateCollection.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v27.MsgUpdateDynamicStore":{"description":"MsgUpdateDynamicStore is used to update an existing dynamic store.","type":"object","properties":{"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"Custom data field for storing arbitrary data associated with this dynamic store.","type":"string"},"defaultValue":{"description":"The new default value for uninitialized addresses (true/false).","type":"boolean"},"globalEnabled":{"description":"The global kill switch state (true = enabled, false = disabled/halted).\nCallers should query the current value first if they want to keep it unchanged.","type":"boolean"},"storeId":{"description":"ID of the dynamic store to update.","type":"string"},"uri":{"description":"URI for additional metadata or resources associated with this dynamic store.","type":"string"}}},"tokenization.v27.MsgUpdateDynamicStoreResponse":{"description":"MsgUpdateDynamicStoreResponse is the response to MsgUpdateDynamicStore.","type":"object"},"tokenization.v27.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the module parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/tokenization.v27.Params"}}},"tokenization.v27.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"tokenization.v27.MsgUpdateUserApprovals":{"description":"MsgUpdateUserApprovals is used to update user approvals.","type":"object","properties":{"autoApproveAllIncomingTransfers":{"description":"Auto-approve setting for all incoming transfers.","type":"boolean"},"autoApproveSelfInitiatedIncomingTransfers":{"description":"Auto-approve setting for self-initiated incoming transfers.","type":"boolean"},"autoApproveSelfInitiatedOutgoingTransfers":{"description":"Auto-approve setting for self-initiated outgoing transfers.","type":"boolean"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"incomingApprovals":{"description":"New incoming approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UserIncomingApproval"}},"outgoingApprovals":{"description":"New outgoing approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UserOutgoingApproval"}},"updateAutoApproveAllIncomingTransfers":{"description":"Indicates if auto-approve settings for all incoming transfers should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateAutoApproveSelfInitiatedIncomingTransfers":{"description":"Indicates if auto-approve settings for self-initiated incoming transfers should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateAutoApproveSelfInitiatedOutgoingTransfers":{"description":"Indicates if auto-approve settings for self-initiated outgoing transfers should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateIncomingApprovals":{"description":"Indicates if incoming approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateOutgoingApprovals":{"description":"Indicates if outgoing approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateUserPermissions":{"description":"Indicates if user permissions should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"userPermissions":{"description":"New user permissions to set.","$ref":"#/definitions/tokenization.v27.UserPermissions"}}},"tokenization.v27.MsgUpdateUserApprovalsResponse":{"description":"MsgUpdateUserApprovalsResponse is the response to MsgUpdateUserApprovals.","type":"object"},"tokenization.v27.MustOwnTokens":{"description":"MustOwnTokens represents a condition where a user must own specific tokens\nto be approved to transfer.\n\n- collectionId: The ID of the collection for the tokens that must be owned\n- amountRange: The range of amounts the user must own (min to max)\n- ownershipTimes: The time ranges during which the user must own the tokens.\n- tokenIds: The token IDs the user must own.\n- overrideWithCurrentTime: If true, auto override ownershipTimes with the current time.\n- mustSatisfyForAllAssets: If true, the user must own all specified tokens; otherwise, owning any one for \u003e= 1 millisecond is sufficient.","type":"object","properties":{"amountRange":{"description":"The range of amounts the user must own (min to max).","$ref":"#/definitions/tokenization.v27.UintRange"},"collectionId":{"description":"The ID of the collection.","type":"string"},"mustSatisfyForAllAssets":{"description":"If true, the user must meet ownership requirements for all specified tokens; else, must meet requirements for any single token.","type":"boolean"},"overrideWithCurrentTime":{"description":"If true, override ownershipTimes with the current time.","type":"boolean"},"ownershipCheckParty":{"description":"The party to check ownership for. Options are \"initiator\", \"sender\", \"recipient\", or any valid bb1 address.\nIf a valid bb1 address is provided, ownership will be checked for that specific address.\nThis enables use cases like halt tokens where ownership is checked for an arbitrary address (e.g., halt token owner).\nDefaults to \"initiator\" if empty or if the value is not a recognized option or valid bb1 address.","type":"string"},"ownershipTimes":{"description":"The time ranges during which the user must own the tokens.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"tokenIds":{"description":"The token IDs the user must own.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}}}},"tokenization.v27.OutgoingApprovalCriteria":{"description":"OutgoingApprovalCriteria defines the criteria for approving outgoing transfers.\nThis is used for user-level outgoing approvals and only includes fields relevant to outgoing transfers.\nAll criteria must be satisfied for the approval to be considered valid.","type":"object","properties":{"altTimeChecks":{"description":"Alternative time-based checks for approval denial (offline hours/days). Defines time periods\nduring which this approval should be denied, such as specific hours of the day or days of the week.","$ref":"#/definitions/tokenization.v27.AltTimeChecks"},"approvalAmounts":{"description":"Threshold limit of amounts that can be transferred using this approval. Tracks cumulative amounts\ntransferred and enforces maximum limits per approval.","$ref":"#/definitions/tokenization.v27.ApprovalAmounts"},"autoDeletionOptions":{"description":"Auto-deletion options for this approval. Defines conditions under which this approval should be\nautomatically deleted (e.g., after a certain number of uses or time period).","$ref":"#/definitions/tokenization.v27.AutoDeletionOptions"},"coinTransfers":{"description":"The sdk.Coins that need to be transferred for approval. Defines required coin transfers (e.g., fees,\nroyalties) that must be executed alongside the token transfer for the approval to be valid.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.CoinTransfer"}},"dynamicStoreChallenges":{"description":"Dynamic store challenges that the initiator must pass for approval. The initiator must provide\nvalid proofs that satisfy all specified dynamic store challenges (e.g., key-value store lookups).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.DynamicStoreChallenge"}},"ethSignatureChallenges":{"description":"ETH signature challenges that the initiator must pass for approval. The initiator must provide\nvalid Ethereum signatures for all specified challenges. Each signature can only be used once.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ETHSignatureChallenge"}},"evmQueryChallenges":{"description":"EVM query challenges that must pass for approval. Read-only contract queries\nthat verify external EVM state (e.g., token ownership in another contract).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.EVMQueryChallenge"}},"initiatorChecks":{"description":"Address checks for the initiator of the transfer. Validates that the initiator address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.v27.AddressChecks"},"maxNumTransfers":{"description":"Maximum number of transfers that can be processed using this approval. Tracks the count of transfers\nand enforces the limit to prevent exceeding the allowed number of uses.","$ref":"#/definitions/tokenization.v27.MaxNumTransfers"},"merkleChallenges":{"description":"Merkle challenges that must be satisfied for approval. The initiator must provide valid Merkle proofs\nthat satisfy all specified challenges. Each challenge requires a proof that leads to a specific root hash.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.MerkleChallenge"}},"mustOwnTokens":{"description":"Must own tokens for approval. Defines token ownership requirements that must be satisfied for\nthe approval to be valid. The initiator must own the specified tokens at the specified ownership times.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.MustOwnTokens"}},"mustPrioritize":{"description":"If true, this approval must be explicitly prioritized in PrioritizedApprovals to be used.\nThis allows fine-grained control over which approvals are applied when multiple approvals could match.","type":"boolean"},"predeterminedBalances":{"description":"Predetermined balances that must be used for each approval. Defines the exact token amounts and IDs\nthat can be transferred when using this approval.","$ref":"#/definitions/tokenization.v27.PredeterminedBalances"},"recipientChecks":{"description":"Address checks for the recipient of the transfer. Validates that the recipient address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).\nNote: No sender checks are included for outgoing approvals since the sender is the user themselves.","$ref":"#/definitions/tokenization.v27.AddressChecks"},"requireToDoesNotEqualInitiatedBy":{"description":"Require the \"to\" address to not be equal to the \"initiated by\" address for approval.\nIf true, transfers where the recipient equals the initiator are forbidden.","type":"boolean"},"requireToEqualsInitiatedBy":{"description":"Require the \"to\" address to be equal to the \"initiated by\" address for approval.\nIf true, only transfers where the recipient matches the initiator are allowed.","type":"boolean"},"votingChallenges":{"description":"Voting challenges that must be satisfied for approval. The initiator must provide\nvalid votes that meet the quorum threshold for all specified challenges.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.VotingChallenge"}}}},"tokenization.v27.Params":{"description":"Params defines the parameters for the module.","type":"object","properties":{"affiliate_percentage":{"type":"string","title":"affiliate_percentage defines the percentage of the transfer amount that goes to the affiliate"},"allowed_denoms":{"type":"array","title":"allowed_denoms defines the list of denoms that are allowed to be used in coin_transfers","items":{"type":"string"}}}},"tokenization.v27.PathMetadata":{"description":"This message defines the metadata for paths (alias paths and cosmos coin wrapper paths).\nThe interpretation of this metadata should follow the collection standard.","type":"object","properties":{"customData":{"description":"Custom data or additional information related to the path metadata.","type":"string"},"uri":{"description":"The URI (Uniform Resource Identifier) associated with the path metadata.","type":"string"}}},"tokenization.v27.PrecalculateBalancesFromApprovalDetails":{"description":"PrecalculateBalancesFromApprovalDetails defines the details for precalculating balances from an approval.","type":"object","properties":{"approvalId":{"description":"The ID of the approval.","type":"string"},"approvalLevel":{"description":"The level of the approval. Can be \"collection\", \"incoming\", or \"outgoing\".","type":"string"},"approverAddress":{"description":"The address of the approver. Leave blank \"\" if approvalLevel == \"collection\".","type":"string"},"precalculationOptions":{"description":"The options for precalculating the balances.","$ref":"#/definitions/tokenization.v27.PrecalculationOptions"},"version":{"description":"The version of the approval.","type":"string"}}},"tokenization.v27.PrecalculationOptions":{"description":"PrecalculationOptions defines the options for precalculating the balances.","type":"object","properties":{"overrideTimestamp":{"description":"The timestamp to override with when calculating the balances.","type":"string"},"tokenIdsOverride":{"description":"The IDs to override for the transfer. Only applicable if using this option in precalculation.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}}}},"tokenization.v27.PredeterminedBalances":{"description":"PredeterminedBalances represents balances with predetermined order calculation.","type":"object","properties":{"incrementedBalances":{"description":"Balances that have a starting amount and increment. If this is nil, then we use the manual balances.","$ref":"#/definitions/tokenization.v27.IncrementedBalances"},"manualBalances":{"description":"Manual balances that can be entered. If this is nil, then we use the incremented balances.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ManualBalances"}},"orderCalculationMethod":{"description":"The method to calculate the order of predetermined balances.","$ref":"#/definitions/tokenization.v27.PredeterminedOrderCalculationMethod"}}},"tokenization.v27.PredeterminedOrderCalculationMethod":{"description":"PredeterminedOrderCalculationMethod defines the method to calculate predetermined balances order.","type":"object","properties":{"challengeTrackerId":{"description":"If useMerkleChallengeLeafIndex is set, then this is the ID of the challenge tracker associated with this calculation method.","type":"string"},"useMerkleChallengeLeafIndex":{"description":"Use the Merkle challenge leaf index to calculate the order. Ex: Transfer that uses leaf index 0 gets the first balance, transfer that uses leaf index 1 gets the second balance, etc.","type":"boolean"},"useOverallNumTransfers":{"description":"Use the overall number of transfers to calculate the order. Ex: First transfer gets the first balance, second transfer gets the second balance, etc.","type":"boolean"},"usePerFromAddressNumTransfers":{"description":"Use the number of transfers per \"from\" address to calculate the order. Ex: First transfer from address A gets the first balance, second transfer from address A gets the second balance, etc.","type":"boolean"},"usePerInitiatedByAddressNumTransfers":{"description":"Use the number of transfers per \"initiated by\" address to calculate the order. Ex: First transfer initiated by address A gets the first balance, second transfer initiated by address A gets the second balance, etc.","type":"boolean"},"usePerToAddressNumTransfers":{"description":"Use the number of transfers per \"to\" address to calculate the order. Ex: First transfer to address A gets the first balance, second transfer to address A gets the second balance, etc.","type":"boolean"}}},"tokenization.v27.RecurringOwnershipTimes":{"description":"RecurringOwnershipTimes represents a list of recurring ownership times.","type":"object","properties":{"chargePeriodLength":{"type":"string","title":"Grace period length where you can charge the next interval (nextStartTime - chargePeriodLength) until (nextStartTime) = charge period"},"intervalLength":{"description":"The interval length in unix milliseconds.","type":"string"},"startTime":{"description":"The original start time of the first interval.","type":"string"}}},"tokenization.v27.ResetTimeIntervals":{"description":"Time intervals to reset the trackers at.","type":"object","properties":{"intervalLength":{"description":"Interval length in unix milliseconds.","type":"string"},"startTime":{"description":"Original start time of the first interval.","type":"string"}}},"tokenization.v27.TokenIdsActionPermission":{"description":"TokenIdsActionPermission defines the permissions for performing an action for specific tokens.\nCurrently, this is only used for creating new tokens.\n\nEx: If you want to lock the ability to create new tokens for tokenIds [1,2] at ownershipTimes 1/1/2020 - 1/1/2021, \nyou could set the combination (tokenIds: [1,2], ownershipTimes: [1/1/2020 - 1/1/2021]) to always be forbidden.","type":"object","properties":{"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"tokenIds":{"description":"Specifies the token IDs involved in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}}}},"tokenization.v27.TokenMetadata":{"description":"This message defines the metadata for specific token IDs.\nThe interpretation of this metadata should follow the collection standard.","type":"object","properties":{"customData":{"description":"Custom data or additional information related to the token metadata.","type":"string"},"tokenIds":{"description":"The token IDs to which this metadata applies.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"uri":{"description":"The URI (Uniform Resource Identifier) associated with the token metadata.","type":"string"}}},"tokenization.v27.Transfer":{"description":"Transfer defines the details of a transfer of tokens.","type":"object","properties":{"balances":{"description":"The balances to be transferred.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.Balance"}},"ethSignatureProofs":{"description":"The ETH signature proofs / solutions for all ETH signature challenges required for the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ETHSignatureProof"}},"from":{"description":"The address of the sender of the transfer.","type":"string"},"memo":{"description":"The memo for the transfer.","type":"string"},"merkleProofs":{"description":"The Merkle proofs / solutions for all Merkle challenges required for the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.MerkleProof"}},"onlyCheckPrioritizedCollectionApprovals":{"description":"Whether to only check prioritized approvals for the transfer. \nIf true, we will only check the prioritized approvals and fail if none of them match (i.e. do not check any non-prioritized approvals).\nIf false, we will check the prioritized approvals first and then scan through the rest of the approvals.","type":"boolean"},"onlyCheckPrioritizedIncomingApprovals":{"description":"Whether to only check prioritized approvals for the transfer. \nIf true, we will only check the prioritized approvals and fail if none of them match (i.e. do not check any non-prioritized approvals).\nIf false, we will check the prioritized approvals first and then scan through the rest of the approvals.","type":"boolean"},"onlyCheckPrioritizedOutgoingApprovals":{"description":"Whether to only check prioritized approvals for the transfer. \nIf true, we will only check the prioritized approvals and fail if none of them match (i.e. do not check any non-prioritized approvals).\nIf false, we will check the prioritized approvals first and then scan through the rest of the approvals.","type":"boolean"},"precalculateBalancesFromApproval":{"description":"If defined, we will use the predeterminedBalances from the specified approval to calculate the balances at execution time.\nWe will override the balances field with the precalculated balances. Only applicable for approvals with predeterminedBalances set.","$ref":"#/definitions/tokenization.v27.PrecalculateBalancesFromApprovalDetails"},"prioritizedApprovals":{"description":"The prioritized approvals for the transfer. By default, we scan linearly through the approvals and use the first match.\nThis field can be used to prioritize specific approvals and scan through them first.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ApprovalIdentifierDetails"}},"toAddresses":{"description":"The addresses of the recipients of the transfer.","type":"array","items":{"type":"string"}}}},"tokenization.v27.UintRange":{"description":"The UintRange is a range of IDs from some start to some end (inclusive).\nuintRanges are one of the core types used.\n\nThey are used for everything from token IDs to time ranges to min/max balance amounts.\n\nSee the BitBadges documentation for more information.","type":"object","properties":{"end":{"description":"The ending value of the range (inclusive).","type":"string"},"start":{"description":"The starting value of the range (inclusive).","type":"string"}}},"tokenization.v27.UserBalanceStore":{"description":"UserBalanceStore is the store for the user balances for a collection.\n\nIt consists of a list of balances, a list of approved outgoing transfers, and a list of approved incoming transfers,\nas well as the permissions for updating the approved incoming/outgoing transfers.\n\nUpon initialization, all fields (minus the balances) are set to the defaults specified by the collection.\n\nThe outgoing transfers can be used to allow / disallow transfers which are sent from this user.\nIf a transfer has no match, then it is disallowed by default, unless from == initiatedBy (i.e. initiated by this user)\nand autoApproveSelfInitiatedOutgoingTransfers is set to true.\n\nThe incoming transfers can be used to allow / disallow transfers which are sent to this user.\nIf a transfer has no match, then it is disallowed by default, unless to == initiatedBy (i.e. initiated by this user)\nand autoApproveSelfInitiatedIncomingTransfers is set to true.\n\nNote that the user approved transfers are only checked if the collection approved transfers do not specify to override\nthe user approved transfers. \n\nThe permissions are used to determine whether the user can update the approved incoming/outgoing transfers and auto approvals.","type":"object","properties":{"autoApproveAllIncomingTransfers":{"description":"Whether to auto-approve all incoming transfers by default. \nThis is just shorthand for adding an accept everything incoming approval\nwith no restrictions.","type":"boolean"},"autoApproveSelfInitiatedIncomingTransfers":{"description":"Whether to auto-approve self-initiated incoming transfers for this user (i.e. to == initiatedBy).","type":"boolean"},"autoApproveSelfInitiatedOutgoingTransfers":{"description":"Whether to auto-approve self-initiated outgoing transfers for this user (i.e. from == initiatedBy).","type":"boolean"},"balances":{"description":"The list of balances associated with this user.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.Balance"}},"incomingApprovals":{"description":"The list of approved incoming transfers for this user.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UserIncomingApproval"}},"outgoingApprovals":{"description":"The list of approved outgoing transfers for this user.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UserOutgoingApproval"}},"userPermissions":{"description":"The permissions for this user's actions and transfers.","$ref":"#/definitions/tokenization.v27.UserPermissions"}}},"tokenization.v27.UserIncomingApproval":{"description":"UserIncomingApproval defines the rules for the approval of an incoming transfer to a user.","type":"object","properties":{"approvalCriteria":{"description":"The criteria that must be met for this approval to be considered.","$ref":"#/definitions/tokenization.v27.IncomingApprovalCriteria"},"approvalId":{"description":"The ID of this approval. Must be unique per level (i.e. collection, outgoing, incoming).","type":"string"},"customData":{"description":"Arbitrary custom data associated with this approval.","type":"string"},"fromListId":{"description":"The list ID for the sender of the transfer.","type":"string"},"initiatedByListId":{"description":"The list ID for the user who initiated the transfer.","type":"string"},"ownershipTimes":{"description":"The allowed range of ownership times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"tokenIds":{"description":"The allowed range of token IDs for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"transferTimes":{"description":"The allowed range of transfer times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"uri":{"description":"The URI associated with this approval, optionally providing metadata about the approval.","type":"string"},"version":{"description":"Version of the approval. Maintained internally.","type":"string"}}},"tokenization.v27.UserIncomingApprovalPermission":{"description":"UserIncomingApprovalPermission defines the permissions for updating the user's approved incoming transfers.\n\nSee CollectionApprovalPermission for more details. This is equivalent without the toListId field because that is always the user.","type":"object","properties":{"approvalId":{"description":"Identifier for the approvalId. You can use \"All\" or \"!approvalId\" for shorthand.\nIf you use \"All\", this approval will match to all approvalIds.\nIf you use \"!approvalId\", this approval will match to all approvalIds except for approvalId.\nIf you use \"approvalId\", this approval will match to only the specified approvalId and fail on all others.","type":"string"},"fromListId":{"description":"Identifier for the sender list.","type":"string"},"initiatedByListId":{"description":"Identifier for the initiator list (who is approved?).","type":"string"},"ownershipTimes":{"description":"Specifies the ownership times for the tokens in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"tokenIds":{"description":"Specifies the token IDs involved in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"transferTimes":{"description":"Specifies the times when the transfer can occur.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}}}},"tokenization.v27.UserOutgoingApproval":{"description":"UserOutgoingApproval defines the rules for the approval of an outgoing transfer from a user.","type":"object","properties":{"approvalCriteria":{"description":"The criteria that must be met for this approval to be considered.","$ref":"#/definitions/tokenization.v27.OutgoingApprovalCriteria"},"approvalId":{"description":"The ID of this approval. Must be unique per level (i.e. collection, outgoing, incoming).","type":"string"},"customData":{"description":"Arbitrary custom data associated with this approval.","type":"string"},"initiatedByListId":{"description":"The list ID for the user who initiated the transfer.","type":"string"},"ownershipTimes":{"description":"The allowed range of ownership times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"toListId":{"description":"The list ID for the recipient of the transfer.","type":"string"},"tokenIds":{"description":"The allowed range of token IDs for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"transferTimes":{"description":"The allowed range of transfer times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"uri":{"description":"The URI associated with this approval, optionally providing metadata about the approval.","type":"string"},"version":{"description":"Version of the approval. Maintained internally.","type":"string"}}},"tokenization.v27.UserOutgoingApprovalPermission":{"description":"UserOutgoingApprovalPermission defines the permissions for updating the user's approved outgoing transfers.","type":"object","properties":{"approvalId":{"description":"Identifier for the approvalId. You can use \"All\" or \"!approvalId\" for shorthand.\nIf you use \"All\", this approval will match to all approvalIds.\nIf you use \"!approvalId\", this approval will match to all approvalIds except for approvalId.\nIf you use \"approvalId\", this approval will match to only the specified approvalId and fail on all others.","type":"string"},"initiatedByListId":{"description":"Identifier for the initiator list (who is approved?).","type":"string"},"ownershipTimes":{"description":"Specifies the ownership times for the tokens in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"toListId":{"description":"Identifier for the recipient list.","type":"string"},"tokenIds":{"description":"Specifies the token IDs involved in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}},"transferTimes":{"description":"Specifies the times when the transfer can occur.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UintRange"}}}},"tokenization.v27.UserPermissions":{"description":"UserPermissions defines the permissions for the user about their approvals (i.e., what the user can and cannot do).\n\nSee CollectionPermissions for more details on the different types of permissions.\n\ncanUpdateOutgoingApprovals and canUpdateOutgoingApprovals follow the same as the canUpdateCollectionApprovals in CollectionPermissions,\nbut certain fields are removed because they are not relevant to the user.","type":"object","properties":{"canUpdateAutoApproveAllIncomingTransfers":{"description":"Permissions related to updating auto-approval settings for all incoming transfers (whether they are allowed by default).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ActionPermission"}},"canUpdateAutoApproveSelfInitiatedIncomingTransfers":{"description":"Permissions related to updating auto-approval settings for self-initiated incoming transfers (whether they are allowed by default).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ActionPermission"}},"canUpdateAutoApproveSelfInitiatedOutgoingTransfers":{"description":"Permissions related to updating auto-approval settings for self-initiated outgoing transfers (whether they are allowed by default).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.ActionPermission"}},"canUpdateIncomingApprovals":{"description":"Permissions related to updating the user's approved incoming transfers.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UserIncomingApprovalPermission"}},"canUpdateOutgoingApprovals":{"description":"Permissions related to updating the user's approved outgoing transfers.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.UserOutgoingApprovalPermission"}}}},"tokenization.v27.UserRoyalties":{"description":"UserRoyalties defines the royalties for a user.","type":"object","properties":{"payoutAddress":{"description":"Payout address for the royalties.","type":"string"},"percentage":{"description":"Percentage of the transfer amount to apply as royalties. 1 to 10000 represents basis points.","type":"string"}}},"tokenization.v27.Voter":{"description":"Voter defines a voter with their address and weight.","type":"object","properties":{"address":{"description":"The address of the voter.","type":"string"},"weight":{"description":"The weight of this voter's vote.","type":"string"}}},"tokenization.v27.VotingChallenge":{"description":"VotingChallenge defines a rule for approval in the form of a voting/multi-sig challenge.\nRequires a weighted quorum threshold to be met through votes from specified voters.\nAll challenges must be met with valid solutions for the transfer to be approved.\n\nIMPORTANT: Votes are stored separately and can be updated. The threshold is calculated as a percentage\nof total possible weight (all voters), not just voted weight. If you update the proposal ID, then the\nvote tracker will reset and start a new tally. We recommend using a unique proposal ID for each challenge\nto prevent overlap and unexpected behavior.","type":"object","properties":{"customData":{"description":"Arbitrary custom data associated with this voting challenge.","type":"string"},"proposalId":{"type":"string","title":"The ID of this voting challenge for tracking votes (scoped like challengeTrackerId).\nFormat: collectionId-approverAddress-approvalLevel-approvalId-challengeId"},"quorumThreshold":{"description":"The quorum threshold as a percentage (0-100) of total possible weight that must vote \"yes\".\nExample: 50 means 50% of total voter weight must vote yes for approval.","type":"string"},"uri":{"description":"The URI associated with this voting challenge.","type":"string"},"voters":{"description":"List of voters with their weights. Each voter can cast a weighted vote.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v27.Voter"}}}},"tokenization.v28.ActionPermission":{"description":"ActionPermission defines the permissions for performing an action.\n\nThis is simple and straightforward as the only thing we need to check is the permitted/forbidden times.","type":"object","properties":{"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}}}},"tokenization.v28.AddressChecks":{"type":"object","title":"AddressChecks defines checks for address types (EVM contract, liquidity pool, etc.)","properties":{"mustBeEvmContract":{"description":"Require the address to be an EVM contract (has code).","type":"boolean"},"mustBeLiquidityPool":{"description":"Require the address to be a liquidity pool.","type":"boolean"},"mustNotBeEvmContract":{"description":"Require the address to not be an EVM contract (no code).","type":"boolean"},"mustNotBeLiquidityPool":{"description":"Require the address to not be a liquidity pool.","type":"boolean"}}},"tokenization.v28.AddressListInput":{"description":"AddressListInput is used for creating address lists via MsgCreateAddressLists.\nIt contains all fields from AddressList except createdBy, which is automatically set from the message creator.","type":"object","properties":{"addresses":{"description":"List of addresses included in the list.","type":"array","items":{"type":"string"}},"customData":{"description":"Custom arbitrary data or additional information related to the address list.","type":"string"},"listId":{"description":"Unique identifier for the address list.","type":"string"},"uri":{"description":"URI (Uniform Resource Identifier) associated with the address list to provide metadata, if applicable.","type":"string"},"whitelist":{"description":"Indicates whether the list includes the specified addresses (true) or excludes them (false).","type":"boolean"}}},"tokenization.v28.AliasPathAddObject":{"type":"object","properties":{"conversion":{"$ref":"#/definitions/tokenization.v28.ConversionWithoutDenom"},"denom":{"type":"string"},"denomUnits":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.DenomUnit"}},"metadata":{"description":"The metadata for this alias path.","$ref":"#/definitions/tokenization.v28.PathMetadata"},"symbol":{"type":"string"}}},"tokenization.v28.AltTimeChecks":{"type":"object","title":"AltTimeChecks defines alternative time-based checks for approval denial.\nIf the transfer time falls within any of the specified offline hours or days, the approval is denied.\nUses UTC timezone for neutral timezone approach.\nofflineHours: ranges of hours (0-23) when transfers should be denied\nofflineDays: ranges of days (0-6, where 0=Sunday, 1=Monday, ..., 6=Saturday) when transfers should be denied","properties":{"offlineDays":{"description":"Days (0-6, where 0=Sunday, 1=Monday, ..., 6=Saturday) when transfers should be denied. Uses UTC timezone.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"offlineHours":{"description":"Hours (0-23) when transfers should be denied. Uses UTC timezone.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}}}},"tokenization.v28.ApprovalAmounts":{"description":"ApprovalAmounts defines approval amounts per unique \"from,\" \"to,\" and/or \"initiated by\" address.\nIf any of these are nil or \"0\", we assume unlimited approvals.\nIf they are set to a value, then the running tally of the amounts transferred for the specified token IDs and ownership times \nmust not exceed the corresponding value.","type":"object","properties":{"amountTrackerId":{"description":"The ID of the amount tracker associated with this approval.\nWe use this ID to track the number of transfers and amounts transferred.","type":"string"},"overallApprovalAmount":{"description":"Overall approval amount.","type":"string"},"perFromAddressApprovalAmount":{"description":"Approval amount per \"from\" address.","type":"string"},"perInitiatedByAddressApprovalAmount":{"description":"Approval amount per \"initiated by\" address.","type":"string"},"perToAddressApprovalAmount":{"description":"Approval amount per \"to\" address.","type":"string"},"resetTimeIntervals":{"description":"Time intervals to reset the trackers at.","$ref":"#/definitions/tokenization.v28.ResetTimeIntervals"}}},"tokenization.v28.ApprovalCriteria":{"description":"ApprovalCriteria defines the criteria for approving transfers.\nAll criteria must be satisfied for the approval to be considered valid.","type":"object","properties":{"allowBackedMinting":{"description":"If true, this collection approval allows backed minting operations (CosmosCoinBackedPath).\nWhen false, this approval cannot be used for transfers involving backed minting addresses.\nThis prevents accidental allowances when toListIds is \"All\".","type":"boolean"},"allowSpecialWrapping":{"description":"If true, this collection approval allows special wrapping operations (CosmosCoinWrapperPath).\nWhen false, this approval cannot be used for transfers involving wrapping addresses.\nThis prevents accidental allowances when toListIds is \"All\".","type":"boolean"},"altTimeChecks":{"description":"Alternative time-based checks for approval denial (offline hours/days). Defines time periods\nduring which this approval should be denied, such as specific hours of the day or days of the week.","$ref":"#/definitions/tokenization.v28.AltTimeChecks"},"approvalAmounts":{"description":"Threshold limit of amounts that can be transferred using this approval. Tracks cumulative amounts\ntransferred and enforces maximum limits per approval.","$ref":"#/definitions/tokenization.v28.ApprovalAmounts"},"autoDeletionOptions":{"description":"Auto-deletion options for this approval. Defines conditions under which this approval should be\nautomatically deleted (e.g., after a certain number of uses or time period).","$ref":"#/definitions/tokenization.v28.AutoDeletionOptions"},"coinTransfers":{"description":"The sdk.Coins that need to be transferred for approval. Defines required coin transfers (e.g., fees,\nroyalties) that must be executed alongside the token transfer for the approval to be valid.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.CoinTransfer"}},"dynamicStoreChallenges":{"description":"Dynamic store challenges that the initiator must pass for approval. The initiator must provide\nvalid proofs that satisfy all specified dynamic store challenges (e.g., key-value store lookups).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.DynamicStoreChallenge"}},"ethSignatureChallenges":{"description":"ETH signature challenges that the initiator must pass for approval. The initiator must provide\nvalid Ethereum signatures for all specified challenges. Each signature can only be used once.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ETHSignatureChallenge"}},"evmQueryChallenges":{"description":"EVM query challenges that must pass for approval. Read-only contract queries\nthat verify external EVM state (e.g., token ownership in another contract).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.EVMQueryChallenge"}},"initiatorChecks":{"description":"Address checks for the initiator of the transfer. Validates that the initiator address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.v28.AddressChecks"},"maxNumTransfers":{"description":"Maximum number of transfers that can be processed using this approval. Tracks the count of transfers\nand enforces the limit to prevent exceeding the allowed number of uses.","$ref":"#/definitions/tokenization.v28.MaxNumTransfers"},"merkleChallenges":{"description":"Merkle challenges that must be satisfied for approval. The initiator must provide valid Merkle proofs\nthat satisfy all specified challenges. Each challenge requires a proof that leads to a specific root hash.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.MerkleChallenge"}},"mustOwnTokens":{"description":"Must own tokens for approval. Defines token ownership requirements that must be satisfied for\nthe approval to be valid. The initiator must own the specified tokens at the specified ownership times.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.MustOwnTokens"}},"mustPrioritize":{"description":"If true, this approval must be explicitly prioritized in PrioritizedApprovals to be used.\nThis allows fine-grained control over which approvals are applied when multiple approvals could match.","type":"boolean"},"overridesFromOutgoingApprovals":{"description":"Overrides the user's outgoing approvals for approval. If true, this collection-level approval\ntakes precedence over any outgoing approvals defined by the sender, allowing the collection to\ncontrol outgoing transfer behavior.","type":"boolean"},"overridesToIncomingApprovals":{"description":"Overrides the user's incoming approvals for approval. If true, this collection-level approval\ntakes precedence over any incoming approvals defined by the recipient, allowing the collection to\ncontrol incoming transfer behavior.","type":"boolean"},"predeterminedBalances":{"description":"Predetermined balances that must be used for each approval. Defines the exact token amounts and IDs\nthat can be transferred when using this approval.","$ref":"#/definitions/tokenization.v28.PredeterminedBalances"},"recipientChecks":{"description":"Address checks for the recipient of the transfer. Validates that the recipient address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.v28.AddressChecks"},"requireFromDoesNotEqualInitiatedBy":{"description":"Require the \"from\" address to not be equal to the \"initiated by\" address for approval.\nIf true, transfers where the sender equals the initiator are forbidden.","type":"boolean"},"requireFromEqualsInitiatedBy":{"description":"Require the \"from\" address to be equal to the \"initiated by\" address for approval.\nIf true, only transfers where the sender matches the initiator are allowed.","type":"boolean"},"requireToDoesNotEqualInitiatedBy":{"description":"Require the \"to\" address to not be equal to the \"initiated by\" address for approval.\nIf true, transfers where the recipient equals the initiator are forbidden.","type":"boolean"},"requireToEqualsInitiatedBy":{"description":"Require the \"to\" address to be equal to the \"initiated by\" address for approval.\nIf true, only transfers where the recipient matches the initiator are allowed.","type":"boolean"},"senderChecks":{"description":"Address checks for the sender of the transfer. Validates that the sender address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.v28.AddressChecks"},"userRoyalties":{"description":"User level royalties to apply to the transfer. Defines the percentage and payout address for\nroyalties that should be collected when this approval is used for a transfer.","$ref":"#/definitions/tokenization.v28.UserRoyalties"},"votingChallenges":{"description":"Voting challenges that must be satisfied for approval. The initiator must provide\nvalid votes that meet the quorum threshold for all specified challenges.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.VotingChallenge"}}}},"tokenization.v28.ApprovalIdentifierDetails":{"description":"ApprovalIdentifierDetails defines the details to identify a specific approval.","type":"object","properties":{"approvalId":{"description":"The ID of the approval.","type":"string"},"approvalLevel":{"description":"The level of the approval. Can be \"collection\", \"incoming\", or \"outgoing\".","type":"string"},"approverAddress":{"description":"The address of the approver. Leave blank \"\" if approvalLevel == \"collection\".","type":"string"},"version":{"description":"The version of the approval.","type":"string"}}},"tokenization.v28.AutoDeletionOptions":{"description":"AutoDeletionOptions defines the options for auto-deletion of approvals.","type":"object","properties":{"afterOneUse":{"type":"boolean","title":"After one use?"},"afterOverallMaxNumTransfers":{"type":"boolean","title":"After overall max number of uses threshold is met?"},"allowCounterpartyPurge":{"type":"boolean","title":"Allow counterparty to purge this approval if they are the only initiator"},"allowPurgeIfExpired":{"type":"boolean","title":"Allow others to call PurgeApprovals on behalf of this approval owner"}}},"tokenization.v28.Balance":{"description":"Balance represents the balance of a token for a specific user.\nThe user amounts xAmount of a token specified for the time ranges specified.\n\nExample: User A owns x10 of token IDs 1-10 from 1/1/2020 to 1/1/2021.\n\nIf times or tokenIDs have len \u003e 1, then the user owns all token IDs specified for all time ranges specified.","type":"object","properties":{"amount":{"description":"The amount of the token owned by the user.","type":"string"},"ownershipTimes":{"description":"The time ranges during which the user owns the token.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"tokenIds":{"description":"The token IDs for which the user owns the token.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}}}},"tokenization.v28.CoinTransfer":{"type":"object","properties":{"coins":{"description":"The sdk.Coins to be transferred.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"overrideFromWithApproverAddress":{"description":"By default, the from address is the initiator of the transaction.\nIf this is set to true, we will override the from address with the approver address.\nNote: This is not applicable for collection approvals (since approverAddress == '').","type":"boolean"},"overrideToWithInitiator":{"description":"By default, the to address is what is specified in the coin transfer.\nIf this is set to true, we will override the to address with the initiator of the transaction.","type":"boolean"},"to":{"description":"The address of the recipient of the transfer.","type":"string"}}},"tokenization.v28.CollectionApproval":{"type":"object","title":"CollectionApproval defines the rules for the approval of a transfer on the collection level","properties":{"approvalCriteria":{"description":"The criteria that must be met for this approval to be considered.","$ref":"#/definitions/tokenization.v28.ApprovalCriteria"},"approvalId":{"description":"The ID of this approval. Must be unique per level (i.e. collection, outgoing, incoming).","type":"string"},"customData":{"description":"Arbitrary custom data associated with this approval.","type":"string"},"fromListId":{"description":"The list ID for the sender of the transfer.","type":"string"},"initiatedByListId":{"description":"The list ID for the user who initiated the transfer.","type":"string"},"ownershipTimes":{"description":"The allowed range of ownership times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"toListId":{"description":"The list ID for the recipient of the transfer.","type":"string"},"tokenIds":{"description":"The allowed range of token IDs for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"transferTimes":{"description":"The allowed range of transfer times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"uri":{"description":"The URI associated with this approval, optionally providing metadata about the approval.","type":"string"},"version":{"description":"Version of the approval. Maintained internally.","type":"string"}}},"tokenization.v28.CollectionApprovalPermission":{"description":"CollectionApprovalPermission defines what collection approved transfers can be updated vs. are locked.\n\nEach transfer is broken down to a (from, to, initiatedBy, transferTime, tokenId) tuple.\nFor a transfer to match, we need to match ALL of the fields in the combination. \nThese are determined by the fromListId, toListId, initiatedByListId, transferTimes, tokenIds fields.\nAddressLists are used for (from, to, initiatedBy) which are a permanent list of addresses identified by an ID (see AddressLists). \n\npermanentlyPermitted/ForbiddenTimes: when can the manager execute this permission?\n\nEx: Let's say we are updating the transferability for the transfer tuple (\"AllWithoutMint\", \"AllWithoutMint\", \"AllWithoutMint\", 10, 1000).\nWe would check to find the FIRST CollectionApprovalPermission that matches this combination.\nIf we find a match, we would check the permitted/forbidden times to see if we can execute this permission (default is ALLOWED).\n\nEx: So if you wanted to freeze the transferability to enforce that token ID 1 will always be transferable, you could set\nthe combination (\"AllWithoutMint\", \"AllWithoutMint\", \"AllWithoutMint\", \"All Transfer Times\", 1) to always be forbidden.","type":"object","properties":{"approvalId":{"description":"Identifier for the approvalId. You can use \"All\" or \"!approvalId\" for shorthand.\nIf you use \"All\", this approval will match to all approvalIds.\nIf you use \"!approvalId\", this approval will match to all approvalIds except for approvalId.\nIf you use \"approvalId\", this approval will match to only the specified approvalId and fail on all others.","type":"string"},"fromListId":{"description":"Identifier for the sender list.","type":"string"},"initiatedByListId":{"description":"Identifier for the initiator list (who is approved?).","type":"string"},"ownershipTimes":{"description":"Specifies the ownership times for the tokens in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"toListId":{"description":"Identifier for the recipient list.","type":"string"},"tokenIds":{"description":"Specifies the token IDs involved in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"transferTimes":{"description":"Specifies the times when the transfer can occur.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}}}},"tokenization.v28.CollectionMetadata":{"description":"This message defines the metadata for the collection.\nThe interpretation of this metadata should follow the collection standard.","type":"object","properties":{"customData":{"description":"Custom data or additional information related to the collection metadata.","type":"string"},"uri":{"description":"The URI (Uniform Resource Identifier) associated with the collection metadata.","type":"string"}}},"tokenization.v28.CollectionPermissions":{"description":"CollectionPermissions defines the permissions for the collection (i.e., what the manager can and cannot do).\n\nThere are three types of permissions for a collection: ActionPermission, TokenIdsActionPermission, and CollectionApprovalPermission.\n\nThe permission type allows fine-grained access control for each action.\n- ActionPermission: defines when the manager can perform an action or update a field.\n- TokenIdsActionPermission: defines when the manager can perform an action for specific tokens\n- CollectionApprovalPermission: defines when the manager can update the transferability of the collection and what transfers can be updated vs. locked.\n\nNote there are a few different times here which could get confusing:\n- permanentlyPermitted/ForbiddenTimes - the times that a permission can be performed\n- transferTimes - the times that a transfer occurs\n- ownershipTimes - the times when a token is owned by a user\n\nThe permitted/permanentlyForbiddenTimes are used to determine when a permission can be executed.\nOnce a time is set to be permitted or forbidden, it is PERMANENT and cannot be changed.\nIf a time is not set to be permitted or forbidden, it is considered NEUTRAL and can be updated but is ALLOWED by default.\n\nIMPORTANT: We take first-match only for the permissions. This means that if you forbid time T in array index 0 and permit time T in index 1, \nwe will only check the first permission (forbid time T) and not the second permission (permit time T).","type":"object","properties":{"canAddMoreAliasPaths":{"description":"Permissions related to adding more alias paths to the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ActionPermission"}},"canAddMoreCosmosCoinWrapperPaths":{"description":"Permissions related to adding more cosmos coin wrapper paths to the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ActionPermission"}},"canArchiveCollection":{"description":"Permissions related to archiving the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ActionPermission"}},"canDeleteCollection":{"description":"Permissions related to deleting the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ActionPermission"}},"canUpdateCollectionApprovals":{"description":"Permissions related to updating collection approvals.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.CollectionApprovalPermission"}},"canUpdateCollectionMetadata":{"description":"Permissions related to updating the metadata of the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ActionPermission"}},"canUpdateCustomData":{"description":"Permissions related to updating custom data for the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ActionPermission"}},"canUpdateManager":{"description":"Permissions related to updating the collection's manager.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ActionPermission"}},"canUpdateStandards":{"description":"Permissions related to updating standards for the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ActionPermission"}},"canUpdateTokenMetadata":{"description":"Permissions related to updating token metadata for specific tokens.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.TokenIdsActionPermission"}},"canUpdateValidTokenIds":{"description":"Permissions related to creating more tokens for the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.TokenIdsActionPermission"}}}},"tokenization.v28.Conversion":{"description":"Conversion defines a bidirectional conversion between a cosmos coin (with denom) and token balances.","type":"object","properties":{"sideA":{"description":"Side A: The cosmos coin side of the conversion (amount + denom).","$ref":"#/definitions/tokenization.v28.ConversionSideAWithDenom"},"sideB":{"description":"Side B: The token balances side of the conversion.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.Balance"}}}},"tokenization.v28.ConversionSideA":{"description":"ConversionSideA represents the cosmos coin amount side of a conversion without denomination.","type":"object","properties":{"amount":{"description":"The amount of the cosmos coin (0 decimals).","type":"string"}}},"tokenization.v28.ConversionSideAWithDenom":{"description":"ConversionSideAWithDenom represents the cosmos coin side of a conversion with denomination.","type":"object","properties":{"amount":{"description":"The amount of the cosmos coin (0 decimals).","type":"string"},"denom":{"description":"The denomination of the cosmos coin.","type":"string"}}},"tokenization.v28.ConversionWithoutDenom":{"description":"ConversionWithoutDenom defines a bidirectional conversion between a cosmos coin amount (without denom) and token balances.\nThe denom is stored at the base level (e.g., in AliasPath or CosmosCoinWrapperPath).","type":"object","properties":{"sideA":{"description":"Side A: The cosmos coin amount side of the conversion (amount only, denom stored separately).","$ref":"#/definitions/tokenization.v28.ConversionSideA"},"sideB":{"description":"Side B: The token balances side of the conversion.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.Balance"}}}},"tokenization.v28.CosmosCoinBackedPathAddObject":{"type":"object","properties":{"conversion":{"$ref":"#/definitions/tokenization.v28.Conversion"}}},"tokenization.v28.CosmosCoinWrapperPathAddObject":{"type":"object","properties":{"allowOverrideWithAnyValidToken":{"type":"boolean"},"conversion":{"$ref":"#/definitions/tokenization.v28.ConversionWithoutDenom"},"denom":{"type":"string"},"denomUnits":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.DenomUnit"}},"metadata":{"description":"The metadata for this wrapper path.","$ref":"#/definitions/tokenization.v28.PathMetadata"},"symbol":{"type":"string"}}},"tokenization.v28.DenomUnit":{"type":"object","properties":{"decimals":{"description":"The number of decimal places for this unit. Defines the precision of the unit.","type":"string"},"isDefaultDisplay":{"description":"If true, this is the default display unit. Only one unit should be marked as the default display unit.\nThis unit will be used by default when displaying the coin amount. If none are marked default, we use the base level.","type":"boolean"},"metadata":{"description":"The metadata for this denomination unit.","$ref":"#/definitions/tokenization.v28.PathMetadata"},"symbol":{"description":"The symbol for this unit (e.g., \"BADGE\", \"nBADGE\"). Used for display purposes.","type":"string"}}},"tokenization.v28.DynamicStoreChallenge":{"description":"DynamicStoreChallenge defines a challenge that requires the initiator to pass a dynamic store check.","type":"object","properties":{"ownershipCheckParty":{"description":"The party to check ownership for. Options are \"initiator\", \"sender\", \"recipient\", or any valid bb1 address.\nIf a valid bb1 address is provided, ownership will be checked for that specific address.\nThis enables use cases like halt tokens where ownership is checked for an arbitrary address (e.g., halt token owner).\nDefaults to \"initiator\" if empty or if the value is not a recognized option or valid bb1 address.","type":"string"},"storeId":{"description":"The ID of the dynamic store to check.","type":"string"}}},"tokenization.v28.ETHSignatureChallenge":{"description":"ETHSignatureChallenge defines a rule for the approval in the form of an Ethereum signature challenge.\n\nAn ETH signature challenge is a challenge where the user must provide a valid Ethereum signature for a specific nonce.\nThe signature scheme is ETHSign(nonce + \"-\" + initiatorAddress + \"-\" + collectionId + \"-\" + approverAddress + \"-\" + approvalLevel + \"-\" + approvalId + \"-\" + challengeId) and each signature can only be used once.\nAll challenges must be met with valid solutions for the transfer to be approved.\n\nIMPORTANT: We track the usage of each signature to prevent replay attacks. Each signature can only be used once.\nIf you update the challenge ID, then the used signatures tracker will reset and start a new tally.\nWe recommend using a unique challenge ID for each challenge to prevent overlap and unexpected behavior.","type":"object","properties":{"challengeTrackerId":{"description":"The ID of this ETH signature challenge for tracking the number of uses per signature.","type":"string"},"customData":{"description":"Arbitrary custom data associated with this ETH signature challenge.","type":"string"},"signer":{"description":"The Ethereum address that must sign the nonce for verification.","type":"string"},"uri":{"description":"The URI associated with this ETH signature challenge, optionally providing metadata about the challenge.","type":"string"}}},"tokenization.v28.ETHSignatureProof":{"description":"ETHSignatureProof represents an Ethereum signature proof for a challenge.","type":"object","properties":{"nonce":{"description":"The nonce that was signed. The signature scheme is ETHSign(nonce + \"-\" + initiatorAddress + \"-\" + collectionId + \"-\" + approverAddress + \"-\" + approvalLevel + \"-\" + approvalId + \"-\" + challengeId).","type":"string"},"signature":{"description":"The Ethereum signature of the nonce.","type":"string"}}},"tokenization.v28.EVMQueryChallenge":{"description":"EVMQueryChallenge defines a rule for approval via read-only EVM contract query.\n\nThe challenge executes a staticcall to the specified contract with the given calldata.\nThe result is compared against the expected result (if provided) or checked for non-zero return.\n\nIMPORTANT: This is read-only and cannot modify state. The query is executed with a gas limit\nto prevent DoS attacks. All results are deterministic since EVM state is consistent within a block.","type":"object","properties":{"calldata":{"type":"string","title":"ABI-encoded function selector + arguments (hex string without 0x prefix)\nExample: \"70a08231000000000000000000000000{address}\" for balanceOf(address)\nCan use placeholders: $initiator, $sender, $recipient (replaced at runtime)"},"comparisonOperator":{"description":"Comparison operator: \"eq\" (equals), \"ne\" (not equals), \"gt\" (greater than), \"gte\", \"lt\", \"lte\"\nOnly \"eq\" and \"ne\" work for non-numeric types. Default is \"eq\".","type":"string"},"contractAddress":{"type":"string","title":"The EVM contract address to query (0x format or bb1 format)"},"customData":{"type":"string","title":"Arbitrary custom data"},"expectedResult":{"description":"Expected return value (hex string without 0x prefix). If empty, any non-error result passes.\nFor boolean checks, use \"0000...0001\" for true.","type":"string"},"gasLimit":{"type":"string","title":"Gas limit for the query (default 100000, max 500000)"},"uri":{"type":"string","title":"The URI associated with this challenge (metadata)"}}},"tokenization.v28.IncomingApprovalCriteria":{"description":"IncomingApprovalCriteria defines the criteria for approving incoming transfers.\nThis is used for user-level incoming approvals and only includes fields relevant to incoming transfers.\nAll criteria must be satisfied for the approval to be considered valid.","type":"object","properties":{"altTimeChecks":{"description":"Alternative time-based checks for approval denial (offline hours/days). Defines time periods\nduring which this approval should be denied, such as specific hours of the day or days of the week.","$ref":"#/definitions/tokenization.v28.AltTimeChecks"},"approvalAmounts":{"description":"Threshold limit of amounts that can be transferred using this approval. Tracks cumulative amounts\ntransferred and enforces maximum limits per approval.","$ref":"#/definitions/tokenization.v28.ApprovalAmounts"},"autoDeletionOptions":{"description":"Auto-deletion options for this approval. Defines conditions under which this approval should be\nautomatically deleted (e.g., after a certain number of uses or time period).","$ref":"#/definitions/tokenization.v28.AutoDeletionOptions"},"coinTransfers":{"description":"The sdk.Coins that need to be transferred for approval. Defines required coin transfers (e.g., fees,\nroyalties) that must be executed alongside the token transfer for the approval to be valid.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.CoinTransfer"}},"dynamicStoreChallenges":{"description":"Dynamic store challenges that the initiator must pass for approval. The initiator must provide\nvalid proofs that satisfy all specified dynamic store challenges (e.g., key-value store lookups).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.DynamicStoreChallenge"}},"ethSignatureChallenges":{"description":"ETH signature challenges that the initiator must pass for approval. The initiator must provide\nvalid Ethereum signatures for all specified challenges. Each signature can only be used once.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ETHSignatureChallenge"}},"evmQueryChallenges":{"description":"EVM query challenges that must pass for approval. Read-only contract queries\nthat verify external EVM state (e.g., token ownership in another contract).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.EVMQueryChallenge"}},"initiatorChecks":{"description":"Address checks for the initiator of the transfer. Validates that the initiator address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.v28.AddressChecks"},"maxNumTransfers":{"description":"Maximum number of transfers that can be processed using this approval. Tracks the count of transfers\nand enforces the limit to prevent exceeding the allowed number of uses.","$ref":"#/definitions/tokenization.v28.MaxNumTransfers"},"merkleChallenges":{"description":"Merkle challenges that must be satisfied for approval. The initiator must provide valid Merkle proofs\nthat satisfy all specified challenges. Each challenge requires a proof that leads to a specific root hash.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.MerkleChallenge"}},"mustOwnTokens":{"description":"Must own tokens for approval. Defines token ownership requirements that must be satisfied for\nthe approval to be valid. The initiator must own the specified tokens at the specified ownership times.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.MustOwnTokens"}},"mustPrioritize":{"description":"If true, this approval must be explicitly prioritized in PrioritizedApprovals to be used.\nThis allows fine-grained control over which approvals are applied when multiple approvals could match.","type":"boolean"},"predeterminedBalances":{"description":"Predetermined balances that must be used for each approval. Defines the exact token amounts and IDs\nthat can be transferred when using this approval.","$ref":"#/definitions/tokenization.v28.PredeterminedBalances"},"requireFromDoesNotEqualInitiatedBy":{"description":"Require the \"from\" address to not be equal to the \"initiated by\" address for approval.\nIf true, transfers where the sender equals the initiator are forbidden.","type":"boolean"},"requireFromEqualsInitiatedBy":{"description":"Require the \"from\" address to be equal to the \"initiated by\" address for approval.\nIf true, only transfers where the sender matches the initiator are allowed.","type":"boolean"},"senderChecks":{"description":"Address checks for the sender of the transfer. Validates that the sender address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).\nNote: No recipient checks are included for incoming approvals since the recipient is the user themselves.","$ref":"#/definitions/tokenization.v28.AddressChecks"},"votingChallenges":{"description":"Voting challenges that must be satisfied for approval. The initiator must provide\nvalid votes that meet the quorum threshold for all specified challenges.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.VotingChallenge"}}}},"tokenization.v28.IncrementedBalances":{"description":"IncrementedBalances represents balances that are incremented by specific amounts, according to the order calculation method.","type":"object","properties":{"allowAmountScaling":{"description":"When true, the actual transfer can be any evenly divisible integer multiple (\u003e=1x) of startBalances.\napprovalCriteria.coinTransfers are scaled by the same multiplier.\nAll other IncrementedBalances fields must be zero/false/nil when this is true.","type":"boolean"},"allowOverrideTimestamp":{"description":"Whether to allow overriding the timestamp for the balances (only applicable with durationFromTimestamp set).","type":"boolean"},"allowOverrideWithAnyValidToken":{"type":"boolean","title":"Allow override of any valid ID"},"durationFromTimestamp":{"description":"The amount of unix milliseconds to approve starting from now. Incompatible with incrementOwnershipTimesBy.","type":"string"},"incrementOwnershipTimesBy":{"description":"The amount by which to increment ownership times. Incompatible with approveStartingFromNowBy.","type":"string"},"incrementTokenIdsBy":{"description":"The amount by which to increment token IDs.","type":"string"},"maxScalingMultiplier":{"description":"Maximum allowed scaling multiplier. Must be \u003e 0 when allowAmountScaling is true.\nThe chain rejects transfers where the computed multiplier exceeds this cap.\nIgnored (set to \"0\") when allowAmountScaling is false.","type":"string"},"recurringOwnershipTimes":{"description":"Recurring ownership times.","$ref":"#/definitions/tokenization.v28.RecurringOwnershipTimes"},"startBalances":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.Balance"}}}},"tokenization.v28.InvariantsAddObject":{"description":"InvariantsAddObject is used for adding invariants without specifying addresses.\nAddresses are generated by the keeper and stored in the collection.","type":"object","properties":{"cosmosCoinBackedPath":{"description":"The IBC backed (sdk.coin) path for the collection. Only one path is allowed.\nAddress will be generated by the keeper.","$ref":"#/definitions/tokenization.v28.CosmosCoinBackedPathAddObject"},"disablePoolCreation":{"description":"If true, disallows pool creation with this collection's assets.\nWhen true, any attempt to create a pool with tokenization assets from this collection will fail.","type":"boolean"},"evmQueryChallenges":{"type":"array","title":"EVM query invariants that must pass after all transfers complete.\nThese are checked once per message after all balance updates, with access to ALL recipient addresses.\nPlaceholders: $sender, $recipients (comma-separated), $initiator, $collectionId, $recipient","items":{"type":"object","$ref":"#/definitions/tokenization.v28.EVMQueryChallenge"}},"maxSupplyPerId":{"description":"Maximum supply per token ID. Checked against Total address balances after transfers complete.\nA value of 0 means no limit (unlimited).","type":"string"},"noCustomOwnershipTimes":{"description":"If true, all ownership times must be full ranges [{ start: 1, end: GoMaxUInt64 }].\nThis prevents time-based restrictions on token ownership.","type":"boolean"},"noForcefulPostMintTransfers":{"description":"If true, disallows any collection approvals that have overridesFromOutgoingApprovals or overridesToIncomingApprovals set to true.\nThis prevents forceful transfers that bypass user-level approvals.\nThis only applies to transfers where the from address does not equal \"Mint\".","type":"boolean"}}},"tokenization.v28.ManualBalances":{"description":"ManualBalances represents a list of manual balances entered for the predetermined balances criteria. Order is calculated according to the calculation method set.","type":"object","properties":{"balances":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.Balance"}}}},"tokenization.v28.MaxNumTransfers":{"description":"MaxNumTransfers defines the maximum number of transfers per unique \"from,\" \"to,\" and/or \"initiated by\" address.\nIf any of these are nil or \"0\", we assume unlimited approvals.\nIf they are set to a value, then the running tally of the number of transfers for the specified token IDs and ownership times\nmust not exceed the corresponding value.","type":"object","properties":{"amountTrackerId":{"description":"The ID of the amount tracker associated with this approval.\nWe use this ID to track the number of transfers and amounts transferred.","type":"string"},"overallMaxNumTransfers":{"description":"Overall maximum number of transfers.","type":"string"},"perFromAddressMaxNumTransfers":{"description":"Maximum number of transfers per \"from\" address.","type":"string"},"perInitiatedByAddressMaxNumTransfers":{"description":"Maximum number of transfers per \"initiated by\" address.","type":"string"},"perToAddressMaxNumTransfers":{"description":"Maximum number of transfers per \"to\" address.","type":"string"},"resetTimeIntervals":{"description":"Time intervals to reset the trackers at.","$ref":"#/definitions/tokenization.v28.ResetTimeIntervals"}}},"tokenization.v28.MerkleChallenge":{"description":"Challenges define a rule for the approval in the form of a Merkle challenge.\n\nA Merkle challenge is a challenge where the user must provide a Merkle proof to a Merkle tree. If they provide a valid proof,\nthen the challenge is met. All challenges must be met with valid solutions for the transfer to be approved.\n\nIMPORTANT: Merkle challenges currently are limited to SHA256 hashes. See documentation for MerkleChallenge for more details and tutorials.\n\nIMPORTANT: We track the number of uses per leaf according to the challengeTrackerId specified by the parent approval of this challenge.\nIf you update the challenge ID, then the used leaves tracker will reset and start a new tally.\nWe recommend using a unique challenge ID for each challenge to prevent overlap and unexpected behavior.","type":"object","properties":{"challengeTrackerId":{"description":"The ID of this Merkle challenge for tracking the number of uses per leaf.","type":"string"},"customData":{"description":"Arbitrary custom data associated with this Merkle challenge.","type":"string"},"expectedProofLength":{"description":"The expected length of the Merkle path for verification. Used to prevent Merkle path truncation attacks.","type":"string"},"leafSigner":{"description":"Ethereum address that must sign the leaf. Used to protect against man-in-the-middle attacks.\nSignature scheme: sign(leaf + \"-\" + creatorAddress), verified using elliptic curve signature verification.","type":"string"},"maxUsesPerLeaf":{"description":"The maximum number of times each leaf can be used. Must be 1 if useCreatorAddressAsLeaf is false to prevent replay attacks.","type":"string"},"root":{"description":"The root hash of the Merkle tree to which the Merkle path must lead for verification.","type":"string"},"uri":{"description":"The URI associated with this Merkle challenge, optionally providing metadata about the challenge.","type":"string"},"useCreatorAddressAsLeaf":{"description":"If true, we will override the user's leaf for their proof with their creator address. Used for whitelist trees where all leaves are valid BitBadges addresses.","type":"boolean"}}},"tokenization.v28.MerklePathItem":{"description":"MerklePathItem represents an item in a Merkle path.","type":"object","properties":{"aunt":{"description":"The hash of the sibling node (aunt) in the Merkle path.","type":"string"},"onRight":{"description":"Indicates whether the aunt node is on the right side of the path.","type":"boolean"}}},"tokenization.v28.MerkleProof":{"description":"MerkleProof represents a Merkle proof, consistent with Tendermint/Crypto Merkle tree.","type":"object","properties":{"aunts":{"description":"List of Merkle path items (aunts) that make up the proof.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.MerklePathItem"}},"leaf":{"description":"The hash of the leaf node for which the proof is generated.","type":"string"},"leafSignature":{"description":"The signature of the leaf node tying the address to the leaf node.","type":"string"}}},"tokenization.v28.MsgCastVote":{"description":"MsgCastVote allows a voter to cast or update their vote for a voting challenge.","type":"object","properties":{"approvalId":{"description":"The approval ID.","type":"string"},"approvalLevel":{"description":"The approval level (\"collection\", \"incoming\", or \"outgoing\").","type":"string"},"approverAddress":{"description":"The approver address (empty string for collection-level approvals).","type":"string"},"collectionId":{"description":"The collection ID for the voting challenge.","type":"string"},"creator":{"description":"The address of the voter casting the vote.","type":"string"},"proposalId":{"description":"The proposal ID (challenge ID) from the VotingChallenge.","type":"string"},"yesWeight":{"description":"The percentage weight (0-100) allocated to \"yes\" vote.\nThe remaining percentage (100 - yesWeight) is allocated to \"no\" vote.\nExample: yesWeight=70 means 70% yes, 30% no.","type":"string"}}},"tokenization.v28.MsgCastVoteResponse":{"type":"object"},"tokenization.v28.MsgCreateAddressLists":{"description":"MsgCreateAddressLists is used to create address lists.","type":"object","properties":{"addressLists":{"description":"Address lists to create. The createdBy field will be automatically set to the creator address.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.AddressListInput"}},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v28.MsgCreateAddressListsResponse":{"description":"MsgCreateAddressListsResponse is the response to MsgCreateAddressLists.","type":"object"},"tokenization.v28.MsgCreateCollection":{"description":"MsgCreateCollection is used to create a new collection.","type":"object","properties":{"aliasPathsToAdd":{"description":"Alias (non-wrapping) paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.AliasPathAddObject"}},"collectionApprovals":{"description":"Collection approvals.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.CollectionApproval"}},"collectionMetadata":{"description":"Collection metadata.","$ref":"#/definitions/tokenization.v28.CollectionMetadata"},"collectionPermissions":{"description":"Collection permissions.","$ref":"#/definitions/tokenization.v28.CollectionPermissions"},"cosmosCoinWrapperPathsToAdd":{"description":"IBC wrapper paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.CosmosCoinWrapperPathAddObject"}},"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"Custom data.","type":"string"},"defaultBalances":{"title":"The default balances for the user","$ref":"#/definitions/tokenization.v28.UserBalanceStore"},"invariants":{"description":"Collection-level invariants that cannot be broken.\nAddresses are generated by the keeper and stored in the collection.","$ref":"#/definitions/tokenization.v28.InvariantsAddObject"},"isArchived":{"description":"isArchived flag.","type":"boolean"},"manager":{"description":"Manager address.","type":"string"},"mintEscrowCoinsToTransfer":{"description":"Coins to be transferred to the mint escrow address.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"standards":{"description":"Standards entries.","type":"array","items":{"type":"string"}},"tokenMetadata":{"description":"Token metadata entries.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.TokenMetadata"}},"validTokenIds":{"type":"array","title":"New token IDs to add to this collection","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}}}},"tokenization.v28.MsgCreateCollectionResponse":{"description":"MsgCreateCollectionResponse is the response to MsgCreateCollection.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v28.MsgCreateDynamicStore":{"description":"MsgCreateDynamicStore is used to create a new dynamic store.","type":"object","properties":{"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"Custom data field for storing arbitrary data associated with this dynamic store.","type":"string"},"defaultValue":{"description":"The default value for uninitialized addresses (true/false).","type":"boolean"},"uri":{"description":"URI for additional metadata or resources associated with this dynamic store.","type":"string"}}},"tokenization.v28.MsgCreateDynamicStoreResponse":{"description":"MsgCreateDynamicStoreResponse is the response to MsgCreateDynamicStore.","type":"object","properties":{"storeId":{"description":"ID of the dynamic store.","type":"string"}}},"tokenization.v28.MsgDeleteCollection":{"description":"MsgDeleteCollection is used to delete a collection.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v28.MsgDeleteCollectionResponse":{"description":"MsgDeleteCollectionResponse is the response to MsgDeleteCollection.","type":"object"},"tokenization.v28.MsgDeleteDynamicStore":{"description":"MsgDeleteDynamicStore is used to delete a dynamic store.","type":"object","properties":{"creator":{"description":"Address of the creator.","type":"string"},"storeId":{"description":"ID of the dynamic store to delete.","type":"string"}}},"tokenization.v28.MsgDeleteDynamicStoreResponse":{"description":"MsgDeleteDynamicStoreResponse is the response to MsgDeleteDynamicStore.","type":"object"},"tokenization.v28.MsgDeleteIncomingApproval":{"description":"MsgDeleteIncomingApproval is a helper message to delete a single incoming approval.","type":"object","properties":{"approvalId":{"description":"The ID of the approval to delete.","type":"string"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v28.MsgDeleteIncomingApprovalResponse":{"description":"MsgDeleteIncomingApprovalResponse is the response to MsgDeleteIncomingApproval.","type":"object"},"tokenization.v28.MsgDeleteOutgoingApproval":{"description":"MsgDeleteOutgoingApproval is a helper message to delete a single outgoing approval.","type":"object","properties":{"approvalId":{"description":"The ID of the approval to delete.","type":"string"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v28.MsgDeleteOutgoingApprovalResponse":{"description":"MsgDeleteOutgoingApprovalResponse is the response to MsgDeleteOutgoingApproval.","type":"object"},"tokenization.v28.MsgPurgeApprovals":{"description":"MsgPurgeApprovals is a helper message to purge expired approvals.","type":"object","properties":{"approvalsToPurge":{"description":"Specific approvals to purge. If empty, purges all applicable approvals based on other flags.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ApprovalIdentifierDetails"}},"approverAddress":{"description":"Address of the user whose approvals to purge. If empty, defaults to creator.","type":"string"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"purgeCounterpartyApprovals":{"description":"Whether to purge counterparty approvals (approvals where the creator is the only initiator).","type":"boolean"},"purgeExpired":{"description":"Whether to purge expired approvals (approvals with no future valid transfer times).","type":"boolean"}}},"tokenization.v28.MsgPurgeApprovalsResponse":{"description":"MsgPurgeApprovalsResponse is the response to MsgPurgeApprovals.","type":"object","properties":{"numPurged":{"description":"Number of approvals purged.","type":"string"}}},"tokenization.v28.MsgSetCollectionApprovals":{"type":"object","title":"MsgSetCollectionApprovals sets the collection approvals and canUpdateCollectionApprovals permission","properties":{"canUpdateCollectionApprovals":{"type":"array","title":"Permission to update collection approvals","items":{"type":"object","$ref":"#/definitions/tokenization.v28.CollectionApprovalPermission"}},"collectionApprovals":{"description":"New collection approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.CollectionApproval"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v28.MsgSetCollectionApprovalsResponse":{"description":"MsgSetCollectionApprovalsResponse is the response to MsgSetCollectionApprovals.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v28.MsgSetCollectionMetadata":{"type":"object","title":"MsgSetCollectionMetadata sets the collection metadata and canUpdateCollectionMetadata permission","properties":{"canUpdateCollectionMetadata":{"type":"array","title":"Permission to update collection metadata","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"collectionMetadata":{"description":"New collection metadata to set.","$ref":"#/definitions/tokenization.v28.CollectionMetadata"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v28.MsgSetCollectionMetadataResponse":{"description":"MsgSetCollectionMetadataResponse is the response to MsgSetCollectionMetadata.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v28.MsgSetCustomData":{"type":"object","title":"MsgSetCustomData sets the custom data and canUpdateCustomData permission","properties":{"canUpdateCustomData":{"type":"array","title":"Permission to update custom data","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"New custom data to set.","type":"string"}}},"tokenization.v28.MsgSetCustomDataResponse":{"description":"MsgSetCustomDataResponse is the response to MsgSetCustomData.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v28.MsgSetDynamicStoreValue":{"description":"MsgSetDynamicStoreValue is used to set a boolean value for a specific address in a dynamic store.","type":"object","properties":{"address":{"description":"The address for which to set the value.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"storeId":{"description":"ID of the dynamic store.","type":"string"},"value":{"description":"The boolean value to set (true/false).","type":"boolean"}}},"tokenization.v28.MsgSetDynamicStoreValueResponse":{"description":"MsgSetDynamicStoreValueResponse is the response to MsgSetDynamicStoreValue.","type":"object"},"tokenization.v28.MsgSetIncomingApproval":{"description":"MsgSetIncomingApproval is a helper message to set a single incoming approval.","type":"object","properties":{"approval":{"description":"The incoming approval to set.","$ref":"#/definitions/tokenization.v28.UserIncomingApproval"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v28.MsgSetIncomingApprovalResponse":{"description":"MsgSetIncomingApprovalResponse is the response to MsgSetIncomingApproval.","type":"object"},"tokenization.v28.MsgSetIsArchived":{"type":"object","title":"MsgSetIsArchived sets the isArchived and canArchiveCollection permission","properties":{"canArchiveCollection":{"type":"array","title":"Permission to archive collection","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"isArchived":{"description":"New isArchived to set.","type":"boolean"}}},"tokenization.v28.MsgSetIsArchivedResponse":{"description":"MsgSetIsArchivedResponse is the response to MsgSetIsArchived.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v28.MsgSetManager":{"type":"object","title":"MsgSetManager sets the manager and canUpdateManager permission","properties":{"canUpdateManager":{"type":"array","title":"Permission to update manager","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"manager":{"description":"New manager to set.","type":"string"}}},"tokenization.v28.MsgSetManagerResponse":{"description":"MsgSetManagerResponse is the response to MsgSetManager.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v28.MsgSetOutgoingApproval":{"description":"MsgSetOutgoingApproval is a helper message to set a single outgoing approval.","type":"object","properties":{"approval":{"description":"The outgoing approval to set.","$ref":"#/definitions/tokenization.v28.UserOutgoingApproval"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v28.MsgSetOutgoingApprovalResponse":{"description":"MsgSetOutgoingApprovalResponse is the response to MsgSetOutgoingApproval.","type":"object"},"tokenization.v28.MsgSetReservedProtocolAddress":{"description":"MsgSetReservedProtocolAddress sets or unsets a reserved protocol address (governance-only).","type":"object","properties":{"address":{"description":"Address to set or unset as reserved protocol address.","type":"string"},"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"isReservedProtocol":{"description":"Whether the address should be a reserved protocol address (true) or not (false).","type":"boolean"}}},"tokenization.v28.MsgSetReservedProtocolAddressResponse":{"description":"MsgSetReservedProtocolAddressResponse is the response to MsgSetReservedProtocolAddress.","type":"object"},"tokenization.v28.MsgSetStandards":{"type":"object","title":"MsgSetStandards sets the standards and canUpdateStandards permission","properties":{"canUpdateStandards":{"type":"array","title":"Permission to update standards","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"standards":{"description":"New standards to set.","type":"array","items":{"type":"string"}}}},"tokenization.v28.MsgSetStandardsResponse":{"description":"MsgSetStandardsResponse is the response to MsgSetStandards.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v28.MsgSetTokenMetadata":{"type":"object","title":"MsgSetTokenMetadata sets the token metadata and canUpdateTokenMetadata permission","properties":{"canUpdateTokenMetadata":{"type":"array","title":"Permission to update token metadata","items":{"type":"object","$ref":"#/definitions/tokenization.v28.TokenIdsActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"tokenMetadata":{"description":"New token metadata to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.TokenMetadata"}}}},"tokenization.v28.MsgSetTokenMetadataResponse":{"description":"MsgSetTokenMetadataResponse is the response to MsgSetTokenMetadata.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v28.MsgSetValidTokenIds":{"type":"object","title":"MsgSetValidTokenIds sets the validTokenIds and canUpdateValidTokenIds permission","properties":{"canUpdateValidTokenIds":{"type":"array","title":"Permission to update valid token IDs","items":{"type":"object","$ref":"#/definitions/tokenization.v28.TokenIdsActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"validTokenIds":{"type":"array","title":"New token IDs to add to this collection","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}}}},"tokenization.v28.MsgSetValidTokenIdsResponse":{"description":"MsgSetValidTokenIdsResponse is the response to MsgSetValidTokenIds.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v28.MsgTransferTokens":{"description":"MsgTransferTokens is used to transfer tokens.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"transfers":{"description":"Transfers to execute.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.Transfer"}}}},"tokenization.v28.MsgTransferTokensResponse":{"description":"MsgTransferTokensResponse is the response to MsgTransferTokens.","type":"object"},"tokenization.v28.MsgUniversalUpdateCollection":{"description":"MsgUniversalUpdateCollection is used to define MsgServer types for all requests and responses for Msgs of the tokens module.\nIt is a universal interface that can be used for both creating and updating collections.\nWe have it defined for legacy purposes, but it is recommended to use MsgCreateCollection and MsgUpdateCollection instead.","type":"object","properties":{"aliasPathsToAdd":{"description":"Alias (non-wrapping) paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.AliasPathAddObject"}},"collectionApprovals":{"description":"New collection approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.CollectionApproval"}},"collectionId":{"description":"ID of the collection (0 for new collection).","type":"string"},"collectionMetadata":{"description":"New collection metadata to set.","$ref":"#/definitions/tokenization.v28.CollectionMetadata"},"collectionPermissions":{"description":"New collection permissions to set.","$ref":"#/definitions/tokenization.v28.CollectionPermissions"},"cosmosCoinWrapperPathsToAdd":{"description":"IBC wrapper paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.CosmosCoinWrapperPathAddObject"}},"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"New custom data to set.","type":"string"},"defaultBalances":{"title":"The default balances for the user","$ref":"#/definitions/tokenization.v28.UserBalanceStore"},"invariants":{"description":"Collection-level invariants that cannot be broken.\nThese are set upon genesis and cannot be modified.\nAddresses are generated by the keeper and stored in the collection.","$ref":"#/definitions/tokenization.v28.InvariantsAddObject"},"isArchived":{"description":"New isArchived to set.","type":"boolean"},"manager":{"description":"New manager to set.","type":"string"},"mintEscrowCoinsToTransfer":{"description":"Coins to be transferred to the mint escrow address.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"standards":{"description":"New standards to set.","type":"array","items":{"type":"string"}},"tokenMetadata":{"description":"New token metadata to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.TokenMetadata"}},"updateCollectionApprovals":{"description":"Indicates if collection approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCollectionMetadata":{"description":"Indicates if the collection metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCollectionPermissions":{"description":"Indicates if collection permissions should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCustomData":{"description":"Indicates if the custom data should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateIsArchived":{"description":"Indicates if the isArchived should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateManager":{"description":"Indicates if the manager should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateStandards":{"description":"Indicates if the standards should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateTokenMetadata":{"description":"Indicates if the token metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateValidTokenIds":{"description":"Indicates if the valid token IDs should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"validTokenIds":{"type":"array","title":"New token IDs to add to this collection","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}}}},"tokenization.v28.MsgUniversalUpdateCollectionResponse":{"description":"MsgUniversalUpdateCollectionResponse is the response to MsgUniversalUpdateCollection.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v28.MsgUpdateCollection":{"description":"MsgUpdateCollection is used to update a collection.","type":"object","properties":{"aliasPathsToAdd":{"description":"Alias (non-wrapping) paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.AliasPathAddObject"}},"collectionApprovals":{"description":"New collection approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.CollectionApproval"}},"collectionId":{"description":"ID of the collection (0 for new collection).","type":"string"},"collectionMetadata":{"description":"New collection metadata to set.","$ref":"#/definitions/tokenization.v28.CollectionMetadata"},"collectionPermissions":{"description":"New collection permissions to set.","$ref":"#/definitions/tokenization.v28.CollectionPermissions"},"cosmosCoinWrapperPathsToAdd":{"description":"IBC wrapper paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.CosmosCoinWrapperPathAddObject"}},"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"New custom data to set.","type":"string"},"invariants":{"description":"Collection-level invariants that cannot be broken.\nThese are set upon genesis and cannot be modified.\nAddresses are generated by the keeper and stored in the collection.","$ref":"#/definitions/tokenization.v28.InvariantsAddObject"},"isArchived":{"description":"New isArchived to set.","type":"boolean"},"manager":{"description":"New manager to set.","type":"string"},"mintEscrowCoinsToTransfer":{"description":"Coins to be transferred to the mint escrow address.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"standards":{"description":"New standards to set.","type":"array","items":{"type":"string"}},"tokenMetadata":{"description":"New token metadata to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.TokenMetadata"}},"updateCollectionApprovals":{"description":"Indicates if collection approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCollectionMetadata":{"description":"Indicates if the collection metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCollectionPermissions":{"description":"Indicates if collection permissions should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCustomData":{"description":"Indicates if the custom data should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateIsArchived":{"description":"Indicates if the isArchived should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateManager":{"description":"Indicates if the manager should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateStandards":{"description":"Indicates if the standards should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateTokenMetadata":{"description":"Indicates if the token metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateValidTokenIds":{"description":"Indicates if the valid token IDs should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"validTokenIds":{"type":"array","title":"New token IDs to add to this collection","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}}}},"tokenization.v28.MsgUpdateCollectionResponse":{"description":"MsgUpdateCollectionResponse is the response to MsgUpdateCollection.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v28.MsgUpdateDynamicStore":{"description":"MsgUpdateDynamicStore is used to update an existing dynamic store.","type":"object","properties":{"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"Custom data field for storing arbitrary data associated with this dynamic store.","type":"string"},"defaultValue":{"description":"The new default value for uninitialized addresses (true/false).","type":"boolean"},"globalEnabled":{"description":"The global kill switch state (true = enabled, false = disabled/halted).\nCallers should query the current value first if they want to keep it unchanged.","type":"boolean"},"storeId":{"description":"ID of the dynamic store to update.","type":"string"},"uri":{"description":"URI for additional metadata or resources associated with this dynamic store.","type":"string"}}},"tokenization.v28.MsgUpdateDynamicStoreResponse":{"description":"MsgUpdateDynamicStoreResponse is the response to MsgUpdateDynamicStore.","type":"object"},"tokenization.v28.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the module parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/tokenization.v28.Params"}}},"tokenization.v28.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"tokenization.v28.MsgUpdateUserApprovals":{"description":"MsgUpdateUserApprovals is used to update user approvals.","type":"object","properties":{"autoApproveAllIncomingTransfers":{"description":"Auto-approve setting for all incoming transfers.","type":"boolean"},"autoApproveSelfInitiatedIncomingTransfers":{"description":"Auto-approve setting for self-initiated incoming transfers.","type":"boolean"},"autoApproveSelfInitiatedOutgoingTransfers":{"description":"Auto-approve setting for self-initiated outgoing transfers.","type":"boolean"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"incomingApprovals":{"description":"New incoming approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UserIncomingApproval"}},"outgoingApprovals":{"description":"New outgoing approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UserOutgoingApproval"}},"updateAutoApproveAllIncomingTransfers":{"description":"Indicates if auto-approve settings for all incoming transfers should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateAutoApproveSelfInitiatedIncomingTransfers":{"description":"Indicates if auto-approve settings for self-initiated incoming transfers should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateAutoApproveSelfInitiatedOutgoingTransfers":{"description":"Indicates if auto-approve settings for self-initiated outgoing transfers should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateIncomingApprovals":{"description":"Indicates if incoming approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateOutgoingApprovals":{"description":"Indicates if outgoing approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateUserPermissions":{"description":"Indicates if user permissions should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"userPermissions":{"description":"New user permissions to set.","$ref":"#/definitions/tokenization.v28.UserPermissions"}}},"tokenization.v28.MsgUpdateUserApprovalsResponse":{"description":"MsgUpdateUserApprovalsResponse is the response to MsgUpdateUserApprovals.","type":"object"},"tokenization.v28.MustOwnTokens":{"description":"MustOwnTokens represents a condition where a user must own specific tokens\nto be approved to transfer.\n\n- collectionId: The ID of the collection for the tokens that must be owned\n- amountRange: The range of amounts the user must own (min to max)\n- ownershipTimes: The time ranges during which the user must own the tokens.\n- tokenIds: The token IDs the user must own.\n- overrideWithCurrentTime: If true, auto override ownershipTimes with the current time.\n- mustSatisfyForAllAssets: If true, the user must own all specified tokens; otherwise, owning any one for \u003e= 1 millisecond is sufficient.","type":"object","properties":{"amountRange":{"description":"The range of amounts the user must own (min to max).","$ref":"#/definitions/tokenization.v28.UintRange"},"collectionId":{"description":"The ID of the collection.","type":"string"},"mustSatisfyForAllAssets":{"description":"If true, the user must meet ownership requirements for all specified tokens; else, must meet requirements for any single token.","type":"boolean"},"overrideWithCurrentTime":{"description":"If true, override ownershipTimes with the current time.","type":"boolean"},"ownershipCheckParty":{"description":"The party to check ownership for. Options are \"initiator\", \"sender\", \"recipient\", or any valid bb1 address.\nIf a valid bb1 address is provided, ownership will be checked for that specific address.\nThis enables use cases like halt tokens where ownership is checked for an arbitrary address (e.g., halt token owner).\nDefaults to \"initiator\" if empty or if the value is not a recognized option or valid bb1 address.","type":"string"},"ownershipTimes":{"description":"The time ranges during which the user must own the tokens.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"tokenIds":{"description":"The token IDs the user must own.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}}}},"tokenization.v28.OutgoingApprovalCriteria":{"description":"OutgoingApprovalCriteria defines the criteria for approving outgoing transfers.\nThis is used for user-level outgoing approvals and only includes fields relevant to outgoing transfers.\nAll criteria must be satisfied for the approval to be considered valid.","type":"object","properties":{"altTimeChecks":{"description":"Alternative time-based checks for approval denial (offline hours/days). Defines time periods\nduring which this approval should be denied, such as specific hours of the day or days of the week.","$ref":"#/definitions/tokenization.v28.AltTimeChecks"},"approvalAmounts":{"description":"Threshold limit of amounts that can be transferred using this approval. Tracks cumulative amounts\ntransferred and enforces maximum limits per approval.","$ref":"#/definitions/tokenization.v28.ApprovalAmounts"},"autoDeletionOptions":{"description":"Auto-deletion options for this approval. Defines conditions under which this approval should be\nautomatically deleted (e.g., after a certain number of uses or time period).","$ref":"#/definitions/tokenization.v28.AutoDeletionOptions"},"coinTransfers":{"description":"The sdk.Coins that need to be transferred for approval. Defines required coin transfers (e.g., fees,\nroyalties) that must be executed alongside the token transfer for the approval to be valid.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.CoinTransfer"}},"dynamicStoreChallenges":{"description":"Dynamic store challenges that the initiator must pass for approval. The initiator must provide\nvalid proofs that satisfy all specified dynamic store challenges (e.g., key-value store lookups).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.DynamicStoreChallenge"}},"ethSignatureChallenges":{"description":"ETH signature challenges that the initiator must pass for approval. The initiator must provide\nvalid Ethereum signatures for all specified challenges. Each signature can only be used once.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ETHSignatureChallenge"}},"evmQueryChallenges":{"description":"EVM query challenges that must pass for approval. Read-only contract queries\nthat verify external EVM state (e.g., token ownership in another contract).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.EVMQueryChallenge"}},"initiatorChecks":{"description":"Address checks for the initiator of the transfer. Validates that the initiator address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.v28.AddressChecks"},"maxNumTransfers":{"description":"Maximum number of transfers that can be processed using this approval. Tracks the count of transfers\nand enforces the limit to prevent exceeding the allowed number of uses.","$ref":"#/definitions/tokenization.v28.MaxNumTransfers"},"merkleChallenges":{"description":"Merkle challenges that must be satisfied for approval. The initiator must provide valid Merkle proofs\nthat satisfy all specified challenges. Each challenge requires a proof that leads to a specific root hash.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.MerkleChallenge"}},"mustOwnTokens":{"description":"Must own tokens for approval. Defines token ownership requirements that must be satisfied for\nthe approval to be valid. The initiator must own the specified tokens at the specified ownership times.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.MustOwnTokens"}},"mustPrioritize":{"description":"If true, this approval must be explicitly prioritized in PrioritizedApprovals to be used.\nThis allows fine-grained control over which approvals are applied when multiple approvals could match.","type":"boolean"},"predeterminedBalances":{"description":"Predetermined balances that must be used for each approval. Defines the exact token amounts and IDs\nthat can be transferred when using this approval.","$ref":"#/definitions/tokenization.v28.PredeterminedBalances"},"recipientChecks":{"description":"Address checks for the recipient of the transfer. Validates that the recipient address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).\nNote: No sender checks are included for outgoing approvals since the sender is the user themselves.","$ref":"#/definitions/tokenization.v28.AddressChecks"},"requireToDoesNotEqualInitiatedBy":{"description":"Require the \"to\" address to not be equal to the \"initiated by\" address for approval.\nIf true, transfers where the recipient equals the initiator are forbidden.","type":"boolean"},"requireToEqualsInitiatedBy":{"description":"Require the \"to\" address to be equal to the \"initiated by\" address for approval.\nIf true, only transfers where the recipient matches the initiator are allowed.","type":"boolean"},"votingChallenges":{"description":"Voting challenges that must be satisfied for approval. The initiator must provide\nvalid votes that meet the quorum threshold for all specified challenges.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.VotingChallenge"}}}},"tokenization.v28.Params":{"description":"Params defines the parameters for the module.","type":"object","properties":{"affiliate_percentage":{"type":"string","title":"affiliate_percentage defines the percentage of the transfer amount that goes to the affiliate"},"allowed_denoms":{"type":"array","title":"allowed_denoms defines the list of denoms that are allowed to be used in coin_transfers","items":{"type":"string"}}}},"tokenization.v28.PathMetadata":{"description":"This message defines the metadata for paths (alias paths and cosmos coin wrapper paths).\nThe interpretation of this metadata should follow the collection standard.","type":"object","properties":{"customData":{"description":"Custom data or additional information related to the path metadata.","type":"string"},"uri":{"description":"The URI (Uniform Resource Identifier) associated with the path metadata.","type":"string"}}},"tokenization.v28.PrecalculateBalancesFromApprovalDetails":{"description":"PrecalculateBalancesFromApprovalDetails defines the details for precalculating balances from an approval.","type":"object","properties":{"approvalId":{"description":"The ID of the approval.","type":"string"},"approvalLevel":{"description":"The level of the approval. Can be \"collection\", \"incoming\", or \"outgoing\".","type":"string"},"approverAddress":{"description":"The address of the approver. Leave blank \"\" if approvalLevel == \"collection\".","type":"string"},"precalculationOptions":{"description":"The options for precalculating the balances.","$ref":"#/definitions/tokenization.v28.PrecalculationOptions"},"version":{"description":"The version of the approval.","type":"string"}}},"tokenization.v28.PrecalculationOptions":{"description":"PrecalculationOptions defines the options for precalculating the balances.","type":"object","properties":{"overrideTimestamp":{"description":"The timestamp to override with when calculating the balances.","type":"string"},"scalingMultiplier":{"description":"When \u003e 0 and allowAmountScaling is true on the approval, all precalculated balance amounts\nare multiplied by this value. Must be \u003c= maxScalingMultiplier. 0 means no scaling (returns 1x base).","type":"string"},"tokenIdsOverride":{"description":"The IDs to override for the transfer. Only applicable if using this option in precalculation.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}}}},"tokenization.v28.PredeterminedBalances":{"description":"PredeterminedBalances represents balances with predetermined order calculation.","type":"object","properties":{"incrementedBalances":{"description":"Balances that have a starting amount and increment. If this is nil, then we use the manual balances.","$ref":"#/definitions/tokenization.v28.IncrementedBalances"},"manualBalances":{"description":"Manual balances that can be entered. If this is nil, then we use the incremented balances.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ManualBalances"}},"orderCalculationMethod":{"description":"The method to calculate the order of predetermined balances.","$ref":"#/definitions/tokenization.v28.PredeterminedOrderCalculationMethod"}}},"tokenization.v28.PredeterminedOrderCalculationMethod":{"description":"PredeterminedOrderCalculationMethod defines the method to calculate predetermined balances order.","type":"object","properties":{"challengeTrackerId":{"description":"If useMerkleChallengeLeafIndex is set, then this is the ID of the challenge tracker associated with this calculation method.","type":"string"},"useMerkleChallengeLeafIndex":{"description":"Use the Merkle challenge leaf index to calculate the order. Ex: Transfer that uses leaf index 0 gets the first balance, transfer that uses leaf index 1 gets the second balance, etc.","type":"boolean"},"useOverallNumTransfers":{"description":"Use the overall number of transfers to calculate the order. Ex: First transfer gets the first balance, second transfer gets the second balance, etc.","type":"boolean"},"usePerFromAddressNumTransfers":{"description":"Use the number of transfers per \"from\" address to calculate the order. Ex: First transfer from address A gets the first balance, second transfer from address A gets the second balance, etc.","type":"boolean"},"usePerInitiatedByAddressNumTransfers":{"description":"Use the number of transfers per \"initiated by\" address to calculate the order. Ex: First transfer initiated by address A gets the first balance, second transfer initiated by address A gets the second balance, etc.","type":"boolean"},"usePerToAddressNumTransfers":{"description":"Use the number of transfers per \"to\" address to calculate the order. Ex: First transfer to address A gets the first balance, second transfer to address A gets the second balance, etc.","type":"boolean"}}},"tokenization.v28.RecurringOwnershipTimes":{"description":"RecurringOwnershipTimes represents a list of recurring ownership times.","type":"object","properties":{"chargePeriodLength":{"type":"string","title":"Grace period length where you can charge the next interval (nextStartTime - chargePeriodLength) until (nextStartTime) = charge period"},"intervalLength":{"description":"The interval length in unix milliseconds.","type":"string"},"startTime":{"description":"The original start time of the first interval.","type":"string"}}},"tokenization.v28.ResetTimeIntervals":{"description":"Time intervals to reset the trackers at.","type":"object","properties":{"intervalLength":{"description":"Interval length in unix milliseconds.","type":"string"},"startTime":{"description":"Original start time of the first interval.","type":"string"}}},"tokenization.v28.TokenIdsActionPermission":{"description":"TokenIdsActionPermission defines the permissions for performing an action for specific tokens.\nCurrently, this is only used for creating new tokens.\n\nEx: If you want to lock the ability to create new tokens for tokenIds [1,2] at ownershipTimes 1/1/2020 - 1/1/2021, \nyou could set the combination (tokenIds: [1,2], ownershipTimes: [1/1/2020 - 1/1/2021]) to always be forbidden.","type":"object","properties":{"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"tokenIds":{"description":"Specifies the token IDs involved in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}}}},"tokenization.v28.TokenMetadata":{"description":"This message defines the metadata for specific token IDs.\nThe interpretation of this metadata should follow the collection standard.","type":"object","properties":{"customData":{"description":"Custom data or additional information related to the token metadata.","type":"string"},"tokenIds":{"description":"The token IDs to which this metadata applies.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"uri":{"description":"The URI (Uniform Resource Identifier) associated with the token metadata.","type":"string"}}},"tokenization.v28.Transfer":{"description":"Transfer defines the details of a transfer of tokens.","type":"object","properties":{"balances":{"description":"The balances to be transferred.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.Balance"}},"ethSignatureProofs":{"description":"The ETH signature proofs / solutions for all ETH signature challenges required for the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ETHSignatureProof"}},"from":{"description":"The address of the sender of the transfer.","type":"string"},"memo":{"description":"The memo for the transfer.","type":"string"},"merkleProofs":{"description":"The Merkle proofs / solutions for all Merkle challenges required for the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.MerkleProof"}},"onlyCheckPrioritizedCollectionApprovals":{"description":"Whether to only check prioritized approvals for the transfer. \nIf true, we will only check the prioritized approvals and fail if none of them match (i.e. do not check any non-prioritized approvals).\nIf false, we will check the prioritized approvals first and then scan through the rest of the approvals.","type":"boolean"},"onlyCheckPrioritizedIncomingApprovals":{"description":"Whether to only check prioritized approvals for the transfer. \nIf true, we will only check the prioritized approvals and fail if none of them match (i.e. do not check any non-prioritized approvals).\nIf false, we will check the prioritized approvals first and then scan through the rest of the approvals.","type":"boolean"},"onlyCheckPrioritizedOutgoingApprovals":{"description":"Whether to only check prioritized approvals for the transfer. \nIf true, we will only check the prioritized approvals and fail if none of them match (i.e. do not check any non-prioritized approvals).\nIf false, we will check the prioritized approvals first and then scan through the rest of the approvals.","type":"boolean"},"precalculateBalancesFromApproval":{"description":"If defined, we will use the predeterminedBalances from the specified approval to calculate the balances at execution time.\nWe will override the balances field with the precalculated balances. Only applicable for approvals with predeterminedBalances set.","$ref":"#/definitions/tokenization.v28.PrecalculateBalancesFromApprovalDetails"},"prioritizedApprovals":{"description":"The prioritized approvals for the transfer. By default, we scan linearly through the approvals and use the first match.\nThis field can be used to prioritize specific approvals and scan through them first.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ApprovalIdentifierDetails"}},"toAddresses":{"description":"The addresses of the recipients of the transfer.","type":"array","items":{"type":"string"}}}},"tokenization.v28.UintRange":{"description":"The UintRange is a range of IDs from some start to some end (inclusive).\nuintRanges are one of the core types used.\n\nThey are used for everything from token IDs to time ranges to min/max balance amounts.\n\nSee the BitBadges documentation for more information.","type":"object","properties":{"end":{"description":"The ending value of the range (inclusive).","type":"string"},"start":{"description":"The starting value of the range (inclusive).","type":"string"}}},"tokenization.v28.UserBalanceStore":{"description":"UserBalanceStore is the store for the user balances for a collection.\n\nIt consists of a list of balances, a list of approved outgoing transfers, and a list of approved incoming transfers,\nas well as the permissions for updating the approved incoming/outgoing transfers.\n\nUpon initialization, all fields (minus the balances) are set to the defaults specified by the collection.\n\nThe outgoing transfers can be used to allow / disallow transfers which are sent from this user.\nIf a transfer has no match, then it is disallowed by default, unless from == initiatedBy (i.e. initiated by this user)\nand autoApproveSelfInitiatedOutgoingTransfers is set to true.\n\nThe incoming transfers can be used to allow / disallow transfers which are sent to this user.\nIf a transfer has no match, then it is disallowed by default, unless to == initiatedBy (i.e. initiated by this user)\nand autoApproveSelfInitiatedIncomingTransfers is set to true.\n\nNote that the user approved transfers are only checked if the collection approved transfers do not specify to override\nthe user approved transfers. \n\nThe permissions are used to determine whether the user can update the approved incoming/outgoing transfers and auto approvals.","type":"object","properties":{"autoApproveAllIncomingTransfers":{"description":"Whether to auto-approve all incoming transfers by default. \nThis is just shorthand for adding an accept everything incoming approval\nwith no restrictions.","type":"boolean"},"autoApproveSelfInitiatedIncomingTransfers":{"description":"Whether to auto-approve self-initiated incoming transfers for this user (i.e. to == initiatedBy).","type":"boolean"},"autoApproveSelfInitiatedOutgoingTransfers":{"description":"Whether to auto-approve self-initiated outgoing transfers for this user (i.e. from == initiatedBy).","type":"boolean"},"balances":{"description":"The list of balances associated with this user.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.Balance"}},"incomingApprovals":{"description":"The list of approved incoming transfers for this user.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UserIncomingApproval"}},"outgoingApprovals":{"description":"The list of approved outgoing transfers for this user.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UserOutgoingApproval"}},"userPermissions":{"description":"The permissions for this user's actions and transfers.","$ref":"#/definitions/tokenization.v28.UserPermissions"}}},"tokenization.v28.UserIncomingApproval":{"description":"UserIncomingApproval defines the rules for the approval of an incoming transfer to a user.","type":"object","properties":{"approvalCriteria":{"description":"The criteria that must be met for this approval to be considered.","$ref":"#/definitions/tokenization.v28.IncomingApprovalCriteria"},"approvalId":{"description":"The ID of this approval. Must be unique per level (i.e. collection, outgoing, incoming).","type":"string"},"customData":{"description":"Arbitrary custom data associated with this approval.","type":"string"},"fromListId":{"description":"The list ID for the sender of the transfer.","type":"string"},"initiatedByListId":{"description":"The list ID for the user who initiated the transfer.","type":"string"},"ownershipTimes":{"description":"The allowed range of ownership times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"tokenIds":{"description":"The allowed range of token IDs for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"transferTimes":{"description":"The allowed range of transfer times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"uri":{"description":"The URI associated with this approval, optionally providing metadata about the approval.","type":"string"},"version":{"description":"Version of the approval. Maintained internally.","type":"string"}}},"tokenization.v28.UserIncomingApprovalPermission":{"description":"UserIncomingApprovalPermission defines the permissions for updating the user's approved incoming transfers.\n\nSee CollectionApprovalPermission for more details. This is equivalent without the toListId field because that is always the user.","type":"object","properties":{"approvalId":{"description":"Identifier for the approvalId. You can use \"All\" or \"!approvalId\" for shorthand.\nIf you use \"All\", this approval will match to all approvalIds.\nIf you use \"!approvalId\", this approval will match to all approvalIds except for approvalId.\nIf you use \"approvalId\", this approval will match to only the specified approvalId and fail on all others.","type":"string"},"fromListId":{"description":"Identifier for the sender list.","type":"string"},"initiatedByListId":{"description":"Identifier for the initiator list (who is approved?).","type":"string"},"ownershipTimes":{"description":"Specifies the ownership times for the tokens in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"tokenIds":{"description":"Specifies the token IDs involved in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"transferTimes":{"description":"Specifies the times when the transfer can occur.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}}}},"tokenization.v28.UserOutgoingApproval":{"description":"UserOutgoingApproval defines the rules for the approval of an outgoing transfer from a user.","type":"object","properties":{"approvalCriteria":{"description":"The criteria that must be met for this approval to be considered.","$ref":"#/definitions/tokenization.v28.OutgoingApprovalCriteria"},"approvalId":{"description":"The ID of this approval. Must be unique per level (i.e. collection, outgoing, incoming).","type":"string"},"customData":{"description":"Arbitrary custom data associated with this approval.","type":"string"},"initiatedByListId":{"description":"The list ID for the user who initiated the transfer.","type":"string"},"ownershipTimes":{"description":"The allowed range of ownership times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"toListId":{"description":"The list ID for the recipient of the transfer.","type":"string"},"tokenIds":{"description":"The allowed range of token IDs for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"transferTimes":{"description":"The allowed range of transfer times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"uri":{"description":"The URI associated with this approval, optionally providing metadata about the approval.","type":"string"},"version":{"description":"Version of the approval. Maintained internally.","type":"string"}}},"tokenization.v28.UserOutgoingApprovalPermission":{"description":"UserOutgoingApprovalPermission defines the permissions for updating the user's approved outgoing transfers.","type":"object","properties":{"approvalId":{"description":"Identifier for the approvalId. You can use \"All\" or \"!approvalId\" for shorthand.\nIf you use \"All\", this approval will match to all approvalIds.\nIf you use \"!approvalId\", this approval will match to all approvalIds except for approvalId.\nIf you use \"approvalId\", this approval will match to only the specified approvalId and fail on all others.","type":"string"},"initiatedByListId":{"description":"Identifier for the initiator list (who is approved?).","type":"string"},"ownershipTimes":{"description":"Specifies the ownership times for the tokens in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"toListId":{"description":"Identifier for the recipient list.","type":"string"},"tokenIds":{"description":"Specifies the token IDs involved in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}},"transferTimes":{"description":"Specifies the times when the transfer can occur.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UintRange"}}}},"tokenization.v28.UserPermissions":{"description":"UserPermissions defines the permissions for the user about their approvals (i.e., what the user can and cannot do).\n\nSee CollectionPermissions for more details on the different types of permissions.\n\ncanUpdateOutgoingApprovals and canUpdateOutgoingApprovals follow the same as the canUpdateCollectionApprovals in CollectionPermissions,\nbut certain fields are removed because they are not relevant to the user.","type":"object","properties":{"canUpdateAutoApproveAllIncomingTransfers":{"description":"Permissions related to updating auto-approval settings for all incoming transfers (whether they are allowed by default).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ActionPermission"}},"canUpdateAutoApproveSelfInitiatedIncomingTransfers":{"description":"Permissions related to updating auto-approval settings for self-initiated incoming transfers (whether they are allowed by default).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ActionPermission"}},"canUpdateAutoApproveSelfInitiatedOutgoingTransfers":{"description":"Permissions related to updating auto-approval settings for self-initiated outgoing transfers (whether they are allowed by default).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.ActionPermission"}},"canUpdateIncomingApprovals":{"description":"Permissions related to updating the user's approved incoming transfers.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UserIncomingApprovalPermission"}},"canUpdateOutgoingApprovals":{"description":"Permissions related to updating the user's approved outgoing transfers.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.UserOutgoingApprovalPermission"}}}},"tokenization.v28.UserRoyalties":{"description":"UserRoyalties defines the royalties for a user.","type":"object","properties":{"payoutAddress":{"description":"Payout address for the royalties.","type":"string"},"percentage":{"description":"Percentage of the transfer amount to apply as royalties. 1 to 10000 represents basis points.","type":"string"}}},"tokenization.v28.Voter":{"description":"Voter defines a voter with their address and weight.","type":"object","properties":{"address":{"description":"The address of the voter.","type":"string"},"weight":{"description":"The weight of this voter's vote.","type":"string"}}},"tokenization.v28.VotingChallenge":{"description":"VotingChallenge defines a rule for approval in the form of a voting/multi-sig challenge.\nRequires a weighted quorum threshold to be met through votes from specified voters.\nAll challenges must be met with valid solutions for the transfer to be approved.\n\nIMPORTANT: Votes are stored separately and can be updated. The threshold is calculated as a percentage\nof total possible weight (all voters), not just voted weight. If you update the proposal ID, then the\nvote tracker will reset and start a new tally. We recommend using a unique proposal ID for each challenge\nto prevent overlap and unexpected behavior.","type":"object","properties":{"customData":{"description":"Arbitrary custom data associated with this voting challenge.","type":"string"},"proposalId":{"type":"string","title":"The ID of this voting challenge for tracking votes (scoped like challengeTrackerId).\nFormat: collectionId-approverAddress-approvalLevel-approvalId-challengeId"},"quorumThreshold":{"description":"The quorum threshold as a percentage (0-100) of total possible weight that must vote \"yes\".\nExample: 50 means 50% of total voter weight must vote yes for approval.","type":"string"},"uri":{"description":"The URI associated with this voting challenge.","type":"string"},"voters":{"description":"List of voters with their weights. Each voter can cast a weighted vote.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v28.Voter"}}}},"tokenization.v29.ActionPermission":{"description":"ActionPermission defines the permissions for performing an action.\n\nThis is simple and straightforward as the only thing we need to check is the permitted/forbidden times.","type":"object","properties":{"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}}}},"tokenization.v29.AddressChecks":{"type":"object","title":"AddressChecks defines checks for address types (EVM contract, liquidity pool, etc.)","properties":{"mustBeEvmContract":{"description":"Require the address to be an EVM contract (has code).","type":"boolean"},"mustBeLiquidityPool":{"description":"Require the address to be a liquidity pool.","type":"boolean"},"mustNotBeEvmContract":{"description":"Require the address to not be an EVM contract (no code).","type":"boolean"},"mustNotBeLiquidityPool":{"description":"Require the address to not be a liquidity pool.","type":"boolean"}}},"tokenization.v29.AddressListInput":{"description":"AddressListInput is used for creating address lists via MsgCreateAddressLists.\nIt contains all fields from AddressList except createdBy, which is automatically set from the message creator.","type":"object","properties":{"addresses":{"description":"List of addresses included in the list.","type":"array","items":{"type":"string"}},"customData":{"description":"Custom arbitrary data or additional information related to the address list.","type":"string"},"listId":{"description":"Unique identifier for the address list.","type":"string"},"uri":{"description":"URI (Uniform Resource Identifier) associated with the address list to provide metadata, if applicable.","type":"string"},"whitelist":{"description":"Indicates whether the list includes the specified addresses (true) or excludes them (false).","type":"boolean"}}},"tokenization.v29.AliasPathAddObject":{"type":"object","properties":{"conversion":{"$ref":"#/definitions/tokenization.v29.ConversionWithoutDenom"},"denom":{"type":"string"},"denomUnits":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.DenomUnit"}},"metadata":{"description":"The metadata for this alias path.","$ref":"#/definitions/tokenization.v29.PathMetadata"},"symbol":{"type":"string"}}},"tokenization.v29.AltTimeChecks":{"type":"object","title":"AltTimeChecks defines alternative time-based checks for approval denial.\nIf the transfer time falls within any of the specified offline hours or days, the approval is denied.\nUses UTC timezone for neutral timezone approach.\nofflineHours: ranges of hours (0-23) when transfers should be denied\nofflineDays: ranges of days (0-6, where 0=Sunday, 1=Monday, ..., 6=Saturday) when transfers should be denied","properties":{"offlineDays":{"description":"Days (0-6, where 0=Sunday, 1=Monday, ..., 6=Saturday) when transfers should be denied.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}},"offlineDaysOfMonth":{"description":"Days of month (1-31) when transfers should be denied.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}},"offlineHours":{"description":"Hours (0-23) when transfers should be denied.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}},"offlineMonths":{"description":"Months (1-12, where 1=January, 12=December) when transfers should be denied.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}},"offlineWeeksOfYear":{"description":"Weeks of year (1-52) when transfers should be denied. Uses ISO 8601 week numbering.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}},"timezoneOffsetMinutes":{"description":"Timezone offset magnitude in minutes from UTC. Default 0 = UTC. Examples: 300 for EST (UTC-5), 330 for IST (UTC+5:30).\nAll time checks are evaluated after applying this offset to the block time.","type":"string"},"timezoneOffsetNegative":{"type":"boolean","title":"If true, the timezone offset is subtracted (west of UTC). If false, it is added (east of UTC).\nExample: EST (UTC-5) = timezoneOffsetMinutes: 300, timezoneOffsetNegative: true"}}},"tokenization.v29.ApprovalAmounts":{"description":"ApprovalAmounts defines approval amounts per unique \"from,\" \"to,\" and/or \"initiated by\" address.\nIf any of these are nil or \"0\", we assume unlimited approvals.\nIf they are set to a value, then the running tally of the amounts transferred for the specified token IDs and ownership times \nmust not exceed the corresponding value.","type":"object","properties":{"amountTrackerId":{"description":"The ID of the amount tracker associated with this approval.\nWe use this ID to track the number of transfers and amounts transferred.","type":"string"},"overallApprovalAmount":{"description":"Overall approval amount.","type":"string"},"perFromAddressApprovalAmount":{"description":"Approval amount per \"from\" address.","type":"string"},"perInitiatedByAddressApprovalAmount":{"description":"Approval amount per \"initiated by\" address.","type":"string"},"perToAddressApprovalAmount":{"description":"Approval amount per \"to\" address.","type":"string"},"resetTimeIntervals":{"description":"Time intervals to reset the trackers at.","$ref":"#/definitions/tokenization.v29.ResetTimeIntervals"}}},"tokenization.v29.ApprovalChange":{"description":"ApprovalChange represents a change to an approval (created, edited, or deleted).","type":"object","properties":{"action":{"type":"string"},"approvalId":{"type":"string"},"approvalLevel":{"type":"string"},"version":{"type":"string"}}},"tokenization.v29.ApprovalCriteria":{"description":"ApprovalCriteria defines the criteria for approving transfers.\nAll criteria must be satisfied for the approval to be considered valid.","type":"object","properties":{"allowBackedMinting":{"description":"If true, this collection approval allows backed minting operations (CosmosCoinBackedPath).\nWhen false, this approval cannot be used for transfers involving backed minting addresses.\nThis prevents accidental allowances when toListIds is \"All\".","type":"boolean"},"allowSpecialWrapping":{"description":"If true, this collection approval allows special wrapping operations (CosmosCoinWrapperPath).\nWhen false, this approval cannot be used for transfers involving wrapping addresses.\nThis prevents accidental allowances when toListIds is \"All\".","type":"boolean"},"altTimeChecks":{"description":"Alternative time-based checks for approval denial (offline hours/days). Defines time periods\nduring which this approval should be denied, such as specific hours of the day or days of the week.","$ref":"#/definitions/tokenization.v29.AltTimeChecks"},"approvalAmounts":{"description":"Threshold limit of amounts that can be transferred using this approval. Tracks cumulative amounts\ntransferred and enforces maximum limits per approval.","$ref":"#/definitions/tokenization.v29.ApprovalAmounts"},"autoDeletionOptions":{"description":"Auto-deletion options for this approval. Defines conditions under which this approval should be\nautomatically deleted (e.g., after a certain number of uses or time period).","$ref":"#/definitions/tokenization.v29.AutoDeletionOptions"},"coinTransfers":{"description":"The sdk.Coins that need to be transferred for approval. Defines required coin transfers (e.g., fees,\nroyalties) that must be executed alongside the token transfer for the approval to be valid.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.CoinTransfer"}},"dynamicStoreChallenges":{"description":"Dynamic store challenges that the initiator must pass for approval. The initiator must provide\nvalid proofs that satisfy all specified dynamic store challenges (e.g., key-value store lookups).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.DynamicStoreChallenge"}},"ethSignatureChallenges":{"description":"ETH signature challenges that the initiator must pass for approval. The initiator must provide\nvalid Ethereum signatures for all specified challenges. Each signature can only be used once.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.ETHSignatureChallenge"}},"evmQueryChallenges":{"description":"EVM query challenges that must pass for approval. Read-only contract queries\nthat verify external EVM state (e.g., token ownership in another contract).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.EVMQueryChallenge"}},"initiatorChecks":{"description":"Address checks for the initiator of the transfer. Validates that the initiator address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.v29.AddressChecks"},"maxNumTransfers":{"description":"Maximum number of transfers that can be processed using this approval. Tracks the count of transfers\nand enforces the limit to prevent exceeding the allowed number of uses.","$ref":"#/definitions/tokenization.v29.MaxNumTransfers"},"merkleChallenges":{"description":"Merkle challenges that must be satisfied for approval. The initiator must provide valid Merkle proofs\nthat satisfy all specified challenges. Each challenge requires a proof that leads to a specific root hash.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.MerkleChallenge"}},"mustOwnTokens":{"description":"Must own tokens for approval. Defines token ownership requirements that must be satisfied for\nthe approval to be valid. The initiator must own the specified tokens at the specified ownership times.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.MustOwnTokens"}},"mustPrioritize":{"description":"If true, this approval must be explicitly prioritized in PrioritizedApprovals to be used.\nThis allows fine-grained control over which approvals are applied when multiple approvals could match.","type":"boolean"},"overridesFromOutgoingApprovals":{"description":"Overrides the user's outgoing approvals for approval. If true, this collection-level approval\ntakes precedence over any outgoing approvals defined by the sender, allowing the collection to\ncontrol outgoing transfer behavior.","type":"boolean"},"overridesToIncomingApprovals":{"description":"Overrides the user's incoming approvals for approval. If true, this collection-level approval\ntakes precedence over any incoming approvals defined by the recipient, allowing the collection to\ncontrol incoming transfer behavior.","type":"boolean"},"predeterminedBalances":{"description":"Predetermined balances that must be used for each approval. Defines the exact token amounts and IDs\nthat can be transferred when using this approval.","$ref":"#/definitions/tokenization.v29.PredeterminedBalances"},"recipientChecks":{"description":"Address checks for the recipient of the transfer. Validates that the recipient address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.v29.AddressChecks"},"requireFromDoesNotEqualInitiatedBy":{"description":"Require the \"from\" address to not be equal to the \"initiated by\" address for approval.\nIf true, transfers where the sender equals the initiator are forbidden.","type":"boolean"},"requireFromEqualsInitiatedBy":{"description":"Require the \"from\" address to be equal to the \"initiated by\" address for approval.\nIf true, only transfers where the sender matches the initiator are allowed.","type":"boolean"},"requireToDoesNotEqualInitiatedBy":{"description":"Require the \"to\" address to not be equal to the \"initiated by\" address for approval.\nIf true, transfers where the recipient equals the initiator are forbidden.","type":"boolean"},"requireToEqualsInitiatedBy":{"description":"Require the \"to\" address to be equal to the \"initiated by\" address for approval.\nIf true, only transfers where the recipient matches the initiator are allowed.","type":"boolean"},"senderChecks":{"description":"Address checks for the sender of the transfer. Validates that the sender address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.v29.AddressChecks"},"userApprovalSettings":{"description":"Issuer-imposed constraints on user-level coin transfers. Propagated to user-level approvals\nduring greedy transfer matching (same pattern as userRoyalties). Only applicable on collection-level approvals.\nIf conflicting settings across multiple matched approvals, the transfer is rejected (like royalties).","$ref":"#/definitions/tokenization.v29.UserApprovalSettings"},"votingChallenges":{"description":"Voting challenges that must be satisfied for approval. The initiator must provide\nvalid votes that meet the quorum threshold for all specified challenges.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.VotingChallenge"}}}},"tokenization.v29.ApprovalIdentifierDetails":{"description":"ApprovalIdentifierDetails defines the details to identify a specific approval.","type":"object","properties":{"approvalId":{"description":"The ID of the approval.","type":"string"},"approvalLevel":{"description":"The level of the approval. Can be \"collection\", \"incoming\", or \"outgoing\".","type":"string"},"approverAddress":{"description":"The address of the approver. Leave blank \"\" if approvalLevel == \"collection\".","type":"string"},"version":{"description":"The version of the approval.","type":"string"}}},"tokenization.v29.ApprovalUsed":{"description":"ApprovalUsed represents an approval that was consumed during a transfer.","type":"object","properties":{"approvalId":{"type":"string"},"approvalLevel":{"type":"string"},"approverAddress":{"type":"string"},"version":{"type":"string"}}},"tokenization.v29.AutoDeletionOptions":{"description":"AutoDeletionOptions defines the options for auto-deletion of approvals.","type":"object","properties":{"afterOneUse":{"type":"boolean","title":"After one use?"},"afterOverallMaxNumTransfers":{"type":"boolean","title":"After overall max number of uses threshold is met?"},"allowCounterpartyPurge":{"type":"boolean","title":"Allow counterparty to purge this approval if they are the only initiator"},"allowPurgeIfExpired":{"type":"boolean","title":"Allow others to call PurgeApprovals on behalf of this approval owner"}}},"tokenization.v29.Balance":{"description":"Balance represents the balance of a token for a specific user.\nThe user amounts xAmount of a token specified for the time ranges specified.\n\nExample: User A owns x10 of token IDs 1-10 from 1/1/2020 to 1/1/2021.\n\nIf times or tokenIDs have len \u003e 1, then the user owns all token IDs specified for all time ranges specified.","type":"object","properties":{"amount":{"description":"The amount of the token owned by the user.","type":"string"},"ownershipTimes":{"description":"The time ranges during which the user owns the token.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}},"tokenIds":{"description":"The token IDs for which the user owns the token.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}}}},"tokenization.v29.CoinTransfer":{"type":"object","properties":{"coins":{"description":"The sdk.Coins to be transferred.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"overrideFromWithApproverAddress":{"description":"By default, the from address is the initiator of the transaction.\nIf this is set to true, we will override the from address with the approver address.\nNote: This is not applicable for collection approvals (since approverAddress == '').","type":"boolean"},"overrideToWithInitiator":{"description":"By default, the to address is what is specified in the coin transfer.\nIf this is set to true, we will override the to address with the initiator of the transaction.","type":"boolean"},"to":{"description":"The address of the recipient of the transfer.","type":"string"}}},"tokenization.v29.CoinTransferProto":{"description":"CoinTransferProto represents a coin transfer that occurred during a transaction.","type":"object","properties":{"amount":{"type":"string"},"denom":{"type":"string"},"from":{"type":"string"},"isProtocolFee":{"type":"boolean"},"to":{"type":"string"}}},"tokenization.v29.CollectionApproval":{"type":"object","title":"CollectionApproval defines the rules for the approval of a transfer on the collection level","properties":{"approvalCriteria":{"description":"The criteria that must be met for this approval to be considered.","$ref":"#/definitions/tokenization.v29.ApprovalCriteria"},"approvalId":{"description":"The ID of this approval. Must be unique per level (i.e. collection, outgoing, incoming).","type":"string"},"customData":{"description":"Arbitrary custom data associated with this approval.","type":"string"},"fromListId":{"description":"The list ID for the sender of the transfer.","type":"string"},"initiatedByListId":{"description":"The list ID for the user who initiated the transfer.","type":"string"},"ownershipTimes":{"description":"The allowed range of ownership times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}},"toListId":{"description":"The list ID for the recipient of the transfer.","type":"string"},"tokenIds":{"description":"The allowed range of token IDs for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}},"transferTimes":{"description":"The allowed range of transfer times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}},"uri":{"description":"The URI associated with this approval, optionally providing metadata about the approval.","type":"string"},"version":{"description":"Version of the approval. Maintained internally.","type":"string"}}},"tokenization.v29.CollectionApprovalPermission":{"description":"CollectionApprovalPermission defines what collection approved transfers can be updated vs. are locked.\n\nEach transfer is broken down to a (from, to, initiatedBy, transferTime, tokenId) tuple.\nFor a transfer to match, we need to match ALL of the fields in the combination. \nThese are determined by the fromListId, toListId, initiatedByListId, transferTimes, tokenIds fields.\nAddressLists are used for (from, to, initiatedBy) which are a permanent list of addresses identified by an ID (see AddressLists). \n\npermanentlyPermitted/ForbiddenTimes: when can the manager execute this permission?\n\nEx: Let's say we are updating the transferability for the transfer tuple (\"AllWithoutMint\", \"AllWithoutMint\", \"AllWithoutMint\", 10, 1000).\nWe would check to find the FIRST CollectionApprovalPermission that matches this combination.\nIf we find a match, we would check the permitted/forbidden times to see if we can execute this permission (default is ALLOWED).\n\nEx: So if you wanted to freeze the transferability to enforce that token ID 1 will always be transferable, you could set\nthe combination (\"AllWithoutMint\", \"AllWithoutMint\", \"AllWithoutMint\", \"All Transfer Times\", 1) to always be forbidden.","type":"object","properties":{"approvalId":{"description":"Identifier for the approvalId. You can use \"All\" or \"!approvalId\" for shorthand.\nIf you use \"All\", this approval will match to all approvalIds.\nIf you use \"!approvalId\", this approval will match to all approvalIds except for approvalId.\nIf you use \"approvalId\", this approval will match to only the specified approvalId and fail on all others.","type":"string"},"fromListId":{"description":"Identifier for the sender list.","type":"string"},"initiatedByListId":{"description":"Identifier for the initiator list (who is approved?).","type":"string"},"ownershipTimes":{"description":"Specifies the ownership times for the tokens in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}},"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}},"toListId":{"description":"Identifier for the recipient list.","type":"string"},"tokenIds":{"description":"Specifies the token IDs involved in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}},"transferTimes":{"description":"Specifies the times when the transfer can occur.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}}}},"tokenization.v29.CollectionMetadata":{"description":"This message defines the metadata for the collection.\nThe interpretation of this metadata should follow the collection standard.","type":"object","properties":{"customData":{"description":"Custom data or additional information related to the collection metadata.","type":"string"},"uri":{"description":"The URI (Uniform Resource Identifier) associated with the collection metadata.","type":"string"}}},"tokenization.v29.CollectionPermissions":{"description":"CollectionPermissions defines the permissions for the collection (i.e., what the manager can and cannot do).\n\nThere are three types of permissions for a collection: ActionPermission, TokenIdsActionPermission, and CollectionApprovalPermission.\n\nThe permission type allows fine-grained access control for each action.\n- ActionPermission: defines when the manager can perform an action or update a field.\n- TokenIdsActionPermission: defines when the manager can perform an action for specific tokens\n- CollectionApprovalPermission: defines when the manager can update the transferability of the collection and what transfers can be updated vs. locked.\n\nNote there are a few different times here which could get confusing:\n- permanentlyPermitted/ForbiddenTimes - the times that a permission can be performed\n- transferTimes - the times that a transfer occurs\n- ownershipTimes - the times when a token is owned by a user\n\nThe permitted/permanentlyForbiddenTimes are used to determine when a permission can be executed.\nOnce a time is set to be permitted or forbidden, it is PERMANENT and cannot be changed.\nIf a time is not set to be permitted or forbidden, it is considered NEUTRAL and can be updated but is ALLOWED by default.\n\nIMPORTANT: We take first-match only for the permissions. This means that if you forbid time T in array index 0 and permit time T in index 1, \nwe will only check the first permission (forbid time T) and not the second permission (permit time T).","type":"object","properties":{"canAddMoreAliasPaths":{"description":"Permissions related to adding more alias paths to the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.ActionPermission"}},"canAddMoreCosmosCoinWrapperPaths":{"description":"Permissions related to adding more cosmos coin wrapper paths to the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.ActionPermission"}},"canArchiveCollection":{"description":"Permissions related to archiving the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.ActionPermission"}},"canDeleteCollection":{"description":"Permissions related to deleting the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.ActionPermission"}},"canUpdateCollectionApprovals":{"description":"Permissions related to updating collection approvals.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.CollectionApprovalPermission"}},"canUpdateCollectionMetadata":{"description":"Permissions related to updating the metadata of the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.ActionPermission"}},"canUpdateCustomData":{"description":"Permissions related to updating custom data for the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.ActionPermission"}},"canUpdateManager":{"description":"Permissions related to updating the collection's manager.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.ActionPermission"}},"canUpdateStandards":{"description":"Permissions related to updating standards for the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.ActionPermission"}},"canUpdateTokenMetadata":{"description":"Permissions related to updating token metadata for specific tokens.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.TokenIdsActionPermission"}},"canUpdateValidTokenIds":{"description":"Permissions related to creating more tokens for the collection.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.TokenIdsActionPermission"}}}},"tokenization.v29.Conversion":{"description":"Conversion defines a bidirectional conversion between a cosmos coin (with denom) and token balances.","type":"object","properties":{"sideA":{"description":"Side A: The cosmos coin side of the conversion (amount + denom).","$ref":"#/definitions/tokenization.v29.ConversionSideAWithDenom"},"sideB":{"description":"Side B: The token balances side of the conversion.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.Balance"}}}},"tokenization.v29.ConversionSideA":{"description":"ConversionSideA represents the cosmos coin amount side of a conversion without denomination.","type":"object","properties":{"amount":{"description":"The amount of the cosmos coin (0 decimals).","type":"string"}}},"tokenization.v29.ConversionSideAWithDenom":{"description":"ConversionSideAWithDenom represents the cosmos coin side of a conversion with denomination.","type":"object","properties":{"amount":{"description":"The amount of the cosmos coin (0 decimals).","type":"string"},"denom":{"description":"The denomination of the cosmos coin.","type":"string"}}},"tokenization.v29.ConversionWithoutDenom":{"description":"ConversionWithoutDenom defines a bidirectional conversion between a cosmos coin amount (without denom) and token balances.\nThe denom is stored at the base level (e.g., in AliasPath or CosmosCoinWrapperPath).","type":"object","properties":{"sideA":{"description":"Side A: The cosmos coin amount side of the conversion (amount only, denom stored separately).","$ref":"#/definitions/tokenization.v29.ConversionSideA"},"sideB":{"description":"Side B: The token balances side of the conversion.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.Balance"}}}},"tokenization.v29.CosmosCoinBackedPathAddObject":{"type":"object","properties":{"conversion":{"$ref":"#/definitions/tokenization.v29.Conversion"}}},"tokenization.v29.CosmosCoinWrapperPathAddObject":{"type":"object","properties":{"allowOverrideWithAnyValidToken":{"type":"boolean"},"conversion":{"$ref":"#/definitions/tokenization.v29.ConversionWithoutDenom"},"denom":{"type":"string"},"denomUnits":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.DenomUnit"}},"metadata":{"description":"The metadata for this wrapper path.","$ref":"#/definitions/tokenization.v29.PathMetadata"},"symbol":{"type":"string"}}},"tokenization.v29.DenomUnit":{"type":"object","properties":{"decimals":{"description":"The number of decimal places for this unit. Defines the precision of the unit.","type":"string"},"isDefaultDisplay":{"description":"If true, this is the default display unit. Only one unit should be marked as the default display unit.\nThis unit will be used by default when displaying the coin amount. If none are marked default, we use the base level.","type":"boolean"},"metadata":{"description":"The metadata for this denomination unit.","$ref":"#/definitions/tokenization.v29.PathMetadata"},"symbol":{"description":"The symbol for this unit (e.g., \"BADGE\", \"nBADGE\"). Used for display purposes.","type":"string"}}},"tokenization.v29.DynamicStoreChallenge":{"description":"DynamicStoreChallenge defines a challenge that requires the initiator to pass a dynamic store check.","type":"object","properties":{"ownershipCheckParty":{"description":"The party to check ownership for. Options are \"initiator\", \"sender\", \"recipient\", or any valid bb1 address.\nIf a valid bb1 address is provided, ownership will be checked for that specific address.\nThis enables use cases like halt tokens where ownership is checked for an arbitrary address (e.g., halt token owner).\nDefaults to \"initiator\" if empty or if the value is not a recognized option or valid bb1 address.","type":"string"},"storeId":{"description":"The ID of the dynamic store to check.","type":"string"}}},"tokenization.v29.ETHSignatureChallenge":{"description":"ETHSignatureChallenge defines a rule for the approval in the form of an Ethereum signature challenge.\n\nAn ETH signature challenge is a challenge where the user must provide a valid Ethereum signature for a specific nonce.\nThe signature scheme is ETHSign(nonce + \"-\" + initiatorAddress + \"-\" + collectionId + \"-\" + approverAddress + \"-\" + approvalLevel + \"-\" + approvalId + \"-\" + challengeId) and each signature can only be used once.\nAll challenges must be met with valid solutions for the transfer to be approved.\n\nIMPORTANT: We track the usage of each signature to prevent replay attacks. Each signature can only be used once.\nIf you update the challenge ID, then the used signatures tracker will reset and start a new tally.\nWe recommend using a unique challenge ID for each challenge to prevent overlap and unexpected behavior.","type":"object","properties":{"challengeTrackerId":{"description":"The ID of this ETH signature challenge for tracking the number of uses per signature.","type":"string"},"customData":{"description":"Arbitrary custom data associated with this ETH signature challenge.","type":"string"},"signer":{"description":"The Ethereum address that must sign the nonce for verification.","type":"string"},"uri":{"description":"The URI associated with this ETH signature challenge, optionally providing metadata about the challenge.","type":"string"}}},"tokenization.v29.ETHSignatureProof":{"description":"ETHSignatureProof represents an Ethereum signature proof for a challenge.","type":"object","properties":{"nonce":{"description":"The nonce that was signed. The signature scheme is ETHSign(nonce + \"-\" + initiatorAddress + \"-\" + collectionId + \"-\" + approverAddress + \"-\" + approvalLevel + \"-\" + approvalId + \"-\" + challengeId).","type":"string"},"signature":{"description":"The Ethereum signature of the nonce.","type":"string"}}},"tokenization.v29.EVMQueryChallenge":{"description":"EVMQueryChallenge defines a rule for approval via read-only EVM contract query.\n\nThe challenge executes a staticcall to the specified contract with the given calldata.\nThe result is compared against the expected result (if provided) or checked for non-zero return.\n\nIMPORTANT: This is read-only and cannot modify state. The query is executed with a gas limit\nto prevent DoS attacks. All results are deterministic since EVM state is consistent within a block.","type":"object","properties":{"calldata":{"type":"string","title":"ABI-encoded function selector + arguments (hex string without 0x prefix)\nExample: \"70a08231000000000000000000000000{address}\" for balanceOf(address)\nCan use placeholders: $initiator, $sender, $recipient (replaced at runtime)"},"comparisonOperator":{"description":"Comparison operator: \"eq\" (equals), \"ne\" (not equals), \"gt\" (greater than), \"gte\", \"lt\", \"lte\"\nOnly \"eq\" and \"ne\" work for non-numeric types. Default is \"eq\".","type":"string"},"contractAddress":{"type":"string","title":"The EVM contract address to query (0x format or bb1 format)"},"customData":{"type":"string","title":"Arbitrary custom data"},"expectedResult":{"description":"Expected return value (hex string without 0x prefix). If empty, any non-error result passes.\nFor boolean checks, use \"0000...0001\" for true.","type":"string"},"gasLimit":{"type":"string","title":"Gas limit for the query (default 100000, max 500000)"},"uri":{"type":"string","title":"The URI associated with this challenge (metadata)"}}},"tokenization.v29.IncomingApprovalCriteria":{"description":"IncomingApprovalCriteria defines the criteria for approving incoming transfers.\nThis is used for user-level incoming approvals and only includes fields relevant to incoming transfers.\nAll criteria must be satisfied for the approval to be considered valid.","type":"object","properties":{"altTimeChecks":{"description":"Alternative time-based checks for approval denial (offline hours/days). Defines time periods\nduring which this approval should be denied, such as specific hours of the day or days of the week.","$ref":"#/definitions/tokenization.v29.AltTimeChecks"},"approvalAmounts":{"description":"Threshold limit of amounts that can be transferred using this approval. Tracks cumulative amounts\ntransferred and enforces maximum limits per approval.","$ref":"#/definitions/tokenization.v29.ApprovalAmounts"},"autoDeletionOptions":{"description":"Auto-deletion options for this approval. Defines conditions under which this approval should be\nautomatically deleted (e.g., after a certain number of uses or time period).","$ref":"#/definitions/tokenization.v29.AutoDeletionOptions"},"coinTransfers":{"description":"The sdk.Coins that need to be transferred for approval. Defines required coin transfers (e.g., fees,\nroyalties) that must be executed alongside the token transfer for the approval to be valid.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.CoinTransfer"}},"dynamicStoreChallenges":{"description":"Dynamic store challenges that the initiator must pass for approval. The initiator must provide\nvalid proofs that satisfy all specified dynamic store challenges (e.g., key-value store lookups).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.DynamicStoreChallenge"}},"ethSignatureChallenges":{"description":"ETH signature challenges that the initiator must pass for approval. The initiator must provide\nvalid Ethereum signatures for all specified challenges. Each signature can only be used once.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.ETHSignatureChallenge"}},"evmQueryChallenges":{"description":"EVM query challenges that must pass for approval. Read-only contract queries\nthat verify external EVM state (e.g., token ownership in another contract).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.EVMQueryChallenge"}},"initiatorChecks":{"description":"Address checks for the initiator of the transfer. Validates that the initiator address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.v29.AddressChecks"},"maxNumTransfers":{"description":"Maximum number of transfers that can be processed using this approval. Tracks the count of transfers\nand enforces the limit to prevent exceeding the allowed number of uses.","$ref":"#/definitions/tokenization.v29.MaxNumTransfers"},"merkleChallenges":{"description":"Merkle challenges that must be satisfied for approval. The initiator must provide valid Merkle proofs\nthat satisfy all specified challenges. Each challenge requires a proof that leads to a specific root hash.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.MerkleChallenge"}},"mustOwnTokens":{"description":"Must own tokens for approval. Defines token ownership requirements that must be satisfied for\nthe approval to be valid. The initiator must own the specified tokens at the specified ownership times.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.MustOwnTokens"}},"mustPrioritize":{"description":"If true, this approval must be explicitly prioritized in PrioritizedApprovals to be used.\nThis allows fine-grained control over which approvals are applied when multiple approvals could match.","type":"boolean"},"predeterminedBalances":{"description":"Predetermined balances that must be used for each approval. Defines the exact token amounts and IDs\nthat can be transferred when using this approval.","$ref":"#/definitions/tokenization.v29.PredeterminedBalances"},"requireFromDoesNotEqualInitiatedBy":{"description":"Require the \"from\" address to not be equal to the \"initiated by\" address for approval.\nIf true, transfers where the sender equals the initiator are forbidden.","type":"boolean"},"requireFromEqualsInitiatedBy":{"description":"Require the \"from\" address to be equal to the \"initiated by\" address for approval.\nIf true, only transfers where the sender matches the initiator are allowed.","type":"boolean"},"senderChecks":{"description":"Address checks for the sender of the transfer. Validates that the sender address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).\nNote: No recipient checks are included for incoming approvals since the recipient is the user themselves.","$ref":"#/definitions/tokenization.v29.AddressChecks"},"votingChallenges":{"description":"Voting challenges that must be satisfied for approval. The initiator must provide\nvalid votes that meet the quorum threshold for all specified challenges.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.VotingChallenge"}}}},"tokenization.v29.IncrementedBalances":{"description":"IncrementedBalances represents balances that are incremented by specific amounts, according to the order calculation method.","type":"object","properties":{"allowAmountScaling":{"description":"When true, the actual transfer can be any evenly divisible integer multiple (\u003e=1x) of startBalances.\napprovalCriteria.coinTransfers are scaled by the same multiplier.\nAll other IncrementedBalances fields must be zero/false/nil when this is true.","type":"boolean"},"allowOverrideTimestamp":{"description":"Whether to allow overriding the timestamp for the balances (only applicable with durationFromTimestamp set).","type":"boolean"},"allowOverrideWithAnyValidToken":{"type":"boolean","title":"Allow override of any valid ID"},"durationFromTimestamp":{"description":"The amount of unix milliseconds to approve starting from now. Incompatible with incrementOwnershipTimesBy.","type":"string"},"incrementOwnershipTimesBy":{"description":"The amount by which to increment ownership times. Incompatible with approveStartingFromNowBy.","type":"string"},"incrementTokenIdsBy":{"description":"The amount by which to increment token IDs.","type":"string"},"maxScalingMultiplier":{"description":"Maximum allowed scaling multiplier. Must be \u003e 0 when allowAmountScaling is true.\nThe chain rejects transfers where the computed multiplier exceeds this cap.\nIgnored (set to \"0\") when allowAmountScaling is false.","type":"string"},"recurringOwnershipTimes":{"description":"Recurring ownership times.","$ref":"#/definitions/tokenization.v29.RecurringOwnershipTimes"},"startBalances":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.Balance"}}}},"tokenization.v29.InvariantsAddObject":{"description":"InvariantsAddObject is used for adding invariants without specifying addresses.\nAddresses are generated by the keeper and stored in the collection.","type":"object","properties":{"cosmosCoinBackedPath":{"description":"The IBC backed (sdk.coin) path for the collection. Only one path is allowed.\nAddress will be generated by the keeper.","$ref":"#/definitions/tokenization.v29.CosmosCoinBackedPathAddObject"},"disablePoolCreation":{"description":"If true, disallows pool creation with this collection's assets.\nWhen true, any attempt to create a pool with tokenization assets from this collection will fail.","type":"boolean"},"evmQueryChallenges":{"type":"array","title":"EVM query invariants that must pass after all transfers complete.\nThese are checked once per message after all balance updates, with access to ALL recipient addresses.\nPlaceholders: $sender, $recipients (comma-separated), $initiator, $collectionId, $recipient","items":{"type":"object","$ref":"#/definitions/tokenization.v29.EVMQueryChallenge"}},"maxSupplyPerId":{"description":"Maximum supply per token ID. Checked against Total address balances after transfers complete.\nA value of 0 means no limit (unlimited).","type":"string"},"noCustomOwnershipTimes":{"description":"If true, all ownership times must be full ranges [{ start: 1, end: GoMaxUInt64 }].\nThis prevents time-based restrictions on token ownership.","type":"boolean"},"noForcefulPostMintTransfers":{"description":"If true, disallows any collection approvals that have overridesFromOutgoingApprovals or overridesToIncomingApprovals set to true.\nThis prevents forceful transfers that bypass user-level approvals.\nThis only applies to transfers where the from address does not equal \"Mint\".","type":"boolean"}}},"tokenization.v29.ManualBalances":{"description":"ManualBalances represents a list of manual balances entered for the predetermined balances criteria. Order is calculated according to the calculation method set.","type":"object","properties":{"balances":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.Balance"}}}},"tokenization.v29.MaxNumTransfers":{"description":"MaxNumTransfers defines the maximum number of transfers per unique \"from,\" \"to,\" and/or \"initiated by\" address.\nIf any of these are nil or \"0\", we assume unlimited approvals.\nIf they are set to a value, then the running tally of the number of transfers for the specified token IDs and ownership times\nmust not exceed the corresponding value.","type":"object","properties":{"amountTrackerId":{"description":"The ID of the amount tracker associated with this approval.\nWe use this ID to track the number of transfers and amounts transferred.","type":"string"},"overallMaxNumTransfers":{"description":"Overall maximum number of transfers.","type":"string"},"perFromAddressMaxNumTransfers":{"description":"Maximum number of transfers per \"from\" address.","type":"string"},"perInitiatedByAddressMaxNumTransfers":{"description":"Maximum number of transfers per \"initiated by\" address.","type":"string"},"perToAddressMaxNumTransfers":{"description":"Maximum number of transfers per \"to\" address.","type":"string"},"resetTimeIntervals":{"description":"Time intervals to reset the trackers at.","$ref":"#/definitions/tokenization.v29.ResetTimeIntervals"}}},"tokenization.v29.MerkleChallenge":{"description":"Challenges define a rule for the approval in the form of a Merkle challenge.\n\nA Merkle challenge is a challenge where the user must provide a Merkle proof to a Merkle tree. If they provide a valid proof,\nthen the challenge is met. All challenges must be met with valid solutions for the transfer to be approved.\n\nIMPORTANT: Merkle challenges currently are limited to SHA256 hashes. See documentation for MerkleChallenge for more details and tutorials.\n\nIMPORTANT: We track the number of uses per leaf according to the challengeTrackerId specified by the parent approval of this challenge.\nIf you update the challenge ID, then the used leaves tracker will reset and start a new tally.\nWe recommend using a unique challenge ID for each challenge to prevent overlap and unexpected behavior.","type":"object","properties":{"challengeTrackerId":{"description":"The ID of this Merkle challenge for tracking the number of uses per leaf.","type":"string"},"customData":{"description":"Arbitrary custom data associated with this Merkle challenge.","type":"string"},"expectedProofLength":{"description":"The expected length of the Merkle path for verification. Used to prevent Merkle path truncation attacks.","type":"string"},"leafSigner":{"description":"Ethereum address that must sign the leaf. Used to protect against man-in-the-middle attacks.\nSignature scheme: sign(leaf + \"-\" + creatorAddress), verified using elliptic curve signature verification.","type":"string"},"maxUsesPerLeaf":{"description":"The maximum number of times each leaf can be used. Must be 1 if useCreatorAddressAsLeaf is false to prevent replay attacks.","type":"string"},"root":{"description":"The root hash of the Merkle tree to which the Merkle path must lead for verification.","type":"string"},"uri":{"description":"The URI associated with this Merkle challenge, optionally providing metadata about the challenge.","type":"string"},"useCreatorAddressAsLeaf":{"description":"If true, we will override the user's leaf for their proof with their creator address. Used for whitelist trees where all leaves are valid BitBadges addresses.","type":"boolean"}}},"tokenization.v29.MerklePathItem":{"description":"MerklePathItem represents an item in a Merkle path.","type":"object","properties":{"aunt":{"description":"The hash of the sibling node (aunt) in the Merkle path.","type":"string"},"onRight":{"description":"Indicates whether the aunt node is on the right side of the path.","type":"boolean"}}},"tokenization.v29.MerkleProof":{"description":"MerkleProof represents a Merkle proof, consistent with Tendermint/Crypto Merkle tree.","type":"object","properties":{"aunts":{"description":"List of Merkle path items (aunts) that make up the proof.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.MerklePathItem"}},"leaf":{"description":"The hash of the leaf node for which the proof is generated.","type":"string"},"leafSignature":{"description":"The signature of the leaf node tying the address to the leaf node.","type":"string"}}},"tokenization.v29.MsgCastVote":{"description":"MsgCastVote allows a voter to cast or update their vote for a voting challenge.","type":"object","properties":{"approvalId":{"description":"The approval ID.","type":"string"},"approvalLevel":{"description":"The approval level (\"collection\", \"incoming\", or \"outgoing\").","type":"string"},"approverAddress":{"description":"The approver address (empty string for collection-level approvals).","type":"string"},"collectionId":{"description":"The collection ID for the voting challenge.","type":"string"},"creator":{"description":"The address of the voter casting the vote.","type":"string"},"proposalId":{"description":"The proposal ID (challenge ID) from the VotingChallenge.","type":"string"},"yesWeight":{"description":"The percentage weight (0-100) allocated to \"yes\" vote.\nThe remaining percentage (100 - yesWeight) is allocated to \"no\" vote.\nExample: yesWeight=70 means 70% yes, 30% no.","type":"string"}}},"tokenization.v29.MsgCastVoteResponse":{"type":"object"},"tokenization.v29.MsgCreateAddressLists":{"description":"MsgCreateAddressLists is used to create address lists.","type":"object","properties":{"addressLists":{"description":"Address lists to create. The createdBy field will be automatically set to the creator address.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.AddressListInput"}},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v29.MsgCreateAddressListsResponse":{"description":"MsgCreateAddressListsResponse is the response to MsgCreateAddressLists.","type":"object"},"tokenization.v29.MsgCreateCollection":{"description":"MsgCreateCollection is used to create a new collection.","type":"object","properties":{"aliasPathsToAdd":{"description":"Alias (non-wrapping) paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.AliasPathAddObject"}},"collectionApprovals":{"description":"Collection approvals.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.CollectionApproval"}},"collectionMetadata":{"description":"Collection metadata.","$ref":"#/definitions/tokenization.v29.CollectionMetadata"},"collectionPermissions":{"description":"Collection permissions.","$ref":"#/definitions/tokenization.v29.CollectionPermissions"},"cosmosCoinWrapperPathsToAdd":{"description":"IBC wrapper paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.CosmosCoinWrapperPathAddObject"}},"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"Custom data.","type":"string"},"defaultBalances":{"title":"The default balances for the user","$ref":"#/definitions/tokenization.v29.UserBalanceStore"},"invariants":{"description":"Collection-level invariants that cannot be broken.\nAddresses are generated by the keeper and stored in the collection.","$ref":"#/definitions/tokenization.v29.InvariantsAddObject"},"isArchived":{"description":"isArchived flag.","type":"boolean"},"manager":{"description":"Manager address.","type":"string"},"mintEscrowCoinsToTransfer":{"description":"Coins to be transferred to the mint escrow address.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"standards":{"description":"Standards entries.","type":"array","items":{"type":"string"}},"tokenMetadata":{"description":"Token metadata entries.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.TokenMetadata"}},"validTokenIds":{"type":"array","title":"New token IDs to add to this collection","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}}}},"tokenization.v29.MsgCreateCollectionResponse":{"description":"MsgCreateCollectionResponse is the response to MsgCreateCollection.","type":"object","properties":{"approvalChanges":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.ApprovalChange"}},"collectionId":{"description":"ID of the collection.","type":"string"},"reviewItems":{"type":"array","items":{"type":"string"}}}},"tokenization.v29.MsgCreateDynamicStore":{"description":"MsgCreateDynamicStore is used to create a new dynamic store.","type":"object","properties":{"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"Custom data field for storing arbitrary data associated with this dynamic store.","type":"string"},"defaultValue":{"description":"The default value for uninitialized addresses (true/false).","type":"boolean"},"uri":{"description":"URI for additional metadata or resources associated with this dynamic store.","type":"string"}}},"tokenization.v29.MsgCreateDynamicStoreResponse":{"description":"MsgCreateDynamicStoreResponse is the response to MsgCreateDynamicStore.","type":"object","properties":{"reviewItems":{"type":"array","items":{"type":"string"}},"storeId":{"description":"ID of the dynamic store.","type":"string"}}},"tokenization.v29.MsgDeleteCollection":{"description":"MsgDeleteCollection is used to delete a collection.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v29.MsgDeleteCollectionResponse":{"description":"MsgDeleteCollectionResponse is the response to MsgDeleteCollection.","type":"object"},"tokenization.v29.MsgDeleteDynamicStore":{"description":"MsgDeleteDynamicStore is used to delete a dynamic store.","type":"object","properties":{"creator":{"description":"Address of the creator.","type":"string"},"storeId":{"description":"ID of the dynamic store to delete.","type":"string"}}},"tokenization.v29.MsgDeleteDynamicStoreResponse":{"description":"MsgDeleteDynamicStoreResponse is the response to MsgDeleteDynamicStore.","type":"object"},"tokenization.v29.MsgDeleteIncomingApproval":{"description":"MsgDeleteIncomingApproval is a helper message to delete a single incoming approval.","type":"object","properties":{"approvalId":{"description":"The ID of the approval to delete.","type":"string"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v29.MsgDeleteIncomingApprovalResponse":{"description":"MsgDeleteIncomingApprovalResponse is the response to MsgDeleteIncomingApproval.","type":"object","properties":{"found":{"type":"boolean"},"reviewItems":{"type":"array","items":{"type":"string"}},"version":{"type":"string"}}},"tokenization.v29.MsgDeleteOutgoingApproval":{"description":"MsgDeleteOutgoingApproval is a helper message to delete a single outgoing approval.","type":"object","properties":{"approvalId":{"description":"The ID of the approval to delete.","type":"string"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v29.MsgDeleteOutgoingApprovalResponse":{"description":"MsgDeleteOutgoingApprovalResponse is the response to MsgDeleteOutgoingApproval.","type":"object","properties":{"found":{"type":"boolean"},"reviewItems":{"type":"array","items":{"type":"string"}},"version":{"type":"string"}}},"tokenization.v29.MsgPurgeApprovals":{"description":"MsgPurgeApprovals is a helper message to purge expired approvals.","type":"object","properties":{"approvalsToPurge":{"description":"Specific approvals to purge. If empty, purges all applicable approvals based on other flags.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.ApprovalIdentifierDetails"}},"approverAddress":{"description":"Address of the user whose approvals to purge. If empty, defaults to creator.","type":"string"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"purgeCounterpartyApprovals":{"description":"Whether to purge counterparty approvals (approvals where the creator is the only initiator).","type":"boolean"},"purgeExpired":{"description":"Whether to purge expired approvals (approvals with no future valid transfer times).","type":"boolean"}}},"tokenization.v29.MsgPurgeApprovalsResponse":{"description":"MsgPurgeApprovalsResponse is the response to MsgPurgeApprovals.","type":"object","properties":{"numPurged":{"description":"Number of approvals purged.","type":"string"},"purgedApprovalIds":{"type":"array","items":{"type":"string"}},"reviewItems":{"type":"array","items":{"type":"string"}}}},"tokenization.v29.MsgSetCollectionApprovals":{"type":"object","title":"MsgSetCollectionApprovals sets the collection approvals and canUpdateCollectionApprovals permission","properties":{"canUpdateCollectionApprovals":{"type":"array","title":"Permission to update collection approvals","items":{"type":"object","$ref":"#/definitions/tokenization.v29.CollectionApprovalPermission"}},"collectionApprovals":{"description":"New collection approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.CollectionApproval"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v29.MsgSetCollectionApprovalsResponse":{"description":"MsgSetCollectionApprovalsResponse is the response to MsgSetCollectionApprovals.","type":"object","properties":{"approvalChanges":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.ApprovalChange"}},"collectionId":{"description":"ID of the collection.","type":"string"},"reviewItems":{"type":"array","items":{"type":"string"}}}},"tokenization.v29.MsgSetCollectionMetadata":{"type":"object","title":"MsgSetCollectionMetadata sets the collection metadata and canUpdateCollectionMetadata permission","properties":{"canUpdateCollectionMetadata":{"type":"array","title":"Permission to update collection metadata","items":{"type":"object","$ref":"#/definitions/tokenization.v29.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"collectionMetadata":{"description":"New collection metadata to set.","$ref":"#/definitions/tokenization.v29.CollectionMetadata"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v29.MsgSetCollectionMetadataResponse":{"description":"MsgSetCollectionMetadataResponse is the response to MsgSetCollectionMetadata.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v29.MsgSetCustomData":{"type":"object","title":"MsgSetCustomData sets the custom data and canUpdateCustomData permission","properties":{"canUpdateCustomData":{"type":"array","title":"Permission to update custom data","items":{"type":"object","$ref":"#/definitions/tokenization.v29.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"New custom data to set.","type":"string"}}},"tokenization.v29.MsgSetCustomDataResponse":{"description":"MsgSetCustomDataResponse is the response to MsgSetCustomData.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v29.MsgSetDynamicStoreValue":{"description":"MsgSetDynamicStoreValue is used to set a boolean value for a specific address in a dynamic store.","type":"object","properties":{"address":{"description":"The address for which to set the value.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"storeId":{"description":"ID of the dynamic store.","type":"string"},"value":{"description":"The boolean value to set (true/false).","type":"boolean"}}},"tokenization.v29.MsgSetDynamicStoreValueResponse":{"description":"MsgSetDynamicStoreValueResponse is the response to MsgSetDynamicStoreValue.","type":"object","properties":{"previousValue":{"type":"string"},"reviewItems":{"type":"array","items":{"type":"string"}}}},"tokenization.v29.MsgSetIncomingApproval":{"description":"MsgSetIncomingApproval is a helper message to set a single incoming approval.","type":"object","properties":{"approval":{"description":"The incoming approval to set.","$ref":"#/definitions/tokenization.v29.UserIncomingApproval"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v29.MsgSetIncomingApprovalResponse":{"description":"MsgSetIncomingApprovalResponse is the response to MsgSetIncomingApproval.","type":"object","properties":{"action":{"type":"string"},"reviewItems":{"type":"array","items":{"type":"string"}},"version":{"type":"string"}}},"tokenization.v29.MsgSetIsArchived":{"type":"object","title":"MsgSetIsArchived sets the isArchived and canArchiveCollection permission","properties":{"canArchiveCollection":{"type":"array","title":"Permission to archive collection","items":{"type":"object","$ref":"#/definitions/tokenization.v29.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"isArchived":{"description":"New isArchived to set.","type":"boolean"}}},"tokenization.v29.MsgSetIsArchivedResponse":{"description":"MsgSetIsArchivedResponse is the response to MsgSetIsArchived.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v29.MsgSetManager":{"type":"object","title":"MsgSetManager sets the manager and canUpdateManager permission","properties":{"canUpdateManager":{"type":"array","title":"Permission to update manager","items":{"type":"object","$ref":"#/definitions/tokenization.v29.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"manager":{"description":"New manager to set.","type":"string"}}},"tokenization.v29.MsgSetManagerResponse":{"description":"MsgSetManagerResponse is the response to MsgSetManager.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v29.MsgSetOutgoingApproval":{"description":"MsgSetOutgoingApproval is a helper message to set a single outgoing approval.","type":"object","properties":{"approval":{"description":"The outgoing approval to set.","$ref":"#/definitions/tokenization.v29.UserOutgoingApproval"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"}}},"tokenization.v29.MsgSetOutgoingApprovalResponse":{"description":"MsgSetOutgoingApprovalResponse is the response to MsgSetOutgoingApproval.","type":"object","properties":{"action":{"type":"string"},"reviewItems":{"type":"array","items":{"type":"string"}},"version":{"type":"string"}}},"tokenization.v29.MsgSetReservedProtocolAddress":{"description":"MsgSetReservedProtocolAddress sets or unsets a reserved protocol address (governance-only).","type":"object","properties":{"address":{"description":"Address to set or unset as reserved protocol address.","type":"string"},"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"isReservedProtocol":{"description":"Whether the address should be a reserved protocol address (true) or not (false).","type":"boolean"}}},"tokenization.v29.MsgSetReservedProtocolAddressResponse":{"description":"MsgSetReservedProtocolAddressResponse is the response to MsgSetReservedProtocolAddress.","type":"object"},"tokenization.v29.MsgSetStandards":{"type":"object","title":"MsgSetStandards sets the standards and canUpdateStandards permission","properties":{"canUpdateStandards":{"type":"array","title":"Permission to update standards","items":{"type":"object","$ref":"#/definitions/tokenization.v29.ActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"standards":{"description":"New standards to set.","type":"array","items":{"type":"string"}}}},"tokenization.v29.MsgSetStandardsResponse":{"description":"MsgSetStandardsResponse is the response to MsgSetStandards.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v29.MsgSetTokenMetadata":{"type":"object","title":"MsgSetTokenMetadata sets the token metadata and canUpdateTokenMetadata permission","properties":{"canUpdateTokenMetadata":{"type":"array","title":"Permission to update token metadata","items":{"type":"object","$ref":"#/definitions/tokenization.v29.TokenIdsActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"tokenMetadata":{"description":"New token metadata to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.TokenMetadata"}}}},"tokenization.v29.MsgSetTokenMetadataResponse":{"description":"MsgSetTokenMetadataResponse is the response to MsgSetTokenMetadata.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v29.MsgSetValidTokenIds":{"type":"object","title":"MsgSetValidTokenIds sets the validTokenIds and canUpdateValidTokenIds permission","properties":{"canUpdateValidTokenIds":{"type":"array","title":"Permission to update valid token IDs","items":{"type":"object","$ref":"#/definitions/tokenization.v29.TokenIdsActionPermission"}},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"validTokenIds":{"type":"array","title":"New token IDs to add to this collection","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}}}},"tokenization.v29.MsgSetValidTokenIdsResponse":{"description":"MsgSetValidTokenIdsResponse is the response to MsgSetValidTokenIds.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"}}},"tokenization.v29.MsgTransferTokens":{"description":"MsgTransferTokens is used to transfer tokens.","type":"object","properties":{"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"transfers":{"description":"Transfers to execute.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.Transfer"}}}},"tokenization.v29.MsgTransferTokensResponse":{"description":"MsgTransferTokensResponse is the response to MsgTransferTokens.","type":"object","properties":{"approvalsUsed":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.ApprovalUsed"}},"balancesTransferred":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.Balance"}},"coinTransfers":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.CoinTransferProto"}},"reviewItems":{"type":"array","items":{"type":"string"}}}},"tokenization.v29.MsgUniversalUpdateCollection":{"description":"MsgUniversalUpdateCollection is used to define MsgServer types for all requests and responses for Msgs of the tokens module.\nIt is a universal interface that can be used for both creating and updating collections.\nWe have it defined for legacy purposes, but it is recommended to use MsgCreateCollection and MsgUpdateCollection instead.","type":"object","properties":{"aliasPathsToAdd":{"description":"Alias (non-wrapping) paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.AliasPathAddObject"}},"collectionApprovals":{"description":"New collection approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.CollectionApproval"}},"collectionId":{"description":"ID of the collection (0 for new collection).","type":"string"},"collectionMetadata":{"description":"New collection metadata to set.","$ref":"#/definitions/tokenization.v29.CollectionMetadata"},"collectionPermissions":{"description":"New collection permissions to set.","$ref":"#/definitions/tokenization.v29.CollectionPermissions"},"cosmosCoinWrapperPathsToAdd":{"description":"IBC wrapper paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.CosmosCoinWrapperPathAddObject"}},"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"New custom data to set.","type":"string"},"defaultBalances":{"title":"The default balances for the user","$ref":"#/definitions/tokenization.v29.UserBalanceStore"},"invariants":{"description":"Collection-level invariants that cannot be broken.\nThese are set upon genesis and cannot be modified.\nAddresses are generated by the keeper and stored in the collection.","$ref":"#/definitions/tokenization.v29.InvariantsAddObject"},"isArchived":{"description":"New isArchived to set.","type":"boolean"},"manager":{"description":"New manager to set.","type":"string"},"mintEscrowCoinsToTransfer":{"description":"Coins to be transferred to the mint escrow address.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"standards":{"description":"New standards to set.","type":"array","items":{"type":"string"}},"tokenMetadata":{"description":"New token metadata to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.TokenMetadata"}},"updateCollectionApprovals":{"description":"Indicates if collection approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCollectionMetadata":{"description":"Indicates if the collection metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCollectionPermissions":{"description":"Indicates if collection permissions should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCustomData":{"description":"Indicates if the custom data should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateIsArchived":{"description":"Indicates if the isArchived should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateManager":{"description":"Indicates if the manager should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateStandards":{"description":"Indicates if the standards should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateTokenMetadata":{"description":"Indicates if the token metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateValidTokenIds":{"description":"Indicates if the valid token IDs should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"validTokenIds":{"type":"array","title":"New token IDs to add to this collection","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}}}},"tokenization.v29.MsgUniversalUpdateCollectionResponse":{"description":"MsgUniversalUpdateCollectionResponse is the response to MsgUniversalUpdateCollection.","type":"object","properties":{"approvalChanges":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.ApprovalChange"}},"collectionId":{"description":"ID of the collection.","type":"string"},"reviewItems":{"type":"array","items":{"type":"string"}}}},"tokenization.v29.MsgUpdateCollection":{"description":"MsgUpdateCollection is used to update a collection.","type":"object","properties":{"aliasPathsToAdd":{"description":"Alias (non-wrapping) paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.AliasPathAddObject"}},"collectionApprovals":{"description":"New collection approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.CollectionApproval"}},"collectionId":{"description":"ID of the collection (0 for new collection).","type":"string"},"collectionMetadata":{"description":"New collection metadata to set.","$ref":"#/definitions/tokenization.v29.CollectionMetadata"},"collectionPermissions":{"description":"New collection permissions to set.","$ref":"#/definitions/tokenization.v29.CollectionPermissions"},"cosmosCoinWrapperPathsToAdd":{"description":"IBC wrapper paths to add.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.CosmosCoinWrapperPathAddObject"}},"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"New custom data to set.","type":"string"},"invariants":{"description":"Collection-level invariants that cannot be broken.\nThese are set upon genesis and cannot be modified.\nAddresses are generated by the keeper and stored in the collection.","$ref":"#/definitions/tokenization.v29.InvariantsAddObject"},"isArchived":{"description":"New isArchived to set.","type":"boolean"},"manager":{"description":"New manager to set.","type":"string"},"mintEscrowCoinsToTransfer":{"description":"Coins to be transferred to the mint escrow address.","type":"array","items":{"type":"object","$ref":"#/definitions/cosmos.base.v1beta1.Coin"}},"standards":{"description":"New standards to set.","type":"array","items":{"type":"string"}},"tokenMetadata":{"description":"New token metadata to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.TokenMetadata"}},"updateCollectionApprovals":{"description":"Indicates if collection approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCollectionMetadata":{"description":"Indicates if the collection metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCollectionPermissions":{"description":"Indicates if collection permissions should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateCustomData":{"description":"Indicates if the custom data should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateIsArchived":{"description":"Indicates if the isArchived should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateManager":{"description":"Indicates if the manager should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateStandards":{"description":"Indicates if the standards should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateTokenMetadata":{"description":"Indicates if the token metadata should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateValidTokenIds":{"description":"Indicates if the valid token IDs should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"validTokenIds":{"type":"array","title":"New token IDs to add to this collection","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}}}},"tokenization.v29.MsgUpdateCollectionResponse":{"description":"MsgUpdateCollectionResponse is the response to MsgUpdateCollection.","type":"object","properties":{"approvalChanges":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.ApprovalChange"}},"collectionId":{"description":"ID of the collection.","type":"string"},"reviewItems":{"type":"array","items":{"type":"string"}}}},"tokenization.v29.MsgUpdateDynamicStore":{"description":"MsgUpdateDynamicStore is used to update an existing dynamic store.","type":"object","properties":{"creator":{"description":"Address of the creator.","type":"string"},"customData":{"description":"Custom data field for storing arbitrary data associated with this dynamic store.","type":"string"},"defaultValue":{"description":"The new default value for uninitialized addresses (true/false).","type":"boolean"},"globalEnabled":{"description":"The global kill switch state (true = enabled, false = disabled/halted).\nCallers should query the current value first if they want to keep it unchanged.","type":"boolean"},"storeId":{"description":"ID of the dynamic store to update.","type":"string"},"uri":{"description":"URI for additional metadata or resources associated with this dynamic store.","type":"string"}}},"tokenization.v29.MsgUpdateDynamicStoreResponse":{"description":"MsgUpdateDynamicStoreResponse is the response to MsgUpdateDynamicStore.","type":"object"},"tokenization.v29.MsgUpdateParams":{"description":"MsgUpdateParams is the Msg/UpdateParams request type.","type":"object","properties":{"authority":{"description":"authority is the address that controls the module (defaults to x/gov unless overwritten).","type":"string"},"params":{"description":"params defines the module parameters to update.\n\nNOTE: All parameters must be supplied.","$ref":"#/definitions/tokenization.v29.Params"}}},"tokenization.v29.MsgUpdateParamsResponse":{"description":"MsgUpdateParamsResponse defines the response structure for executing a\nMsgUpdateParams message.","type":"object"},"tokenization.v29.MsgUpdateUserApprovals":{"description":"MsgUpdateUserApprovals is used to update user approvals.","type":"object","properties":{"autoApproveAllIncomingTransfers":{"description":"Auto-approve setting for all incoming transfers.","type":"boolean"},"autoApproveSelfInitiatedIncomingTransfers":{"description":"Auto-approve setting for self-initiated incoming transfers.","type":"boolean"},"autoApproveSelfInitiatedOutgoingTransfers":{"description":"Auto-approve setting for self-initiated outgoing transfers.","type":"boolean"},"collectionId":{"description":"ID of the collection.","type":"string"},"creator":{"description":"Address of the creator.","type":"string"},"incomingApprovals":{"description":"New incoming approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UserIncomingApproval"}},"outgoingApprovals":{"description":"New outgoing approvals to set.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UserOutgoingApproval"}},"updateAutoApproveAllIncomingTransfers":{"description":"Indicates if auto-approve settings for all incoming transfers should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateAutoApproveSelfInitiatedIncomingTransfers":{"description":"Indicates if auto-approve settings for self-initiated incoming transfers should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateAutoApproveSelfInitiatedOutgoingTransfers":{"description":"Indicates if auto-approve settings for self-initiated outgoing transfers should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateIncomingApprovals":{"description":"Indicates if incoming approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateOutgoingApprovals":{"description":"Indicates if outgoing approvals should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"updateUserPermissions":{"description":"Indicates if user permissions should be updated. If true, we set to value in this Msg. If false, we keep existing value.","type":"boolean"},"userPermissions":{"description":"New user permissions to set.","$ref":"#/definitions/tokenization.v29.UserPermissions"}}},"tokenization.v29.MsgUpdateUserApprovalsResponse":{"description":"MsgUpdateUserApprovalsResponse is the response to MsgUpdateUserApprovals.","type":"object","properties":{"incomingChanges":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.ApprovalChange"}},"outgoingChanges":{"type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.ApprovalChange"}},"reviewItems":{"type":"array","items":{"type":"string"}}}},"tokenization.v29.MustOwnTokens":{"description":"MustOwnTokens represents a condition where a user must own specific tokens\nto be approved to transfer.\n\n- collectionId: The ID of the collection for the tokens that must be owned\n- amountRange: The range of amounts the user must own (min to max)\n- ownershipTimes: The time ranges during which the user must own the tokens.\n- tokenIds: The token IDs the user must own.\n- overrideWithCurrentTime: If true, auto override ownershipTimes with the current time.\n- mustSatisfyForAllAssets: If true, the user must own all specified tokens; otherwise, owning any one for \u003e= 1 millisecond is sufficient.","type":"object","properties":{"amountRange":{"description":"The range of amounts the user must own (min to max).","$ref":"#/definitions/tokenization.v29.UintRange"},"collectionId":{"description":"The ID of the collection.","type":"string"},"mustSatisfyForAllAssets":{"description":"If true, the user must meet ownership requirements for all specified tokens; else, must meet requirements for any single token.","type":"boolean"},"overrideWithCurrentTime":{"description":"If true, override ownershipTimes with the current time.","type":"boolean"},"ownershipCheckParty":{"description":"The party to check ownership for. Options are \"initiator\", \"sender\", \"recipient\", or any valid bb1 address.\nIf a valid bb1 address is provided, ownership will be checked for that specific address.\nThis enables use cases like halt tokens where ownership is checked for an arbitrary address (e.g., halt token owner).\nDefaults to \"initiator\" if empty or if the value is not a recognized option or valid bb1 address.","type":"string"},"ownershipTimes":{"description":"The time ranges during which the user must own the tokens.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}},"tokenIds":{"description":"The token IDs the user must own.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}}}},"tokenization.v29.OutgoingApprovalCriteria":{"description":"OutgoingApprovalCriteria defines the criteria for approving outgoing transfers.\nThis is used for user-level outgoing approvals and only includes fields relevant to outgoing transfers.\nAll criteria must be satisfied for the approval to be considered valid.","type":"object","properties":{"altTimeChecks":{"description":"Alternative time-based checks for approval denial (offline hours/days). Defines time periods\nduring which this approval should be denied, such as specific hours of the day or days of the week.","$ref":"#/definitions/tokenization.v29.AltTimeChecks"},"approvalAmounts":{"description":"Threshold limit of amounts that can be transferred using this approval. Tracks cumulative amounts\ntransferred and enforces maximum limits per approval.","$ref":"#/definitions/tokenization.v29.ApprovalAmounts"},"autoDeletionOptions":{"description":"Auto-deletion options for this approval. Defines conditions under which this approval should be\nautomatically deleted (e.g., after a certain number of uses or time period).","$ref":"#/definitions/tokenization.v29.AutoDeletionOptions"},"coinTransfers":{"description":"The sdk.Coins that need to be transferred for approval. Defines required coin transfers (e.g., fees,\nroyalties) that must be executed alongside the token transfer for the approval to be valid.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.CoinTransfer"}},"dynamicStoreChallenges":{"description":"Dynamic store challenges that the initiator must pass for approval. The initiator must provide\nvalid proofs that satisfy all specified dynamic store challenges (e.g., key-value store lookups).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.DynamicStoreChallenge"}},"ethSignatureChallenges":{"description":"ETH signature challenges that the initiator must pass for approval. The initiator must provide\nvalid Ethereum signatures for all specified challenges. Each signature can only be used once.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.ETHSignatureChallenge"}},"evmQueryChallenges":{"description":"EVM query challenges that must pass for approval. Read-only contract queries\nthat verify external EVM state (e.g., token ownership in another contract).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.EVMQueryChallenge"}},"initiatorChecks":{"description":"Address checks for the initiator of the transfer. Validates that the initiator address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).","$ref":"#/definitions/tokenization.v29.AddressChecks"},"maxNumTransfers":{"description":"Maximum number of transfers that can be processed using this approval. Tracks the count of transfers\nand enforces the limit to prevent exceeding the allowed number of uses.","$ref":"#/definitions/tokenization.v29.MaxNumTransfers"},"merkleChallenges":{"description":"Merkle challenges that must be satisfied for approval. The initiator must provide valid Merkle proofs\nthat satisfy all specified challenges. Each challenge requires a proof that leads to a specific root hash.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.MerkleChallenge"}},"mustOwnTokens":{"description":"Must own tokens for approval. Defines token ownership requirements that must be satisfied for\nthe approval to be valid. The initiator must own the specified tokens at the specified ownership times.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.MustOwnTokens"}},"mustPrioritize":{"description":"If true, this approval must be explicitly prioritized in PrioritizedApprovals to be used.\nThis allows fine-grained control over which approvals are applied when multiple approvals could match.","type":"boolean"},"predeterminedBalances":{"description":"Predetermined balances that must be used for each approval. Defines the exact token amounts and IDs\nthat can be transferred when using this approval.","$ref":"#/definitions/tokenization.v29.PredeterminedBalances"},"recipientChecks":{"description":"Address checks for the recipient of the transfer. Validates that the recipient address meets the\nspecified criteria (e.g., whitelist, blacklist, protocol address requirements).\nNote: No sender checks are included for outgoing approvals since the sender is the user themselves.","$ref":"#/definitions/tokenization.v29.AddressChecks"},"requireToDoesNotEqualInitiatedBy":{"description":"Require the \"to\" address to not be equal to the \"initiated by\" address for approval.\nIf true, transfers where the recipient equals the initiator are forbidden.","type":"boolean"},"requireToEqualsInitiatedBy":{"description":"Require the \"to\" address to be equal to the \"initiated by\" address for approval.\nIf true, only transfers where the recipient matches the initiator are allowed.","type":"boolean"},"votingChallenges":{"description":"Voting challenges that must be satisfied for approval. The initiator must provide\nvalid votes that meet the quorum threshold for all specified challenges.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.VotingChallenge"}}}},"tokenization.v29.Params":{"description":"Params defines the parameters for the module.","type":"object","properties":{"affiliate_percentage":{"type":"string","title":"affiliate_percentage defines the percentage of the transfer amount that goes to the affiliate"},"allowed_denoms":{"type":"array","title":"allowed_denoms defines the list of denoms that are allowed to be used in coin_transfers","items":{"type":"string"}}}},"tokenization.v29.PathMetadata":{"description":"This message defines the metadata for paths (alias paths and cosmos coin wrapper paths).\nThe interpretation of this metadata should follow the collection standard.","type":"object","properties":{"customData":{"description":"Custom data or additional information related to the path metadata.","type":"string"},"uri":{"description":"The URI (Uniform Resource Identifier) associated with the path metadata.","type":"string"}}},"tokenization.v29.PrecalculateBalancesFromApprovalDetails":{"description":"PrecalculateBalancesFromApprovalDetails defines the details for precalculating balances from an approval.","type":"object","properties":{"approvalId":{"description":"The ID of the approval.","type":"string"},"approvalLevel":{"description":"The level of the approval. Can be \"collection\", \"incoming\", or \"outgoing\".","type":"string"},"approverAddress":{"description":"The address of the approver. Leave blank \"\" if approvalLevel == \"collection\".","type":"string"},"precalculationOptions":{"description":"The options for precalculating the balances.","$ref":"#/definitions/tokenization.v29.PrecalculationOptions"},"version":{"description":"The version of the approval.","type":"string"}}},"tokenization.v29.PrecalculationOptions":{"description":"PrecalculationOptions defines the options for precalculating the balances.","type":"object","properties":{"overrideTimestamp":{"description":"The timestamp to override with when calculating the balances.","type":"string"},"scalingMultiplier":{"description":"When \u003e 0 and allowAmountScaling is true on the approval, all precalculated balance amounts\nare multiplied by this value. Must be \u003c= maxScalingMultiplier. 0 means no scaling (returns 1x base).","type":"string"},"tokenIdsOverride":{"description":"The IDs to override for the transfer. Only applicable if using this option in precalculation.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}}}},"tokenization.v29.PredeterminedBalances":{"description":"PredeterminedBalances represents balances with predetermined order calculation.","type":"object","properties":{"incrementedBalances":{"description":"Balances that have a starting amount and increment. If this is nil, then we use the manual balances.","$ref":"#/definitions/tokenization.v29.IncrementedBalances"},"manualBalances":{"description":"Manual balances that can be entered. If this is nil, then we use the incremented balances.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.ManualBalances"}},"orderCalculationMethod":{"description":"The method to calculate the order of predetermined balances.","$ref":"#/definitions/tokenization.v29.PredeterminedOrderCalculationMethod"}}},"tokenization.v29.PredeterminedOrderCalculationMethod":{"description":"PredeterminedOrderCalculationMethod defines the method to calculate predetermined balances order.","type":"object","properties":{"challengeTrackerId":{"description":"If useMerkleChallengeLeafIndex is set, then this is the ID of the challenge tracker associated with this calculation method.","type":"string"},"useMerkleChallengeLeafIndex":{"description":"Use the Merkle challenge leaf index to calculate the order. Ex: Transfer that uses leaf index 0 gets the first balance, transfer that uses leaf index 1 gets the second balance, etc.","type":"boolean"},"useOverallNumTransfers":{"description":"Use the overall number of transfers to calculate the order. Ex: First transfer gets the first balance, second transfer gets the second balance, etc.","type":"boolean"},"usePerFromAddressNumTransfers":{"description":"Use the number of transfers per \"from\" address to calculate the order. Ex: First transfer from address A gets the first balance, second transfer from address A gets the second balance, etc.","type":"boolean"},"usePerInitiatedByAddressNumTransfers":{"description":"Use the number of transfers per \"initiated by\" address to calculate the order. Ex: First transfer initiated by address A gets the first balance, second transfer initiated by address A gets the second balance, etc.","type":"boolean"},"usePerToAddressNumTransfers":{"description":"Use the number of transfers per \"to\" address to calculate the order. Ex: First transfer to address A gets the first balance, second transfer to address A gets the second balance, etc.","type":"boolean"}}},"tokenization.v29.RecurringOwnershipTimes":{"description":"RecurringOwnershipTimes represents a list of recurring ownership times.","type":"object","properties":{"chargePeriodLength":{"type":"string","title":"Grace period length where you can charge the next interval (nextStartTime - chargePeriodLength) until (nextStartTime) = charge period"},"intervalLength":{"description":"The interval length in unix milliseconds.","type":"string"},"startTime":{"description":"The original start time of the first interval.","type":"string"}}},"tokenization.v29.ResetTimeIntervals":{"description":"Time intervals to reset the trackers at.","type":"object","properties":{"intervalLength":{"description":"Interval length in unix milliseconds.","type":"string"},"startTime":{"description":"Original start time of the first interval.","type":"string"}}},"tokenization.v29.TokenIdsActionPermission":{"description":"TokenIdsActionPermission defines the permissions for performing an action for specific tokens.\nCurrently, this is only used for creating new tokens.\n\nEx: If you want to lock the ability to create new tokens for tokenIds [1,2] at ownershipTimes 1/1/2020 - 1/1/2021, \nyou could set the combination (tokenIds: [1,2], ownershipTimes: [1/1/2020 - 1/1/2021]) to always be forbidden.","type":"object","properties":{"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}},"tokenIds":{"description":"Specifies the token IDs involved in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}}}},"tokenization.v29.TokenMetadata":{"description":"This message defines the metadata for specific token IDs.\nThe interpretation of this metadata should follow the collection standard.","type":"object","properties":{"customData":{"description":"Custom data or additional information related to the token metadata.","type":"string"},"tokenIds":{"description":"The token IDs to which this metadata applies.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}},"uri":{"description":"The URI (Uniform Resource Identifier) associated with the token metadata.","type":"string"}}},"tokenization.v29.Transfer":{"description":"Transfer defines the details of a transfer of tokens.","type":"object","properties":{"balances":{"description":"The balances to be transferred.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.Balance"}},"ethSignatureProofs":{"description":"The ETH signature proofs / solutions for all ETH signature challenges required for the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.ETHSignatureProof"}},"from":{"description":"The address of the sender of the transfer.","type":"string"},"memo":{"description":"The memo for the transfer.","type":"string"},"merkleProofs":{"description":"The Merkle proofs / solutions for all Merkle challenges required for the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.MerkleProof"}},"onlyCheckPrioritizedCollectionApprovals":{"description":"Whether to only check prioritized approvals for the transfer. \nIf true, we will only check the prioritized approvals and fail if none of them match (i.e. do not check any non-prioritized approvals).\nIf false, we will check the prioritized approvals first and then scan through the rest of the approvals.","type":"boolean"},"onlyCheckPrioritizedIncomingApprovals":{"description":"Whether to only check prioritized approvals for the transfer. \nIf true, we will only check the prioritized approvals and fail if none of them match (i.e. do not check any non-prioritized approvals).\nIf false, we will check the prioritized approvals first and then scan through the rest of the approvals.","type":"boolean"},"onlyCheckPrioritizedOutgoingApprovals":{"description":"Whether to only check prioritized approvals for the transfer. \nIf true, we will only check the prioritized approvals and fail if none of them match (i.e. do not check any non-prioritized approvals).\nIf false, we will check the prioritized approvals first and then scan through the rest of the approvals.","type":"boolean"},"precalculateBalancesFromApproval":{"description":"If defined, we will use the predeterminedBalances from the specified approval to calculate the balances at execution time.\nWe will override the balances field with the precalculated balances. Only applicable for approvals with predeterminedBalances set.","$ref":"#/definitions/tokenization.v29.PrecalculateBalancesFromApprovalDetails"},"prioritizedApprovals":{"description":"The prioritized approvals for the transfer. By default, we scan linearly through the approvals and use the first match.\nThis field can be used to prioritize specific approvals and scan through them first.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.ApprovalIdentifierDetails"}},"toAddresses":{"description":"The addresses of the recipients of the transfer.","type":"array","items":{"type":"string"}}}},"tokenization.v29.UintRange":{"description":"The UintRange is a range of IDs from some start to some end (inclusive).\nuintRanges are one of the core types used.\n\nThey are used for everything from token IDs to time ranges to min/max balance amounts.\n\nSee the BitBadges documentation for more information.","type":"object","properties":{"end":{"description":"The ending value of the range (inclusive).","type":"string"},"start":{"description":"The starting value of the range (inclusive).","type":"string"}}},"tokenization.v29.UserApprovalSettings":{"description":"UserApprovalSettings defines issuer-imposed constraints on user-level approvals.\nSet on collection-level ApprovalCriteria and propagated to user-level approvals\nduring greedy transfer matching. Each balance slice carries its own settings.","type":"object","properties":{"allowedDenoms":{"description":"Restricts which denoms user-level coinTransfers can reference (beyond params-level AllowedDenoms).\nIf empty, all params-allowed denoms are permitted.","type":"array","items":{"type":"string"}},"disableUserCoinTransfers":{"description":"If true, user-level approvals cannot trigger coinTransfers at all for transfers matched by this collection approval.","type":"boolean"},"userRoyalties":{"description":"User-level royalties to enforce for transfers matched by this collection approval.","$ref":"#/definitions/tokenization.v29.UserRoyalties"}}},"tokenization.v29.UserBalanceStore":{"description":"UserBalanceStore is the store for the user balances for a collection.\n\nIt consists of a list of balances, a list of approved outgoing transfers, and a list of approved incoming transfers,\nas well as the permissions for updating the approved incoming/outgoing transfers.\n\nUpon initialization, all fields (minus the balances) are set to the defaults specified by the collection.\n\nThe outgoing transfers can be used to allow / disallow transfers which are sent from this user.\nIf a transfer has no match, then it is disallowed by default, unless from == initiatedBy (i.e. initiated by this user)\nand autoApproveSelfInitiatedOutgoingTransfers is set to true.\n\nThe incoming transfers can be used to allow / disallow transfers which are sent to this user.\nIf a transfer has no match, then it is disallowed by default, unless to == initiatedBy (i.e. initiated by this user)\nand autoApproveSelfInitiatedIncomingTransfers is set to true.\n\nNote that the user approved transfers are only checked if the collection approved transfers do not specify to override\nthe user approved transfers. \n\nThe permissions are used to determine whether the user can update the approved incoming/outgoing transfers and auto approvals.","type":"object","properties":{"autoApproveAllIncomingTransfers":{"description":"Whether to auto-approve all incoming transfers by default. \nThis is just shorthand for adding an accept everything incoming approval\nwith no restrictions.","type":"boolean"},"autoApproveSelfInitiatedIncomingTransfers":{"description":"Whether to auto-approve self-initiated incoming transfers for this user (i.e. to == initiatedBy).","type":"boolean"},"autoApproveSelfInitiatedOutgoingTransfers":{"description":"Whether to auto-approve self-initiated outgoing transfers for this user (i.e. from == initiatedBy).","type":"boolean"},"balances":{"description":"The list of balances associated with this user.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.Balance"}},"incomingApprovals":{"description":"The list of approved incoming transfers for this user.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UserIncomingApproval"}},"outgoingApprovals":{"description":"The list of approved outgoing transfers for this user.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UserOutgoingApproval"}},"userPermissions":{"description":"The permissions for this user's actions and transfers.","$ref":"#/definitions/tokenization.v29.UserPermissions"}}},"tokenization.v29.UserIncomingApproval":{"description":"UserIncomingApproval defines the rules for the approval of an incoming transfer to a user.","type":"object","properties":{"approvalCriteria":{"description":"The criteria that must be met for this approval to be considered.","$ref":"#/definitions/tokenization.v29.IncomingApprovalCriteria"},"approvalId":{"description":"The ID of this approval. Must be unique per level (i.e. collection, outgoing, incoming).","type":"string"},"customData":{"description":"Arbitrary custom data associated with this approval.","type":"string"},"fromListId":{"description":"The list ID for the sender of the transfer.","type":"string"},"initiatedByListId":{"description":"The list ID for the user who initiated the transfer.","type":"string"},"ownershipTimes":{"description":"The allowed range of ownership times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}},"tokenIds":{"description":"The allowed range of token IDs for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}},"transferTimes":{"description":"The allowed range of transfer times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}},"uri":{"description":"The URI associated with this approval, optionally providing metadata about the approval.","type":"string"},"version":{"description":"Version of the approval. Maintained internally.","type":"string"}}},"tokenization.v29.UserIncomingApprovalPermission":{"description":"UserIncomingApprovalPermission defines the permissions for updating the user's approved incoming transfers.\n\nSee CollectionApprovalPermission for more details. This is equivalent without the toListId field because that is always the user.","type":"object","properties":{"approvalId":{"description":"Identifier for the approvalId. You can use \"All\" or \"!approvalId\" for shorthand.\nIf you use \"All\", this approval will match to all approvalIds.\nIf you use \"!approvalId\", this approval will match to all approvalIds except for approvalId.\nIf you use \"approvalId\", this approval will match to only the specified approvalId and fail on all others.","type":"string"},"fromListId":{"description":"Identifier for the sender list.","type":"string"},"initiatedByListId":{"description":"Identifier for the initiator list (who is approved?).","type":"string"},"ownershipTimes":{"description":"Specifies the ownership times for the tokens in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}},"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}},"tokenIds":{"description":"Specifies the token IDs involved in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}},"transferTimes":{"description":"Specifies the times when the transfer can occur.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}}}},"tokenization.v29.UserOutgoingApproval":{"description":"UserOutgoingApproval defines the rules for the approval of an outgoing transfer from a user.","type":"object","properties":{"approvalCriteria":{"description":"The criteria that must be met for this approval to be considered.","$ref":"#/definitions/tokenization.v29.OutgoingApprovalCriteria"},"approvalId":{"description":"The ID of this approval. Must be unique per level (i.e. collection, outgoing, incoming).","type":"string"},"customData":{"description":"Arbitrary custom data associated with this approval.","type":"string"},"initiatedByListId":{"description":"The list ID for the user who initiated the transfer.","type":"string"},"ownershipTimes":{"description":"The allowed range of ownership times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}},"toListId":{"description":"The list ID for the recipient of the transfer.","type":"string"},"tokenIds":{"description":"The allowed range of token IDs for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}},"transferTimes":{"description":"The allowed range of transfer times for approval.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}},"uri":{"description":"The URI associated with this approval, optionally providing metadata about the approval.","type":"string"},"version":{"description":"Version of the approval. Maintained internally.","type":"string"}}},"tokenization.v29.UserOutgoingApprovalPermission":{"description":"UserOutgoingApprovalPermission defines the permissions for updating the user's approved outgoing transfers.","type":"object","properties":{"approvalId":{"description":"Identifier for the approvalId. You can use \"All\" or \"!approvalId\" for shorthand.\nIf you use \"All\", this approval will match to all approvalIds.\nIf you use \"!approvalId\", this approval will match to all approvalIds except for approvalId.\nIf you use \"approvalId\", this approval will match to only the specified approvalId and fail on all others.","type":"string"},"initiatedByListId":{"description":"Identifier for the initiator list (who is approved?).","type":"string"},"ownershipTimes":{"description":"Specifies the ownership times for the tokens in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}},"permanentlyForbiddenTimes":{"description":"Specifies the times when this permission is forbidden. Can not overlap with permanentlyPermittedTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}},"permanentlyPermittedTimes":{"description":"Specifies the times when this permission is permitted. Can not overlap with permanentlyForbiddenTimes.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}},"toListId":{"description":"Identifier for the recipient list.","type":"string"},"tokenIds":{"description":"Specifies the token IDs involved in the transfer.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}},"transferTimes":{"description":"Specifies the times when the transfer can occur.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UintRange"}}}},"tokenization.v29.UserPermissions":{"description":"UserPermissions defines the permissions for the user about their approvals (i.e., what the user can and cannot do).\n\nSee CollectionPermissions for more details on the different types of permissions.\n\ncanUpdateOutgoingApprovals and canUpdateOutgoingApprovals follow the same as the canUpdateCollectionApprovals in CollectionPermissions,\nbut certain fields are removed because they are not relevant to the user.","type":"object","properties":{"canUpdateAutoApproveAllIncomingTransfers":{"description":"Permissions related to updating auto-approval settings for all incoming transfers (whether they are allowed by default).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.ActionPermission"}},"canUpdateAutoApproveSelfInitiatedIncomingTransfers":{"description":"Permissions related to updating auto-approval settings for self-initiated incoming transfers (whether they are allowed by default).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.ActionPermission"}},"canUpdateAutoApproveSelfInitiatedOutgoingTransfers":{"description":"Permissions related to updating auto-approval settings for self-initiated outgoing transfers (whether they are allowed by default).","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.ActionPermission"}},"canUpdateIncomingApprovals":{"description":"Permissions related to updating the user's approved incoming transfers.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UserIncomingApprovalPermission"}},"canUpdateOutgoingApprovals":{"description":"Permissions related to updating the user's approved outgoing transfers.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.UserOutgoingApprovalPermission"}}}},"tokenization.v29.UserRoyalties":{"description":"UserRoyalties defines the royalties for a user.","type":"object","properties":{"payoutAddress":{"description":"Payout address for the royalties.","type":"string"},"percentage":{"description":"Percentage of the transfer amount to apply as royalties. 1 to 10000 represents basis points.","type":"string"}}},"tokenization.v29.Voter":{"description":"Voter defines a voter with their address and weight.","type":"object","properties":{"address":{"description":"The address of the voter.","type":"string"},"weight":{"description":"The weight of this voter's vote.","type":"string"}}},"tokenization.v29.VotingChallenge":{"description":"VotingChallenge defines a rule for approval in the form of a voting/multi-sig challenge.\nRequires a weighted quorum threshold to be met through votes from specified voters.\nAll challenges must be met with valid solutions for the transfer to be approved.\n\nIMPORTANT: Votes are stored separately and can be updated. The threshold is calculated as a percentage\nof total possible weight (all voters), not just voted weight. If you update the proposal ID, then the\nvote tracker will reset and start a new tally. We recommend using a unique proposal ID for each challenge\nto prevent overlap and unexpected behavior.","type":"object","properties":{"customData":{"description":"Arbitrary custom data associated with this voting challenge.","type":"string"},"delayAfterQuorum":{"description":"Mandatory delay in milliseconds after quorum is reached before the transfer can execute.\nIf set, the transfer will fail until: now \u003e= quorumReachedTimestamp + delayAfterQuorum.\nDuring the delay, signers can remove their votes to cancel (quorum drops = delay resets).","type":"string"},"proposalId":{"type":"string","title":"The ID of this voting challenge for tracking votes (scoped like challengeTrackerId).\nFormat: collectionId-approverAddress-approvalLevel-approvalId-challengeId"},"quorumThreshold":{"description":"The quorum threshold as a percentage (0-100) of total possible weight that must vote \"yes\".\nExample: 50 means 50% of total voter weight must vote yes for approval.","type":"string"},"resetAfterExecution":{"description":"If true, all votes for this challenge are cleared after a successful transfer execution.\nThis makes the challenge reusable (e.g., for vault withdrawals that need fresh approval each time).","type":"boolean"},"uri":{"description":"The URI associated with this voting challenge.","type":"string"},"voters":{"description":"List of voters with their weights. Each voter can cast a weighted vote.","type":"array","items":{"type":"object","$ref":"#/definitions/tokenization.v29.Voter"}}}}},"tags":[{"name":"Msg"},{"name":"Query"},{"name":"Service"},{"name":"ReflectionService"},{"name":"ABCIListenerService"},{"name":"ABCI"}]} \ No newline at end of file diff --git a/proto/buf.lock b/proto/buf.lock index 5f435c16..583aa03c 100644 --- a/proto/buf.lock +++ b/proto/buf.lock @@ -11,6 +11,11 @@ deps: repository: cosmos-sdk commit: 65fa41963e6a41dd95a35934239029df digest: shake256:f67571e6f86dba07c678908f1734ca5a855416e1ecd903c3ebcae49f93c2a7114cdc64538ee8012cc3bb45e9bfd4345395f43d2ac2c01821ca32e5d734cb4dfd + - remote: buf.build + owner: cosmos + repository: evm + commit: 5bbc59c5e38440cb8ede77505362af3a + digest: shake256:d7cc2e772d5ce3f2f8cfc5758212f769fce86b6a75caa843576e7f284765dceacfe80fe7c5fa8370b281448c3926e49504f7adf66376a69c1e70437acf52910e - remote: buf.build owner: cosmos repository: gogo-proto @@ -29,10 +34,10 @@ deps: - remote: buf.build owner: googleapis repository: googleapis - commit: 004180b77378443887d3b55cabc00384 - digest: shake256:d26c7c2fd95f0873761af33ca4a0c0d92c8577122b6feb74eb3b0a57ebe47a98ab24a209a0e91945ac4c77204e9da0c2de0020b2cedc27bdbcdea6c431eec69b + commit: c17df5b2beca46928cc87d5656bd5343 + digest: shake256:c62ecead9b13485a02893cd678a6c81e40879bf00ea509bbc6fd8f1b2cc33eccf6a85c259b08d1e0f052f693cbfc7dfda236e9665b1d6869b8e1132a794a61e2 - remote: buf.build owner: protocolbuffers repository: wellknowntypes - commit: 4e1ccfa6827947beb55974645a315b8d - digest: shake256:7535ac337929b4cfdd12d52bef75155277e715bdc364fcb41556a95fa0d3f58510b4e210f609cb91f9a47363a59c1643b6b1059d7702d0e900059271fde1c03a + commit: 9d16d599a978406980f6e2f081331a93 + digest: shake256:946278992baee216f7742401780df3727195ffc068a30e21769c7e808d16ee25e9e48e51f938b6ddbe405abe46c45091a56ad90aac1cad0d809d16cbad889ff1 diff --git a/proto/buf.yaml b/proto/buf.yaml index bc581b15..8cf29d06 100644 --- a/proto/buf.yaml +++ b/proto/buf.yaml @@ -1,25 +1,26 @@ breaking: - use: - - FILE + use: + - FILE deps: -- buf.build/protocolbuffers/wellknowntypes -- buf.build/cosmos/cosmos-sdk -- buf.build/cosmos/cosmos-proto -- buf.build/cosmos/gogo-proto -- buf.build/googleapis/googleapis -- buf.build/cosmos/ics23 -- buf.build/cosmos/ibc + - buf.build/protocolbuffers/wellknowntypes + - buf.build/cosmos/cosmos-sdk + - buf.build/cosmos/cosmos-proto + - buf.build/cosmos/gogo-proto + - buf.build/googleapis/googleapis + - buf.build/cosmos/ics23 + - buf.build/cosmos/ibc + - buf.build/cosmos/evm lint: - except: - - UNARY_RPC - - COMMENT_FIELD - - SERVICE_SUFFIX - - PACKAGE_VERSION_SUFFIX - - RPC_REQUEST_STANDARD_NAME - ignore: - - tendermint - use: - - DEFAULT - - COMMENTS - - FILE_LOWER_SNAKE_CASE + except: + - UNARY_RPC + - COMMENT_FIELD + - SERVICE_SUFFIX + - PACKAGE_VERSION_SUFFIX + - RPC_REQUEST_STANDARD_NAME + ignore: + - tendermint + use: + - DEFAULT + - COMMENTS + - FILE_LOWER_SNAKE_CASE version: v1 From 335092d9fb76c2438c718b5d934d19cca35dc795 Mon Sep 17 00:00:00 2001 From: Trevor Miller <61992896+trevormil@users.noreply.github.com> Date: Wed, 22 Apr 2026 08:48:31 -0400 Subject: [PATCH 13/24] docs(tokenization): document shared-escrow drain safety for backed paths (#77) Add cross-referenced comments at the three sites an audit agent would inspect when flagging the shared CosmosCoinBackedPath escrow address: - generatePathAddress: explain that backed-path derivation is intentionally not scoped by collection ID, and what makes that tolerable today. - ValidateTransferWithInvariants: note that the from=Mint block on backed collections is load-bearing for drain safety, not just UX. - HandleSpecialAddressBacking: walk through why the naive-looking SendCoins(escrow -> initiator) line is net-zero under current invariants, plus the caveats that would flip it back to live. No functional change. This addresses a backlog security audit finding (cross-collection backed-path drain via shared denom) that was re-flagged despite being blocked by the existing from=Mint invariant in v30. Co-authored-by: Claude Opus 4.7 (1M context) --- .../msg_server_universal_update_collection.go | 13 ++++++++ x/tokenization/keeper/transfer_wrap.go | 32 +++++++++++++++++-- x/tokenization/types/validate_basic.go | 14 +++++++- 3 files changed, 56 insertions(+), 3 deletions(-) diff --git a/x/tokenization/keeper/msg_server_universal_update_collection.go b/x/tokenization/keeper/msg_server_universal_update_collection.go index 62aa66d9..087d09e6 100644 --- a/x/tokenization/keeper/msg_server_universal_update_collection.go +++ b/x/tokenization/keeper/msg_server_universal_update_collection.go @@ -79,6 +79,19 @@ func ensureMintForbiddenPermission(permissions *types.CollectionPermissions, has // Security: Module addresses are derived using NewModuleCredential which uses the module name, // a unique prefix, and the path bytes. This makes collisions with user addresses extremely unlikely. // All generated path addresses are automatically marked as reserved protocol addresses to prevent conflicts. +// +// Cross-collection shared-address note: +// For backed paths (prefix=BackedPathGenerationPrefix, pathString=SideA.Denom), this +// derivation is NOT scoped by collection ID. Two collections declaring the same SideA.Denom +// produce the same bech32. That is intentionally tolerated today because the escrow drain +// path (see HandleSpecialAddressBacking in transfer_wrap.go) is gated by the from=Mint +// invariant in ValidateTransferWithInvariants, which prevents an attacker from minting +// tokens in a second collection that targets the same denom. Wrapper paths have the same +// shape but are safe for a different reason -- they operate on WrappedDenomPrefix+collectionId +// denoms, not raw bank coins. If the Mint-block invariant is ever relaxed, this derivation +// should be changed to mix the collection ID into fullPathBytes (or the reservation store +// extended to bind {address -> collectionId}) before that lands, or cross-collection drain +// becomes live for the backed path. func generatePathAddress(pathString string, prefix []byte) (sdk.AccAddress, error) { // Validate path string is not empty if pathString == "" { diff --git a/x/tokenization/keeper/transfer_wrap.go b/x/tokenization/keeper/transfer_wrap.go index 44362eeb..9fae2096 100644 --- a/x/tokenization/keeper/transfer_wrap.go +++ b/x/tokenization/keeper/transfer_wrap.go @@ -163,8 +163,36 @@ func (k Keeper) HandleSpecialAddressWrapping( return nil } -// HandleSpecialAddressBacking processes cosmos coin backing/unbacking for special addresses -// This uses bankKeeper.SendCoins instead of minting/burning coins +// HandleSpecialAddressBacking processes cosmos coin backing/unbacking for special addresses. +// This uses bankKeeper.SendCoins instead of minting/burning coins. +// +// Cross-collection shared-escrow note (not exploitable under current invariants): +// The escrow address `path.Address` is derived from (denom, BackedPathGenerationPrefix) only, +// so two collections declaring the same SideA.Denom resolve to the same bech32. A naive read +// of the code below (SendCoins from specialAddressAcc -> initiator) looks like it would let a +// new collection drain a victim collection's pre-existing bank balance at the shared address. +// That drain is currently blocked upstream by: +// 1. ValidateTransferWithInvariants (validate_basic.go) rejects from=Mint transfers on any +// collection with CosmosCoinBackedPath, so an attacker cannot mint collection tokens +// from thin air to feed into the backing direction. +// 2. The only way to obtain collection tokens is the legitimate unbacking flow, which +// requires SendCoins(initiator -> specialAddress, ibcDenom) first -- i.e. the attacker +// has to deposit the real bank coin before they can redeem it. +// 3. calculateConversionMultiplier enforces evenly-divisible conversions, so the same +// SideA/SideB ratio applies in both directions -- redeem returns exactly what was deposited. +// Together (1)+(2)+(3) make the drain net-zero for an attacker under their OWN collection's +// conversion, regardless of what other collections have deposited at the shared address. +// +// Caveats / do NOT remove lightly: +// - Defense-in-depth gap: ValidateCollectionApprovalsWithInvariants does not reject +// from=Mint approvals at creation time on backed collections; the block only fires +// at transfer time. Hardening would move the check earlier. +// - If a future change introduces any collection-token issuance path that bypasses the +// from=Mint invariant (e.g. a new message type, a cross-chain inbound mint, a relaxed +// invariant), the shared-address drain becomes live and this comment is no longer true. +// - Scoping the derived address by collectionId (mixing collection.CollectionId into the +// module-credential input in generatePathAddress) would make this defense structural +// rather than invariant-dependent, and is the recommended long-term fix. func (k Keeper) HandleSpecialAddressBacking( ctx sdk.Context, collection *types.TokenCollection, diff --git a/x/tokenization/types/validate_basic.go b/x/tokenization/types/validate_basic.go index 05f90620..ac6f03cb 100644 --- a/x/tokenization/types/validate_basic.go +++ b/x/tokenization/types/validate_basic.go @@ -1225,7 +1225,19 @@ func ValidateTransferWithInvariants(ctx sdk.Context, transfer *Transfer, canChan } } - // If cosmosCoinBackedPath is set, transfers from Mint address are not allowed + // If cosmosCoinBackedPath is set, transfers from Mint address are not allowed. + // + // SECURITY: this check is load-bearing for cross-collection drain safety, not just + // a UX/accounting rule. The backed-path escrow address is derived from (denom, prefix) + // only, so two collections declaring the same SideA.Denom share one on-chain address + // that may hold real bank coins deposited by a victim collection's users. Blocking + // from=Mint here means an attacker cannot conjure collection tokens out of thin air + // to feed into the backing direction -- they can only obtain tokens via the legitimate + // unbacking flow, which requires depositing the real bank coin first. Combined with + // evenly-divisible symmetric conversion, this makes the shared-escrow drain net-zero. + // See HandleSpecialAddressBacking in keeper/transfer_wrap.go for the full argument. + // Do NOT relax this check without also scoping the backed-path address derivation + // by collection ID, or the drain becomes live. if collection.Invariants.CosmosCoinBackedPath != nil { if IsMintAddress(transfer.From) { return sdkerrors.Wrapf(ErrInvalidRequest, "transfers from Mint address are not allowed when cosmosCoinBackedPath is set") From 6e2d8cbb3b124bc5708ed477875e3dfab3349a7c Mon Sep 17 00:00:00 2001 From: Trevor Miller <61992896+trevormil@users.noreply.github.com> Date: Fri, 24 Apr 2026 13:16:43 -0400 Subject: [PATCH 14/24] fix(tokenization): MsgCreateCollection silently dropped ValidTokenIds (#79) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The CreateCollection msg server builds a MsgUniversalUpdateCollection and dispatches to it, but omitted UpdateValidTokenIds: true. The universal handler gates ValidTokenIds ingestion on that flag, so every new collection created via MsgCreateCollection landed with empty validTokenIds on chain — bricking tokens 1..N since no IDs were valid. The bug went unnoticed because no existing test exercises the MsgCreateCollection path directly; all integration helpers route through UniversalUpdateCollection. Added a regression test that FAILS pre-fix (asserts expected validTokenIds == on-chain state). Real-world symptom: collection 83 on testnet has validTokenIds=[] while the submitted MsgCreateCollection payload explicitly set validTokenIds=[{start:1,end:1}]. Co-authored-by: Claude Opus 4.7 (1M context) --- .../keeper/msg_server_create_collection.go | 1 + .../keeper/msg_server_new_collection_test.go | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/x/tokenization/keeper/msg_server_create_collection.go b/x/tokenization/keeper/msg_server_create_collection.go index 9b5b55aa..b8696817 100644 --- a/x/tokenization/keeper/msg_server_create_collection.go +++ b/x/tokenization/keeper/msg_server_create_collection.go @@ -30,6 +30,7 @@ func (k msgServer) CreateCollection(goCtx context.Context, msg *types.MsgCreateC DefaultBalances: msg.DefaultBalances, // Applicable to creations and updates + UpdateValidTokenIds: true, ValidTokenIds: msg.ValidTokenIds, UpdateCollectionPermissions: true, CollectionPermissions: msg.CollectionPermissions, diff --git a/x/tokenization/keeper/msg_server_new_collection_test.go b/x/tokenization/keeper/msg_server_new_collection_test.go index 0c38ee41..6eee1ead 100644 --- a/x/tokenization/keeper/msg_server_new_collection_test.go +++ b/x/tokenization/keeper/msg_server_new_collection_test.go @@ -95,6 +95,32 @@ func (suite *TestSuite) TestNewCollectionDuplicateTokenIds() { suite.Require().Error(err, "Error creating token: %s") } +// Regression: MsgCreateCollection wraps MsgUniversalUpdateCollection and must +// set UpdateValidTokenIds=true so ValidTokenIds persists to chain state. +func (suite *TestSuite) TestCreateCollectionPersistsValidTokenIds() { + wctx := sdk.WrapSDKContext(suite.ctx) + + validTokenIds := []*types.UintRange{{Start: sdkmath.NewUint(1), End: sdkmath.NewUint(1)}} + + res, err := suite.msgServer.CreateCollection(wctx, &types.MsgCreateCollection{ + Creator: bob, + ValidTokenIds: validTokenIds, + CollectionPermissions: &types.CollectionPermissions{ + CanUpdateValidTokenIds: []*types.TokenIdsActionPermission{{PermanentlyPermittedTimes: GetFullUintRanges()}}, + }, + DefaultBalances: &types.UserBalanceStore{ + AutoApproveSelfInitiatedOutgoingTransfers: true, + AutoApproveSelfInitiatedIncomingTransfers: true, + }, + }) + suite.Require().NoError(err, "CreateCollection failed") + suite.Require().NotNil(res) + + collection, err := GetCollection(suite, wctx, res.CollectionId) + suite.Require().NoError(err) + AssertUintRangesEqual(suite, validTokenIds, collection.ValidTokenIds) +} + func (suite *TestSuite) TestNewCollectionNonSequentialTokenIds() { wctx := sdk.WrapSDKContext(suite.ctx) From 14671997ce2bf99f8365af263401833eb6519740 Mon Sep 17 00:00:00 2001 From: Trevor Miller <61992896+trevormil@users.noreply.github.com> Date: Sun, 26 Apr 2026 07:36:47 -0400 Subject: [PATCH 15/24] install.sh: print PATH hint when bitbadges-cli isn't on PATH (#81) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit After bun/npm install of the SDK CLI, detect whether the binary landed in a directory that isn't on the user's PATH and print the exact `export PATH=...` line they need (resolved per-package-manager: `bun pm bin -g` for bun, `npm config get prefix`/bin for npm). The previous hint was generic ("Check your global bin directory") which left users — particularly those on bun's default ~/.bun/bin or an unconfigured npm global prefix — to guess. Co-authored-by: Claude Opus 4.7 (1M context) --- install.sh | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 6c9070c6..9a10d8ad 100755 --- a/install.sh +++ b/install.sh @@ -213,8 +213,16 @@ main() { if command -v bitbadges-cli >/dev/null 2>&1; then echo "Successfully installed bitbadges-cli" - elif command -v bun >/dev/null 2>&1 || command -v npm >/dev/null 2>&1; then - echo "Note: bitbadges-cli installed but may not be in PATH. Check your global bin directory." + elif command -v bun >/dev/null 2>&1; then + bun_bin="$(bun pm bin -g 2>/dev/null || echo "$HOME/.bun/bin")" + echo "Note: bitbadges-cli installed via bun but may not be in PATH. Add it with:" + echo " export PATH=\"${bun_bin}:\$PATH\"" + elif command -v npm >/dev/null 2>&1; then + npm_prefix="$(npm config get prefix 2>/dev/null)" + if [ -n "$npm_prefix" ]; then + echo "Note: bitbadges-cli installed via npm but may not be in PATH. Add it with:" + echo " export PATH=\"${npm_prefix}/bin:\$PATH\"" + fi fi echo "" From 266a4a368515691e65f5bf3fcd8466e73753844c Mon Sep 17 00:00:00 2001 From: Trevor Miller <61992896+trevormil@users.noreply.github.com> Date: Sun, 26 Apr 2026 07:54:58 -0400 Subject: [PATCH 16/24] docs(install): use https://install.bitbadges.io short URL (#82) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaces the raw.githubusercontent.com URL in install.sh's header comments and in the GitHub Release body template with the new Cloudflare-Worker-fronted short URL. Source-of-truth is unchanged — install.bitbadges.io proxies the same master install.sh — but new copy-paste surfaces use the cleaner form. Co-authored-by: Claude Opus 4.7 (1M context) --- .github/workflows/release.yml | 4 ++-- install.sh | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2d701a09..f6c332da 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -173,12 +173,12 @@ jobs: **One-liner:** ```bash - curl -fsSL https://raw.githubusercontent.com/BitBadges/bitbadgeschain/master/install.sh | sh + curl -fsSL https://install.bitbadges.io | sh ``` **Testnet:** ```bash - curl -fsSL https://raw.githubusercontent.com/BitBadges/bitbadgeschain/master/install.sh | sh -s -- --testnet + curl -fsSL https://install.bitbadges.io | sh -s -- --testnet ``` **SDK CLI:** diff --git a/install.sh b/install.sh index 9a10d8ad..d97b2ae9 100755 --- a/install.sh +++ b/install.sh @@ -1,9 +1,9 @@ #!/bin/sh # BitBadges Chain — One-liner installer # Usage: -# curl -fsSL https://raw.githubusercontent.com/BitBadges/bitbadgeschain/master/install.sh | sh -# curl -fsSL https://raw.githubusercontent.com/BitBadges/bitbadgeschain/master/install.sh | sh -s -- --testnet -# curl -fsSL https://raw.githubusercontent.com/BitBadges/bitbadgeschain/master/install.sh | sh -s -- --version v28 +# curl -fsSL https://install.bitbadges.io | sh +# curl -fsSL https://install.bitbadges.io | sh -s -- --testnet +# curl -fsSL https://install.bitbadges.io | sh -s -- --version v28 # # Options: # --testnet Install testnet binary (default: mainnet) @@ -42,7 +42,7 @@ while [ $# -gt 0 ]; do --help) echo "BitBadges Chain Installer" echo "" - echo "Usage: curl -fsSL https://raw.githubusercontent.com/BitBadges/bitbadgeschain/master/install.sh | sh" + echo "Usage: curl -fsSL https://install.bitbadges.io | sh" echo "" echo "Options:" echo " --testnet Install testnet binary (default: mainnet)" From ecf0e92fe12924b6719df76e98b848f59fbc1151 Mon Sep 17 00:00:00 2001 From: Trevor Miller <61992896+trevormil@users.noreply.github.com> Date: Sun, 26 Apr 2026 13:59:37 -0400 Subject: [PATCH 17/24] fix(tokenization): persist next-dynamic-store-id when defaulting from 0 (#83) The first ever MsgCreateDynamicStore on a chain reads the counter (0), overrides to 1, but does not persist that override. IncrementNextDynamicStoreId then bumps the stored 0 to 1, so the second create reads 1 and reuses it, silently overwriting the first store's createdBy/uri/defaultValue/globalEnabled. This actually fired on bitbadges-1 mainnet: a dynamic store created on 2026-02-28 was clobbered on 2026-04-26 when a different account submitted a fresh MsgCreateDynamicStore. Both got store_id = 1. Persist the override (SetNextDynamicStoreId(1)) so the increment lands at 2. Adds a regression test that creates three stores from a zeroed counter and asserts they receive ids 1, 2, 3. Co-authored-by: Claude Opus 4.7 (1M context) --- .../keeper/msg_create_dynamic_store_test.go | 32 +++++++++++++++++++ .../keeper/msg_server_create_dynamic_store.go | 10 ++++-- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/x/tokenization/keeper/msg_create_dynamic_store_test.go b/x/tokenization/keeper/msg_create_dynamic_store_test.go index 506bffe5..b32d2f4a 100644 --- a/x/tokenization/keeper/msg_create_dynamic_store_test.go +++ b/x/tokenization/keeper/msg_create_dynamic_store_test.go @@ -3,6 +3,7 @@ package keeper_test import ( "testing" + sdkmath "cosmossdk.io/math" "github.com/bitbadges/bitbadgeschain/x/tokenization/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/require" @@ -25,3 +26,34 @@ func TestKeeper_MsgCreateDynamicStore(t *testing.T) { _, err = suite.msgServer.CreateDynamicStore(wctx, msg) require.Error(t, err) } + +// Regression: when the next-id counter is zero (uninitialized), the first +// create must assign id 1 AND advance the counter to 2 so the second create +// gets id 2 — not id 1, which would silently overwrite the first store. +func TestKeeper_MsgCreateDynamicStore_AssignsSequentialIdsFromZero(t *testing.T) { + suite := new(TestSuite) + suite.SetT(t) + suite.SetupTest() + ctx := suite.ctx + wctx := sdk.WrapSDKContext(ctx) + + suite.app.TokenizationKeeper.SetNextDynamicStoreId(ctx, sdkmath.NewUint(0)) + + creator := "bb1jmjfq0tplp9tmx4v9uemw72y4d2wa5nrjmmk3q" + + first, err := suite.msgServer.CreateDynamicStore(wctx, types.NewMsgCreateDynamicStore(creator, false)) + require.NoError(t, err) + require.Equal(t, sdkmath.NewUint(1), first.StoreId) + + second, err := suite.msgServer.CreateDynamicStore(wctx, types.NewMsgCreateDynamicStore(creator, false)) + require.NoError(t, err) + require.Equal(t, sdkmath.NewUint(2), second.StoreId, "second create must get a new id, not clobber id 1") + + third, err := suite.msgServer.CreateDynamicStore(wctx, types.NewMsgCreateDynamicStore(creator, false)) + require.NoError(t, err) + require.Equal(t, sdkmath.NewUint(3), third.StoreId) + + got, found := suite.app.TokenizationKeeper.GetDynamicStoreFromStore(ctx, sdkmath.NewUint(1)) + require.True(t, found) + require.Equal(t, creator, got.CreatedBy) +} diff --git a/x/tokenization/keeper/msg_server_create_dynamic_store.go b/x/tokenization/keeper/msg_server_create_dynamic_store.go index ced016c4..0c47cc89 100644 --- a/x/tokenization/keeper/msg_server_create_dynamic_store.go +++ b/x/tokenization/keeper/msg_server_create_dynamic_store.go @@ -17,10 +17,16 @@ func (k msgServer) CreateDynamicStore(goCtx context.Context, msg *types.MsgCreat return nil, err } - // Get the next dynamic store ID + // Get the next dynamic store ID. If the counter has never been written + // (chain launched without genesis init for this field, or upgraded onto a + // chain where it was missing), GetNextDynamicStoreId returns 0. Treat 0 as + // "use 1" AND persist it, so the subsequent IncrementNextDynamicStoreId + // lands at 2 instead of 1 — otherwise the second create would re-use id 1 + // and silently overwrite the first store. nextStoreId := k.GetNextDynamicStoreId(ctx) - if nextStoreId.Equal(sdkmath.NewUint(0)) { + if nextStoreId.IsZero() { nextStoreId = sdkmath.NewUint(1) + k.SetNextDynamicStoreId(ctx, nextStoreId) } // Create the dynamic store From 67ae8a0ac2438baadf0a39451fd9e107f5ec6816 Mon Sep 17 00:00:00 2001 From: Trevor Miller Date: Sat, 2 May 2026 11:33:25 -0400 Subject: [PATCH 18/24] install: ship `bb` symlink alongside bitbadgeschaind Closes #0355 (autopilot backlog, install side). `bb` is the friendly entry point for the unified CLI. The shim points at bitbadgeschaind which already wraps tx/query/keys (chain-native) and `cli ...` (forwarded to Node SDK CLI). Co-Authored-By: Claude Opus 4.7 (1M context) --- install.sh | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/install.sh b/install.sh index d97b2ae9..77321023 100755 --- a/install.sh +++ b/install.sh @@ -186,8 +186,25 @@ main() { exit 1 fi + # Friendly alias for agents and humans — `bb` is the entry point + # documented in docs.bitbadges.io/for-developers/cli/. Skip on Windows + # where symlinks need elevated perms and the `.exe` suffix is mandatory. + if [ "$os" != "windows" ]; then + if [ -w "$INSTALL_DIR" ] || [ "$USE_SUDO" = "no" ]; then + ln -sfn "${INSTALL_DIR}/${BINARY_NAME}" "${INSTALL_DIR}/bb" + elif [ "$USE_SUDO" = "auto" ] && command -v sudo >/dev/null 2>&1; then + sudo ln -sfn "${INSTALL_DIR}/${BINARY_NAME}" "${INSTALL_DIR}/bb" + else + echo "Error: ${INSTALL_DIR} is not writable for bb symlink. Run with sudo or use --install-dir." >&2 + exit 1 + fi + fi + echo "" echo "Successfully installed bitbadgeschaind ${VERSION} (${NETWORK}) to ${INSTALL_DIR}/${BINARY_NAME}" + if [ "$os" != "windows" ]; then + echo "Linked ${INSTALL_DIR}/bb -> ${INSTALL_DIR}/${BINARY_NAME}" + fi echo "" # Verify From 596cf084017511e0b9232df709f11c23a69e3f9a Mon Sep 17 00:00:00 2001 From: Trevor Miller Date: Sat, 2 May 2026 11:33:42 -0400 Subject: [PATCH 19/24] chain(cli): note auth subcmd in forwarder doc Part of #0355 / #0360. The Node SDK CLI ships auth login/logout/ status via this forwarder once the SDK release lands. Co-Authored-By: Claude Opus 4.7 (1M context) --- cmd/bitbadgeschaind/cmd/cli_cmd.go | 1 + 1 file changed, 1 insertion(+) diff --git a/cmd/bitbadgeschaind/cmd/cli_cmd.go b/cmd/bitbadgeschaind/cmd/cli_cmd.go index 0e46817b..4b2c2bae 100644 --- a/cmd/bitbadgeschaind/cmd/cli_cmd.go +++ b/cmd/bitbadgeschaind/cmd/cli_cmd.go @@ -41,6 +41,7 @@ Where is any top-level bitbadges-cli subcommand: builder — template builders, create-with-burner, burner wallets, review/verify/simulate/doctor, session tools, builder tools config — manage ~/.bitbadges/config.json (base URL, API keys per network) + auth — login/logout/status (ships via the SDK CLI release for #0360) New top-level bitbadges-cli subcommands automatically reach here without needing a Go alias — this wrapper is the single bridge between the chain From 28d664780b4a905daa678a596d341b0b623227ed Mon Sep 17 00:00:00 2001 From: Trevor Miller Date: Sat, 2 May 2026 15:04:10 -0400 Subject: [PATCH 20/24] =?UTF-8?q?chain(cli):=20drop=20auth=20from=20forwar?= =?UTF-8?q?der=20doc=20=E2=80=94=20SIWBB=20no=20longer=20in=20SDK?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The auth subcommand was removed from the SDK CLI when SIWBB was deprecated as a site-only flow. Remove the dangling reference here. Co-Authored-By: Claude Opus 4.7 (1M context) --- cmd/bitbadgeschaind/cmd/cli_cmd.go | 1 - 1 file changed, 1 deletion(-) diff --git a/cmd/bitbadgeschaind/cmd/cli_cmd.go b/cmd/bitbadgeschaind/cmd/cli_cmd.go index 4b2c2bae..0e46817b 100644 --- a/cmd/bitbadgeschaind/cmd/cli_cmd.go +++ b/cmd/bitbadgeschaind/cmd/cli_cmd.go @@ -41,7 +41,6 @@ Where is any top-level bitbadges-cli subcommand: builder — template builders, create-with-burner, burner wallets, review/verify/simulate/doctor, session tools, builder tools config — manage ~/.bitbadges/config.json (base URL, API keys per network) - auth — login/logout/status (ships via the SDK CLI release for #0360) New top-level bitbadges-cli subcommands automatically reach here without needing a Go alias — this wrapper is the single bridge between the chain From 73001b1184c0480bf91fc3ecffbfc10e66cfb31d Mon Sep 17 00:00:00 2001 From: Trevor Miller <61992896+trevormil@users.noreply.github.com> Date: Sun, 3 May 2026 07:39:13 -0400 Subject: [PATCH 21/24] cmd: add sign-arbitrary ADR-36 offline signer (#88) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bridges the BitBadges CLI auth flow (`bitbadges-cli auth verify --signature ...`) with keys held in the chain binary's keyring, without exposing the raw private key. Pure offline operation: no network, no chain state, no tx broadcast. Output is a JSON envelope `{ format, address, pubKey, signature, message, algo }` that posts directly to the indexer's `/api/v0/auth/verify` endpoint. v1 supports cosmos `secp256k1` keys only — the indexer's `CosmosDriver.verifySignature` accepts these unchanged via `@keplr-wallet/cosmos verifyADR36Amino`. `eth_secp256k1` keys are rejected with a clear error pointing at a future `--format eip191` follow-up. Verified end-to-end against mainnet `/api/v0/auth/{getChallenge,verify, status,logout}` flow — fresh local key signs the Blockin challenge, indexer verifies the ADR-36 signature, mints a Full Access session cookie. Golden-vector test locks the canonical-JSON byte encoding against output that round-tripped successfully through Keplr's verifier. Co-authored-by: Claude Opus 4.7 (1M context) --- cmd/bitbadgeschaind/cmd/commands.go | 1 + cmd/bitbadgeschaind/cmd/sign_arbitrary.go | 213 ++++++++++++++++++ .../cmd/sign_arbitrary_test.go | 209 +++++++++++++++++ 3 files changed, 423 insertions(+) create mode 100644 cmd/bitbadgeschaind/cmd/sign_arbitrary.go create mode 100644 cmd/bitbadgeschaind/cmd/sign_arbitrary_test.go diff --git a/cmd/bitbadgeschaind/cmd/commands.go b/cmd/bitbadgeschaind/cmd/commands.go index 73267485..e39a0eec 100644 --- a/cmd/bitbadgeschaind/cmd/commands.go +++ b/cmd/bitbadgeschaind/cmd/commands.go @@ -86,6 +86,7 @@ func initRootCmd( txCommand(), bitbadgesclient.KeyCommands(app.DefaultNodeHome, false), // false = don't default to eth keys, but support them CliCmd(), // canonical forwarder — `bitbadgeschaind cli [args...]` reaches every bitbadges-cli subcommand + SignArbitraryCmd(), ) } diff --git a/cmd/bitbadgeschaind/cmd/sign_arbitrary.go b/cmd/bitbadgeschaind/cmd/sign_arbitrary.go new file mode 100644 index 00000000..f46c3d54 --- /dev/null +++ b/cmd/bitbadgeschaind/cmd/sign_arbitrary.go @@ -0,0 +1,213 @@ +package cmd + +import ( + "encoding/base64" + "encoding/json" + "errors" + "fmt" + "io" + "os" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + cryptokeyring "github.com/cosmos/cosmos-sdk/crypto/keyring" + sdk "github.com/cosmos/cosmos-sdk/types" + signingtypes "github.com/cosmos/cosmos-sdk/types/tx/signing" + "github.com/spf13/cobra" +) + +const ( + flagMessageFile = "message-file" + flagOutputMode = "output" + + algoSecp256k1 = "secp256k1" + formatADR36 = "adr36" +) + +// SignArbitraryCmd produces an ADR-36 signature over an arbitrary +// message using a key from the local keyring. Output is the JSON +// envelope the bitbadges-cli `auth verify` flow expects: +// +// { format, address, pubKey, signature, message, algo } +// +// The signed bytes are byte-equal to Keplr's serializeSignDoc( +// makeADR36AminoSignDoc(...)) and verify via @keplr-wallet/cosmos +// verifyADR36Amino. +// +// v1 supports secp256k1 keys only; eth_secp256k1 keys are rejected +// with a clear error pointing at a future --format eip191 flag. +func SignArbitraryCmd() *cobra.Command { + cmd := &cobra.Command{ + Use: "sign-arbitrary [message]", + Short: "Sign an arbitrary message via ADR-36 (offline; for CLI auth flows)", + Long: `Sign an arbitrary message with a local keyring key, producing an +ADR-36-formatted signature suitable for posting to BitBadges +indexer's /api/v0/auth/verify endpoint. + +This is a pure offline operation — no network calls, no chain state, +no transaction is broadcast. It exists to bridge the BitBadges CLI +auth flow ('bitbadges-cli auth verify --signature ...') with keys +held in the chain binary's keyring, without exposing the raw private +key. + +Message is read from (in order): positional argument, --message-file, +or stdin when piped. Reading from a TTY without a message source +prints usage rather than hanging. + +Examples: + bitbadgeschaind sign-arbitrary mykey "auth challenge text" + echo -n "auth challenge text" | bitbadgeschaind sign-arbitrary mykey + bitbadgeschaind sign-arbitrary mykey --message-file challenge.txt`, + Args: cobra.RangeArgs(1, 2), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + + message, err := readMessage(cmd, args) + if err != nil { + return err + } + + record, err := loadKey(clientCtx.Keyring, args[0]) + if err != nil { + return fmt.Errorf("load key %q: %w", args[0], err) + } + + pub, err := record.GetPubKey() + if err != nil { + return fmt.Errorf("get pubkey: %w", err) + } + if pub.Type() != algoSecp256k1 { + return fmt.Errorf( + "key %q has algo %q; only %q is supported in v1 "+ + "(eth_secp256k1 / EIP-191 personal_sign support is a planned --format eip191 follow-up). "+ + "Create a compatible key with: bitbadgeschaind keys add --key-type secp256k1", + args[0], pub.Type(), algoSecp256k1, + ) + } + + addr, err := record.GetAddress() + if err != nil { + return fmt.Errorf("derive address: %w", err) + } + bech := addr.String() + + signBytes, err := buildADR36SignBytes(bech, message) + if err != nil { + return fmt.Errorf("build sign-doc: %w", err) + } + + sig, _, err := clientCtx.Keyring.SignByAddress( + addr, + signBytes, + signingtypes.SignMode_SIGN_MODE_LEGACY_AMINO_JSON, + ) + if err != nil { + return fmt.Errorf("sign: %w", err) + } + + outputMode, _ := cmd.Flags().GetString(flagOutputMode) + return emitOutput(cmd.OutOrStdout(), outputMode, map[string]any{ + "format": formatADR36, + "algo": pub.Type(), + "address": bech, + "pubKey": base64.StdEncoding.EncodeToString(pub.Bytes()), + "signature": base64.StdEncoding.EncodeToString(sig), + "message": message, + }) + }, + } + + cmd.Flags().String(flagMessageFile, "", "Read message from file (mutually exclusive with positional message and stdin)") + cmd.Flags().String(flagOutputMode, "json", "Output mode: json | raw (raw prints only the base64 signature)") + + flags.AddKeyringFlags(cmd.Flags()) + cmd.Flags().String(flags.FlagHome, "", "The application home directory") + return cmd +} + +// buildADR36SignBytes constructs the canonical ADR-36 StdSignDoc and +// returns its serialized form (sorted keys, HTML-escaped <>&). Bytes +// are byte-equal to Keplr's serializeSignDoc(makeADR36AminoSignDoc(...)) +// — verified by spike against @keplr-wallet/cosmos. +func buildADR36SignBytes(signer, message string) ([]byte, error) { + doc := map[string]any{ + "account_number": "0", + "chain_id": "", + "fee": map[string]any{"amount": []any{}, "gas": "0"}, + "memo": "", + "msgs": []any{ + map[string]any{ + "type": "sign/MsgSignData", + "value": map[string]any{ + "signer": signer, + "data": base64.StdEncoding.EncodeToString([]byte(message)), + }, + }, + }, + "sequence": "0", + } + raw, err := json.Marshal(doc) + if err != nil { + return nil, err + } + return sdk.MustSortJSON(raw), nil +} + +// loadKey accepts either a key name or a bech32 address. +func loadKey(kr cryptokeyring.Keyring, ref string) (*cryptokeyring.Record, error) { + if addr, err := sdk.AccAddressFromBech32(ref); err == nil { + return kr.KeyByAddress(addr) + } + return kr.Key(ref) +} + +// readMessage resolves the message from (in priority order) the +// positional argument, --message-file, then stdin (only when stdin is +// not a TTY). Multiple sources is an error. +func readMessage(cmd *cobra.Command, args []string) (string, error) { + hasPositional := len(args) >= 2 + filePath, _ := cmd.Flags().GetString(flagMessageFile) + + switch { + case hasPositional && filePath != "": + return "", errors.New("specify either a positional message or --message-file, not both") + case hasPositional: + return args[1], nil + case filePath != "": + raw, err := os.ReadFile(filePath) + if err != nil { + return "", fmt.Errorf("read --message-file %s: %w", filePath, err) + } + return string(raw), nil + } + + stat, err := os.Stdin.Stat() + if err != nil { + return "", fmt.Errorf("stat stdin: %w", err) + } + if (stat.Mode() & os.ModeCharDevice) != 0 { + return "", errors.New("no message provided: pass as positional arg, --message-file, or pipe via stdin") + } + raw, err := io.ReadAll(os.Stdin) + if err != nil { + return "", fmt.Errorf("read stdin: %w", err) + } + return string(raw), nil +} + +func emitOutput(w io.Writer, mode string, payload map[string]any) error { + switch mode { + case "raw": + _, err := fmt.Fprintln(w, payload["signature"]) + return err + case "", "json": + enc := json.NewEncoder(w) + enc.SetIndent("", " ") + return enc.Encode(payload) + default: + return fmt.Errorf("unknown --output mode %q (expected json|raw)", mode) + } +} diff --git a/cmd/bitbadgeschaind/cmd/sign_arbitrary_test.go b/cmd/bitbadgeschaind/cmd/sign_arbitrary_test.go new file mode 100644 index 00000000..c7011aa3 --- /dev/null +++ b/cmd/bitbadgeschaind/cmd/sign_arbitrary_test.go @@ -0,0 +1,209 @@ +//go:build test +// +build test + +package cmd + +import ( + "bytes" + "context" + "encoding/base64" + "encoding/json" + "os" + "path/filepath" + "strings" + "testing" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/codec" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" + "github.com/cosmos/cosmos-sdk/crypto/hd" + "github.com/cosmos/cosmos-sdk/crypto/keyring" + cryptotypes "github.com/cosmos/cosmos-sdk/crypto/types" + sdk "github.com/cosmos/cosmos-sdk/types" + evmcryptocodec "github.com/cosmos/evm/crypto/codec" + evmhd "github.com/cosmos/evm/crypto/hd" + + "github.com/bitbadges/bitbadgeschain/app/params" +) + +func init() { + // SignArbitraryCmd derives bech32 addresses with the chain's + // configured prefix; tests must set it before any address ops. + params.SetAddressPrefixes() +} + +// TestBuildADR36SignBytes_GoldenVector locks the canonical-JSON +// encoding to bytes precomputed via the verification spike (Go output +// piped into @keplr-wallet/cosmos's serializeSignDoc(makeADR36AminoSignDoc(...)), +// confirmed byte-equal and verifyADR36Amino-PASS). Any drift in Go's +// JSON marshaller or sdk.MustSortJSON ordering will fail this test. +func TestBuildADR36SignBytes_GoldenVector(t *testing.T) { + const ( + signer = "bb1mnyn7x24xj6vraxeeq56dfkxa009tvhg4wlgny" + message = "BitBadges sign-arbitrary spike message — testing < > & escapes" + ) + const expected = `{"account_number":"0","chain_id":"","fee":{"amount":[],"gas":"0"},"memo":"","msgs":[{"type":"sign/MsgSignData","value":{"data":"Qml0QmFkZ2VzIHNpZ24tYXJiaXRyYXJ5IHNwaWtlIG1lc3NhZ2Ug4oCUIHRlc3RpbmcgPCA+ICYgZXNjYXBlcw==","signer":"bb1mnyn7x24xj6vraxeeq56dfkxa009tvhg4wlgny"}}],"sequence":"0"}` + + got, err := buildADR36SignBytes(signer, message) + if err != nil { + t.Fatalf("buildADR36SignBytes: %v", err) + } + if string(got) != expected { + t.Fatalf("sign bytes drifted from spike-verified golden vector\nwant: %s\ngot : %s", expected, string(got)) + } +} + +// TestSignArbitrary_RoundTrip_Secp256k1 exercises the full command +// against an in-memory keyring with a true cosmos secp256k1 key, then +// verifies the produced signature locally via PubKey.VerifySignature. +func TestSignArbitrary_RoundTrip_Secp256k1(t *testing.T) { + kr, addr, pub := newInMemoryKeyring(t, "tester", hd.Secp256k1) + + out := executeSignArbitrary(t, kr, []string{"tester", "hello world"}, "") + + var got struct { + Format string `json:"format"` + Algo string `json:"algo"` + Address string `json:"address"` + Signature string `json:"signature"` + } + if err := json.Unmarshal([]byte(out), &got); err != nil { + t.Fatalf("parse output: %v\noutput: %s", err, out) + } + if got.Format != "adr36" || got.Algo != "secp256k1" { + t.Fatalf("wrong format/algo: %+v", got) + } + if got.Address != addr.String() { + t.Fatalf("wrong address: want %s got %s", addr.String(), got.Address) + } + + signBytes, err := buildADR36SignBytes(addr.String(), "hello world") + if err != nil { + t.Fatalf("rebuild signBytes: %v", err) + } + sig, err := base64.StdEncoding.DecodeString(got.Signature) + if err != nil { + t.Fatalf("decode sig: %v", err) + } + if !pub.VerifySignature(signBytes, sig) { + t.Fatalf("VerifySignature returned false — signing path produced an invalid signature") + } +} + +// TestSignArbitrary_RejectsEthSecp256k1 confirms v1 refuses +// eth_secp256k1 keys with a clear actionable error rather than +// silently producing a signature CosmosDriver will reject. +func TestSignArbitrary_RejectsEthSecp256k1(t *testing.T) { + kr, _, _ := newInMemoryKeyring(t, "ethkey", evmhd.EthSecp256k1) + + cmd := SignArbitraryCmd() + out := &bytes.Buffer{} + cmd.SetOut(out) + cmd.SetErr(out) + cmd.SetArgs([]string{"ethkey", "hello"}) + + cmd.SetContext(context.Background()) + clientCtx := client.Context{}.WithKeyring(kr) + if err := client.SetCmdClientContext(cmd, clientCtx); err != nil { + t.Fatalf("set cmd ctx: %v", err) + } + + err := cmd.Execute() + if err == nil { + t.Fatalf("expected error rejecting eth_secp256k1, got success: %s", out.String()) + } + if !strings.Contains(err.Error(), "eth_secp256k1") || !strings.Contains(err.Error(), "secp256k1") { + t.Fatalf("error should mention both algos for clarity, got: %v", err) + } +} + +func TestReadMessage_Modes(t *testing.T) { + t.Run("positional and file are mutually exclusive", func(t *testing.T) { + cmd := SignArbitraryCmd() + _ = cmd.Flags().Set(flagMessageFile, "/tmp/whatever") + _, err := readMessage(cmd, []string{"keyname", "inline-msg"}) + if err == nil || !strings.Contains(err.Error(), "not both") { + t.Fatalf("expected mutual-exclusion error, got: %v", err) + } + }) + t.Run("positional wins when alone", func(t *testing.T) { + cmd := SignArbitraryCmd() + got, err := readMessage(cmd, []string{"keyname", "the-message"}) + if err != nil || got != "the-message" { + t.Fatalf("want the-message, got %q err %v", got, err) + } + }) + t.Run("file is read when provided", func(t *testing.T) { + path := writeTempFile(t, "from-the-file") + cmd := SignArbitraryCmd() + _ = cmd.Flags().Set(flagMessageFile, path) + got, err := readMessage(cmd, []string{"keyname"}) + if err != nil || got != "from-the-file" { + t.Fatalf("want from-the-file, got %q err %v", got, err) + } + }) +} + +// ── helpers ───────────────────────────────────────────────────────── + +func newInMemoryKeyring(t *testing.T, name string, algo keyring.SignatureAlgo) (keyring.Keyring, sdk.AccAddress, cryptotypes.PubKey) { + t.Helper() + registry := codectypes.NewInterfaceRegistry() + cryptocodec.RegisterInterfaces(registry) + evmcryptocodec.RegisterInterfaces(registry) + cdc := codec.NewProtoCodec(registry) + kr := keyring.NewInMemory(cdc, evmhd.EthSecp256k1Option()) + + rec, _, err := kr.NewMnemonic( + name, + keyring.English, + sdk.GetConfig().GetFullBIP44Path(), + "", + algo, + ) + if err != nil { + t.Fatalf("NewMnemonic: %v", err) + } + addr, err := rec.GetAddress() + if err != nil { + t.Fatalf("GetAddress: %v", err) + } + pub, err := rec.GetPubKey() + if err != nil { + t.Fatalf("GetPubKey: %v", err) + } + return kr, addr, pub +} + +// executeSignArbitrary runs the command end-to-end against the given +// keyring and returns stdout (the JSON envelope). +func executeSignArbitrary(t *testing.T, kr keyring.Keyring, args []string, output string) string { + t.Helper() + cmd := SignArbitraryCmd() + out := &bytes.Buffer{} + cmd.SetOut(out) + cmd.SetErr(out) + cmd.SetArgs(args) + if output != "" { + _ = cmd.Flags().Set(flagOutputMode, output) + } + cmd.SetContext(context.Background()) + clientCtx := client.Context{}.WithKeyring(kr) + if err := client.SetCmdClientContext(cmd, clientCtx); err != nil { + t.Fatalf("set cmd ctx: %v", err) + } + if err := cmd.Execute(); err != nil { + t.Fatalf("execute: %v\noutput: %s", err, out.String()) + } + return out.String() +} + +func writeTempFile(t *testing.T, contents string) string { + t.Helper() + p := filepath.Join(t.TempDir(), "msg.txt") + if err := os.WriteFile(p, []byte(contents), 0o600); err != nil { + t.Fatalf("write tmp file: %v", err) + } + return p +} From e3d624749b8ad7539b3e071d298e59337315b2b5 Mon Sep 17 00:00:00 2001 From: Trevor Miller <61992896+trevormil@users.noreply.github.com> Date: Sun, 3 May 2026 07:40:10 -0400 Subject: [PATCH 22/24] feat(tokenization): inclusive protocol fees (#0335) (#80) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Protocol fee is now taken out of the coin transfer amount rather than added on top. A 1 USDC payment with a 0.1% fee now debits the payer exactly 1 USDC; the recipient receives 0.999 USDC and the community pool receives 0.001 USDC. Previously the payer was charged 1.001 USDC. - Fee is deducted inline in ExecuteCoinTransfers before the royalty/recipient split so the payer sends exactly the quoted amount. - Royalty and protocol fee are both taken off gross; royalty + fee > gross is rejected instead of underflowing the recipient. - Post-hoc CalculateAndDistributeProtocolFees is gone; entries land in coinTransfers via the same sendProtocolFee helper so event payloads keep their IsProtocolFee=true rows. Behavior change: the fee now follows the payment source — if an approval uses OverrideFromWithApproverAddress, the approver pays the fee along with the coins (previously initiatedBy paid the fee regardless). This is consistent with "inclusive" semantics. Co-authored-by: Claude Opus 4.7 (1M context) --- x/tokenization/keeper/coin_transfers.go | 55 +++- .../keeper/inclusive_protocol_fees_test.go | 305 ++++++++++++++++++ x/tokenization/keeper/transfer_utils.go | 81 ----- x/tokenization/keeper/transfers.go | 10 +- 4 files changed, 361 insertions(+), 90 deletions(-) create mode 100644 x/tokenization/keeper/inclusive_protocol_fees_test.go diff --git a/x/tokenization/keeper/coin_transfers.go b/x/tokenization/keeper/coin_transfers.go index 63973db5..a0bcbe5b 100644 --- a/x/tokenization/keeper/coin_transfers.go +++ b/x/tokenization/keeper/coin_transfers.go @@ -8,10 +8,16 @@ import ( sdkerrors "cosmossdk.io/errors" sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" ) const ( RoyaltyDivisor = 10000 + // ProtocolFeeDenominator is the divisor for the inclusive protocol fee + // (0.1% = amount / 1000). Applied per-coin before royalty/recipient split, + // so the payer sends exactly the quoted amount. + ProtocolFeeDenominator = 1000 ) // formatDenomForDisplay formats a denom for display in error messages @@ -189,10 +195,28 @@ func (k Keeper) ExecuteCoinTransfers( } for _, coin := range coinsToTransfer { + // Inclusive protocol fee: taken out of the payer's gross amount first, + // so the payer sends exactly coin.Amount (not amount + fee on top). coinAmountUint := sdkmath.NewUintFromBigInt(coin.Amount.BigInt()) + protocolFeeUint := coinAmountUint.Quo(sdkmath.NewUint(ProtocolFeeDenominator)) + protocolFeeInt := sdkmath.NewIntFromBigInt(protocolFeeUint.BigInt()) + royaltyAmountUint := coinAmountUint.Mul(royaltyPercentage).Quo(sdkmath.NewUint(RoyaltyDivisor)) royaltyAmountInt := sdkmath.NewIntFromBigInt(royaltyAmountUint.BigInt()) - remainingAmount := coin.Amount.Sub(royaltyAmountInt) + + // Both fees come off the gross. With royalty capped at 100% the two could add + // to more than gross; reject rather than silently shortchange the recipient. + if protocolFeeInt.Add(royaltyAmountInt).GT(coin.Amount) { + detErrMsg := fmt.Sprintf("royalty %s + protocol fee %s exceeds transfer amount %s for denom %s", royaltyAmountInt.String(), protocolFeeInt.String(), coin.Amount.String(), formatDenomForDisplay(coin.Denom)) + return detErrMsg, sdkerrors.Wrap(types.ErrInvalidRequest, detErrMsg) + } + + remainingAmount := coin.Amount.Sub(royaltyAmountInt).Sub(protocolFeeInt) + + if err := k.sendProtocolFee(ctx, coin, protocolFeeInt, fromAddressAcc, coinTransfersUsed); err != nil { + detErrMsg := fmt.Sprintf("insufficient %s balance to cover protocol fee", formatDenomForDisplay(coin.Denom)) + return detErrMsg, sdkerrors.Wrap(types.ErrUnderflow, err.Error()) + } err := k.sendCoinWithRoyalty( ctx, @@ -219,6 +243,35 @@ func (k Keeper) ExecuteCoinTransfers( return "", nil } +// sendProtocolFee routes the inclusive protocol fee from the payer to the community pool. +// No-op when the fee rounds to zero (amounts below ProtocolFeeDenominator). +func (k Keeper) sendProtocolFee( + ctx sdk.Context, + coin *sdk.Coin, + feeAmount sdkmath.Int, + fromAddressAcc sdk.AccAddress, + coinTransfersUsed *[]CoinTransfers, +) error { + if feeAmount.IsZero() { + return nil + } + + feeCoins := sdk.NewCoins(sdk.NewCoin(coin.Denom, feeAmount)) + if err := k.sendManagerKeeper.FundCommunityPoolWithAliasRouting(ctx, fromAddressAcc, feeCoins); err != nil { + return sdkerrors.Wrapf(err, "error funding community pool with protocol fee: %s", feeCoins) + } + + *coinTransfersUsed = append(*coinTransfersUsed, CoinTransfers{ + From: fromAddressAcc.String(), + To: authtypes.NewModuleAddress(distrtypes.ModuleName).String(), + Amount: feeAmount.String(), + Denom: coin.Denom, + IsProtocolFee: true, + }) + + return nil +} + // sendCoinWithRoyalty handles sending a coin with royalty deduction // It sends the royalty to the payout address and the remaining amount to the recipient func (k Keeper) sendCoinWithRoyalty( diff --git a/x/tokenization/keeper/inclusive_protocol_fees_test.go b/x/tokenization/keeper/inclusive_protocol_fees_test.go new file mode 100644 index 00000000..3cf099e8 --- /dev/null +++ b/x/tokenization/keeper/inclusive_protocol_fees_test.go @@ -0,0 +1,305 @@ +package keeper_test + +import ( + "github.com/bitbadges/bitbadgeschain/x/tokenization/types" + + sdkmath "cosmossdk.io/math" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +// Inclusive protocol fee: the payer sends exactly the coin transfer amount. +// The chain skims 0.1% for the community pool out of that amount (not on top). +// See backlog #0335. + +// configureSingleCoinTransferApproval wires up a mint approval whose coinTransfer +// sends `amount` of ubadge from bob (creator) to alice on behalf of a mint. +func (suite *TestSuite) configureSingleCoinTransferApproval(amount sdkmath.Int) { + wctx := sdk.WrapSDKContext(suite.ctx) + collectionsToCreate := GetCollectionsToCreate() + collectionsToCreate[0].CollectionApprovals[0].FromListId = "Mint" + collectionsToCreate[0].CollectionApprovals[0].ApprovalCriteria.CoinTransfers = []*types.CoinTransfer{ + { + To: alice, + Coins: []*sdk.Coin{ + {Amount: amount, Denom: "ubadge"}, + }, + }, + } + collectionsToCreate[0].CollectionApprovals[0].ApprovalCriteria.OverridesFromOutgoingApprovals = true + collectionsToCreate[0].CollectionApprovals[0].ApprovalCriteria.OverridesToIncomingApprovals = true + + err := CreateCollections(suite, wctx, collectionsToCreate) + suite.Require().Nil(err, "error creating collection") +} + +func (suite *TestSuite) runMintTransferForCoinTransferApproval() error { + wctx := sdk.WrapSDKContext(suite.ctx) + return TransferTokens(suite, wctx, &types.MsgTransferTokens{ + Creator: bob, + CollectionId: sdkmath.NewUint(1), + Transfers: []*types.Transfer{ + { + From: "Mint", + ToAddresses: []string{alice}, + Balances: []*types.Balance{ + { + OwnershipTimes: GetFullUintRanges(), + TokenIds: GetFullUintRanges(), + Amount: sdkmath.NewUint(1), + }, + }, + PrioritizedApprovals: GetDefaultPrioritizedApprovals(suite.ctx, suite.app.TokenizationKeeper, sdkmath.NewUint(1)), + }, + }, + }) +} + +// TestInclusiveProtocolFeeDebitsPayerExactly verifies the payer is debited exactly +// the coin transfer amount (not amount + fee). The fee is carved out of the payment. +func (suite *TestSuite) TestInclusiveProtocolFeeDebitsPayerExactly() { + const gross int64 = 10_000 // 0.1% = 10 → non-zero fee + const expectedFee int64 = 10 + + suite.configureSingleCoinTransferApproval(sdkmath.NewInt(gross)) + + bobAddr := sdk.MustAccAddressFromBech32(bob) + aliceAddr := sdk.MustAccAddressFromBech32(alice) + poolAddr := suite.app.DistrKeeper.GetDistributionAccount(suite.ctx).GetAddress() + + bobBefore := suite.app.BankKeeper.GetBalance(suite.ctx, bobAddr, "ubadge").Amount + aliceBefore := suite.app.BankKeeper.GetBalance(suite.ctx, aliceAddr, "ubadge").Amount + poolBefore := suite.app.BankKeeper.GetBalance(suite.ctx, poolAddr, "ubadge").Amount + + err := suite.runMintTransferForCoinTransferApproval() + suite.Require().Nil(err, "transfer should succeed") + + bobAfter := suite.app.BankKeeper.GetBalance(suite.ctx, bobAddr, "ubadge").Amount + aliceAfter := suite.app.BankKeeper.GetBalance(suite.ctx, aliceAddr, "ubadge").Amount + poolAfter := suite.app.BankKeeper.GetBalance(suite.ctx, poolAddr, "ubadge").Amount + + // Payer sends exactly gross — not gross + fee. + suite.Require().Equal( + sdkmath.NewInt(gross), + bobBefore.Sub(bobAfter), + "payer should be debited exactly the coin transfer amount (inclusive fee)", + ) + + // Recipient gets gross - fee. + suite.Require().Equal( + sdkmath.NewInt(gross-expectedFee), + aliceAfter.Sub(aliceBefore), + "recipient should receive gross minus the inclusive protocol fee", + ) + + // Community pool received the fee. + suite.Require().Equal( + sdkmath.NewInt(expectedFee), + poolAfter.Sub(poolBefore), + "community pool should receive the protocol fee", + ) +} + +// TestInclusiveProtocolFeeRoundsToZero verifies small amounts below the fee +// denominator (1000 ubadge) pay no fee — matches the previous behavior at +// the low end, so existing integrations with small amounts are unaffected. +func (suite *TestSuite) TestInclusiveProtocolFeeRoundsToZero() { + const gross int64 = 100 // 0.1% = 0.1 → rounds down to 0 + + suite.configureSingleCoinTransferApproval(sdkmath.NewInt(gross)) + + bobAddr := sdk.MustAccAddressFromBech32(bob) + aliceAddr := sdk.MustAccAddressFromBech32(alice) + poolAddr := suite.app.DistrKeeper.GetDistributionAccount(suite.ctx).GetAddress() + + bobBefore := suite.app.BankKeeper.GetBalance(suite.ctx, bobAddr, "ubadge").Amount + aliceBefore := suite.app.BankKeeper.GetBalance(suite.ctx, aliceAddr, "ubadge").Amount + poolBefore := suite.app.BankKeeper.GetBalance(suite.ctx, poolAddr, "ubadge").Amount + + err := suite.runMintTransferForCoinTransferApproval() + suite.Require().Nil(err, "transfer should succeed") + + bobAfter := suite.app.BankKeeper.GetBalance(suite.ctx, bobAddr, "ubadge").Amount + aliceAfter := suite.app.BankKeeper.GetBalance(suite.ctx, aliceAddr, "ubadge").Amount + poolAfter := suite.app.BankKeeper.GetBalance(suite.ctx, poolAddr, "ubadge").Amount + + suite.Require().Equal(sdkmath.NewInt(gross), bobBefore.Sub(bobAfter), "payer debited gross") + suite.Require().Equal(sdkmath.NewInt(gross), aliceAfter.Sub(aliceBefore), "recipient gets full amount when fee rounds to zero") + suite.Require().Equal(sdkmath.ZeroInt(), poolAfter.Sub(poolBefore), "no fee routed to community pool for sub-denominator amounts") +} + +// TestInclusiveProtocolFeeWithRoyalty verifies royalty + protocol fee are both +// carved out of the gross payment. The payer still sends exactly the quoted +// amount, and the recipient gets gross - royalty - fee. +func (suite *TestSuite) TestInclusiveProtocolFeeWithRoyalty() { + const gross int64 = 10_000 + const royaltyBps = 1000 // 10% + const expectedFee int64 = 10 + const expectedRoyalty int64 = 1000 + const expectedRecipient int64 = gross - expectedFee - expectedRoyalty + + collectionsToCreate := GetTransferableCollectionToCreateAllMintedToCreator(bob) + wctx := sdk.WrapSDKContext(suite.ctx) + + collectionsToCreate[0].CollectionApprovals[1].ApprovalCriteria.UserApprovalSettings = &types.UserApprovalSettings{ + UserRoyalties: &types.UserRoyalties{ + Percentage: sdkmath.NewUint(royaltyBps), + PayoutAddress: charlie, + }, + } + suite.Require().Nil(CreateCollections(suite, wctx, collectionsToCreate), "error creating collection") + + suite.Require().Nil(UpdateUserApprovals(suite, wctx, &types.MsgUpdateUserApprovals{ + Creator: bob, + CollectionId: sdkmath.NewUint(1), + UpdateOutgoingApprovals: true, + OutgoingApprovals: []*types.UserOutgoingApproval{ + { + ToListId: "AllWithoutMint", + InitiatedByListId: alice, + TransferTimes: GetFullUintRanges(), + OwnershipTimes: GetFullUintRanges(), + TokenIds: []*types.UintRange{{Start: sdkmath.NewUint(1), End: sdkmath.NewUint(1)}}, + ApprovalId: "test", + ApprovalCriteria: &types.OutgoingApprovalCriteria{ + MaxNumTransfers: &types.MaxNumTransfers{ + OverallMaxNumTransfers: sdkmath.NewUint(1000), + AmountTrackerId: "test-tracker", + }, + ApprovalAmounts: &types.ApprovalAmounts{ + PerFromAddressApprovalAmount: sdkmath.NewUint(1), + AmountTrackerId: "test-tracker", + }, + CoinTransfers: []*types.CoinTransfer{ + { + To: alice, + OverrideFromWithApproverAddress: true, // bob (approver) pays + Coins: []*sdk.Coin{ + {Amount: sdkmath.NewInt(gross), Denom: "ubadge"}, + }, + }, + }, + }, + }, + }, + }), "error updating user approvals") + + bobAddr := sdk.MustAccAddressFromBech32(bob) + aliceAddr := sdk.MustAccAddressFromBech32(alice) + charlieAddr := sdk.MustAccAddressFromBech32(charlie) + poolAddr := suite.app.DistrKeeper.GetDistributionAccount(suite.ctx).GetAddress() + + bobBefore := suite.app.BankKeeper.GetBalance(suite.ctx, bobAddr, "ubadge").Amount + aliceBefore := suite.app.BankKeeper.GetBalance(suite.ctx, aliceAddr, "ubadge").Amount + charlieBefore := suite.app.BankKeeper.GetBalance(suite.ctx, charlieAddr, "ubadge").Amount + poolBefore := suite.app.BankKeeper.GetBalance(suite.ctx, poolAddr, "ubadge").Amount + + err := TransferTokens(suite, wctx, &types.MsgTransferTokens{ + Creator: alice, + CollectionId: sdkmath.NewUint(1), + Transfers: []*types.Transfer{ + { + From: bob, + ToAddresses: []string{alice}, + Balances: []*types.Balance{ + { + OwnershipTimes: GetFullUintRanges(), + TokenIds: GetOneUintRange(), + Amount: sdkmath.NewUint(1), + }, + }, + PrioritizedApprovals: []*types.ApprovalIdentifierDetails{ + {ApprovalId: "test", ApprovalLevel: "collection", Version: sdkmath.NewUint(0)}, + {ApprovalId: "test", ApprovalLevel: "outgoing", ApproverAddress: bob, Version: sdkmath.NewUint(1)}, + }, + }, + }, + }) + suite.Require().Nil(err, "transfer should succeed") + + bobAfter := suite.app.BankKeeper.GetBalance(suite.ctx, bobAddr, "ubadge").Amount + aliceAfter := suite.app.BankKeeper.GetBalance(suite.ctx, aliceAddr, "ubadge").Amount + charlieAfter := suite.app.BankKeeper.GetBalance(suite.ctx, charlieAddr, "ubadge").Amount + poolAfter := suite.app.BankKeeper.GetBalance(suite.ctx, poolAddr, "ubadge").Amount + + suite.Require().Equal(sdkmath.NewInt(gross), bobBefore.Sub(bobAfter), "payer debited exactly gross") + suite.Require().Equal(sdkmath.NewInt(expectedRecipient), aliceAfter.Sub(aliceBefore), "recipient gets gross - fee - royalty") + suite.Require().Equal(sdkmath.NewInt(expectedRoyalty), charlieAfter.Sub(charlieBefore), "royalty payout receives full royalty % of gross") + suite.Require().Equal(sdkmath.NewInt(expectedFee), poolAfter.Sub(poolBefore), "community pool receives fee % of gross") +} + +// TestInclusiveProtocolFeeRejectsRoyaltyPlusFeeOverflow verifies that a royalty +// percentage high enough that royalty + fee > gross is rejected rather than +// silently shortchanging the recipient by making them negative. +func (suite *TestSuite) TestInclusiveProtocolFeeRejectsRoyaltyPlusFeeOverflow() { + const gross int64 = 10_000 + + collectionsToCreate := GetTransferableCollectionToCreateAllMintedToCreator(bob) + wctx := sdk.WrapSDKContext(suite.ctx) + + // 100% royalty leaves zero for the recipient and 0.1% for the fee — overflow. + collectionsToCreate[0].CollectionApprovals[1].ApprovalCriteria.UserApprovalSettings = &types.UserApprovalSettings{ + UserRoyalties: &types.UserRoyalties{ + Percentage: sdkmath.NewUint(10000), // 100% + PayoutAddress: charlie, + }, + } + suite.Require().Nil(CreateCollections(suite, wctx, collectionsToCreate), "error creating collection") + + suite.Require().Nil(UpdateUserApprovals(suite, wctx, &types.MsgUpdateUserApprovals{ + Creator: bob, + CollectionId: sdkmath.NewUint(1), + UpdateOutgoingApprovals: true, + OutgoingApprovals: []*types.UserOutgoingApproval{ + { + ToListId: "AllWithoutMint", + InitiatedByListId: alice, + TransferTimes: GetFullUintRanges(), + OwnershipTimes: GetFullUintRanges(), + TokenIds: []*types.UintRange{{Start: sdkmath.NewUint(1), End: sdkmath.NewUint(1)}}, + ApprovalId: "test", + ApprovalCriteria: &types.OutgoingApprovalCriteria{ + MaxNumTransfers: &types.MaxNumTransfers{ + OverallMaxNumTransfers: sdkmath.NewUint(1000), + AmountTrackerId: "test-tracker", + }, + ApprovalAmounts: &types.ApprovalAmounts{ + PerFromAddressApprovalAmount: sdkmath.NewUint(1), + AmountTrackerId: "test-tracker", + }, + CoinTransfers: []*types.CoinTransfer{ + { + To: alice, + OverrideFromWithApproverAddress: true, + Coins: []*sdk.Coin{ + {Amount: sdkmath.NewInt(gross), Denom: "ubadge"}, + }, + }, + }, + }, + }, + }, + }), "error updating user approvals") + + err := TransferTokens(suite, wctx, &types.MsgTransferTokens{ + Creator: alice, + CollectionId: sdkmath.NewUint(1), + Transfers: []*types.Transfer{ + { + From: bob, + ToAddresses: []string{alice}, + Balances: []*types.Balance{ + { + OwnershipTimes: GetFullUintRanges(), + TokenIds: GetOneUintRange(), + Amount: sdkmath.NewUint(1), + }, + }, + PrioritizedApprovals: []*types.ApprovalIdentifierDetails{ + {ApprovalId: "test", ApprovalLevel: "collection", Version: sdkmath.NewUint(0)}, + {ApprovalId: "test", ApprovalLevel: "outgoing", ApproverAddress: bob, Version: sdkmath.NewUint(1)}, + }, + }, + }, + }) + suite.Require().Error(err, "royalty + protocol fee exceeding gross should be rejected") +} diff --git a/x/tokenization/keeper/transfer_utils.go b/x/tokenization/keeper/transfer_utils.go index 4c1a979c..596e49c7 100644 --- a/x/tokenization/keeper/transfer_utils.go +++ b/x/tokenization/keeper/transfer_utils.go @@ -3,94 +3,13 @@ package keeper import ( "encoding/json" "fmt" - "sort" "github.com/bitbadges/bitbadgeschain/x/tokenization/types" - sdkerrors "cosmossdk.io/errors" sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" - distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" ) -const ( - // ProtocolFeeDenominator represents the denominator for protocol fee calculation (0.1% = 1/1000) - ProtocolFeeDenominator = 1000 -) - -// CalculateAndDistributeProtocolFees calculates protocol fees from coin transfers and distributes them -// to the community pool -func (k Keeper) CalculateAndDistributeProtocolFees( - ctx sdk.Context, - coinTransfers []CoinTransfers, - initiatedBy string, -) ([]CoinTransfers, error) { - // Calculate protocol fees for all denoms (0.1% of each denom transferred) - protocolFees := sdk.NewCoins() - denomAmounts := make(map[string]sdkmath.Uint) - - for _, coinTransfer := range coinTransfers { - amount := sdkmath.NewUintFromString(coinTransfer.Amount) - // initialize it if it doesn't exist - if _, ok := denomAmounts[coinTransfer.Denom]; !ok { - denomAmounts[coinTransfer.Denom] = sdkmath.NewUint(0) - } - - denomAmounts[coinTransfer.Denom] = denomAmounts[coinTransfer.Denom].Add(amount) - } - - // Sort map keys for deterministic iteration order - denoms := make([]string, 0, len(denomAmounts)) - for denom := range denomAmounts { - denoms = append(denoms, denom) - } - sort.Strings(denoms) - - for _, denom := range denoms { - totalAmount := denomAmounts[denom] - // 0.1% of the total amount for this denom - // Safety check to prevent division by zero - if ProtocolFeeDenominator == 0 { - return nil, sdkerrors.Wrapf(types.ErrInvalidRequest, "protocol fee denominator cannot be zero") - } - protocolFee := totalAmount.Quo(sdkmath.NewUint(ProtocolFeeDenominator)) - - // For other denoms, just use 0.1% - if !protocolFee.IsZero() { - protocolFees = protocolFees.Add(sdk.NewCoin(denom, sdkmath.NewIntFromBigInt(protocolFee.BigInt()))) - } - } - - fromAddressAcc, err := sdk.AccAddressFromBech32(initiatedBy) - if err != nil { - return nil, err - } - - var protocolFeeTransfers []CoinTransfers - - if !protocolFees.IsZero() { - // Send all fees to community pool using FundCommunityPoolWithAliasRouting to support wrapped badge denoms - err = k.sendManagerKeeper.FundCommunityPoolWithAliasRouting(ctx, fromAddressAcc, protocolFees) - if err != nil { - return nil, sdkerrors.Wrapf(err, "error funding community pool with protocol fees: %s", protocolFees) - } - - // Add all protocol fees to coinTransfers for community pool - for _, protocolFee := range protocolFees { - protocolFeeTransfers = append(protocolFeeTransfers, CoinTransfers{ - From: initiatedBy, - To: authtypes.NewModuleAddress(distrtypes.ModuleName).String(), - Amount: protocolFee.Amount.String(), - Denom: protocolFee.Denom, - IsProtocolFee: true, - }) - } - } - - return protocolFeeTransfers, nil -} - // HandleAutoDeletions processes auto-deletion logic for approvals after transfers func (k Keeper) HandleAutoDeletions( ctx sdk.Context, diff --git a/x/tokenization/keeper/transfers.go b/x/tokenization/keeper/transfers.go index 8cde1c1d..a6396f64 100644 --- a/x/tokenization/keeper/transfers.go +++ b/x/tokenization/keeper/transfers.go @@ -219,14 +219,8 @@ func (k Keeper) handleTransfersInternal(ctx sdk.Context, collection *types.Token return err } - // Calculate and distribute protocol fees - protocolFeeTransfers, err := k.CalculateAndDistributeProtocolFees(ctx, coinTransfers, initiatedBy) - if err != nil { - return err - } - - // Add protocol fee transfers to the main coinTransfers slice - coinTransfers = append(coinTransfers, protocolFeeTransfers...) + // Protocol fees are now deducted inclusively inside ExecuteCoinTransfers and + // are already present in coinTransfers as entries with IsProtocolFee=true. err = EmitUsedApprovalDetailsEvent(ctx, collection.CollectionId, transfer.From, to, initiatedBy, coinTransfers, approvalsUsed, transfer.Balances) if err != nil { From 305217f2e43722def453953b4e52f2212635c103 Mon Sep 17 00:00:00 2001 From: Trevor Miller <61992896+trevormil@users.noreply.github.com> Date: Sun, 3 May 2026 08:42:39 -0400 Subject: [PATCH 23/24] chain(cli): scrub forwarder help text for flat CLI redesign (#0376) (#89) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chain(cli): scrub forwarder help text for flat CLI redesign (#0376) The forwarder logic itself is path-agnostic — it just exec's whatever subcommand the user passes through to the Node bitbadges-cli. The embedded help text and docstring examples still listed the old sdk/builder umbrellas; updates to match the new flat surface. Lists the new groups (Build & Ship / Indexer / Local State / Discovery / Address & lookup) and updates the example snippets: bitbadgeschaind cli sdk review tx.json → cli check tx.json bitbadgeschaind cli builder templates → cli build bitbadgeschaind cli builder create-with-burner → cli deploy --burner Companion to bitbadgesjs#199. Co-Authored-By: Claude Opus 4.7 (1M context) * chain: scrub stale `bitbadgeschaind cli sdk docs` reference in help_links (#0376) Embedded help string at help_links.go:98 referenced the pre-refactor `bitbadgeschaind cli sdk docs messages` path. Updates to the new flat-surface `bitbadgeschaind cli docs messages` after bitbadgesjs#199. Caught in third-pass cross-repo audit. Co-Authored-By: Claude Opus 4.7 (1M context) --------- Co-authored-by: Claude Opus 4.7 (1M context) --- cmd/bitbadgeschaind/cmd/cli_cmd.go | 33 +++++++++++++++---------- x/tokenization/client/cli/help_links.go | 2 +- 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/cmd/bitbadgeschaind/cmd/cli_cmd.go b/cmd/bitbadgeschaind/cmd/cli_cmd.go index 0e46817b..b856d4ab 100644 --- a/cmd/bitbadgeschaind/cmd/cli_cmd.go +++ b/cmd/bitbadgeschaind/cmd/cli_cmd.go @@ -12,16 +12,12 @@ import ( // through this one command — `bitbadgeschaind cli ` — without // needing a dedicated Go file per alias. // -// This is the canonical form going forward. The existing short aliases -// (sdk / api / builder) stay around for one release cycle for backwards -// compat but redirect through this same forwarder. -// // Examples: // -// bitbadgeschaind cli sdk review tx.json +// bitbadgeschaind cli check tx.json // bitbadgeschaind cli api tokens get-collection 1 -// bitbadgeschaind cli builder templates vault --backing-coin USDC -// bitbadgeschaind cli builder create-with-burner --msg-file col.json --manager bb1... +// bitbadgeschaind cli build vault --backing-coin USDC +// bitbadgeschaind cli deploy --burner --msg-file col.json --manager bb1... // bitbadgeschaind cli config set apiKey // // Any future top-level subcommand added to bitbadges-cli is automatically @@ -35,12 +31,23 @@ func CliCmd() *cobra.Command { Usage: bitbadgeschaind cli [args...] -Where is any top-level bitbadges-cli subcommand: - sdk — SDK analysis, review, interpret, address tools, docs - api — 104+ indexer API routes from your terminal - builder — template builders, create-with-burner, burner wallets, - review/verify/simulate/doctor, session tools, builder tools - config — manage ~/.bitbadges/config.json (base URL, API keys per network) +The bitbadges-cli surface is flat — every verb is top-level. Common +subcommands (run ` + "`bitbadgeschaind cli --help`" + ` for the full grouped list): + + Build & ship a transaction: + build, tools, tool, check, explain, simulate, preview, deploy + + Indexer access: + api, auth + + Local state: + config, burner, session + + Discovery: + docs, skills, resources, doctor + + Address & lookup: + address, alias, lookup, gen-list-id New top-level bitbadges-cli subcommands automatically reach here without needing a Go alias — this wrapper is the single bridge between the chain diff --git a/x/tokenization/client/cli/help_links.go b/x/tokenization/client/cli/help_links.go index 0c2b6954..a9edf5ef 100644 --- a/x/tokenization/client/cli/help_links.go +++ b/x/tokenization/client/cli/help_links.go @@ -95,7 +95,7 @@ func schemaHelpFooter(protoFile string) string { Schema & Documentation: Proto definition: %s/%s Full OpenAPI spec: %s/docs/static/openapi.yml - SDK CLI docs: bitbadgeschaind cli sdk docs messages (if SDK CLI is installed)`, + SDK CLI docs: bitbadgeschaind cli docs messages (if SDK CLI is installed)`, protoBaseURL, protoFile, repoBaseURL) } From 1e7979228ba02abd9a514e4866040419654478b3 Mon Sep 17 00:00:00 2001 From: Trevor Miller Date: Tue, 5 May 2026 08:04:54 -0400 Subject: [PATCH 24/24] =?UTF-8?q?WIP=20feat:=20SDK=20v0.54=20+=20cosmos/ev?= =?UTF-8?q?m=20v0.7.0-beta.0=20=E2=80=94=20blocked=20on=20PFM/ibc-go-v10?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rebased the feat/sdk-v0.54-upgrade branch onto current master (feat/v30 having landed) and folded in: - All v0.54 chain code from prior 3 commits on the branch (see backup tag v0.54-pre-rebase-backup): SDK v0.54.2, cometbft v0.39.1, ibc-go v11, log/v2, store/v2, IBC v11 middleware adjustments, x/group + x/crisis removal, v30 upgrade handler. - cosmos/evm v0.6.0 → v0.7.0-beta.0 (released 2026-04-27) - All required v0.7 replace directives: cosmos-sdk pseudo-version, cometbft pseudo-version, x/group → enterprise/group, geth fork to v1.17.2-cosmos-0, keyring + gin security replaces, btree → cosmos/btree - precisebank imports moved to contrib path (chain stays 9-decimal) - ibc-go/v10 → v11 in 4 remaining test files - Dependabot PR #84 bumps absorbed via go mod tidy: bufbuild/buf 1.69, ibc-apps PFM v10.6, geth 1.17, golang.org/x bumps, indirect updates. Local shim added at vendor-shims/cosmossdk-x-upgrade — copy of cosmossdk.io/x/upgrade@v0.2.0 with types/storeloader.go removed (uses incompatible store v1 types; we never call it from this path). BLOCKER: cosmos/ibc-apps/middleware/packet-forward-middleware/v10 still imports github.com/cosmos/ibc-go/v10, whose 02-client/types/store.go uses cosmossdk.io/store v1 KVStore — incompatible with our store/v2 baseapp. Build fails with type mismatches. Needs architectural decision before this branch can compile. See ticket #0118 for options. Pending mechanical fixes (will apply once PFM unblocks): - 3 precompiles: add Name() method (geth 1.17 PrecompiledContract iface) - 3 precompiles: cmn.LoadABI → abi.JSON(bytes.NewReader(f)) + f []byte - x/tokenization/module: add SetICS4Wrapper + SetUnderlyingApplication --- app/app.go | 56 +- app/app_config.go | 43 +- app/evm.go | 2 +- app/evm_mempool.go | 2 +- app/export.go | 2 +- app/gamm.go | 2 +- app/ibc.go | 55 +- app/ibc_hooks_wrapper.go | 11 +- app/ibc_legacy_localhost.go | 4 +- app/noop_contract_keeper.go | 8 +- app/sim_test.go | 8 +- app/test_helpers.go | 2 +- app/upgrades.go | 9 +- app/upgrades/v30/upgrades.go | 2 +- cmd/bitbadgeschaind/cmd/commands.go | 4 +- cmd/bitbadgeschaind/cmd/root.go | 4 +- go.mod | 400 ++- go.sum | 891 +++--- testing/ibc/app.go | 4 +- testing/ibc/e2e/ibc_denom_resolution_test.go | 6 +- testing/ibc/e2e/ibc_escrow_test.go | 6 +- .../ibc/e2e/ibc_hooks_comprehensive_test.go | 8 +- testing/ibc/e2e/ibc_hooks_test.go | 6 +- testing/ibc/e2e/ibc_rate_limit_test.go | 6 +- testing/ibc/e2e/ibc_transfer_test.go | 6 +- testing/ibc/e2e/suite_test.go | 4 +- testing/ibc/helpers.go | 8 +- testutil/keeper/ibc_helpers.go | 27 +- third_party/apptesting/test_suite.go | 11 +- third_party/osmoutils/cache_ctx.go | 2 +- third_party/osmoutils/store_helper.go | 6 +- vendor-shims/cosmossdk-x-upgrade/CHANGELOG.md | 81 + vendor-shims/cosmossdk-x-upgrade/LICENSE | 202 ++ vendor-shims/cosmossdk-x-upgrade/README.md | 609 ++++ vendor-shims/cosmossdk-x-upgrade/abci.go | 134 + vendor-shims/cosmossdk-x-upgrade/abci_test.go | 529 ++++ vendor-shims/cosmossdk-x-upgrade/autocli.go | 66 + .../cosmossdk-x-upgrade/client/cli/parse.go | 21 + .../client/cli/parse_test.go | 33 + .../cosmossdk-x-upgrade/client/cli/tx.go | 194 ++ vendor-shims/cosmossdk-x-upgrade/doc.go | 12 + .../cosmossdk-x-upgrade/exported/exported.go | 7 + vendor-shims/cosmossdk-x-upgrade/go.mod | 211 ++ vendor-shims/cosmossdk-x-upgrade/go.sum | 2460 +++++++++++++++++ .../cosmossdk-x-upgrade/internal/conv/doc.go | 2 + .../internal/conv/string.go | 11 + .../internal/conv/string_test.go | 39 + .../cosmossdk-x-upgrade/keeper/grpc_query.go | 89 + .../keeper/grpc_query_test.go | 236 ++ .../cosmossdk-x-upgrade/keeper/keeper.go | 585 ++++ .../cosmossdk-x-upgrade/keeper/keeper_test.go | 390 +++ .../cosmossdk-x-upgrade/keeper/migrations.go | 49 + .../keeper/migrations_test.go | 68 + .../cosmossdk-x-upgrade/keeper/msg_server.go | 56 + .../keeper/msg_server_test.go | 139 + vendor-shims/cosmossdk-x-upgrade/module.go | 238 ++ .../cosmossdk-x-upgrade/plan/downloader.go | 167 ++ .../plan/downloader_test.go | 292 ++ vendor-shims/cosmossdk-x-upgrade/plan/info.go | 143 + .../cosmossdk-x-upgrade/plan/info_test.go | 346 +++ .../cosmossdk-x-upgrade/types/codec.go | 35 + .../cosmossdk-x-upgrade/types/errors.go | 19 + .../cosmossdk-x-upgrade/types/handler.go | 27 + .../cosmossdk-x-upgrade/types/keys.go | 57 + .../cosmossdk-x-upgrade/types/plan.go | 40 + .../cosmossdk-x-upgrade/types/plan_test.go | 148 + .../cosmossdk-x-upgrade/types/proposal.go | 74 + .../types/proposal_test.go | 103 + .../cosmossdk-x-upgrade/types/querier.go | 7 + .../cosmossdk-x-upgrade/types/query.pb.go | 2051 ++++++++++++++ .../cosmossdk-x-upgrade/types/query.pb.gw.go | 503 ++++ .../cosmossdk-x-upgrade/types/tx.pb.go | 931 +++++++ .../cosmossdk-x-upgrade/types/upgrade.pb.go | 1318 +++++++++ x/custom-hooks/ai_test/testutil/suite.go | 4 +- x/custom-hooks/extract_denom_test.go | 6 +- x/custom-hooks/hooks.go | 6 +- x/custom-hooks/hooks_test.go | 8 +- x/custom-hooks/keeper/keeper.go | 10 +- x/custom-hooks/keeper/keeper_test.go | 4 +- x/custom-hooks/keeper/transfer_tokens.go | 2 +- x/custom-hooks/types/keys.go | 2 +- x/custom-hooks/types/types.go | 4 +- x/gamm/keeper/grpc_query.go | 2 +- x/gamm/keeper/ibc_escrow_test.go | 6 +- x/gamm/keeper/keeper.go | 6 +- x/gamm/keeper/pool.go | 2 +- x/gamm/keeper/swap_test.go | 2 +- x/gamm/keeper/total_liquidity.go | 2 +- .../internal/test_helpers/test_helpers.go | 7 +- x/gamm/precompile/precompile.go | 2 +- x/gamm/types/expected_keepers.go | 4 +- x/gamm/types/ibc_denom.go | 2 +- x/gamm/types/ibc_denom_test.go | 2 +- x/ibc-hooks/ai_test/testutil/generators.go | 6 +- x/ibc-hooks/ai_test/testutil/suite.go | 11 +- .../ai_test/unit/hooks/on_recv_packet_test.go | 4 +- .../unit/middleware/send_packet_test.go | 2 +- x/ibc-hooks/hooks.go | 6 +- x/ibc-hooks/ibc_module.go | 23 +- x/ibc-hooks/ics4_middleware.go | 6 +- x/ibc-hooks/types/expected_keepers.go | 4 +- x/ibc-rate-limit/hooks/hooks.go | 8 +- x/ibc-rate-limit/hooks/refund_test.go | 15 +- x/ibc-rate-limit/keeper/keeper.go | 6 +- x/ibc-rate-limit/keeper/keeper_test.go | 13 +- x/ibc-rate-limit/types/types.go | 4 +- x/managersplitter/keeper/keeper.go | 2 +- x/managersplitter/keeper/store.go | 4 +- x/managersplitter/module/module.go | 2 +- x/poolmanager/keeper.go | 2 +- x/poolmanager/store.go | 2 +- x/poolmanager/taker_fee.go | 2 +- x/sendmanager/ai_test/testutil/suite.go | 2 +- x/sendmanager/keeper/keeper.go | 2 +- x/sendmanager/keeper/keeper_test.go | 2 +- x/sendmanager/precompile/precompile.go | 2 +- x/tokenization/keeper/collection_cleanup.go | 4 +- x/tokenization/keeper/keeper.go | 6 +- x/tokenization/keeper/migrations.go | 176 +- x/tokenization/keeper/store.go | 4 +- x/tokenization/module/module.go | 6 +- x/tokenization/module/module_ibc.go | 6 +- x/tokenization/precompile/precompile.go | 2 +- .../evm_keeper_integration_test.go | 2 +- .../testutil/keeper/tokenization.go | 9 +- x/tokenization/types/expected_ibc_keeper.go | 4 +- x/tokenization/types/genesis.go | 2 +- 127 files changed, 13790 insertions(+), 971 deletions(-) create mode 100644 vendor-shims/cosmossdk-x-upgrade/CHANGELOG.md create mode 100644 vendor-shims/cosmossdk-x-upgrade/LICENSE create mode 100644 vendor-shims/cosmossdk-x-upgrade/README.md create mode 100644 vendor-shims/cosmossdk-x-upgrade/abci.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/abci_test.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/autocli.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/client/cli/parse.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/client/cli/parse_test.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/client/cli/tx.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/doc.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/exported/exported.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/go.mod create mode 100644 vendor-shims/cosmossdk-x-upgrade/go.sum create mode 100644 vendor-shims/cosmossdk-x-upgrade/internal/conv/doc.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/internal/conv/string.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/internal/conv/string_test.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/keeper/grpc_query.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/keeper/grpc_query_test.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/keeper/keeper.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/keeper/keeper_test.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/keeper/migrations.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/keeper/migrations_test.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/keeper/msg_server.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/keeper/msg_server_test.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/module.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/plan/downloader.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/plan/downloader_test.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/plan/info.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/plan/info_test.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/types/codec.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/types/errors.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/types/handler.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/types/keys.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/types/plan.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/types/plan_test.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/types/proposal.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/types/proposal_test.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/types/querier.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/types/query.pb.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/types/query.pb.gw.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/types/tx.pb.go create mode 100644 vendor-shims/cosmossdk-x-upgrade/types/upgrade.pb.go diff --git a/app/app.go b/app/app.go index 1db4ca5a..332d0947 100644 --- a/app/app.go +++ b/app/app.go @@ -7,18 +7,18 @@ import ( _ "cosmossdk.io/api/cosmos/tx/config/v1" // import for side-effects clienthelpers "cosmossdk.io/client/v2/helpers" "cosmossdk.io/depinject" - "cosmossdk.io/log" - storetypes "cosmossdk.io/store/types" - _ "cosmossdk.io/x/circuit" // import for side-effects - circuitkeeper "cosmossdk.io/x/circuit/keeper" - _ "cosmossdk.io/x/evidence" // import for side-effects - evidencekeeper "cosmossdk.io/x/evidence/keeper" - feegrantkeeper "cosmossdk.io/x/feegrant/keeper" - _ "cosmossdk.io/x/feegrant/module" // import for side-effects - txsigning "cosmossdk.io/x/tx/signing" - _ "cosmossdk.io/x/upgrade" // import for side-effects - - upgradekeeper "cosmossdk.io/x/upgrade/keeper" + "cosmossdk.io/log/v2" + storetypes "github.com/cosmos/cosmos-sdk/store/v2/types" + _ "github.com/cosmos/cosmos-sdk/contrib/x/circuit" // import for side-effects + circuitkeeper "github.com/cosmos/cosmos-sdk/contrib/x/circuit/keeper" + _ "github.com/cosmos/cosmos-sdk/x/evidence" // import for side-effects + evidencekeeper "github.com/cosmos/cosmos-sdk/x/evidence/keeper" + feegrantkeeper "github.com/cosmos/cosmos-sdk/x/feegrant/keeper" + _ "github.com/cosmos/cosmos-sdk/x/feegrant/module" // import for side-effects + txsigning "github.com/cosmos/cosmos-sdk/x/tx/signing" + _ "github.com/cosmos/cosmos-sdk/x/upgrade" // import for side-effects + + upgradekeeper "github.com/cosmos/cosmos-sdk/x/upgrade/keeper" abci "github.com/cometbft/cometbft/abci/types" dbm "github.com/cosmos/cosmos-db" "github.com/cosmos/cosmos-sdk/baseapp" @@ -44,8 +44,6 @@ import ( bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" _ "github.com/cosmos/cosmos-sdk/x/consensus" // import for side-effects consensuskeeper "github.com/cosmos/cosmos-sdk/x/consensus/keeper" - _ "github.com/cosmos/cosmos-sdk/x/crisis" // import for side-effects - crisiskeeper "github.com/cosmos/cosmos-sdk/x/crisis/keeper" _ "github.com/cosmos/cosmos-sdk/x/distribution" // import for side-effects distrkeeper "github.com/cosmos/cosmos-sdk/x/distribution/keeper" @@ -55,8 +53,7 @@ import ( govclient "github.com/cosmos/cosmos-sdk/x/gov/client" govkeeper "github.com/cosmos/cosmos-sdk/x/gov/keeper" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - groupkeeper "github.com/cosmos/cosmos-sdk/x/group/keeper" - _ "github.com/cosmos/cosmos-sdk/x/group/module" // import for side-effects +// x/group removed in v0.54 (moved to Cosmos Enterprise) _ "github.com/cosmos/cosmos-sdk/x/mint" // import for side-effects mintkeeper "github.com/cosmos/cosmos-sdk/x/mint/keeper" _ "github.com/cosmos/cosmos-sdk/x/params" // import for side-effects @@ -71,11 +68,11 @@ import ( packetforward "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v10/packetforward" packetforwardkeeper "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v10/packetforward/keeper" packetforwardtypes "github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v10/packetforward/types" - _ "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts" // import for side-effects - icacontrollerkeeper "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/controller/keeper" - icahostkeeper "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/host/keeper" - porttypes "github.com/cosmos/ibc-go/v10/modules/core/05-port/types" - ibckeeper "github.com/cosmos/ibc-go/v10/modules/core/keeper" + _ "github.com/cosmos/ibc-go/v11/modules/apps/27-interchain-accounts" // import for side-effects + icacontrollerkeeper "github.com/cosmos/ibc-go/v11/modules/apps/27-interchain-accounts/controller/keeper" + icahostkeeper "github.com/cosmos/ibc-go/v11/modules/apps/27-interchain-accounts/host/keeper" + porttypes "github.com/cosmos/ibc-go/v11/modules/core/05-port/types" + ibckeeper "github.com/cosmos/ibc-go/v11/modules/core/keeper" sdkmempool "github.com/cosmos/cosmos-sdk/types/mempool" evmante "github.com/cosmos/evm/ante" @@ -83,10 +80,10 @@ import ( evmmempool "github.com/cosmos/evm/mempool" erc20keeper "github.com/cosmos/evm/x/erc20/keeper" feemarketkeeper "github.com/cosmos/evm/x/feemarket/keeper" - transferkeeper "github.com/cosmos/ibc-go/v10/modules/apps/transfer/keeper" - precisebank "github.com/cosmos/evm/x/precisebank" - precisebankkeeper "github.com/cosmos/evm/x/precisebank/keeper" - precisebanktypes "github.com/cosmos/evm/x/precisebank/types" + transferkeeper "github.com/cosmos/ibc-go/v11/modules/apps/transfer/keeper" + precisebank "github.com/cosmos/evm/contrib/x/precisebank" + precisebankkeeper "github.com/cosmos/evm/contrib/x/precisebank/keeper" + precisebanktypes "github.com/cosmos/evm/contrib/x/precisebank/types" evmkeeper "github.com/cosmos/evm/x/vm/keeper" evmtypes "github.com/cosmos/evm/x/vm/types" "github.com/ethereum/go-ethereum/common" @@ -143,13 +140,13 @@ type App struct { SlashingKeeper slashingkeeper.Keeper MintKeeper mintkeeper.Keeper GovKeeper *govkeeper.Keeper - CrisisKeeper *crisiskeeper.Keeper + // CrisisKeeper removed in v0.54 (moved to contrib) UpgradeKeeper *upgradekeeper.Keeper ParamsKeeper paramskeeper.Keeper AuthzKeeper authzkeeper.Keeper EvidenceKeeper evidencekeeper.Keeper FeeGrantKeeper feegrantkeeper.Keeper - GroupKeeper groupkeeper.Keeper + CircuitBreakerKeeper circuitkeeper.Keeper // IBC @@ -284,13 +281,12 @@ func New( &app.SlashingKeeper, &app.MintKeeper, &app.GovKeeper, - &app.CrisisKeeper, &app.UpgradeKeeper, &app.ParamsKeeper, &app.AuthzKeeper, &app.EvidenceKeeper, &app.FeeGrantKeeper, - &app.GroupKeeper, + &app.CircuitBreakerKeeper, &app.TokenizationKeeper, &app.ManagerSplitterKeeper, @@ -395,7 +391,7 @@ func New( } /**** Module Options ****/ - app.ModuleManager.RegisterInvariants(app.CrisisKeeper) + // Crisis invariants removed in v0.54 // create the simulation manager and define the order of the modules for deterministic simulations overrideModules := map[string]module.AppModuleSimulation{ diff --git a/app/app_config.go b/app/app_config.go index 6cd514d0..75f1641e 100644 --- a/app/app_config.go +++ b/app/app_config.go @@ -1,8 +1,6 @@ package app import ( - "time" - gammtypes "github.com/bitbadges/bitbadgeschain/x/gamm/types" poolmanagertypes "github.com/bitbadges/bitbadgeschain/x/poolmanager/types" _ "github.com/bitbadges/bitbadgeschain/x/sendmanager/module" @@ -13,15 +11,13 @@ import ( authmodulev1 "cosmossdk.io/api/cosmos/auth/module/v1" authzmodulev1 "cosmossdk.io/api/cosmos/authz/module/v1" bankmodulev1 "cosmossdk.io/api/cosmos/bank/module/v1" - circuitmodulev1 "cosmossdk.io/api/cosmos/circuit/module/v1" + circuitmodulev1 "github.com/cosmos/cosmos-sdk/contrib/api/cosmos/circuit/module/v1" consensusmodulev1 "cosmossdk.io/api/cosmos/consensus/module/v1" - crisismodulev1 "cosmossdk.io/api/cosmos/crisis/module/v1" distrmodulev1 "cosmossdk.io/api/cosmos/distribution/module/v1" evidencemodulev1 "cosmossdk.io/api/cosmos/evidence/module/v1" feegrantmodulev1 "cosmossdk.io/api/cosmos/feegrant/module/v1" genutilmodulev1 "cosmossdk.io/api/cosmos/genutil/module/v1" govmodulev1 "cosmossdk.io/api/cosmos/gov/module/v1" - groupmodulev1 "cosmossdk.io/api/cosmos/group/module/v1" mintmodulev1 "cosmossdk.io/api/cosmos/mint/module/v1" paramsmodulev1 "cosmossdk.io/api/cosmos/params/module/v1" slashingmodulev1 "cosmossdk.io/api/cosmos/slashing/module/v1" @@ -31,28 +27,26 @@ import ( vestingmodulev1 "cosmossdk.io/api/cosmos/vesting/module/v1" "cosmossdk.io/core/appconfig" - circuittypes "cosmossdk.io/x/circuit/types" - evidencetypes "cosmossdk.io/x/evidence/types" - "cosmossdk.io/x/feegrant" - upgradetypes "cosmossdk.io/x/upgrade/types" + circuittypes "github.com/cosmos/cosmos-sdk/contrib/x/circuit/types" + evidencetypes "github.com/cosmos/cosmos-sdk/x/evidence/types" + "github.com/cosmos/cosmos-sdk/x/feegrant" + upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" "github.com/cosmos/cosmos-sdk/runtime" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" vestingtypes "github.com/cosmos/cosmos-sdk/x/auth/vesting/types" "github.com/cosmos/cosmos-sdk/x/authz" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" consensustypes "github.com/cosmos/cosmos-sdk/x/consensus/types" - crisistypes "github.com/cosmos/cosmos-sdk/x/crisis/types" distrtypes "github.com/cosmos/cosmos-sdk/x/distribution/types" genutiltypes "github.com/cosmos/cosmos-sdk/x/genutil/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - "github.com/cosmos/cosmos-sdk/x/group" minttypes "github.com/cosmos/cosmos-sdk/x/mint/types" paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" stakingtypes "github.com/cosmos/cosmos-sdk/x/staking/types" - icatypes "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/types" - ibctransfertypes "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types" - ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported" + icatypes "github.com/cosmos/ibc-go/v11/modules/apps/27-interchain-accounts/types" + ibctransfertypes "github.com/cosmos/ibc-go/v11/modules/apps/transfer/types" + ibcexported "github.com/cosmos/ibc-go/v11/modules/core/exported" tokenizationmodulev1 "github.com/bitbadges/bitbadgeschain/api/tokenization/module" _ "github.com/bitbadges/bitbadgeschain/x/tokenization/module" // import for side-effects @@ -70,10 +64,9 @@ import ( erc20types "github.com/cosmos/evm/x/erc20/types" feemarkettypes "github.com/cosmos/evm/x/feemarket/types" - precisebanktypes "github.com/cosmos/evm/x/precisebank/types" + precisebanktypes "github.com/cosmos/evm/contrib/x/precisebank/types" evmtypes "github.com/cosmos/evm/x/vm/types" - "google.golang.org/protobuf/types/known/durationpb" // this line is used by starport scaffolding # stargate/app/moduleImport ) @@ -90,7 +83,6 @@ var ( slashingtypes.ModuleName, govtypes.ModuleName, minttypes.ModuleName, - crisistypes.ModuleName, ibcexported.ModuleName, genutiltypes.ModuleName, evidencetypes.ModuleName, @@ -102,7 +94,6 @@ var ( paramstypes.ModuleName, upgradetypes.ModuleName, vestingtypes.ModuleName, - group.ModuleName, consensustypes.ModuleName, circuittypes.ModuleName, // chain modules @@ -153,11 +144,10 @@ var ( endBlockers = []string{ // cosmos sdk modules - crisistypes.ModuleName, + banktypes.ModuleName, // REQUIRED for v0.54 - must be first for BlockSTM support govtypes.ModuleName, stakingtypes.ModuleName, feegrant.ModuleName, - group.ModuleName, genutiltypes.ModuleName, // ibc modules ibcexported.ModuleName, @@ -306,13 +296,7 @@ var ( Name: minttypes.ModuleName, Config: appconfig.WrapAny(&mintmodulev1.Module{}), }, - { - Name: group.ModuleName, - Config: appconfig.WrapAny(&groupmodulev1.Module{ - MaxExecutionPeriod: durationpb.New(time.Second * 1209600), - MaxMetadataLen: 255, - }), - }, + // x/group removed in v0.54 (moved to Cosmos Enterprise) { Name: feegrant.ModuleName, Config: appconfig.WrapAny(&feegrantmodulev1.Module{}), @@ -321,10 +305,7 @@ var ( Name: govtypes.ModuleName, Config: appconfig.WrapAny(&govmodulev1.Module{}), }, - { - Name: crisistypes.ModuleName, - Config: appconfig.WrapAny(&crisismodulev1.Module{}), - }, + // x/crisis removed in v0.54 (moved to contrib, no longer actively maintained) { Name: consensustypes.ModuleName, Config: appconfig.WrapAny(&consensusmodulev1.Module{}), diff --git a/app/evm.go b/app/evm.go index 49a5341a..473fefc8 100644 --- a/app/evm.go +++ b/app/evm.go @@ -17,7 +17,7 @@ import ( evmkeeper "github.com/cosmos/evm/x/vm/keeper" evmtypes "github.com/cosmos/evm/x/vm/types" - storetypes "cosmossdk.io/store/types" + storetypes "github.com/cosmos/cosmos-sdk/store/v2/types" servertypes "github.com/cosmos/cosmos-sdk/server/types" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/app/evm_mempool.go b/app/evm_mempool.go index 0b504992..cc4758ef 100644 --- a/app/evm_mempool.go +++ b/app/evm_mempool.go @@ -3,7 +3,7 @@ package app import ( "fmt" - "cosmossdk.io/log" + "cosmossdk.io/log/v2" "github.com/cosmos/cosmos-sdk/baseapp" "github.com/cosmos/cosmos-sdk/client" servertypes "github.com/cosmos/cosmos-sdk/server/types" diff --git a/app/export.go b/app/export.go index e55c844d..788a979b 100644 --- a/app/export.go +++ b/app/export.go @@ -5,7 +5,7 @@ import ( "fmt" "log" - storetypes "cosmossdk.io/store/types" + storetypes "github.com/cosmos/cosmos-sdk/store/v2/types" cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" servertypes "github.com/cosmos/cosmos-sdk/server/types" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/app/gamm.go b/app/gamm.go index 1a56f2a0..33891b7e 100644 --- a/app/gamm.go +++ b/app/gamm.go @@ -2,7 +2,7 @@ package app import ( "cosmossdk.io/core/appmodule" - storetypes "cosmossdk.io/store/types" + storetypes "github.com/cosmos/cosmos-sdk/store/v2/types" cdctypes "github.com/cosmos/cosmos-sdk/codec/types" servertypes "github.com/cosmos/cosmos-sdk/server/types" "github.com/cosmos/cosmos-sdk/types/module" diff --git a/app/ibc.go b/app/ibc.go index b36e15b6..d05bda81 100644 --- a/app/ibc.go +++ b/app/ibc.go @@ -2,7 +2,7 @@ package app import ( "cosmossdk.io/core/appmodule" - storetypes "cosmossdk.io/store/types" + storetypes "github.com/cosmos/cosmos-sdk/store/v2/types" cdctypes "github.com/cosmos/cosmos-sdk/codec/types" "github.com/cosmos/cosmos-sdk/runtime" servertypes "github.com/cosmos/cosmos-sdk/server/types" @@ -10,28 +10,28 @@ import ( authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" govv1beta1 "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" - transferkeeper "github.com/cosmos/ibc-go/v10/modules/apps/transfer/keeper" - icamodule "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts" - icacontroller "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/controller" - icacontrollerkeeper "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/controller/keeper" - icacontrollertypes "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/controller/types" - icahost "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/host" - icahostkeeper "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/host/keeper" - icahosttypes "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/host/types" - icatypes "github.com/cosmos/ibc-go/v10/modules/apps/27-interchain-accounts/types" - ibccallbacks "github.com/cosmos/ibc-go/v10/modules/apps/callbacks" - ibctransfer "github.com/cosmos/ibc-go/v10/modules/apps/transfer" - ibctransfertypes "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types" + transferkeeper "github.com/cosmos/ibc-go/v11/modules/apps/transfer/keeper" + icamodule "github.com/cosmos/ibc-go/v11/modules/apps/27-interchain-accounts" + icacontroller "github.com/cosmos/ibc-go/v11/modules/apps/27-interchain-accounts/controller" + icacontrollerkeeper "github.com/cosmos/ibc-go/v11/modules/apps/27-interchain-accounts/controller/keeper" + icacontrollertypes "github.com/cosmos/ibc-go/v11/modules/apps/27-interchain-accounts/controller/types" + icahost "github.com/cosmos/ibc-go/v11/modules/apps/27-interchain-accounts/host" + icahostkeeper "github.com/cosmos/ibc-go/v11/modules/apps/27-interchain-accounts/host/keeper" + icahosttypes "github.com/cosmos/ibc-go/v11/modules/apps/27-interchain-accounts/host/types" + icatypes "github.com/cosmos/ibc-go/v11/modules/apps/27-interchain-accounts/types" + ibccallbacks "github.com/cosmos/ibc-go/v11/modules/apps/callbacks" + ibctransfer "github.com/cosmos/ibc-go/v11/modules/apps/transfer" + ibctransfertypes "github.com/cosmos/ibc-go/v11/modules/apps/transfer/types" sdk "github.com/cosmos/cosmos-sdk/types" - ibc "github.com/cosmos/ibc-go/v10/modules/core" - ibcclienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" - porttypes "github.com/cosmos/ibc-go/v10/modules/core/05-port/types" - ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported" - ibckeeper "github.com/cosmos/ibc-go/v10/modules/core/keeper" - solomachine "github.com/cosmos/ibc-go/v10/modules/light-clients/06-solomachine" - ibctm "github.com/cosmos/ibc-go/v10/modules/light-clients/07-tendermint" + ibc "github.com/cosmos/ibc-go/v11/modules/core" + ibcclienttypes "github.com/cosmos/ibc-go/v11/modules/core/02-client/types" + porttypes "github.com/cosmos/ibc-go/v11/modules/core/05-port/types" + ibcexported "github.com/cosmos/ibc-go/v11/modules/core/exported" + ibckeeper "github.com/cosmos/ibc-go/v11/modules/core/keeper" + solomachine "github.com/cosmos/ibc-go/v11/modules/light-clients/06-solomachine" + ibctm "github.com/cosmos/ibc-go/v11/modules/light-clients/07-tendermint" // this line is used by starport scaffolding # ibc/app/import tokenizationmoduletypes "github.com/bitbadges/bitbadgeschain/x/tokenization/types" @@ -52,7 +52,7 @@ import ( ibcratelimitkeeper "github.com/bitbadges/bitbadgeschain/x/ibc-rate-limit/keeper" ibcratelimitmodule "github.com/bitbadges/bitbadgeschain/x/ibc-rate-limit/module" ibcratelimittypes "github.com/bitbadges/bitbadgeschain/x/ibc-rate-limit/types" - channeltypes "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" + channeltypes "github.com/cosmos/ibc-go/v11/modules/core/04-channel/types" ) // CombinedIBCHooks combines rate limit and custom hooks @@ -139,11 +139,10 @@ func (app *App) registerIBCModules(appOpts servertypes.AppOptions) error { // register the key tables for legacy param subspaces app.ParamsKeeper.Subspace(ibchookstypes.ModuleName).WithKeyTable(ibchookstypes.ParamKeyTable()) - // Create IBC keeper (IBC v10 - no capability keeper needed) + // Create IBC keeper (IBC v11 - ParamSubspace removed) app.IBCKeeper = ibckeeper.NewKeeper( app.appCodec, runtime.NewKVStoreService(app.GetKey(ibcexported.StoreKey)), - app.GetSubspace(ibcexported.ModuleName), app.UpgradeKeeper, authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) @@ -163,13 +162,13 @@ func (app *App) registerIBCModules(appOpts servertypes.AppOptions) error { govRouter := govv1beta1.NewRouter() govRouter.AddRoute(govtypes.RouterKey, govv1beta1.ProposalHandler) - // Create IBC-Go transfer keeper (v0.6.0: ERC20 conversions now handled by ICS20 precompile) + // Create IBC-Go transfer keeper (IBC v11: AddressCodec added) app.TransferKeeper = transferkeeper.NewKeeper( app.appCodec, + app.AccountKeeper.AddressCodec(), runtime.NewKVStoreService(app.GetKey(ibctransfertypes.StoreKey)), nil, // ICS4Wrapper - set later via WithICS4Wrapper app.IBCKeeper.ChannelKeeper, // ChannelKeeper - app.IBCKeeper.ChannelKeeper, // PortKeeper app.MsgServiceRouter(), // MessageRouter app.AccountKeeper, app.BankKeeper, @@ -181,19 +180,18 @@ func (app *App) registerIBCModules(appOpts servertypes.AppOptions) error { // We'll create it after the transfer stack is set up app.PacketForwardKeeper = packetforwardkeeper.NewKeeper( app.appCodec, + app.AccountKeeper.AddressCodec(), runtime.NewKVStoreService(app.GetKey(packetforwardtypes.StoreKey)), app.TransferKeeper, app.IBCKeeper.ChannelKeeper, app.BankKeeper, - app.IBCKeeper.ChannelKeeper, // ICS4Wrapper authtypes.NewModuleAddress(govtypes.ModuleName).String(), ) - // Create interchain account keepers (IBC v10 - updated API) + // Create interchain account keepers (IBC v11 - ParamSubspace removed) app.ICAHostKeeper = icahostkeeper.NewKeeper( app.appCodec, runtime.NewKVStoreService(app.GetKey(icahosttypes.StoreKey)), - app.GetSubspace(icatypes.ModuleName), app.IBCKeeper.ChannelKeeper, // ICS4Wrapper app.IBCKeeper.ChannelKeeper, // ChannelKeeper app.AccountKeeper, @@ -205,7 +203,6 @@ func (app *App) registerIBCModules(appOpts servertypes.AppOptions) error { app.ICAControllerKeeper = icacontrollerkeeper.NewKeeper( app.appCodec, runtime.NewKVStoreService(app.GetKey(icacontrollertypes.StoreKey)), - app.GetSubspace(icatypes.ModuleName), app.IBCKeeper.ChannelKeeper, // ICS4Wrapper app.IBCKeeper.ChannelKeeper, // ChannelKeeper app.MsgServiceRouter(), diff --git a/app/ibc_hooks_wrapper.go b/app/ibc_hooks_wrapper.go index 8bcc0de4..be80485d 100644 --- a/app/ibc_hooks_wrapper.go +++ b/app/ibc_hooks_wrapper.go @@ -2,9 +2,9 @@ package app import ( sdk "github.com/cosmos/cosmos-sdk/types" - channeltypes "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" - porttypes "github.com/cosmos/ibc-go/v10/modules/core/05-port/types" - ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported" + channeltypes "github.com/cosmos/ibc-go/v11/modules/core/04-channel/types" + porttypes "github.com/cosmos/ibc-go/v11/modules/core/05-port/types" + ibcexported "github.com/cosmos/ibc-go/v11/modules/core/exported" customhooks "github.com/bitbadges/bitbadgeschain/x/custom-hooks" ibchooks "github.com/bitbadges/bitbadgeschain/x/ibc-hooks" @@ -68,3 +68,8 @@ func (w *customHooksWrapper) OnAcknowledgementPacket(ctx sdk.Context, packetID s func (w *customHooksWrapper) OnTimeoutPacket(ctx sdk.Context, packetID string, packet channeltypes.Packet, relayer sdk.AccAddress) error { return w.app.OnTimeoutPacket(ctx, packetID, packet, relayer) } + +// IBC v11: IBCModule now requires SetICS4Wrapper. Forward to the wrapped app. +func (w *customHooksWrapper) SetICS4Wrapper(wrapper porttypes.ICS4Wrapper) { + w.app.SetICS4Wrapper(wrapper) +} diff --git a/app/ibc_legacy_localhost.go b/app/ibc_legacy_localhost.go index affb6e79..7cc2868f 100644 --- a/app/ibc_legacy_localhost.go +++ b/app/ibc_legacy_localhost.go @@ -4,8 +4,8 @@ import ( codectypes "github.com/cosmos/cosmos-sdk/codec/types" "github.com/cosmos/gogoproto/proto" - ibcclienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" - ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported" + ibcclienttypes "github.com/cosmos/ibc-go/v11/modules/core/02-client/types" + ibcexported "github.com/cosmos/ibc-go/v11/modules/core/exported" ) // LegacyLocalhostClientState is the legacy 09-localhost ClientState type from IBC v8. diff --git a/app/noop_contract_keeper.go b/app/noop_contract_keeper.go index 49790498..859fcc11 100644 --- a/app/noop_contract_keeper.go +++ b/app/noop_contract_keeper.go @@ -2,10 +2,10 @@ package app import ( sdk "github.com/cosmos/cosmos-sdk/types" - ibccallbackstypes "github.com/cosmos/ibc-go/v10/modules/apps/callbacks/types" - clienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" - channeltypes "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" - ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported" + ibccallbackstypes "github.com/cosmos/ibc-go/v11/modules/apps/callbacks/types" + clienttypes "github.com/cosmos/ibc-go/v11/modules/core/02-client/types" + channeltypes "github.com/cosmos/ibc-go/v11/modules/core/04-channel/types" + ibcexported "github.com/cosmos/ibc-go/v11/modules/core/exported" ) // NoopContractKeeper is a no-op implementation of ibccallbackstypes.ContractKeeper diff --git a/app/sim_test.go b/app/sim_test.go index dddebe7f..8731b649 100644 --- a/app/sim_test.go +++ b/app/sim_test.go @@ -11,10 +11,10 @@ import ( "testing" "time" - "cosmossdk.io/log" - "cosmossdk.io/store" - storetypes "cosmossdk.io/store/types" - "cosmossdk.io/x/feegrant" + "cosmossdk.io/log/v2" + "github.com/cosmos/cosmos-sdk/store/v2" + storetypes "github.com/cosmos/cosmos-sdk/store/v2/types" + "github.com/cosmos/cosmos-sdk/x/feegrant" abci "github.com/cometbft/cometbft/abci/types" cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" dbm "github.com/cosmos/cosmos-db" diff --git a/app/test_helpers.go b/app/test_helpers.go index 4158d9cf..f58b56f2 100644 --- a/app/test_helpers.go +++ b/app/test_helpers.go @@ -7,7 +7,7 @@ import ( "time" clienthelpers "cosmossdk.io/client/v2/helpers" - log "cosmossdk.io/log" + log "cosmossdk.io/log/v2" abci "github.com/cometbft/cometbft/abci/types" "github.com/cometbft/cometbft/crypto/ed25519" tmproto "github.com/cometbft/cometbft/proto/tendermint/types" diff --git a/app/upgrades.go b/app/upgrades.go index d1b7f24b..11d0701e 100644 --- a/app/upgrades.go +++ b/app/upgrades.go @@ -1,8 +1,8 @@ package app import ( - storetypes "cosmossdk.io/store/types" - upgradetypes "cosmossdk.io/x/upgrade/types" + storetypes "github.com/cosmos/cosmos-sdk/store/v2/types" + upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" v30 "github.com/bitbadges/bitbadgeschain/app/upgrades/v30" ) @@ -37,8 +37,9 @@ func (app *App) RegisterUpgradeHandlers() { case v30.UpgradeName: storeUpgrades = &storetypes.StoreUpgrades{ Renamed: []storetypes.StoreRename{}, - // v30: remove deprecated x/anchor and x/maps modules - Deleted: []string{"anchor", "maps"}, + // v30: remove x/anchor, x/maps, x/group, x/crisis + // (group/crisis removed by SDK v0.54 migration; anchor/maps deprecated) + Deleted: []string{"anchor", "maps", "group", "crisis"}, Added: []string{}, } } diff --git a/app/upgrades/v30/upgrades.go b/app/upgrades/v30/upgrades.go index 7a5a001f..3afa0767 100644 --- a/app/upgrades/v30/upgrades.go +++ b/app/upgrades/v30/upgrades.go @@ -3,7 +3,7 @@ package v30 import ( "context" - upgradetypes "cosmossdk.io/x/upgrade/types" + upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" ibcratelimitkeeper "github.com/bitbadges/bitbadgeschain/x/ibc-rate-limit/keeper" poolmanagerkeeper "github.com/bitbadges/bitbadgeschain/x/poolmanager" tokenizationkeeper "github.com/bitbadges/bitbadgeschain/x/tokenization/keeper" diff --git a/cmd/bitbadgeschaind/cmd/commands.go b/cmd/bitbadgeschaind/cmd/commands.go index e39a0eec..e622f948 100644 --- a/cmd/bitbadgeschaind/cmd/commands.go +++ b/cmd/bitbadgeschaind/cmd/commands.go @@ -5,7 +5,7 @@ import ( "fmt" "io" - "cosmossdk.io/log" + "cosmossdk.io/log/v2" confixcmd "cosmossdk.io/tools/confix/cmd" dbm "github.com/cosmos/cosmos-db" "github.com/cosmos/cosmos-sdk/client" @@ -18,7 +18,6 @@ import ( servertypes "github.com/cosmos/cosmos-sdk/server/types" "github.com/cosmos/cosmos-sdk/types/module" authcmd "github.com/cosmos/cosmos-sdk/x/auth/client/cli" - "github.com/cosmos/cosmos-sdk/x/crisis" genutilcli "github.com/cosmos/cosmos-sdk/x/genutil/client/cli" cosmosevmcmd "github.com/cosmos/evm/client" cosmosevmserver "github.com/cosmos/evm/server" @@ -91,7 +90,6 @@ func initRootCmd( } func addModuleInitFlags(startCmd *cobra.Command) { - crisis.AddModuleInitFlags(startCmd) } // genesisCommand builds genesis-related `bitbadgeschaind genesis` command. Users may provide application specific commands as a parameter diff --git a/cmd/bitbadgeschaind/cmd/root.go b/cmd/bitbadgeschaind/cmd/root.go index 805f237f..c8df9fd0 100644 --- a/cmd/bitbadgeschaind/cmd/root.go +++ b/cmd/bitbadgeschaind/cmd/root.go @@ -6,8 +6,8 @@ import ( "cosmossdk.io/client/v2/autocli" "cosmossdk.io/depinject" - "cosmossdk.io/log" - txsigning "cosmossdk.io/x/tx/signing" + "cosmossdk.io/log/v2" + txsigning "github.com/cosmos/cosmos-sdk/x/tx/signing" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/config" "github.com/cosmos/cosmos-sdk/client/flags" diff --git a/go.mod b/go.mod index 738551dd..5d545560 100644 --- a/go.mod +++ b/go.mod @@ -1,34 +1,49 @@ module github.com/bitbadges/bitbadgeschain -go 1.25.8 +go 1.25.9 replace ( - github.com/ethereum/go-ethereum => github.com/cosmos/go-ethereum v1.16.2-cosmos-1 + // use cosmos fork of keyring (cosmos/evm v0.7.0-beta.0) + github.com/99designs/keyring => github.com/cosmos/keyring v1.2.0 + // use Cosmos geth fork — branch release/1.17 (cosmos/evm v0.7.0-beta.0) + github.com/ethereum/go-ethereum => github.com/cosmos/go-ethereum v1.17.2-cosmos-0 + // Security advisory GHSA-h395-qcrw-5vmq (cosmos/evm v0.7.0-beta.0) + github.com/gin-gonic/gin => github.com/gin-gonic/gin v1.9.1 + // replace broken goleveldb github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7 + // btree fork required by bstm (cosmos/evm v0.7.0-beta.0) + github.com/tidwall/btree => github.com/cosmos/btree v0.0.0-20250924232609-2c6195d95951 ) +// x/group moved to enterprise in cosmos-sdk v0.54 (cosmos/evm v0.7.0-beta.0) +replace cosmossdk.io/x/group => github.com/cosmos/cosmos-sdk/enterprise/group v0.0.0-20260227212600-39d4711b8970 + +replace github.com/cosmos/cosmos-sdk/x/group => github.com/cosmos/cosmos-sdk/enterprise/group v0.0.0-20260227212600-39d4711b8970 + +// cosmos-sdk pseudo-version with v0.54 fixes (cosmos/evm v0.7.0-beta.0) +replace github.com/cosmos/cosmos-sdk => github.com/cosmos/cosmos-sdk v0.54.0-rc.1.0.20260417173832-6850afc89406 + +// cometbft pseudo-version with v0.39 fixes (cosmos/evm v0.7.0-beta.0) +replace github.com/cometbft/cometbft => github.com/cometbft/cometbft v0.39.0-rc1.0.20260417162916-9fcf8612cc6c + require ( - cosmossdk.io/api v0.9.2 - cosmossdk.io/client/v2 v2.0.0-beta.7 - cosmossdk.io/core v0.11.3 + cosmossdk.io/api v1.0.0 + cosmossdk.io/client/v2 v2.11.0 + cosmossdk.io/core v1.1.0 cosmossdk.io/depinject v1.2.1 cosmossdk.io/log v1.6.1 - cosmossdk.io/store v1.1.2 + cosmossdk.io/store v1.1.2 // indirect cosmossdk.io/tools/confix v0.1.2 - cosmossdk.io/x/circuit v0.1.1 - cosmossdk.io/x/evidence v0.2.0 - cosmossdk.io/x/feegrant v0.2.0 - cosmossdk.io/x/upgrade v0.2.0 - github.com/bufbuild/buf v1.64.0 - github.com/cometbft/cometbft v0.38.21 + github.com/bufbuild/buf v1.69.0 + github.com/cometbft/cometbft v0.39.1 github.com/cosmos/cosmos-db v1.1.3 github.com/cosmos/cosmos-proto v1.0.0-beta.5 - github.com/cosmos/cosmos-sdk v0.53.6 + github.com/cosmos/cosmos-sdk v0.54.2 github.com/cosmos/gogoproto v1.7.2 github.com/cosmos/ibc-go/modules/capability v1.0.1 - github.com/cosmos/ibc-go/v10 v10.5.0 + github.com/cosmos/ibc-go/v10 v10.6.0 // indirect github.com/gorilla/mux v1.8.1 - github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5 + github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 github.com/spf13/cobra v1.10.2 github.com/spf13/pflag v1.0.10 github.com/spf13/viper v1.21.0 @@ -37,13 +52,15 @@ require ( ) require ( - cosmossdk.io/collections v1.3.1 - cosmossdk.io/errors v1.0.2 + cosmossdk.io/collections v1.4.0 + cosmossdk.io/errors v1.1.0 + cosmossdk.io/log/v2 v2.1.0 cosmossdk.io/math v1.5.3 - cosmossdk.io/x/tx v0.14.0 - github.com/cosmos/evm v0.6.0 - github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v10 v10.1.0 - github.com/ethereum/go-ethereum v1.16.8 + github.com/cosmos/cosmos-sdk/store/v2 v2.0.0 + github.com/cosmos/evm v0.7.0-beta.0 + github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v10 v10.6.0 + github.com/cosmos/ibc-go/v11 v11.0.0 + github.com/ethereum/go-ethereum v1.17.2 github.com/gogo/protobuf v1.3.2 github.com/golang/mock v1.6.0 github.com/golang/protobuf v1.5.4 @@ -52,11 +69,11 @@ require ( github.com/holiman/uint256 v1.3.2 github.com/spf13/cast v1.10.0 github.com/storyicon/sigverify v1.1.0 - golang.org/x/crypto v0.49.0 - golang.org/x/exp v0.0.0-20260112195511-716be5621a96 - golang.org/x/tools v0.42.0 - google.golang.org/genproto/googleapis/api v0.0.0-20260203192932-546029d2fa20 - google.golang.org/grpc v1.79.3 + golang.org/x/crypto v0.50.0 + golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f + golang.org/x/tools v0.44.0 + google.golang.org/genproto/googleapis/api v0.0.0-20260427160629-7cedc36a6bc4 + google.golang.org/grpc v1.80.0 google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.0 gopkg.in/yaml.v2 v2.4.0 ) @@ -66,30 +83,31 @@ require ( 4d63.com/gochecknoglobals v0.2.2 // indirect buf.build/gen/go/bufbuild/bufplugin/protocolbuffers/go v1.36.11-20250718181942-e35f9b667443.1 // indirect buf.build/gen/go/bufbuild/protodescriptor/protocolbuffers/go v1.36.11-20250109164928-1da0de137947.1 // indirect - buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20251209175733-2a1774d88802.1 // indirect - buf.build/gen/go/bufbuild/registry/connectrpc/go v1.19.1-20251202164234-62b14f0b533c.2 // indirect - buf.build/gen/go/bufbuild/registry/protocolbuffers/go v1.36.11-20251202164234-62b14f0b533c.1 // indirect + buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20260415201107-50325440f8f2.1 // indirect + buf.build/gen/go/bufbuild/registry/connectrpc/go v1.19.2-20260126144947-819582968857.1 // indirect + buf.build/gen/go/bufbuild/registry/protocolbuffers/go v1.36.11-20260126144947-819582968857.1 // indirect buf.build/gen/go/pluginrpc/pluginrpc/protocolbuffers/go v1.36.11-20241007202033-cf42259fcbfc.1 // indirect - buf.build/go/app v0.2.0 // indirect - buf.build/go/bufplugin v0.9.0 // indirect + buf.build/go/app v0.2.1-0.20260407195847-833f8f978cda // indirect + buf.build/go/bufplugin v0.10.0 // indirect buf.build/go/bufprivateusage v0.1.0 // indirect buf.build/go/interrupt v1.1.0 // indirect - buf.build/go/protovalidate v1.1.0 // indirect + buf.build/go/protovalidate v1.2.0 // indirect buf.build/go/protoyaml v0.6.0 // indirect buf.build/go/spdx v0.2.0 // indirect - buf.build/go/standard v0.1.0 // indirect + buf.build/go/standard v0.1.1-0.20260325175353-2b287e071df5 // indirect cel.dev/expr v0.25.1 // indirect cloud.google.com/go v0.123.0 // indirect - cloud.google.com/go/auth v0.18.2 // indirect + cloud.google.com/go/auth v0.20.0 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect cloud.google.com/go/compute/metadata v0.9.0 // indirect - cloud.google.com/go/iam v1.5.3 // indirect - cloud.google.com/go/monitoring v1.24.3 // indirect - cloud.google.com/go/storage v1.61.3 // indirect - connectrpc.com/connect v1.19.1 // indirect + cloud.google.com/go/iam v1.9.0 // indirect + cloud.google.com/go/monitoring v1.27.0 // indirect + cloud.google.com/go/storage v1.62.1 // indirect + connectrpc.com/connect v1.19.2 // indirect connectrpc.com/otelconnect v0.9.0 // indirect cosmossdk.io/schema v1.1.0 // indirect - filippo.io/edwards25519 v1.1.1 // indirect + cosmossdk.io/x/upgrade v0.2.0 // indirect + filippo.io/edwards25519 v1.2.0 // indirect github.com/4meepo/tagalign v1.4.2 // indirect github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect github.com/99designs/keyring v1.2.2 // indirect @@ -97,19 +115,20 @@ require ( github.com/Antonboom/errname v1.0.0 // indirect github.com/Antonboom/nilnil v1.0.1 // indirect github.com/Antonboom/testifylint v1.5.2 // indirect - github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect - github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c // indirect + github.com/BurntSushi/toml v1.6.0 // indirect github.com/Crocmagnon/fatcontext v0.7.1 // indirect github.com/DataDog/datadog-go v4.8.3+incompatible // indirect github.com/DataDog/zstd v1.5.7 // indirect github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.1 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0 // indirect - github.com/Masterminds/semver/v3 v3.3.1 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.32.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.56.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.56.0 // indirect + github.com/Masterminds/semver/v3 v3.4.0 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/OpenPeeDeeP/depguard/v2 v2.2.1 // indirect + github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20260116142910-60249400e523 // indirect + github.com/RoaringBitmap/roaring/v2 v2.16.0 // indirect github.com/VictoriaMetrics/fastcache v1.13.0 // indirect github.com/alecthomas/go-check-sumtype v0.3.1 // indirect github.com/alexkohler/nakedret/v2 v2.0.5 // indirect @@ -119,25 +138,26 @@ require ( github.com/antlr4-go/antlr/v4 v4.13.1 // indirect github.com/ashanbrown/forbidigo v1.6.0 // indirect github.com/ashanbrown/makezero v1.2.0 // indirect - github.com/aws/aws-sdk-go-v2 v1.41.5 // indirect - github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.8 // indirect - github.com/aws/aws-sdk-go-v2/config v1.32.12 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.19.12 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.21 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.21 // indirect + github.com/aws/aws-sdk-go-v2 v1.41.6 // indirect + github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.9 // indirect + github.com/aws/aws-sdk-go-v2/config v1.32.14 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.19.14 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.21 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.22 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.22 // indirect github.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 // indirect - github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.22 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.13 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.21 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.21 // indirect - github.com/aws/aws-sdk-go-v2/service/s3 v1.97.3 // indirect - github.com/aws/aws-sdk-go-v2/service/signin v1.0.8 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.30.13 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.41.9 // indirect - github.com/aws/smithy-go v1.24.2 // indirect + github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.23 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.8 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.14 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.22 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.22 // indirect + github.com/aws/aws-sdk-go-v2/service/s3 v1.100.0 // indirect + github.com/aws/aws-sdk-go-v2/service/signin v1.0.9 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.30.15 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.19 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.41.10 // indirect + github.com/aws/smithy-go v1.25.0 // indirect + github.com/benbjohnson/clock v1.3.5 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect github.com/bgentry/speakeasy v0.2.0 // indirect @@ -151,16 +171,17 @@ require ( github.com/btcsuite/btcd/btcec/v2 v2.3.5 // indirect github.com/btcsuite/btcd/btcutil v1.1.6 // indirect github.com/btcsuite/btcd/chaincfg/chainhash v1.1.0 // indirect - github.com/bufbuild/protocompile v0.14.2-0.20260114160500-16922e24f2b6 // indirect - github.com/bufbuild/protoplugin v0.0.0-20250218205857-750e09ce93e1 // indirect + github.com/bufbuild/protocompile v0.14.2-0.20260429155904-12ef1ef2ce91 // indirect + github.com/bufbuild/protoplugin v0.0.0-20260414125817-25d1d281b46b // indirect github.com/butuzov/ireturn v0.3.1 // indirect github.com/butuzov/mirror v1.3.0 // indirect - github.com/bytedance/gopkg v0.1.3 // indirect - github.com/bytedance/sonic v1.14.2 // indirect - github.com/bytedance/sonic/loader v0.4.0 // indirect + github.com/bytedance/gopkg v0.1.4 // indirect + github.com/bytedance/sonic v1.15.0 // indirect + github.com/bytedance/sonic/loader v0.5.1 // indirect github.com/catenacyber/perfsprint v0.8.2 // indirect github.com/ccojocar/zxcvbn-go v1.0.2 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect + github.com/cenkalti/backoff/v5 v5.0.3 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/charithe/durationcheck v0.0.10 // indirect github.com/chavacava/garif v0.1.0 // indirect @@ -168,73 +189,73 @@ require ( github.com/ckaznocha/intrange v0.3.0 // indirect github.com/cli/browser v1.3.0 // indirect github.com/cloudwego/base64x v0.1.6 // indirect - github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 // indirect - github.com/cockroachdb/apd/v2 v2.0.2 // indirect + github.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2 // indirect github.com/cockroachdb/datadriven v1.0.3-0.20230801171734-e384cf455877 // indirect github.com/cockroachdb/errors v1.12.0 // indirect github.com/cockroachdb/fifo v0.0.0-20240816210425-c5d0cb0b6fc0 // indirect github.com/cockroachdb/logtags v0.0.0-20241215232642-bb51bb14a506 // indirect github.com/cockroachdb/pebble v1.1.5 // indirect - github.com/cockroachdb/redact v1.1.6 // indirect + github.com/cockroachdb/redact v1.1.8 // indirect github.com/cockroachdb/tokenbucket v0.0.0-20250429170803-42689b6311bb // indirect - github.com/cometbft/cometbft-db v0.14.1 // indirect + github.com/cometbft/cometbft-db v1.0.4 // indirect github.com/consensys/gnark-crypto v0.19.2 // indirect - github.com/containerd/continuity v0.4.3 // indirect github.com/containerd/errdefs v1.0.0 // indirect github.com/containerd/errdefs/pkg v0.3.0 // indirect - github.com/containerd/stargz-snapshotter/estargz v0.18.1 // indirect + github.com/containerd/stargz-snapshotter/estargz v0.18.2 // indirect github.com/cosmos/btcutil v1.0.5 // indirect + github.com/cosmos/btree v1.0.0 // indirect github.com/cosmos/go-bip39 v1.0.0 // indirect github.com/cosmos/gogogateway v1.2.0 // indirect - github.com/cosmos/iavl v1.2.6 // indirect + github.com/cosmos/iavl v1.2.8 // indirect github.com/cosmos/ics23/go v0.11.0 // indirect github.com/cosmos/ledger-cosmos-go v1.0.0 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect - github.com/crate-crypto/go-eth-kzg v1.4.0 // indirect - github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a // indirect - github.com/creachadair/atomicfile v0.3.7 // indirect - github.com/creachadair/tomledit v0.0.28 // indirect + github.com/crate-crypto/go-eth-kzg v1.5.0 // indirect + github.com/creachadair/atomicfile v0.3.8 // indirect + github.com/creachadair/tomledit v0.0.29 // indirect github.com/curioswitch/go-reassign v0.3.0 // indirect github.com/daixiang0/gci v0.13.5 // indirect github.com/danieljoos/wincred v1.2.3 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect github.com/deckarep/golang-set/v2 v2.6.0 // indirect - github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.1 // indirect github.com/denis-tingaikin/go-header v0.5.0 // indirect github.com/desertbit/timer v1.0.1 // indirect - github.com/dgraph-io/badger/v4 v4.2.0 // indirect - github.com/dgraph-io/ristretto v0.2.0 // indirect + github.com/dgraph-io/badger/v4 v4.9.1 // indirect + github.com/dgraph-io/ristretto/v2 v2.4.0 // indirect github.com/distribution/reference v0.6.0 // indirect - github.com/docker/cli v29.2.0+incompatible // indirect - github.com/docker/distribution v2.8.3+incompatible // indirect - github.com/docker/docker v28.5.2+incompatible // indirect - github.com/docker/docker-credential-helpers v0.9.5 // indirect - github.com/docker/go-connections v0.6.0 // indirect + github.com/docker/cli v29.4.1+incompatible // indirect + github.com/docker/docker-credential-helpers v0.9.6 // indirect + github.com/docker/go-connections v0.7.0 // indirect github.com/docker/go-units v0.5.0 // indirect + github.com/dunglas/httpsfv v1.1.0 // indirect github.com/dustin/go-humanize v1.0.1 // indirect - github.com/dvsekhvalnov/jose2go v1.7.0 // indirect - github.com/emicklei/dot v1.10.0 // indirect - github.com/envoyproxy/go-control-plane/envoy v1.36.0 // indirect - github.com/envoyproxy/protoc-gen-validate v1.3.0 // indirect - github.com/ethereum/c-kzg-4844/v2 v2.1.5 // indirect - github.com/ethereum/go-verkle v0.2.2 // indirect + github.com/dvsekhvalnov/jose2go v1.8.0 // indirect + github.com/ebitengine/purego v0.10.0 // indirect + github.com/emicklei/dot v1.11.0 // indirect + github.com/envoyproxy/go-control-plane/envoy v1.37.0 // indirect + github.com/envoyproxy/protoc-gen-validate v1.3.3 // indirect + github.com/ethereum/c-kzg-4844/v2 v2.1.6 // indirect + github.com/ethereum/go-bigmodexpfix v0.0.0-20250911101455-f9e208c548ab // indirect github.com/ettle/strcase v0.2.0 // indirect github.com/fatih/color v1.18.0 // indirect github.com/fatih/structtag v1.2.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/ferranbt/fastssz v0.1.4 // indirect github.com/firefart/nonamedreturns v1.0.5 // indirect + github.com/flynn/noise v1.1.0 // indirect github.com/fsnotify/fsnotify v1.9.0 // indirect github.com/fzipp/gocyclo v0.6.0 // indirect - github.com/getsentry/sentry-go v0.41.0 // indirect + github.com/gammazero/deque v1.2.0 // indirect + github.com/getsentry/sentry-go v0.44.1 // indirect github.com/ghodss/yaml v1.0.0 // indirect github.com/ghostiam/protogetter v0.3.9 // indirect - github.com/go-chi/chi/v5 v5.2.4 // indirect github.com/go-critic/go-critic v0.12.0 // indirect github.com/go-jose/go-jose/v4 v4.1.4 // indirect github.com/go-kit/kit v0.13.0 // indirect github.com/go-kit/log v0.2.1 // indirect - github.com/go-logfmt/logfmt v0.6.0 // indirect + github.com/go-logfmt/logfmt v0.6.1 // indirect github.com/go-logr/logr v1.4.3 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-ole/go-ole v1.3.0 // indirect @@ -245,14 +266,13 @@ require ( github.com/go-toolsmith/astp v1.1.0 // indirect github.com/go-toolsmith/strparse v1.1.0 // indirect github.com/go-toolsmith/typep v1.1.0 // indirect - github.com/go-viper/mapstructure/v2 v2.4.0 // indirect + github.com/go-viper/mapstructure/v2 v2.5.0 // indirect github.com/go-xmlfmt/xmlfmt v1.1.3 // indirect github.com/gobwas/glob v0.2.3 // indirect github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect github.com/gofrs/flock v0.13.0 // indirect github.com/gogo/googleapis v1.4.1 // indirect github.com/golang/glog v1.2.5 // indirect - github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect github.com/golang/snappy v1.0.0 // indirect github.com/golangci/dupl v0.0.0-20250308024227-f665c8d69b32 // indirect github.com/golangci/go-printf-func-name v0.1.0 // indirect @@ -262,16 +282,16 @@ require ( github.com/golangci/revgrep v0.8.0 // indirect github.com/golangci/unconvert v0.0.0-20240309020433-c5143eacb3ed // indirect github.com/google/btree v1.1.3 // indirect - github.com/google/cel-go v0.26.1 // indirect - github.com/google/flatbuffers v24.3.25+incompatible // indirect + github.com/google/cel-go v0.28.0 // indirect + github.com/google/flatbuffers v25.2.10+incompatible // indirect github.com/google/go-cmp v0.7.0 // indirect - github.com/google/go-containerregistry v0.20.7 // indirect + github.com/google/go-containerregistry v0.21.5 // indirect github.com/google/orderedcode v0.0.1 // indirect github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a // indirect github.com/google/s2a-go v0.1.9 // indirect github.com/google/uuid v1.6.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.14 // indirect - github.com/googleapis/gax-go/v2 v2.17.0 // indirect + github.com/googleapis/gax-go/v2 v2.22.0 // indirect github.com/gordonklaus/ineffassign v0.1.0 // indirect github.com/gorilla/handlers v1.5.2 // indirect github.com/gorilla/websocket v1.5.3 // indirect @@ -288,8 +308,8 @@ require ( github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/go-immutable-radix/v2 v2.1.0 // indirect github.com/hashicorp/go-metrics v0.5.4 // indirect - github.com/hashicorp/go-plugin v1.6.3 // indirect - github.com/hashicorp/go-version v1.8.0 // indirect + github.com/hashicorp/go-plugin v1.7.0 // indirect + github.com/hashicorp/go-version v1.9.0 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/yamux v0.1.2 // indirect @@ -302,7 +322,9 @@ require ( github.com/iancoleman/strcase v0.3.0 // indirect github.com/improbable-eng/grpc-web v0.15.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/ipfs/go-cid v0.5.0 // indirect github.com/jackpal/go-nat-pmp v1.0.2 // indirect + github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect github.com/jdx/go-netrc v1.0.0 // indirect github.com/jgautheron/goconst v1.7.1 // indirect github.com/jingyugao/rowserrcheck v1.1.1 // indirect @@ -313,8 +335,9 @@ require ( github.com/kisielk/errcheck v1.9.0 // indirect github.com/kkHAIKE/contextcheck v1.1.6 // indirect github.com/klauspost/compress v1.18.5 // indirect - github.com/klauspost/cpuid/v2 v2.2.10 // indirect + github.com/klauspost/cpuid/v2 v2.3.0 // indirect github.com/klauspost/pgzip v1.2.6 // indirect + github.com/koron/go-ssdp v0.0.6 // indirect github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/kulti/thelper v0.6.3 // indirect @@ -326,52 +349,96 @@ require ( github.com/ldez/tagliatelle v0.7.1 // indirect github.com/ldez/usetesting v0.4.2 // indirect github.com/leonklingele/grouper v1.1.2 // indirect - github.com/lib/pq v1.10.9 // indirect - github.com/linxGnu/grocksdb v1.10.4 // indirect + github.com/lib/pq v1.12.3 // indirect + github.com/libp2p/go-buffer-pool v0.1.0 // indirect + github.com/libp2p/go-flow-metrics v0.2.0 // indirect + github.com/libp2p/go-libp2p v0.47.0 // indirect + github.com/libp2p/go-libp2p-asn-util v0.4.1 // indirect + github.com/libp2p/go-msgio v0.3.0 // indirect + github.com/libp2p/go-netroute v0.3.0 // indirect + github.com/libp2p/go-reuseport v0.4.0 // indirect + github.com/libp2p/go-yamux/v5 v5.0.1 // indirect + github.com/linxGnu/grocksdb v1.10.7 // indirect + github.com/lufia/plan9stats v0.0.0-20260216142805-b3301c5f2a88 // indirect github.com/macabu/inamedparam v0.1.3 // indirect github.com/manifoldco/promptui v0.9.0 // indirect github.com/maratori/testableexamples v1.0.0 // indirect github.com/maratori/testpackage v1.1.1 // indirect + github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect github.com/matoous/godox v1.1.0 // indirect github.com/mattn/go-colorable v0.1.14 // indirect - github.com/mattn/go-isatty v0.0.20 // indirect + github.com/mattn/go-isatty v0.0.22 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect github.com/mdp/qrterminal/v3 v3.2.1 // indirect github.com/mgechev/revive v1.7.0 // indirect - github.com/minio/highwayhash v1.0.3 // indirect - github.com/minio/sha256-simd v1.0.0 // indirect + github.com/miekg/dns v1.1.66 // indirect + github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b // indirect + github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect + github.com/minio/highwayhash v1.0.4 // indirect + github.com/minio/sha256-simd v1.0.1 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect - github.com/moby/term v0.5.2 // indirect + github.com/moby/moby/api v1.54.2 // indirect + github.com/moby/moby/client v0.4.1 // indirect github.com/moricho/tparallel v0.3.2 // indirect - github.com/morikuni/aec v1.1.0 // indirect + github.com/mr-tron/base58 v1.3.0 // indirect + github.com/mschoch/smat v0.2.0 // indirect github.com/mtibben/percent v0.2.1 // indirect + github.com/multiformats/go-base32 v0.1.0 // indirect + github.com/multiformats/go-base36 v0.2.0 // indirect + github.com/multiformats/go-multiaddr v0.16.1 // indirect + github.com/multiformats/go-multiaddr-dns v0.4.1 // indirect + github.com/multiformats/go-multiaddr-fmt v0.1.0 // indirect + github.com/multiformats/go-multibase v0.2.0 // indirect + github.com/multiformats/go-multicodec v0.9.1 // indirect + github.com/multiformats/go-multihash v0.2.3 // indirect + github.com/multiformats/go-multistream v0.6.1 // indirect + github.com/multiformats/go-varint v0.0.7 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/nakabonne/nestif v0.3.1 // indirect github.com/nishanths/exhaustive v0.12.0 // indirect github.com/nishanths/predeclared v0.2.2 // indirect github.com/nunnatsa/ginkgolinter v0.19.1 // indirect - github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect - github.com/oklog/run v1.1.0 // indirect + github.com/oasisprotocol/curve25519-voi v0.0.0-20251114093237-2ab5a27a1729 // indirect + github.com/oklog/run v1.2.0 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.1 // indirect + github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect github.com/pelletier/go-toml/v2 v2.2.4 // indirect - github.com/petermattis/goid v0.0.0-20260113132338-7c7de50cc741 // indirect - github.com/pion/dtls/v2 v2.2.7 // indirect - github.com/pion/logging v0.2.2 // indirect + github.com/petermattis/goid v0.0.0-20260330135022-df67b199bc81 // indirect + github.com/pion/datachannel v1.5.10 // indirect + github.com/pion/dtls/v2 v2.2.12 // indirect + github.com/pion/dtls/v3 v3.1.2 // indirect + github.com/pion/ice/v4 v4.0.10 // indirect + github.com/pion/interceptor v0.1.40 // indirect + github.com/pion/logging v0.2.4 // indirect + github.com/pion/mdns/v2 v2.0.7 // indirect + github.com/pion/randutil v0.1.0 // indirect + github.com/pion/rtcp v1.2.15 // indirect + github.com/pion/rtp v1.8.19 // indirect + github.com/pion/sctp v1.8.39 // indirect + github.com/pion/sdp/v3 v3.0.13 // indirect + github.com/pion/srtp/v3 v3.0.6 // indirect + github.com/pion/stun v0.6.1 // indirect github.com/pion/stun/v2 v2.0.0 // indirect - github.com/pion/transport/v2 v2.2.1 // indirect - github.com/pion/transport/v3 v3.0.1 // indirect + github.com/pion/stun/v3 v3.0.0 // indirect + github.com/pion/transport/v2 v2.2.10 // indirect + github.com/pion/transport/v3 v3.0.7 // indirect + github.com/pion/transport/v4 v4.0.1 // indirect + github.com/pion/turn/v4 v4.0.2 // indirect + github.com/pion/webrtc/v4 v4.1.2 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/polyfloyd/go-errorlint v1.7.1 // indirect + github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.67.5 // indirect - github.com/prometheus/procfs v0.19.2 // indirect + github.com/prometheus/otlptranslator v1.0.0 // indirect + github.com/prometheus/procfs v0.20.1 // indirect github.com/quasilyte/go-ruleguard v0.4.3-0.20240823090925-0fe6f58b47b1 // indirect github.com/quasilyte/go-ruleguard/dsl v0.3.22 // indirect github.com/quasilyte/gogrep v0.5.0 // indirect @@ -379,37 +446,38 @@ require ( github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 // indirect github.com/quic-go/qpack v0.6.0 // indirect github.com/quic-go/quic-go v0.59.0 // indirect + github.com/quic-go/webtransport-go v0.10.0 // indirect github.com/raeperd/recvcheck v0.2.0 // indirect - github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect + github.com/rcrowley/go-metrics v0.0.0-20250401214520-65e299d6c5c9 // indirect github.com/rivo/uniseg v0.4.7 // indirect github.com/rogpeppe/go-internal v1.14.1 // indirect github.com/rs/cors v1.11.1 // indirect - github.com/rs/zerolog v1.34.0 // indirect + github.com/rs/zerolog v1.35.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/ryancurrah/gomodguard v1.3.5 // indirect github.com/ryanrolds/sqlclosecheck v0.5.1 // indirect - github.com/sagikazarmark/locafero v0.11.0 // indirect + github.com/sagikazarmark/locafero v0.12.0 // indirect github.com/sanposhiho/wastedassign/v2 v2.1.0 // indirect github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 // indirect - github.com/sasha-s/go-deadlock v0.3.5 // indirect + github.com/sasha-s/go-deadlock v0.3.9 // indirect github.com/sashamelentyev/interfacebloat v1.1.0 // indirect github.com/sashamelentyev/usestdlibvars v1.28.0 // indirect github.com/securego/gosec/v2 v2.22.2 // indirect github.com/segmentio/asm v1.2.1 // indirect - github.com/segmentio/encoding v0.5.3 // indirect + github.com/segmentio/encoding v0.5.4 // indirect github.com/shirou/gopsutil v3.21.11+incompatible // indirect + github.com/shirou/gopsutil/v4 v4.26.3 // indirect github.com/sirupsen/logrus v1.9.4 // indirect github.com/sivchari/containedctx v1.0.3 // indirect github.com/sivchari/tenv v1.12.1 // indirect github.com/sonatard/noctx v0.1.0 // indirect - github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect github.com/sourcegraph/go-diff v0.7.0 // indirect + github.com/spaolacci/murmur3 v1.1.0 // indirect github.com/spf13/afero v1.15.0 // indirect github.com/spiffe/go-spiffe/v2 v2.6.0 // indirect github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect github.com/stbenjam/no-sprintf-host-port v0.2.0 // indirect - github.com/stoewer/go-strcase v1.3.1 // indirect - github.com/stretchr/objx v0.5.2 // indirect + github.com/stretchr/objx v0.5.3 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/supranational/blst v0.3.16 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect @@ -419,13 +487,13 @@ require ( github.com/tetratelabs/wazero v1.11.0 // indirect github.com/tidwall/btree v1.8.1 // indirect github.com/tidwall/gjson v1.18.0 // indirect - github.com/tidwall/match v1.1.1 // indirect - github.com/tidwall/pretty v1.2.0 // indirect + github.com/tidwall/match v1.2.0 // indirect + github.com/tidwall/pretty v1.2.1 // indirect github.com/tidwall/sjson v1.2.5 // indirect github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3 // indirect github.com/timonwong/loggercheck v0.10.1 // indirect - github.com/tklauser/go-sysconf v0.3.15 // indirect - github.com/tklauser/numcpus v0.10.0 // indirect + github.com/tklauser/go-sysconf v0.3.16 // indirect + github.com/tklauser/numcpus v0.11.0 // indirect github.com/tomarrell/wrapcheck/v2 v2.10.0 // indirect github.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect @@ -435,7 +503,8 @@ require ( github.com/ultraware/whitespace v0.2.0 // indirect github.com/uudashr/gocognit v1.2.0 // indirect github.com/uudashr/iface v1.3.1 // indirect - github.com/vbatts/tar-split v0.12.2 // indirect + github.com/vbatts/tar-split v0.12.3 // indirect + github.com/wlynxg/anet v0.0.5 // indirect github.com/xen0n/gosmopolitan v1.2.2 // indirect github.com/yagipy/maintidx v1.0.0 // indirect github.com/yeya24/promlinter v0.3.0 // indirect @@ -447,44 +516,69 @@ require ( gitlab.com/bosi/decorder v0.4.2 // indirect go-simpler.org/musttag v0.13.0 // indirect go-simpler.org/sloglint v0.9.0 // indirect - go.etcd.io/bbolt v1.4.0-alpha.1 // indirect + go.etcd.io/bbolt v1.4.3 // indirect go.lsp.dev/jsonrpc2 v0.10.0 // indirect go.lsp.dev/pkg v0.0.0-20210717090340-384b27a52fb2 // indirect go.lsp.dev/protocol v0.12.0 // indirect go.lsp.dev/uri v0.3.0 // indirect - go.opencensus.io v0.24.0 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/contrib/detectors/gcp v1.39.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0 // indirect + go.opentelemetry.io/contrib/bridges/otelslog v0.17.0 // indirect + go.opentelemetry.io/contrib/detectors/gcp v1.43.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 // indirect + go.opentelemetry.io/contrib/instrumentation/host v0.67.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.68.0 // indirect + go.opentelemetry.io/contrib/instrumentation/runtime v0.67.0 // indirect + go.opentelemetry.io/contrib/otelconf v0.22.0 // indirect + go.opentelemetry.io/contrib/propagators/autoprop v0.67.0 // indirect + go.opentelemetry.io/contrib/propagators/aws v1.42.0 // indirect + go.opentelemetry.io/contrib/propagators/b3 v1.42.0 // indirect + go.opentelemetry.io/contrib/propagators/jaeger v1.42.0 // indirect + go.opentelemetry.io/contrib/propagators/ot v1.42.0 // indirect go.opentelemetry.io/otel v1.43.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.18.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.19.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.42.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.43.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 // indirect + go.opentelemetry.io/otel/exporters/prometheus v0.64.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.18.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.43.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.42.0 // indirect + go.opentelemetry.io/otel/log v0.19.0 // indirect go.opentelemetry.io/otel/metric v1.43.0 // indirect go.opentelemetry.io/otel/sdk v1.43.0 // indirect + go.opentelemetry.io/otel/sdk/log v0.19.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect go.opentelemetry.io/otel/trace v1.43.0 // indirect + go.opentelemetry.io/proto/otlp v1.10.0 // indirect go.uber.org/automaxprocs v1.6.0 // indirect + go.uber.org/dig v1.19.0 // indirect + go.uber.org/fx v1.24.0 // indirect go.uber.org/mock v0.6.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.1 // indirect - go.yaml.in/yaml/v2 v2.4.3 // indirect + go.yaml.in/yaml/v2 v2.4.4 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/arch v0.17.0 // indirect + golang.org/x/arch v0.26.0 // indirect golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac // indirect - golang.org/x/mod v0.33.0 // indirect - golang.org/x/net v0.52.0 // indirect + golang.org/x/mod v0.35.0 // indirect + golang.org/x/net v0.53.0 // indirect golang.org/x/oauth2 v0.36.0 // indirect golang.org/x/sync v0.20.0 // indirect - golang.org/x/sys v0.42.0 // indirect - golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4 // indirect - golang.org/x/term v0.41.0 // indirect - golang.org/x/text v0.35.0 // indirect + golang.org/x/sys v0.43.0 // indirect + golang.org/x/telemetry v0.0.0-20260409153401-be6f6cb8b1fa // indirect + golang.org/x/term v0.42.0 // indirect + golang.org/x/text v0.36.0 // indirect golang.org/x/time v0.15.0 // indirect - google.golang.org/api v0.271.0 // indirect - google.golang.org/genproto v0.0.0-20260128011058-8636f8732409 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171 // indirect + google.golang.org/api v0.276.0 // indirect + google.golang.org/genproto v0.0.0-20260414002931-afd174a4e478 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260427160629-7cedc36a6bc4 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.5.2 // indirect honnef.co/go/tools v0.6.1 // indirect + lukechampine.com/blake3 v1.4.1 // indirect mvdan.cc/gofumpt v0.7.0 // indirect mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f // indirect mvdan.cc/xurls/v2 v2.6.0 // indirect @@ -507,3 +601,11 @@ tool ( google.golang.org/grpc/cmd/protoc-gen-go-grpc google.golang.org/protobuf/cmd/protoc-gen-go ) + +// Local shim: cosmossdk.io/x/upgrade@v0.2.0 references cosmossdk.io/store v1 +// types in storeloader.go, which conflict with cosmos-sdk/store/v2 baseapp. +// We never call cosmossdk.io/x/upgrade/types.UpgradeStoreLoader (we use +// cosmos-sdk/x/upgrade/types.UpgradeStoreLoader instead), so the shim is +// the same source with storeloader.go removed. +// Pulled in transitively by ibc-go/v10 → packet-forward-middleware. +replace cosmossdk.io/x/upgrade => ./vendor-shims/cosmossdk-x-upgrade diff --git a/go.sum b/go.sum index 5c3d1e89..b969ee2a 100644 --- a/go.sum +++ b/go.sum @@ -6,72 +6,76 @@ buf.build/gen/go/bufbuild/bufplugin/protocolbuffers/go v1.36.11-20250718181942-e buf.build/gen/go/bufbuild/bufplugin/protocolbuffers/go v1.36.11-20250718181942-e35f9b667443.1/go.mod h1:1Znr6gmYBhbxWUPRrrVnSLXQsz8bvFVw1HHJq2bI3VQ= buf.build/gen/go/bufbuild/protodescriptor/protocolbuffers/go v1.36.11-20250109164928-1da0de137947.1 h1:HwzzCRS4ZrEm1++rzSDxHnO0DOjiT1b8I/24e8a4exY= buf.build/gen/go/bufbuild/protodescriptor/protocolbuffers/go v1.36.11-20250109164928-1da0de137947.1/go.mod h1:8PRKXhgNes29Tjrnv8KdZzg3I1QceOkzibW1QK7EXv0= -buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20251209175733-2a1774d88802.1 h1:j9yeqTWEFrtimt8Nng2MIeRrpoCvQzM9/g25XTvqUGg= -buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20251209175733-2a1774d88802.1/go.mod h1:tvtbpgaVXZX4g6Pn+AnzFycuRK3MOz5HJfEGeEllXYM= -buf.build/gen/go/bufbuild/registry/connectrpc/go v1.19.1-20251202164234-62b14f0b533c.2 h1:eQ6XRVUaYYZFOZvBsyrOYLWbw6464s5dVnHscxa0b8w= -buf.build/gen/go/bufbuild/registry/connectrpc/go v1.19.1-20251202164234-62b14f0b533c.2/go.mod h1:omxVRch3jEPMINnUipLsuRWoEhND6LPXELKBG7xzyDw= -buf.build/gen/go/bufbuild/registry/protocolbuffers/go v1.36.11-20251202164234-62b14f0b533c.1 h1:PdfIJUbUVKdajMVYuMdvr2Wvo+wmzGnlPEYA4bhFaWI= -buf.build/gen/go/bufbuild/registry/protocolbuffers/go v1.36.11-20251202164234-62b14f0b533c.1/go.mod h1:1JJi9jvOqRxSMa+JxiZSm57doB+db/1WYCIa2lHfc40= +buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20260415201107-50325440f8f2.1 h1:s6hzCXtND/ICdGPTMGk7C+/BFlr2Jg5GyH0NKf4XGXg= +buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go v1.36.11-20260415201107-50325440f8f2.1/go.mod h1:tvtbpgaVXZX4g6Pn+AnzFycuRK3MOz5HJfEGeEllXYM= +buf.build/gen/go/bufbuild/registry/connectrpc/go v1.19.2-20260126144947-819582968857.1 h1:AmiHsTjryKvBEZuu5ZDUJ2Lcmt140xrhe8o7LpRIKlU= +buf.build/gen/go/bufbuild/registry/connectrpc/go v1.19.2-20260126144947-819582968857.1/go.mod h1:SHAkhrdmtdlz37Xz1LRrr3DsDVNjZafuZ8OM6U0jH1I= +buf.build/gen/go/bufbuild/registry/protocolbuffers/go v1.36.11-20260126144947-819582968857.1 h1:Yreby6Ypa58wdQUEm9Fnc5g8n/jP487Dq3aK5yBYwfk= +buf.build/gen/go/bufbuild/registry/protocolbuffers/go v1.36.11-20260126144947-819582968857.1/go.mod h1:1JJi9jvOqRxSMa+JxiZSm57doB+db/1WYCIa2lHfc40= buf.build/gen/go/pluginrpc/pluginrpc/protocolbuffers/go v1.36.11-20241007202033-cf42259fcbfc.1 h1:iGPvEJltOXUMANWf0zajcRcbiOXLD90ZwPUFvbcuv6Q= buf.build/gen/go/pluginrpc/pluginrpc/protocolbuffers/go v1.36.11-20241007202033-cf42259fcbfc.1/go.mod h1:nWVKKRA29zdt4uvkjka3i/y4mkrswyWwiu0TbdX0zts= -buf.build/go/app v0.2.0 h1:NYaH13A+RzPb7M5vO8uZYZ2maBZI5+MS9A9tQm66fy8= -buf.build/go/app v0.2.0/go.mod h1:0XVOYemubVbxNXVY0DnsVgWeGkcbbAvjDa1fmhBC+Wo= -buf.build/go/bufplugin v0.9.0 h1:ktZJNP3If7ldcWVqh46XKeiYJVPxHQxCfjzVQDzZ/lo= -buf.build/go/bufplugin v0.9.0/go.mod h1:Z0CxA3sKQ6EPz/Os4kJJneeRO6CjPeidtP1ABh5jPPY= +buf.build/go/app v0.2.1-0.20260407195847-833f8f978cda h1:eysSyjrJtkxU1A/9+Kv+1Mwq9K6BYBw+STIOVsZ256Y= +buf.build/go/app v0.2.1-0.20260407195847-833f8f978cda/go.mod h1:V32mBaPWsfq6REAeZvvs/rQl7ZCl9Dn7eW1BBrmH0GQ= +buf.build/go/bufplugin v0.10.0 h1:vZBX0mq9as5UIBug8U+/DkGRaHNlM/HVOw59O8fvOIU= +buf.build/go/bufplugin v0.10.0/go.mod h1:ax7obVurKDH1I2nR4pFTS+TE6K3kZhTmwDCN2YgdV8I= buf.build/go/bufprivateusage v0.1.0 h1:SzCoCcmzS3zyXHEXHeSQhGI7OTkgtljoknLzsUz9Gg4= buf.build/go/bufprivateusage v0.1.0/go.mod h1:GlCCJ3VVF7EqqU0CoRmo1FzAwwaKymEWSr+ty69xU5w= buf.build/go/interrupt v1.1.0 h1:olBuhgv9Sav4/9pkSLoxgiOsZDgM5VhRhvRpn3DL0lE= buf.build/go/interrupt v1.1.0/go.mod h1:ql56nXPG1oHlvZa6efNC7SKAQ/tUjS6z0mhJl0gyeRM= -buf.build/go/protovalidate v1.1.0 h1:pQqEQRpOo4SqS60qkvmhLTTQU9JwzEvdyiqAtXa5SeY= -buf.build/go/protovalidate v1.1.0/go.mod h1:bGZcPiAQDC3ErCHK3t74jSoJDFOs2JH3d7LWuTEIdss= +buf.build/go/protovalidate v1.2.0 h1:DQVrUWkmGTBij+kOYv/x2LLxwcLaGKMdzShj1/6/3H0= +buf.build/go/protovalidate v1.2.0/go.mod h1:7rYiQEhqvAipoazpVNBBH2S2f8bjG4huMVy1V2Yofn4= buf.build/go/protoyaml v0.6.0 h1:Nzz1lvcXF8YgNZXk+voPPwdU8FjDPTUV4ndNTXN0n2w= buf.build/go/protoyaml v0.6.0/go.mod h1:RgUOsBu/GYKLDSIRgQXniXbNgFlGEZnQpRAUdLAFV2Q= buf.build/go/spdx v0.2.0 h1:IItqM0/cMxvFJJumcBuP8NrsIzMs/UYjp/6WSpq8LTw= buf.build/go/spdx v0.2.0/go.mod h1:bXdwQFem9Si3nsbNy8aJKGPoaPi5DKwdeEp5/ArZ6w8= -buf.build/go/standard v0.1.0 h1:g98T9IyvAl0vS3Pq8iVk6Cvj2ZiFvoUJRtfyGa0120U= -buf.build/go/standard v0.1.0/go.mod h1:PiqpHz/7ZFq+kqvYhc/SK3lxFIB9N/aiH2CFC2JHIQg= +buf.build/go/standard v0.1.1-0.20260325175353-2b287e071df5 h1:njYKSWoLiq2i5O7y2bPPU2Yzp7iAU0Wk9KJ2OoAhNiU= +buf.build/go/standard v0.1.1-0.20260325175353-2b287e071df5/go.mod h1:DQmodNT9EHX94WzUaWiZK+/4EaFa/xZTc1gzfCxZVXU= cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4= cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.123.0 h1:2NAUJwPR47q+E35uaJeYoNhuNEM9kM8SjgRgdeOJUSE= cloud.google.com/go v0.123.0/go.mod h1:xBoMV08QcqUGuPW65Qfm1o9Y4zKZBpGS+7bImXLTAZU= -cloud.google.com/go/auth v0.18.2 h1:+Nbt5Ev0xEqxlNjd6c+yYUeosQ5TtEUaNcN/3FozlaM= -cloud.google.com/go/auth v0.18.2/go.mod h1:xD+oY7gcahcu7G2SG2DsBerfFxgPAJz17zz2joOFF3M= +cloud.google.com/go/auth v0.20.0 h1:kXTssoVb4azsVDoUiF8KvxAqrsQcQtB53DcSgta74CA= +cloud.google.com/go/auth v0.20.0/go.mod h1:942/yi/itH1SsmpyrbnTMDgGfdy2BUqIKyd0cyYLc5Q= cloud.google.com/go/auth/oauth2adapt v0.2.8 h1:keo8NaayQZ6wimpNSmW5OPc283g65QNIiLpZnkHRbnc= cloud.google.com/go/auth/oauth2adapt v0.2.8/go.mod h1:XQ9y31RkqZCcwJWNSx2Xvric3RrU88hAYYbjDWYDL+c= cloud.google.com/go/compute/metadata v0.9.0 h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs= cloud.google.com/go/compute/metadata v0.9.0/go.mod h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10= -cloud.google.com/go/iam v1.5.3 h1:+vMINPiDF2ognBJ97ABAYYwRgsaqxPbQDlMnbHMjolc= -cloud.google.com/go/iam v1.5.3/go.mod h1:MR3v9oLkZCTlaqljW6Eb2d3HGDGK5/bDv93jhfISFvU= -cloud.google.com/go/logging v1.13.1 h1:O7LvmO0kGLaHY/gq8cV7T0dyp6zJhYAOtZPX4TF3QtY= -cloud.google.com/go/logging v1.13.1/go.mod h1:XAQkfkMBxQRjQek96WLPNze7vsOmay9H5PqfsNYDqvw= -cloud.google.com/go/longrunning v0.8.0 h1:LiKK77J3bx5gDLi4SMViHixjD2ohlkwBi+mKA7EhfW8= -cloud.google.com/go/longrunning v0.8.0/go.mod h1:UmErU2Onzi+fKDg2gR7dusz11Pe26aknR4kHmJJqIfk= -cloud.google.com/go/monitoring v1.24.3 h1:dde+gMNc0UhPZD1Azu6at2e79bfdztVDS5lvhOdsgaE= -cloud.google.com/go/monitoring v1.24.3/go.mod h1:nYP6W0tm3N9H/bOw8am7t62YTzZY+zUeQ+Bi6+2eonI= -cloud.google.com/go/storage v1.61.3 h1:VS//ZfBuPGDvakfD9xyPW1RGF1Vy3BWUoVZXgW1KMOg= -cloud.google.com/go/storage v1.61.3/go.mod h1:JtqK8BBB7TWv0HVGHubtUdzYYrakOQIsMLffZ2Z/HWk= -cloud.google.com/go/trace v1.11.7 h1:kDNDX8JkaAG3R2nq1lIdkb7FCSi1rCmsEtKVsty7p+U= -cloud.google.com/go/trace v1.11.7/go.mod h1:TNn9d5V3fQVf6s4SCveVMIBS2LJUqo73GACmq/Tky0s= -connectrpc.com/connect v1.19.1 h1:R5M57z05+90EfEvCY1b7hBxDVOUl45PrtXtAV2fOC14= -connectrpc.com/connect v1.19.1/go.mod h1:tN20fjdGlewnSFeZxLKb0xwIZ6ozc3OQs2hTXy4du9w= +cloud.google.com/go/iam v1.9.0 h1:89wyjxT6DL4b5rk/Nk8eBC9DHqf+JiMstrn5IEYxFw4= +cloud.google.com/go/iam v1.9.0/go.mod h1:KP+nKGugNJW4LcLx1uEZcq1ok5sQHFaQehQNl4QDgV4= +cloud.google.com/go/logging v1.15.0 h1:6ooUEBNT6jdWh2b36+iuPn6b/R9qN/tHCbvGS5255gg= +cloud.google.com/go/logging v1.15.0/go.mod h1:ZGKnpBaURITh+g/uom2VhbiFoFWvejcrHPDhxFtU/gI= +cloud.google.com/go/longrunning v0.10.0 h1:4OWvp1BjCvoeSZTog3sRFDu6j4IrI9TI4/Y9N+8h25g= +cloud.google.com/go/longrunning v0.10.0/go.mod h1:8nqFBPOO1U/XkhWl0I19AMZEphrHi73VNABIpKYaTwM= +cloud.google.com/go/monitoring v1.27.0 h1:BhYwMqao+e5Nn7JtWMM9m6zRtKtVUK6kJWMizXChkLU= +cloud.google.com/go/monitoring v1.27.0/go.mod h1:72NOVjJXHY/HBfoLT0+qlCZBT059+9VXLeAnL2PeeVM= +cloud.google.com/go/storage v1.62.1 h1:Os0G3XbUbjZumkpDUf2Y0rLoXJTCF1kU2kWUujKYXD8= +cloud.google.com/go/storage v1.62.1/go.mod h1:cpYz/kRVZ+UQAF1uHeea10/9ewcRbxGoGNKsS9daSXA= +cloud.google.com/go/trace v1.13.0 h1:RfqsqPOiSCG8ql50UZt5F65KrVa1zbY9mJrO7xvZfbE= +cloud.google.com/go/trace v1.13.0/go.mod h1:r+bdAn16dKLSV1G2D5v3e58IlQlizfxWrUfjx7kM7X0= +connectrpc.com/connect v1.19.2 h1:McQ83FGdzL+t60peksi0gXC7MQ/iLKgLduAnThbM0mo= +connectrpc.com/connect v1.19.2/go.mod h1:tN20fjdGlewnSFeZxLKb0xwIZ6ozc3OQs2hTXy4du9w= +connectrpc.com/grpcreflect v1.3.0 h1:Y4V+ACf8/vOb1XOc251Qun7jMB75gCUNw6llvB9csXc= +connectrpc.com/grpcreflect v1.3.0/go.mod h1:nfloOtCS8VUQOQ1+GTdFzVg2CJo4ZGaat8JIovCtDYs= connectrpc.com/otelconnect v0.9.0 h1:NggB3pzRC3pukQWaYbRHJulxuXvmCKCKkQ9hbrHAWoA= connectrpc.com/otelconnect v0.9.0/go.mod h1:AEkVLjCPXra+ObGFCOClcJkNjS7zPaQSqvO0lCyjfZc= -cosmossdk.io/api v0.9.2 h1:9i9ptOBdmoIEVEVWLtYYHjxZonlF/aOVODLFaxpmNtg= -cosmossdk.io/api v0.9.2/go.mod h1:CWt31nVohvoPMTlPv+mMNCtC0a7BqRdESjCsstHcTkU= -cosmossdk.io/client/v2 v2.0.0-beta.7 h1:O0PfZL5kC3Sp54wZASLNihQ612Gd6duMp11aM9wawNg= -cosmossdk.io/client/v2 v2.0.0-beta.7/go.mod h1:TzwwrzeK+AfSVSESVEIOYO/9xuCh1fPv0HgeocmfVnM= -cosmossdk.io/collections v1.3.1 h1:09e+DUId2brWsNOQ4nrk+bprVmMUaDH9xvtZkeqIjVw= -cosmossdk.io/collections v1.3.1/go.mod h1:ynvkP0r5ruAjbmedE+vQ07MT6OtJ0ZIDKrtJHK7Q/4c= -cosmossdk.io/core v0.11.3 h1:mei+MVDJOwIjIniaKelE3jPDqShCc/F4LkNNHh+4yfo= -cosmossdk.io/core v0.11.3/go.mod h1:9rL4RE1uDt5AJ4Tg55sYyHWXA16VmpHgbe0PbJc6N2Y= +cosmossdk.io/api v1.0.0 h1:qTV8OPVEwcBPwp2b9p4Qy4noZyihJ+sOMaWL/VT+RCc= +cosmossdk.io/api v1.0.0/go.mod h1:fKRljeYk+04p4T8Shdyv+uH2fSVyzHoWrvDAs/7OxfI= +cosmossdk.io/client/v2 v2.11.0 h1:k3hg9liNjrLv5P/PEle8wcihSwQ/ALCr1fja2sp5His= +cosmossdk.io/client/v2 v2.11.0/go.mod h1:wJNFx9sSqSDE3QeXIU6DRZDagqdv98j6O7hmjnfGa2I= +cosmossdk.io/collections v1.4.0 h1:b373bkxCxKiRbapxZ42TRmcKJEnBVBebdQVk9I5IkkE= +cosmossdk.io/collections v1.4.0/go.mod h1:gxbieVY3tjbvWlkm3yOXf7sGyDrVi12haZH+sek6whw= +cosmossdk.io/core v1.1.0 h1:iJ7j2DjNsFzg4/z4ImNQYzy2D4LfMCsaQ8Lrz1KCmxk= +cosmossdk.io/core v1.1.0/go.mod h1:qGmJxBFHobvG1k4bROQnueslotBU5MIKZLC57xVBYYI= cosmossdk.io/depinject v1.2.1 h1:eD6FxkIjlVaNZT+dXTQuwQTKZrFZ4UrfCq1RKgzyhMw= cosmossdk.io/depinject v1.2.1/go.mod h1:lqQEycz0H2JXqvOgVwTsjEdMI0plswI7p6KX+MVqFOM= -cosmossdk.io/errors v1.0.2 h1:wcYiJz08HThbWxd/L4jObeLaLySopyyuUFB5w4AGpCo= -cosmossdk.io/errors v1.0.2/go.mod h1:0rjgiHkftRYPj//3DrD6y8hcm40HcPv/dR4R/4efr0k= +cosmossdk.io/errors v1.1.0 h1:X2DSt9JYgH7cuiaDr318aUqIl2z5Lfo/PdGzAtmczUU= +cosmossdk.io/errors v1.1.0/go.mod h1:lnjBmx7etZpMTLnxdspZupH0d9HGRWZhiezDZX2ayyI= cosmossdk.io/log v1.6.1 h1:YXNwAgbDwMEKwDlCdH8vPcoggma48MgZrTQXCfmMBeI= cosmossdk.io/log v1.6.1/go.mod h1:gMwsWyyDBjpdG9u2avCFdysXqxq28WJapJvu+vF1y+E= +cosmossdk.io/log/v2 v2.1.0 h1:oWLWqZ1UObWu5hIS3dvTW7QyjtvlmSzC3LOy04U/hVI= +cosmossdk.io/log/v2 v2.1.0/go.mod h1:zDNpuRD2sWw4zuw1lZYg/jxKftVG+VizgcWAWkIorwY= cosmossdk.io/math v1.5.3 h1:WH6tu6Z3AUCeHbeOSHg2mt9rnoiUWVWaQ2t6Gkll96U= cosmossdk.io/math v1.5.3/go.mod h1:uqcZv7vexnhMFJF+6zh9EWdm/+Ylyln34IvPnBauPCQ= cosmossdk.io/schema v1.1.0 h1:mmpuz3dzouCoyjjcMcA/xHBEmMChN+EHh8EHxHRHhzE= @@ -80,25 +84,15 @@ cosmossdk.io/store v1.1.2 h1:3HOZG8+CuThREKv6cn3WSohAc6yccxO3hLzwK6rBC7o= cosmossdk.io/store v1.1.2/go.mod h1:60rAGzTHevGm592kFhiUVkNC9w7gooSEn5iUBPzHQ6A= cosmossdk.io/tools/confix v0.1.2 h1:2hoM1oFCNisd0ltSAAZw2i4ponARPmlhuNu3yy0VwI4= cosmossdk.io/tools/confix v0.1.2/go.mod h1:7XfcbK9sC/KNgVGxgLM0BrFbVcR/+6Dg7MFfpx7duYo= -cosmossdk.io/x/circuit v0.1.1 h1:KPJCnLChWrxD4jLwUiuQaf5mFD/1m7Omyo7oooefBVQ= -cosmossdk.io/x/circuit v0.1.1/go.mod h1:B6f/urRuQH8gjt4eLIXfZJucrbreuYrKh5CSjaOxr+Q= -cosmossdk.io/x/evidence v0.2.0 h1:o72zbmgCM7U0v7z7b0XnMB+NqX0tFamqb1HHkQbhrZ0= -cosmossdk.io/x/evidence v0.2.0/go.mod h1:zx/Xqy+hnGVzkqVuVuvmP9KsO6YCl4SfbAetYi+k+sE= -cosmossdk.io/x/feegrant v0.2.0 h1:oq3WVpoJdxko/XgWmpib63V1mYy9ZQN/1qxDajwGzJ8= -cosmossdk.io/x/feegrant v0.2.0/go.mod h1:9CutZbmhulk/Yo6tQSVD5LG8Lk40ZAQ1OX4d1CODWAE= cosmossdk.io/x/tx v0.14.0 h1:hB3O25kIcyDW/7kMTLMaO8Ripj3yqs5imceVd6c/heA= cosmossdk.io/x/tx v0.14.0/go.mod h1:Tn30rSRA1PRfdGB3Yz55W4Sn6EIutr9xtMKSHij+9PM= -cosmossdk.io/x/upgrade v0.2.0 h1:ZHy0xny3wBCSLomyhE06+UmQHWO8cYlVYjfFAJxjz5g= -cosmossdk.io/x/upgrade v0.2.0/go.mod h1:DXDtkvi//TrFyHWSOaeCZGBoiGAE6Rs8/0ABt2pcDD0= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -filippo.io/edwards25519 v1.1.1 h1:YpjwWWlNmGIDyXOn8zLzqiD+9TyIlPhGFG96P39uBpw= -filippo.io/edwards25519 v1.1.1/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= +filippo.io/edwards25519 v1.2.0 h1:crnVqOiS4jqYleHd9vaKZ+HKtHfllngJIiOpNpoJsjo= +filippo.io/edwards25519 v1.2.0/go.mod h1:xzAOLCNug/yB62zG1bQ8uziwrIqIuxhctzJT18Q77mc= github.com/4meepo/tagalign v1.4.2 h1:0hcLHPGMjDyM1gHG58cS73aQF8J4TdVR96TZViorO9E= github.com/4meepo/tagalign v1.4.2/go.mod h1:+p4aMyFM+ra7nb41CnFG6aSDXqRxU/w1VQqScKqDARI= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= -github.com/99designs/keyring v1.2.2 h1:pZd3neh/EmUzWONb35LxQfvuY7kiSXAq3HQd97+XBn0= -github.com/99designs/keyring v1.2.2/go.mod h1:wes/FrByc8j7lFOAGLGSNEg8f/PaI3cgTBqhFkHUrPk= github.com/Abirdcfly/dupword v0.1.3 h1:9Pa1NuAsZvpFPi9Pqkd93I7LIYRURj+A//dFd5tgBeE= github.com/Abirdcfly/dupword v0.1.3/go.mod h1:8VbB2t7e10KRNdwTVoxdBaxla6avbhGzb8sCTygUMhw= github.com/Antonboom/errname v1.0.0 h1:oJOOWR07vS1kRusl6YRSlat7HFnb3mSfMl6sDMRoTBA= @@ -110,8 +104,8 @@ github.com/Antonboom/testifylint v1.5.2/go.mod h1:vxy8VJ0bc6NavlYqjZfmp6EfqXMtBg github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg= github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c h1:pxW6RcqyfI9/kWtOwnv/G+AzdKuy2ZrqINhenH4HyNs= -github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= +github.com/BurntSushi/toml v1.6.0 h1:dRaEfpa2VI55EwlIW72hMRHdWouJeRF7TPYhI+AUQjk= +github.com/BurntSushi/toml v1.6.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/Crocmagnon/fatcontext v0.7.1 h1:SC/VIbRRZQeQWj/TcQBS6JmrXcfA+BU4OGSVUt54PjM= github.com/Crocmagnon/fatcontext v0.7.1/go.mod h1:1wMvv3NXEBJucFGfwOJBxSVWcoIO6emV215SMkW9MFU= @@ -124,31 +118,35 @@ github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rW github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.1 h1:Sz1JIXEcSfhz7fUi7xHnhpIE0thVASYjvosApmHuD2k= github.com/GaijinEntertainment/go-exhaustruct/v3 v3.3.1/go.mod h1:n/LSCXNuIYqVfBlVXyHfMQkZDdp1/mmxfSjADd3z1Zg= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0 h1:sBEjpZlNHzK1voKq9695PJSX2o5NEXl7/OL3coiIY0c= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.30.0/go.mod h1:P4WPRUkOhJC13W//jWpyfJNDAIpvRbAUIYLX/4jtlE0= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0 h1:UnDZ/zFfG1JhH/DqxIZYU/1CUAlTUScoXD/LcM2Ykk8= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0/go.mod h1:IA1C1U7jO/ENqm/vhi7V9YYpBsp+IMyqNrEN94N7tVc= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.55.0 h1:7t/qx5Ost0s0wbA/VDrByOooURhp+ikYwv20i9Y07TQ= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.55.0/go.mod h1:vB2GH9GAYYJTO3mEn8oYwzEdhlayZIdQz6zdzgUIRvA= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0 h1:0s6TxfCu2KHkkZPnBfsQ2y5qia0jl3MMrmBhu3nCOYk= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0/go.mod h1:Mf6O40IAyB9zR/1J8nGDDPirZQQPbYJni8Yisy7NTMc= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.32.0 h1:rIkQfkCOVKc1OiRCNcSDD8ml5RJlZbH/Xsq7lbpynwc= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.32.0/go.mod h1:RD2SsorTmYhF6HkTmDw7KmPYQk8OBYwTkuasChwv7R4= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.56.0 h1:O2sXMyJh8b7devAGdE+163xtRurt0RVpB6DIzX5vGfg= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.56.0/go.mod h1:hEpiGU18xf70qb3jbTcIggWAiEfX/cOIVc2OTe4OegA= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.56.0 h1:ZIT85vKP7LBS84XJ0WdJ3dPOX3iz4j3c0+lpajGQMyo= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.56.0/go.mod h1:rqP9UEhOXv9WhQ7Gjz+G5y/pf8+BJZW5/Ts0AhE0PwE= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.56.0 h1:0YP0+/ixwu+Uqeu/FGiBZNQ19huiUxxiPXIc9WsLKuQ= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.56.0/go.mod h1:6ZZMQhZKDvUvkJw2rc+oDP90tMMzuU/J+5HG1ZmPOmE= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/Masterminds/semver/v3 v3.3.1 h1:QtNSWtVZ3nBfk8mAOu/B6v7FMJ+NHTIgUPi7rj+4nv4= -github.com/Masterminds/semver/v3 v3.3.1/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= +github.com/Masterminds/semver/v3 v3.4.0 h1:Zog+i5UMtVoCU8oKka5P7i9q9HgrJeGzI9SA1Xbatp0= +github.com/Masterminds/semver/v3 v3.4.0/go.mod h1:4V+yj/TJE1HU9XfppCwVMZq3I84lprf4nC11bSS5beM= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/OpenPeeDeeP/depguard/v2 v2.2.1 h1:vckeWVESWp6Qog7UZSARNqfu/cZqvki8zsuj3piCMx4= github.com/OpenPeeDeeP/depguard/v2 v2.2.1/go.mod h1:q4DKzC4UcVaAvcfd41CZh0PWpGgzrVxUYBlgKNGquUo= +github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20260116142910-60249400e523 h1:pQUezn45oyv/8VcOQvPCg2851EIIusY0YKkJhAXsy2I= +github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20260116142910-60249400e523/go.mod h1:ioLG6R+5bUSO1oeGSDxOV3FADARuMoytZCSX6MEMQkI= +github.com/RoaringBitmap/roaring/v2 v2.16.0 h1:Kys1UNf49d5W8Tq3bpuAhIr/Z8/yPB+59CO8A6c/BbE= +github.com/RoaringBitmap/roaring/v2 v2.16.0/go.mod h1:eq4wdNXxtJIS/oikeCzdX1rBzek7ANzbth041hrU8Q4= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= github.com/VictoriaMetrics/fastcache v1.13.0 h1:AW4mheMR5Vd9FkAPUv+NH6Nhw+fmbTMGMsNAoA/+4G0= github.com/VictoriaMetrics/fastcache v1.13.0/go.mod h1:hHXhl4DA2fTL2HTZDJFXWgW0LNjo6B+4aj2Wmng3TjU= github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= -github.com/adlio/schema v1.3.6 h1:k1/zc2jNfeiZBA5aFTRy37jlBIuCkXCm0XmvpzCKI9I= -github.com/adlio/schema v1.3.6/go.mod h1:qkxwLgPBd1FgLRHYVCmQT/rrBr3JH38J9LjmVzWNudg= +github.com/adlio/schema v1.4.0 h1:dekxG6P0my/bPvlyWzMULelR2Xej8RGErlnJcoY5ddw= +github.com/adlio/schema v1.4.0/go.mod h1:3/ojUldWBCWp4e+6VN9ets6unG5WdqbjF7vyzM0zTVQ= github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0= @@ -189,45 +187,47 @@ github.com/ashanbrown/makezero v1.2.0/go.mod h1:dxlPhHbDMC6N6xICzFBSK+4njQDdK8eu github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/aws/aws-sdk-go-v2 v1.41.5 h1:dj5kopbwUsVUVFgO4Fi5BIT3t4WyqIDjGKCangnV/yY= -github.com/aws/aws-sdk-go-v2 v1.41.5/go.mod h1:mwsPRE8ceUUpiTgF7QmQIJ7lgsKUPQOUl3o72QBrE1o= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.8 h1:eBMB84YGghSocM7PsjmmPffTa+1FBUeNvGvFou6V/4o= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.8/go.mod h1:lyw7GFp3qENLh7kwzf7iMzAxDn+NzjXEAGjKS2UOKqI= -github.com/aws/aws-sdk-go-v2/config v1.32.12 h1:O3csC7HUGn2895eNrLytOJQdoL2xyJy0iYXhoZ1OmP0= -github.com/aws/aws-sdk-go-v2/config v1.32.12/go.mod h1:96zTvoOFR4FURjI+/5wY1vc1ABceROO4lWgWJuxgy0g= -github.com/aws/aws-sdk-go-v2/credentials v1.19.12 h1:oqtA6v+y5fZg//tcTWahyN9PEn5eDU/Wpvc2+kJ4aY8= -github.com/aws/aws-sdk-go-v2/credentials v1.19.12/go.mod h1:U3R1RtSHx6NB0DvEQFGyf/0sbrpJrluENHdPy1j/3TE= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20 h1:zOgq3uezl5nznfoK3ODuqbhVg1JzAGDUhXOsU0IDCAo= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20/go.mod h1:z/MVwUARehy6GAg/yQ1GO2IMl0k++cu1ohP9zo887wE= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.21 h1:Rgg6wvjjtX8bNHcvi9OnXWwcE0a2vGpbwmtICOsvcf4= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.21/go.mod h1:A/kJFst/nm//cyqonihbdpQZwiUhhzpqTsdbhDdRF9c= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.21 h1:PEgGVtPoB6NTpPrBgqSE5hE/o47Ij9qk/SEZFbUOe9A= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.21/go.mod h1:p+hz+PRAYlY3zcpJhPwXlLC4C+kqn70WIHwnzAfs6ps= +github.com/aws/aws-sdk-go-v2 v1.41.6 h1:1AX0AthnBQzMx1vbmir3Y4WsnJgiydmnJjiLu+LvXOg= +github.com/aws/aws-sdk-go-v2 v1.41.6/go.mod h1:dy0UzBIfwSeot4grGvY1AqFWN5zgziMmWGzysDnHFcQ= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.9 h1:adBsCIIpLbLmYnkQU+nAChU5yhVTvu5PerROm+/Kq2A= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.9/go.mod h1:uOYhgfgThm/ZyAuJGNQ5YgNyOlYfqnGpTHXvk3cpykg= +github.com/aws/aws-sdk-go-v2/config v1.32.14 h1:opVIRo/ZbbI8OIqSOKmpFaY7IwfFUOCCXBsUpJOwDdI= +github.com/aws/aws-sdk-go-v2/config v1.32.14/go.mod h1:U4/V0uKxh0Tl5sxmCBZ3AecYny4UNlVmObYjKuuaiOo= +github.com/aws/aws-sdk-go-v2/credentials v1.19.14 h1:n+UcGWAIZHkXzYt87uMFBv/l8THYELoX6gVcUvgl6fI= +github.com/aws/aws-sdk-go-v2/credentials v1.19.14/go.mod h1:cJKuyWB59Mqi0jM3nFYQRmnHVQIcgoxjEMAbLkpr62w= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.21 h1:NUS3K4BTDArQqNu2ih7yeDLaS3bmHD0YndtA6UP884g= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.21/go.mod h1:YWNWJQNjKigKY1RHVJCuupeWDrrHjRqHm0N9rdrWzYI= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.22 h1:GmLa5Kw1ESqtFpXsx5MmC84QWa/ZrLZvlJGa2y+4kcQ= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.22/go.mod h1:6sW9iWm9DK9YRpRGga/qzrzNLgKpT2cIxb7Vo2eNOp0= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.22 h1:dY4kWZiSaXIzxnKlj17nHnBcXXBfac6UlsAx2qL6XrU= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.22/go.mod h1:KIpEUx0JuRZLO7U6cbV204cWAEco2iC3l061IxlwLtI= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 h1:qYQ4pzQ2Oz6WpQ8T3HvGHnZydA72MnLuFK9tJwmrbHw= github.com/aws/aws-sdk-go-v2/internal/ini v1.8.6/go.mod h1:O3h0IK87yXci+kg6flUKzJnWeziQUKciKrLjcatSNcY= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.22 h1:rWyie/PxDRIdhNf4DzRk0lvjVOqFJuNnO8WwaIRVxzQ= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.22/go.mod h1:zd/JsJ4P7oGfUhXn1VyLqaRZwPmZwg44Jf2dS84Dm3Y= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 h1:5EniKhLZe4xzL7a+fU3C2tfUN4nWIqlLesfrjkuPFTY= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7/go.mod h1:x0nZssQ3qZSnIcePWLvcoFisRXJzcTVvYpAAdYX8+GI= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.13 h1:JRaIgADQS/U6uXDqlPiefP32yXTda7Kqfx+LgspooZM= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.13/go.mod h1:CEuVn5WqOMilYl+tbccq8+N2ieCy0gVn3OtRb0vBNNM= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.21 h1:c31//R3xgIJMSC8S6hEVq+38DcvUlgFY0FM6mSI5oto= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.21/go.mod h1:r6+pf23ouCB718FUxaqzZdbpYFyDtehyZcmP5KL9FkA= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.21 h1:ZlvrNcHSFFWURB8avufQq9gFsheUgjVD9536obIknfM= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.21/go.mod h1:cv3TNhVrssKR0O/xxLJVRfd2oazSnZnkUeTf6ctUwfQ= -github.com/aws/aws-sdk-go-v2/service/s3 v1.97.3 h1:HwxWTbTrIHm5qY+CAEur0s/figc3qwvLWsNkF4RPToo= -github.com/aws/aws-sdk-go-v2/service/s3 v1.97.3/go.mod h1:uoA43SdFwacedBfSgfFSjjCvYe8aYBS7EnU5GZ/YKMM= -github.com/aws/aws-sdk-go-v2/service/signin v1.0.8 h1:0GFOLzEbOyZABS3PhYfBIx2rNBACYcKty+XGkTgw1ow= -github.com/aws/aws-sdk-go-v2/service/signin v1.0.8/go.mod h1:LXypKvk85AROkKhOG6/YEcHFPoX+prKTowKnVdcaIxE= -github.com/aws/aws-sdk-go-v2/service/sso v1.30.13 h1:kiIDLZ005EcKomYYITtfsjn7dtOwHDOFy7IbPXKek2o= -github.com/aws/aws-sdk-go-v2/service/sso v1.30.13/go.mod h1:2h/xGEowcW/g38g06g3KpRWDlT+OTfxxI0o1KqayAB8= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17 h1:jzKAXIlhZhJbnYwHbvUQZEB8KfgAEuG0dc08Bkda7NU= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.17/go.mod h1:Al9fFsXjv4KfbzQHGe6V4NZSZQXecFcvaIF4e70FoRA= -github.com/aws/aws-sdk-go-v2/service/sts v1.41.9 h1:Cng+OOwCHmFljXIxpEVXAGMnBia8MSU6Ch5i9PgBkcU= -github.com/aws/aws-sdk-go-v2/service/sts v1.41.9/go.mod h1:LrlIndBDdjA/EeXeyNBle+gyCwTlizzW5ycgWnvIxkk= -github.com/aws/smithy-go v1.24.2 h1:FzA3bu/nt/vDvmnkg+R8Xl46gmzEDam6mZ1hzmwXFng= -github.com/aws/smithy-go v1.24.2/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.23 h1:FPXsW9+gMuIeKmz7j6ENWcWtBGTe1kH8r9thNt5Uxx4= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.23/go.mod h1:7J8iGMdRKk6lw2C+cMIphgAnT8uTwBwNOsGkyOCm80U= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.8 h1:HtOTYcbVcGABLOVuPYaIihj6IlkqubBwFj10K5fxRek= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.8/go.mod h1:VsK9abqQeGlzPgUr+isNWzPlK2vKe9INMLWnY65f5Xs= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.14 h1:xnvDEnw+pnj5mctWiYuFbigrEzSm35x7k4KS/ZkCANg= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.14/go.mod h1:yS5rNogD8e0Wu9+l3MUwr6eENBzEeGejvINpN5PAYfY= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.22 h1:PUmZeJU6Y1Lbvt9WFuJ0ugUK2xn6hIWUBBbKuOWF30s= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.22/go.mod h1:nO6egFBoAaoXze24a2C0NjQCvdpk8OueRoYimvEB9jo= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.22 h1:SE+aQ4DEqG53RRCAIHlCf//B2ycxGH7jFkpnAh/kKPM= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.22/go.mod h1:ES3ynECd7fYeJIL6+oax+uIEljmfps0S70BaQzbMd/o= +github.com/aws/aws-sdk-go-v2/service/s3 v1.100.0 h1:7G26Sae6PMKn4kMcU5JzNfrm1YrKwyOhowXPYR2WiWY= +github.com/aws/aws-sdk-go-v2/service/s3 v1.100.0/go.mod h1:Fw9aqhJicIVee1VytBBjH+l+5ov6/PhbtIK/u3rt/ls= +github.com/aws/aws-sdk-go-v2/service/signin v1.0.9 h1:QKZH0S178gCmFEgst8hN0mCX1KxLgHBKKY/CLqwP8lg= +github.com/aws/aws-sdk-go-v2/service/signin v1.0.9/go.mod h1:7yuQJoT+OoH8aqIxw9vwF+8KpvLZ8AWmvmUWHsGQZvI= +github.com/aws/aws-sdk-go-v2/service/sso v1.30.15 h1:lFd1+ZSEYJZYvv9d6kXzhkZu07si3f+GQ1AaYwa2LUM= +github.com/aws/aws-sdk-go-v2/service/sso v1.30.15/go.mod h1:WSvS1NLr7JaPunCXqpJnWk1Bjo7IxzZXrZi1QQCkuqM= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.19 h1:dzztQ1YmfPrxdrOiuZRMF6fuOwWlWpD2StNLTceKpys= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.35.19/go.mod h1:YO8TrYtFdl5w/4vmjL8zaBSsiNp3w0L1FfKVKenZT7w= +github.com/aws/aws-sdk-go-v2/service/sts v1.41.10 h1:p8ogvvLugcR/zLBXTXrTkj0RYBUdErbMnAFFp12Lm/U= +github.com/aws/aws-sdk-go-v2/service/sts v1.41.10/go.mod h1:60dv0eZJfeVXfbT1tFJinbHrDfSJ2GZl4Q//OSSNAVw= +github.com/aws/smithy-go v1.25.0 h1:Sz/XJ64rwuiKtB6j98nDIPyYrV1nVNJ4YU74gttcl5U= +github.com/aws/smithy-go v1.25.0/go.mod h1:YE2RhdIuDbA5E5bTdciG9KrW3+TiEONeUWCqxX9i1Fc= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o= +github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -243,8 +243,8 @@ github.com/bkielbasa/cyclop v1.2.3 h1:faIVMIGDIANuGPWH031CZJTi2ymOQBULs9H21HSMa5 github.com/bkielbasa/cyclop v1.2.3/go.mod h1:kHTwA9Q0uZqOADdupvcFJQtp/ksSnytRMe8ztxG8Fuo= github.com/blizzy78/varnamelen v0.8.0 h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ089M= github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k= -github.com/bmatcuk/doublestar/v4 v4.9.1 h1:X8jg9rRZmJd4yRy7ZeNDRnM+T3ZfHv15JiBJ/avrEXE= -github.com/bmatcuk/doublestar/v4 v4.9.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= +github.com/bmatcuk/doublestar/v4 v4.10.0 h1:zU9WiOla1YA122oLM6i4EXvGW62DvKZVxIe6TYWexEs= +github.com/bmatcuk/doublestar/v4 v4.10.0/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= github.com/bombsimon/wsl/v4 v4.5.0 h1:iZRsEvDdyhd2La0FVi5k6tYehpOR/R7qIUjmKk7N74A= github.com/bombsimon/wsl/v4 v4.5.0/go.mod h1:NOQ3aLF4nD7N5YPXMruR6ZXDOAqLoM0GEpLwTdvmOSc= github.com/breml/bidichk v0.3.2 h1:xV4flJ9V5xWTqxL+/PMFF6dtJPvZLPsyixAoPe8BGJs= @@ -280,22 +280,24 @@ github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku github.com/btcsuite/snappy-go v1.0.0/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc= github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY= github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs= -github.com/bufbuild/buf v1.64.0 h1:puHWFcVKmZFSu4KuaN0kZiQ32n7VVc3un1FeLU77XUs= -github.com/bufbuild/buf v1.64.0/go.mod h1:U4ISwkjZXRLMaCkPG9zp1xY3xHEIwhCFwyNAaA56SGw= -github.com/bufbuild/protocompile v0.14.2-0.20260114160500-16922e24f2b6 h1:0PbP1qlDR1ZVc0WBkGmB2Rup3CwtSvLI3nZBltDg4G8= -github.com/bufbuild/protocompile v0.14.2-0.20260114160500-16922e24f2b6/go.mod h1:5UUj46Eu+U+C59C5N6YilaMI7WWfP2bW9xGcOkme2DI= -github.com/bufbuild/protoplugin v0.0.0-20250218205857-750e09ce93e1 h1:V1xulAoqLqVg44rY97xOR+mQpD2N+GzhMHVwJ030WEU= -github.com/bufbuild/protoplugin v0.0.0-20250218205857-750e09ce93e1/go.mod h1:c5D8gWRIZ2HLWO3gXYTtUfw/hbJyD8xikv2ooPxnklQ= +github.com/bufbuild/buf v1.69.0 h1:q1YTnHJISHuoeUdmsuC9u+nb9rV8glM/TOsPNEteEzg= +github.com/bufbuild/buf v1.69.0/go.mod h1:Q3KRCXSanDCMFs2zL/MqUwUQV0OUqs23P2sy58CW0nc= +github.com/bufbuild/protocompile v0.14.2-0.20260429155904-12ef1ef2ce91 h1:RPIMBLTMx/CRy0NVyb6yJDlGx2Vo84FsU+kAh46zqIA= +github.com/bufbuild/protocompile v0.14.2-0.20260429155904-12ef1ef2ce91/go.mod h1:DhgqsRznX/F0sGkUYtTQJRP+q8xMReQRQ3qr+n1opWU= +github.com/bufbuild/protoplugin v0.0.0-20260414125817-25d1d281b46b h1:b7wvo9ZhjLzCp7tGbOUMvgtYTnd33zGSAmMxcdxMnhQ= +github.com/bufbuild/protoplugin v0.0.0-20260414125817-25d1d281b46b/go.mod h1:c5D8gWRIZ2HLWO3gXYTtUfw/hbJyD8xikv2ooPxnklQ= github.com/butuzov/ireturn v0.3.1 h1:mFgbEI6m+9W8oP/oDdfA34dLisRFCj2G6o/yiI1yZrY= github.com/butuzov/ireturn v0.3.1/go.mod h1:ZfRp+E7eJLC0NQmk1Nrm1LOrn/gQlOykv+cVPdiXH5M= github.com/butuzov/mirror v1.3.0 h1:HdWCXzmwlQHdVhwvsfBb2Au0r3HyINry3bDWLYXiKoc= github.com/butuzov/mirror v1.3.0/go.mod h1:AEij0Z8YMALaq4yQj9CPPVYOyJQyiexpQEQgihajRfI= -github.com/bytedance/gopkg v0.1.3 h1:TPBSwH8RsouGCBcMBktLt1AymVo2TVsBVCY4b6TnZ/M= -github.com/bytedance/gopkg v0.1.3/go.mod h1:576VvJ+eJgyCzdjS+c4+77QF3p7ubbtiKARP3TxducM= -github.com/bytedance/sonic v1.14.2 h1:k1twIoe97C1DtYUo+fZQy865IuHia4PR5RPiuGPPIIE= -github.com/bytedance/sonic v1.14.2/go.mod h1:T80iDELeHiHKSc0C9tubFygiuXoGzrkjKzX2quAx980= -github.com/bytedance/sonic/loader v0.4.0 h1:olZ7lEqcxtZygCK9EKYKADnpQoYkRQxaeY2NYzevs+o= -github.com/bytedance/sonic/loader v0.4.0/go.mod h1:AR4NYCk5DdzZizZ5djGqQ92eEhCCcdf5x77udYiSJRo= +github.com/bytedance/gopkg v0.1.4 h1:oZnQwnX82KAIWb7033bEwtxvTqXcYMxDBaQxo5JJHWM= +github.com/bytedance/gopkg v0.1.4/go.mod h1:v1zWfPm21Fb+OsyXN2VAHdL6TBb2L88anLQgdyje6R4= +github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM= +github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U= +github.com/bytedance/sonic v1.15.0 h1:/PXeWFaR5ElNcVE84U0dOHjiMHQOwNIx3K4ymzh/uSE= +github.com/bytedance/sonic v1.15.0/go.mod h1:tFkWrPz0/CUCLEF4ri4UkHekCIcdnkqXw9VduqpJh0k= +github.com/bytedance/sonic/loader v0.5.1 h1:Ygpfa9zwRCCKSlrp5bBP/b/Xzc3VxsAW+5NIYXrOOpI= +github.com/bytedance/sonic/loader v0.5.1/go.mod h1:AR4NYCk5DdzZizZ5djGqQ92eEhCCcdf5x77udYiSJRo= github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= github.com/catenacyber/perfsprint v0.8.2 h1:+o9zVmCSVa7M4MvabsWvESEhpsMkhfE7k0sHNGL95yw= github.com/catenacyber/perfsprint v0.8.2/go.mod h1:q//VWC2fWbcdSLEY1R3l8n0zQCDPdE4IjZwyY1HMunM= @@ -306,6 +308,8 @@ github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QH github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= +github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/cp v0.1.0 h1:SE+dxFebS7Iik5LK0tsi1k9ZCxEaFX4AjQmoyA+1dJk= github.com/cespare/cp v0.1.0/go.mod h1:SOGHArjBr4JWaSDEVpWpo/hNg6RoKrls6Oh40hiwW+s= @@ -316,6 +320,8 @@ github.com/charithe/durationcheck v0.0.10 h1:wgw73BiocdBDQPik+zcEoBG/ob8uyBHf2iy github.com/charithe/durationcheck v0.0.10/go.mod h1:bCWXb7gYRysD1CU3C+u4ceO49LoGOY1C1L6uouGNreQ= github.com/chavacava/garif v0.1.0 h1:2JHa3hbYf5D9dsgseMKAmc/MZ109otzgNFk5s87H9Pc= github.com/chavacava/garif v0.1.0/go.mod h1:XMyYCkEL58DF0oyW4qDjjnPWONs2HBqYKI+UIPD+Gww= +github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY= +github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/logex v1.2.1 h1:XHDu3E6q+gdHgsdTPH6ImJMIp436vR6MPtH8gP05QzM= github.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ= @@ -342,10 +348,8 @@ github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5 h1:6xNmx7iTtyBRev0+D/Tv1FZd4SCg8axKApyNyRsAt/w= -github.com/cncf/xds/go v0.0.0-20251210132809-ee656c7534f5/go.mod h1:KdCmV+x/BuvyMxRnYBlmVaq4OLiKW6iRQfvC62cvdkI= -github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= -github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= +github.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2 h1:aBangftG7EVZoUb69Os8IaYg++6uMOdKK83QtkkvJik= +github.com/cncf/xds/go v0.0.0-20260202195803-dba9d589def2/go.mod h1:qwXFYgsP6T7XnJtbKlf1HP8AjxZZyzxMmc+Lq5GjlU4= github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/cockroachdb/datadriven v1.0.3-0.20230801171734-e384cf455877 h1:1MLK4YpFtIEo3ZtMA5C795Wtv5VuUnrXX7mQG+aHg6o= github.com/cockroachdb/datadriven v1.0.3-0.20230801171734-e384cf455877/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= @@ -357,80 +361,83 @@ github.com/cockroachdb/logtags v0.0.0-20241215232642-bb51bb14a506 h1:ASDL+UJcILM github.com/cockroachdb/logtags v0.0.0-20241215232642-bb51bb14a506/go.mod h1:Mw7HqKr2kdtu6aYGn3tPmAftiP3QPX63LdK/zcariIo= github.com/cockroachdb/pebble v1.1.5 h1:5AAWCBWbat0uE0blr8qzufZP5tBjkRyy/jWe1QWLnvw= github.com/cockroachdb/pebble v1.1.5/go.mod h1:17wO9el1YEigxkP/YtV8NtCivQDgoCyBg5c4VR/eOWo= -github.com/cockroachdb/redact v1.1.6 h1:zXJBwDZ84xJNlHl1rMyCojqyIxv+7YUpQiJLQ7n4314= -github.com/cockroachdb/redact v1.1.6/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cockroachdb/redact v1.1.8 h1:8eVLLj6juKxiKrAEw2b8cJvNqWq++U8WOfQFuL7KTaA= +github.com/cockroachdb/redact v1.1.8/go.mod h1:GceHHpJ0rMDpYARL5In88Alq/xMBUtVlz7Qxix6ZVkw= github.com/cockroachdb/tokenbucket v0.0.0-20250429170803-42689b6311bb h1:3bCgBvB8PbJVMX1ouCcSIxvsqKPYM7gs72o0zC76n9g= github.com/cockroachdb/tokenbucket v0.0.0-20250429170803-42689b6311bb/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/cometbft/cometbft v0.38.21 h1:qcIJSH9LiwU5s6ZgKR5eRbsLNucbubfraDs5bzgjtOI= -github.com/cometbft/cometbft v0.38.21/go.mod h1:UCu8dlHqvkAsmAFmWDRWNZJPlu6ya2fTWZlDrWsivwo= -github.com/cometbft/cometbft-db v0.14.1 h1:SxoamPghqICBAIcGpleHbmoPqy+crij/++eZz3DlerQ= -github.com/cometbft/cometbft-db v0.14.1/go.mod h1:KHP1YghilyGV/xjD5DP3+2hyigWx0WTp9X+0Gnx0RxQ= +github.com/cometbft/cometbft v0.39.0-rc1.0.20260417162916-9fcf8612cc6c h1:6m6fZznl23XkcSMWElX+uwcojlfswo+KfowqEUNCcmc= +github.com/cometbft/cometbft v0.39.0-rc1.0.20260417162916-9fcf8612cc6c/go.mod h1:+UN4jo94b9NhV7d+7ZOfkOksAZP3gfNV8j/pCt/SLfg= +github.com/cometbft/cometbft-db v1.0.4 h1:cezb8yx/ZWcF124wqUtAFjAuDksS1y1yXedvtprUFxs= +github.com/cometbft/cometbft-db v1.0.4/go.mod h1:M+BtHAGU2XLrpUxo3Nn1nOCcnVCiLM9yx5OuT0u5SCA= github.com/consensys/gnark-crypto v0.19.2 h1:qrEAIXq3T4egxqiliFFoNrepkIWVEeIYwt3UL0fvS80= github.com/consensys/gnark-crypto v0.19.2/go.mod h1:rT23F0XSZqE0mUA0+pRtnL56IbPxs6gp4CeRsBk4XS0= -github.com/containerd/continuity v0.4.3 h1:6HVkalIp+2u1ZLH1J/pYX2oBVXlJZvh1X1A7bEZ9Su8= -github.com/containerd/continuity v0.4.3/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ= +github.com/containerd/continuity v0.4.5 h1:ZRoN1sXq9u7V6QoHMcVWGhOwDFqZ4B9i5H6un1Wh0x4= +github.com/containerd/continuity v0.4.5/go.mod h1:/lNJvtJKUQStBzpVQ1+rasXO1LAWtUQssk28EZvJ3nE= github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE= github.com/containerd/errdefs/pkg v0.3.0/go.mod h1:NJw6s9HwNuRhnjJhM7pylWwMyAkmCQvQ4GpJHEqRLVk= -github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= -github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= -github.com/containerd/stargz-snapshotter/estargz v0.18.1 h1:cy2/lpgBXDA3cDKSyEfNOFMA/c10O1axL69EU7iirO8= -github.com/containerd/stargz-snapshotter/estargz v0.18.1/go.mod h1:ALIEqa7B6oVDsrF37GkGN20SuvG/pIMm7FwP7ZmRb0Q= +github.com/containerd/stargz-snapshotter/estargz v0.18.2 h1:yXkZFYIzz3eoLwlTUZKz2iQ4MrckBxJjkmD16ynUTrw= +github.com/containerd/stargz-snapshotter/estargz v0.18.2/go.mod h1:XyVU5tcJ3PRpkA9XS2T5us6Eg35yM0214Y+wvrZTBrY= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= +github.com/cosmos/btree v0.0.0-20250924232609-2c6195d95951 h1:dC3GJcS8bJiSEe7VAFDDFgFnVM1G9nBdGOgqJsmsZwM= +github.com/cosmos/btree v0.0.0-20250924232609-2c6195d95951/go.mod h1:jBbTdUWhSZClZWoDg54VnvV7/54modSOzDN7VXftj1A= +github.com/cosmos/btree v1.0.0 h1:V3OdIzTQw2yE7f6pD6FfA9j2/YLj1UpB9MdY0zU3v3k= +github.com/cosmos/btree v1.0.0/go.mod h1:BZML+flLn4d3MOa4POmzDWf5HQ7EGh0y1OLlfhh7A0k= github.com/cosmos/cosmos-db v1.1.3 h1:7QNT77+vkefostcKkhrzDK9uoIEryzFrU9eoMeaQOPY= github.com/cosmos/cosmos-db v1.1.3/go.mod h1:kN+wGsnwUJZYn8Sy5Q2O0vCYA99MJllkKASbs6Unb9U= github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= -github.com/cosmos/cosmos-sdk v0.53.6 h1:aJeInld7rbsHtH1qLHu2aZJF9t40mGlqp3ylBLDT0HI= -github.com/cosmos/cosmos-sdk v0.53.6/go.mod h1:N6YuprhAabInbT3YGumGDKONbvPX5dNro7RjHvkQoKE= -github.com/cosmos/evm v0.6.0 h1:jwJerLS7btDgDpZOYy7lUC+1rNRCGGE80TJ6r4guufo= -github.com/cosmos/evm v0.6.0/go.mod h1:QnaJDtxqon2mywiYqxM8VwW8FKeFazi0au0qzVpFAG8= +github.com/cosmos/cosmos-sdk v0.54.0-rc.1.0.20260417173832-6850afc89406 h1:oQQM/SKjAvKm+V3hy/rwBvVjlM8t3SM0Zi8qNDKsnrQ= +github.com/cosmos/cosmos-sdk v0.54.0-rc.1.0.20260417173832-6850afc89406/go.mod h1:dwyTufJxdycPjCTGkhOrcMxPkWeLvbQTPmmz6l+HoVs= +github.com/cosmos/cosmos-sdk/store/v2 v2.0.0 h1:5CFXBU5cHIvxMpz5QBrTwR5DL/W3uZL2BYYMoDp4siY= +github.com/cosmos/cosmos-sdk/store/v2 v2.0.0/go.mod h1:XyRyi5fGjIcokBqS1cyA8/QVbVNy4ui8hmpk1gezuHo= +github.com/cosmos/evm v0.7.0-beta.0 h1:MgSiN7xi1fJ34G269BWr4RX9+7zGXWMv1JTF/DWGotA= +github.com/cosmos/evm v0.7.0-beta.0/go.mod h1:nzlU/yJgsYXDPxLptYgAYQ2M1Cao5szjX4QMDBSzPAY= github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= -github.com/cosmos/go-ethereum v1.16.2-cosmos-1 h1:QIaIS6HIdPSBdTvpFhxswhMLUJgcr4irbd2o9ZKldAI= -github.com/cosmos/go-ethereum v1.16.2-cosmos-1/go.mod h1:X5CIOyo8SuK1Q5GnaEizQVLHT/DfsiGWuNeVdQcEMNA= +github.com/cosmos/go-ethereum v1.17.2-cosmos-0 h1:V1vadF7/miUwwbNh3iiqNM51aHAG/5mzRCeIdcdostw= +github.com/cosmos/go-ethereum v1.17.2-cosmos-0/go.mod h1:KHcRXfGOUfUmKg51IhQ0IowiqZ6PqZf08CMtk0g5K1o= github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI= github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= github.com/cosmos/gogoproto v1.7.2 h1:5G25McIraOC0mRFv9TVO139Uh3OklV2hczr13KKVHCA= github.com/cosmos/gogoproto v1.7.2/go.mod h1:8S7w53P1Y1cHwND64o0BnArT6RmdgIvsBuco6uTllsk= -github.com/cosmos/iavl v1.2.6 h1:Hs3LndJbkIB+rEvToKJFXZvKo6Vy0Ex1SJ54hhtioIs= -github.com/cosmos/iavl v1.2.6/go.mod h1:GiM43q0pB+uG53mLxLDzimxM9l/5N9UuSY3/D0huuVw= -github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v10 v10.1.0 h1:epKcbFAeWRRw1i1jZnYzLIEm9sgUPaL1RftuRjjUKGw= -github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v10 v10.1.0/go.mod h1:S4ZQwf5/LhpOi8JXSAese/6QQDk87nTdicJPlZ5q9UQ= +github.com/cosmos/iavl v1.2.8 h1:55F96BGUJ7KT7h+Ky/cEqS+pEvhFqsU4O8Th3F0N1js= +github.com/cosmos/iavl v1.2.8/go.mod h1:FRHN4tO+6crf0p2zsqye+nAbsMgiwdkxpWm18DyP6+Y= +github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v10 v10.6.0 h1:8DI3/QLT6oNnX0Rfkk1k3Y/fYogMSR/6S9E7ojswApk= +github.com/cosmos/ibc-apps/middleware/packet-forward-middleware/v10 v10.6.0/go.mod h1:iXHZyuZYhkC6Dg2m5m5a92P6LWdJe5Wuruu7RQJqfVM= github.com/cosmos/ibc-go/modules/capability v1.0.1 h1:ibwhrpJ3SftEEZRxCRkH0fQZ9svjthrX2+oXdZvzgGI= github.com/cosmos/ibc-go/modules/capability v1.0.1/go.mod h1:rquyOV262nGJplkumH+/LeYs04P3eV8oB7ZM4Ygqk4E= -github.com/cosmos/ibc-go/v10 v10.5.0 h1:NI+cX04fXdu9JfP0V0GYeRi1ENa7PPdq0BYtVYo8Zrs= -github.com/cosmos/ibc-go/v10 v10.5.0/go.mod h1:a74pAPUSJ7NewvmvELU74hUClJhwnmm5MGbEaiTw/kE= +github.com/cosmos/ibc-go/v10 v10.6.0 h1:k7PZVSLXFtCdoWlU+ERGn2m1Np4Tw8BF8WyPGl0DOi4= +github.com/cosmos/ibc-go/v10 v10.6.0/go.mod h1:a74pAPUSJ7NewvmvELU74hUClJhwnmm5MGbEaiTw/kE= +github.com/cosmos/ibc-go/v11 v11.0.0 h1:9EIehi88hNP1cCU83NC+J8UXNn+05YZt9eqmnzCQLSg= +github.com/cosmos/ibc-go/v11 v11.0.0/go.mod h1:iWlzLuCu+ctVbQwoVf5z51HE5e/NE8/pwnLVVDmP++4= github.com/cosmos/ics23/go v0.11.0 h1:jk5skjT0TqX5e5QJbEnwXIS2yI2vnmLOgpQPeM5RtnU= github.com/cosmos/ics23/go v0.11.0/go.mod h1:A8OjxPE67hHST4Icw94hOxxFEJMBG031xIGF/JHNIY0= +github.com/cosmos/keyring v1.2.0 h1:8C1lBP9xhImmIabyXW4c3vFjjLiBdGCmfLUfeZlV1Yo= +github.com/cosmos/keyring v1.2.0/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= github.com/cosmos/ledger-cosmos-go v1.0.0 h1:jNKW89nPf0vR0EkjHG8Zz16h6p3zqwYEOxlHArwgYtw= github.com/cosmos/ledger-cosmos-go v1.0.0/go.mod h1:mGaw2wDOf+Z6SfRJsMGxU9DIrBa4du0MAiPlpPhLAOE= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/cpuguy83/go-md2man/v2 v2.0.7 h1:zbFlGlXEAKlwXpmvle3d8Oe3YnkKIK4xSRTd3sHPnBo= github.com/cpuguy83/go-md2man/v2 v2.0.7/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= -github.com/crate-crypto/go-eth-kzg v1.4.0 h1:WzDGjHk4gFg6YzV0rJOAsTK4z3Qkz5jd4RE3DAvPFkg= -github.com/crate-crypto/go-eth-kzg v1.4.0/go.mod h1:J9/u5sWfznSObptgfa92Jq8rTswn6ahQWEuiLHOjCUI= -github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a h1:W8mUrRp6NOVl3J+MYp5kPMoUZPp7aOYHtaua31lwRHg= -github.com/crate-crypto/go-ipa v0.0.0-20240724233137-53bbb0ceb27a/go.mod h1:sTwzHBvIzm2RfVCGNEBZgRyjwK40bVoun3ZnGOCafNM= -github.com/creachadair/atomicfile v0.3.7 h1:wdg8+Isz07NDMi2yZQAoI1EKB9SxuDhvo5MUii/ZqlM= -github.com/creachadair/atomicfile v0.3.7/go.mod h1:lUrZrE/XjMA7rJY/n8dF7/sSpy6KjtPaxPbrDambthA= -github.com/creachadair/mds v0.22.1 h1:Wink9jeYR7brBbOkOTVZVrd6vyb5W4ZBRhlZd96TSgU= -github.com/creachadair/mds v0.22.1/go.mod h1:ArfS0vPHoLV/SzuIzoqTEZfoYmac7n9Cj8XPANHocvw= -github.com/creachadair/tomledit v0.0.28 h1:aQJVwcNTzx4SZ/tSbkyGE69w4YQ6Gn+xhHHKtqMZwuw= -github.com/creachadair/tomledit v0.0.28/go.mod h1:pqb2HRQi0lMu6MBiUmTk/0XQ+SmPtq2QbUrG+eiLP5w= +github.com/crate-crypto/go-eth-kzg v1.5.0 h1:FYRiJMJG2iv+2Dy3fi14SVGjcPteZ5HAAUe4YWlJygc= +github.com/crate-crypto/go-eth-kzg v1.5.0/go.mod h1:J9/u5sWfznSObptgfa92Jq8rTswn6ahQWEuiLHOjCUI= +github.com/creachadair/atomicfile v0.3.8 h1:PyMIBZHZunTF+2+OSJCUg4XWO9nh6NwIacUBtF6tdg8= +github.com/creachadair/atomicfile v0.3.8/go.mod h1:oZrfNyYdwMjCD+eKNqsnPmdnQ54z4ujOoYvNTZyuJ2A= +github.com/creachadair/mds v0.24.1 h1:bzL4ItCtAUxxO9KkotP0PVzlw4tnJicAcjPu82v2mGs= +github.com/creachadair/mds v0.24.1/go.mod h1:ArfS0vPHoLV/SzuIzoqTEZfoYmac7n9Cj8XPANHocvw= +github.com/creachadair/tomledit v0.0.29 h1:dB5CbdwJMpn/fmfAPTAAleXF/KJwY0Ggc1eL/zvZRgk= +github.com/creachadair/tomledit v0.0.29/go.mod h1:4SoTXxzHgvzHRMIJPw+o6zK/yXii4VjLrb6/3gCQnyA= github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= -github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= github.com/curioswitch/go-reassign v0.3.0 h1:dh3kpQHuADL3cobV/sSGETA8DOv457dwl+fbBAhrQPs= github.com/curioswitch/go-reassign v0.3.0/go.mod h1:nApPCCTtqLJN/s8HfItCcKV0jIPwluBOvZP+dsJGA88= github.com/daixiang0/gci v0.13.5 h1:kThgmH1yBmZSBCh1EJVxQ7JsHpm5Oms0AMed/0LaH4c= @@ -442,14 +449,18 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c h1:pFUpOrbxDR6AkioZ1ySsx5yxlDQZ8stG2b88gTPxgJU= +github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c/go.mod h1:6UhI8N9EjYm1c2odKpFpAYeR8dsBeM7PtzQhRgxRr9U= +github.com/dchest/siphash v1.2.3 h1:QXwFc8cFOR2dSa/gE6o/HokBMWtLUaNDVd+22aKHeEA= +github.com/dchest/siphash v1.2.3/go.mod h1:0NvQU092bT0ipiFN++/rXm69QG9tVxLAlQHIXMPAkHc= github.com/deckarep/golang-set/v2 v2.6.0 h1:XfcQbWM1LlMB8BsJ8N9vW5ehnnPVIw0je80NsVHagjM= github.com/deckarep/golang-set/v2 v2.6.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= github.com/decred/dcrd/crypto/blake256 v1.1.0 h1:zPMNGQCm0g4QTY27fOCorQW7EryeQ/U0x++OzVrdms8= github.com/decred/dcrd/crypto/blake256 v1.1.0/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.1/go.mod h1:hyedUtir6IdtD/7lIxGeCxkaw7y45JueMRL4DIyJDKs= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 h1:NMZiJj8QnKe1LgsbDayM4UoHwbvwDRwnI3hwNaAHRnc= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0/go.mod h1:ZXNYxsqcloTdSy/rNShjYzMhyjf0LaoftYK0p+A3h40= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.1 h1:5RVFMOWjMyRy8cARdy79nAmgYw3hK/4HUq48LQ6Wwqo= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.1/go.mod h1:ZXNYxsqcloTdSy/rNShjYzMhyjf0LaoftYK0p+A3h40= github.com/decred/dcrd/lru v1.0.0/go.mod h1:mxKOwFd7lFjN2GZYsiz/ecgqR6kkYAl+0pz0tEMk218= github.com/deepmap/oapi-codegen v1.6.0 h1:w/d1ntwh91XI0b/8ja7+u5SvA4IFfM0UNNLmiDR1gg0= github.com/deepmap/oapi-codegen v1.6.0/go.mod h1:ryDa9AgbELGeB+YEXE1dR53yAjHwFvE9iAUlWl9Al3M= @@ -458,40 +469,40 @@ github.com/denis-tingaikin/go-header v0.5.0/go.mod h1:mMenU5bWrok6Wl2UsZjy+1okeg github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= github.com/desertbit/timer v1.0.1 h1:yRpYNn5Vaaj6QXecdLMPMJsW81JLiI1eokUft5nBmeo= github.com/desertbit/timer v1.0.1/go.mod h1:htRrYeY5V/t4iu1xCJ5XsQvp4xve8QulXXctAzxqcwE= -github.com/dgraph-io/badger/v4 v4.2.0 h1:kJrlajbXXL9DFTNuhhu9yCx7JJa4qpYWxtE8BzuWsEs= -github.com/dgraph-io/badger/v4 v4.2.0/go.mod h1:qfCqhPoWDFJRx1gp5QwwyGo8xk1lbHUxvK9nK0OGAak= -github.com/dgraph-io/ristretto v0.2.0 h1:XAfl+7cmoUDWW/2Lx8TGZQjjxIQ2Ley9DSf52dru4WE= -github.com/dgraph-io/ristretto v0.2.0/go.mod h1:8uBHCU/PBV4Ag0CJrP47b9Ofby5dqWNh4FicAdoqFNU= +github.com/dgraph-io/badger/v4 v4.9.1 h1:DocZXZkg5JJHJPtUErA0ibyHxOVUDVoXLSCV6t8NC8w= +github.com/dgraph-io/badger/v4 v4.9.1/go.mod h1:5/MEx97uzdPUHR4KtkNt8asfI2T4JiEiQlV7kWUo8c0= +github.com/dgraph-io/ristretto/v2 v2.4.0 h1:I/w09yLjhdcVD2QV192UJcq8dPBaAJb9pOuMyNy0XlU= +github.com/dgraph-io/ristretto/v2 v2.4.0/go.mod h1:0KsrXtXvnv0EqnzyowllbVJB8yBonswa2lTCK2gGo9E= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= -github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dgryski/go-farm v0.0.0-20240924180020-3414d57e47da h1:aIftn67I1fkbMa512G+w+Pxci9hJPB8oMnkcP3iZF38= +github.com/dgryski/go-farm v0.0.0-20240924180020-3414d57e47da/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI= github.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= -github.com/docker/cli v29.2.0+incompatible h1:9oBd9+YM7rxjZLfyMGxjraKBKE4/nVyvVfN4qNl9XRM= -github.com/docker/cli v29.2.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= -github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v28.5.2+incompatible h1:DBX0Y0zAjZbSrm1uzOkdr1onVghKaftjlSWt4AFexzM= -github.com/docker/docker v28.5.2+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker-credential-helpers v0.9.5 h1:EFNN8DHvaiK8zVqFA2DT6BjXE0GzfLOZ38ggPTKePkY= -github.com/docker/docker-credential-helpers v0.9.5/go.mod h1:v1S+hepowrQXITkEfw6o4+BMbGot02wiKpzWhGUZK6c= -github.com/docker/go-connections v0.6.0 h1:LlMG9azAe1TqfR7sO+NJttz1gy6KO7VJBh+pMmjSD94= -github.com/docker/go-connections v0.6.0/go.mod h1:AahvXYshr6JgfUJGdDCs2b5EZG/vmaMAntpSFH5BFKE= +github.com/docker/cli v29.4.1+incompatible h1:02RT8QqqwtGRn+6SYypv8IUEbD/ltY6sfKCJIoUcGzk= +github.com/docker/cli v29.4.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/docker-credential-helpers v0.9.6 h1:cT2PbRPSlnMmNTfT2TDMXRyQ1KMWHG7xoTLBcn1ZNv0= +github.com/docker/docker-credential-helpers v0.9.6/go.mod h1:v1S+hepowrQXITkEfw6o4+BMbGot02wiKpzWhGUZK6c= +github.com/docker/go-connections v0.7.0 h1:6SsRfJddP22WMrCkj19x9WKjEDTB+ahsdiGYf0mN39c= +github.com/docker/go-connections v0.7.0/go.mod h1:no1qkHdjq7kLMGUXYAduOhYPSJxxvgWBh7ogVvptn3Q= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/dunglas/httpsfv v1.1.0 h1:Jw76nAyKWKZKFrpMMcL76y35tOpYHqQPzHQiwDvpe54= +github.com/dunglas/httpsfv v1.1.0/go.mod h1:zID2mqw9mFsnt7YC3vYQ9/cjq30q41W+1AnDwH8TiMg= github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= -github.com/dvsekhvalnov/jose2go v1.7.0 h1:bnQc8+GMnidJZA8zc6lLEAb4xNrIqHwO+9TzqvtQZPo= -github.com/dvsekhvalnov/jose2go v1.7.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= +github.com/dvsekhvalnov/jose2go v1.8.0 h1:LqkkVKAlHFfH9LOEl5fe4p/zL02OhWE7pCufMBG2jLA= +github.com/dvsekhvalnov/jose2go v1.8.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/ebitengine/purego v0.10.0 h1:QIw4xfpWT6GWTzaW5XEKy3HXoqrJGx1ijYHzTF0/ISU= +github.com/ebitengine/purego v0.10.0/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= -github.com/emicklei/dot v1.10.0 h1:z17n0ce/FBMz3QbShSzVGhiW447Qhu7fljzvp3Gs6ig= -github.com/emicklei/dot v1.10.0/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= +github.com/emicklei/dot v1.11.0 h1:zsrhCuFHAJge/aZIC4N4LdHy5tqYu4tWEaUzIwdYj4Y= +github.com/emicklei/dot v1.11.0/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -501,17 +512,17 @@ github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go. github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= github.com/envoyproxy/go-control-plane v0.14.0 h1:hbG2kr4RuFj222B6+7T83thSPqLjwBIfQawTkC++2HA= github.com/envoyproxy/go-control-plane v0.14.0/go.mod h1:NcS5X47pLl/hfqxU70yPwL9ZMkUlwlKxtAohpi2wBEU= -github.com/envoyproxy/go-control-plane/envoy v1.36.0 h1:yg/JjO5E7ubRyKX3m07GF3reDNEnfOboJ0QySbH736g= -github.com/envoyproxy/go-control-plane/envoy v1.36.0/go.mod h1:ty89S1YCCVruQAm9OtKeEkQLTb+Lkz0k8v9W0Oxsv98= +github.com/envoyproxy/go-control-plane/envoy v1.37.0 h1:u3riX6BoYRfF4Dr7dwSOroNfdSbEPe9Yyl09/B6wBrQ= +github.com/envoyproxy/go-control-plane/envoy v1.37.0/go.mod h1:DReE9MMrmecPy+YvQOAOHNYMALuowAnbjjEMkkWOi6A= github.com/envoyproxy/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI= github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v1.3.0 h1:TvGH1wof4H33rezVKWSpqKz5NXWg5VPuZ0uONDT6eb4= -github.com/envoyproxy/protoc-gen-validate v1.3.0/go.mod h1:HvYl7zwPa5mffgyeTUHA9zHIH36nmrm7oCbo4YKoSWA= -github.com/ethereum/c-kzg-4844/v2 v2.1.5 h1:aVtoLK5xwJ6c5RiqO8g8ptJ5KU+2Hdquf6G3aXiHh5s= -github.com/ethereum/c-kzg-4844/v2 v2.1.5/go.mod h1:u59hRTTah4Co6i9fDWtiCjTrblJv0UwsqZKCc0GfgUs= -github.com/ethereum/go-verkle v0.2.2 h1:I2W0WjnrFUIzzVPwm8ykY+7pL2d4VhlsePn4j7cnFk8= -github.com/ethereum/go-verkle v0.2.2/go.mod h1:M3b90YRnzqKyyzBEWJGqj8Qff4IDeXnzFw0P9bFw3uk= +github.com/envoyproxy/protoc-gen-validate v1.3.3 h1:MVQghNeW+LZcmXe7SY1V36Z+WFMDjpqGAGacLe2T0ds= +github.com/envoyproxy/protoc-gen-validate v1.3.3/go.mod h1:TsndJ/ngyIdQRhMcVVGDDHINPLWB7C82oDArY51KfB0= +github.com/ethereum/c-kzg-4844/v2 v2.1.6 h1:xQymkKCT5E2Jiaoqf3v4wsNgjZLY0lRSkZn27fRjSls= +github.com/ethereum/c-kzg-4844/v2 v2.1.6/go.mod h1:8HMkUZ5JRv4hpw/XUrYWSQNAUzhHMg2UDb/U+5m+XNw= +github.com/ethereum/go-bigmodexpfix v0.0.0-20250911101455-f9e208c548ab h1:rvv6MJhy07IMfEKuARQ9TKojGqLVNxQajaXEp/BoqSk= +github.com/ethereum/go-bigmodexpfix v0.0.0-20250911101455-f9e208c548ab/go.mod h1:IuLm4IsPipXKF7CW5Lzf68PIbZ5yl7FFd74l/E0o9A8= github.com/ettle/strcase v0.2.0 h1:fGNiVF21fHXpX1niBgk0aROov1LagYsOwV/xqKDKR/Q= github.com/ettle/strcase v0.2.0/go.mod h1:DajmHElDSaX76ITe3/VHVyMin4LWSJN5Z909Wp+ED1A= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= @@ -526,6 +537,8 @@ github.com/ferranbt/fastssz v0.1.4 h1:OCDB+dYDEQDvAgtAGnTSidK1Pe2tW3nFV40XyMkTeD github.com/ferranbt/fastssz v0.1.4/go.mod h1:Ea3+oeoRGGLGm5shYAeDgu6PGUlcvQhE2fILyD9+tGg= github.com/firefart/nonamedreturns v1.0.5 h1:tM+Me2ZaXs8tfdDw3X6DOX++wMCOqzYUho6tUTYIdRA= github.com/firefart/nonamedreturns v1.0.5/go.mod h1:gHJjDqhGM4WyPt639SOZs+G89Ko7QKH5R5BhnO6xJhw= +github.com/flynn/noise v1.1.0 h1:KjPQoQCEFdZDiP03phOvGi11+SVVhBG2wOWAorLsstg= +github.com/flynn/noise v1.1.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= @@ -538,18 +551,19 @@ github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo= github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= +github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA= +github.com/gammazero/deque v1.2.0 h1:scEFO8Uidhw6KDU5qg1HA5fYwM0+us2qdeJqm43bitU= +github.com/gammazero/deque v1.2.0/go.mod h1:JVrR+Bj1NMQbPnYclvDlvSX0nVGReLrQZ0aUMuWLctg= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff h1:tY80oXqGNY4FhTFhk+o9oFHGINQ/+vhlm8HFzi6znCI= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= -github.com/getsentry/sentry-go v0.41.0 h1:q/dQZOlEIb4lhxQSjJhQqtRr3vwrJ6Ahe1C9zv+ryRo= -github.com/getsentry/sentry-go v0.41.0/go.mod h1:eRXCoh3uvmjQLY6qu63BjUZnaBu5L5WhMV1RwYO8W5s= +github.com/getsentry/sentry-go v0.44.1 h1:/cPtrA5qB7uMRrhgSn9TYtcEF36auGP3Y6+ThvD/yaI= +github.com/getsentry/sentry-go v0.44.1/go.mod h1:XDotiNZbgf5U8bPDUAfvcFmOnMQQceESxyKaObSssW0= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/ghostiam/protogetter v0.3.9 h1:j+zlLLWzqLay22Cz/aYwTHKQ88GE2DQ6GkWSYFOI4lQ= github.com/ghostiam/protogetter v0.3.9/go.mod h1:WZ0nw9pfzsgxuRsPOFQomgDVSWtDLJRfQJEhsGbmQMA= github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= -github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= -github.com/go-chi/chi/v5 v5.2.4 h1:WtFKPHwlywe8Srng8j2BhOD9312j9cGUxG1SP4V2cR4= -github.com/go-chi/chi/v5 v5.2.4/go.mod h1:X7Gx4mteadT3eDOMTsXzmI4/rwUpOwBHLpAfupzFJP0= +github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU= github.com/go-critic/go-critic v0.12.0 h1:iLosHZuye812wnkEz1Xu3aBwn5ocCPfc9yqmFG9pa6w= github.com/go-critic/go-critic v0.12.0/go.mod h1:DpE0P6OVc6JzVYzmM5gq5jMU31zLr4am5mB/VfFK64w= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= @@ -568,8 +582,8 @@ github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBj github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= -github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-logfmt/logfmt v0.6.1 h1:4hvbpePJKnIzH1B+8OR/JPbTx37NktoI9LE2QZBBkvE= +github.com/go-logfmt/logfmt v0.6.1/go.mod h1:EV2pOAQoZaT1ZXZbqDl5hrymndi4SY9ED9/z6CO0XAk= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= @@ -578,10 +592,10 @@ github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= -github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= -github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= -github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= -github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= +github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= +github.com/go-playground/validator/v10 v10.14.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= github.com/go-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI= github.com/go-quicktest/qt v1.101.0/go.mod h1:14Bz/f7NwaXPtdYEgzsx46kqSxVwTbzVZsDC26tQJow= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= @@ -607,8 +621,8 @@ github.com/go-toolsmith/strparse v1.1.0 h1:GAioeZUK9TGxnLS+qfdqNbA4z0SSm5zVNtCQi github.com/go-toolsmith/strparse v1.1.0/go.mod h1:7ksGy58fsaQkGQlY8WVoBFNyEPMGuJin1rfoPS4lBSQ= github.com/go-toolsmith/typep v1.1.0 h1:fIRYDyF+JywLfqzyhdiHzRop/GQDxxNhLGQ6gFUNHus= github.com/go-toolsmith/typep v1.1.0/go.mod h1:fVIw+7zjdsMxDA3ITWnH1yOiw1rnTQKCsF/sk2H/qig= -github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs= -github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro= +github.com/go-viper/mapstructure/v2 v2.5.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/go-xmlfmt/xmlfmt v1.1.3 h1:t8Ey3Uy7jDSEisW2K3somuMKIpzktkWptA0iFCnRUWY= github.com/go-xmlfmt/xmlfmt v1.1.3/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= @@ -616,9 +630,9 @@ github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJA github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= +github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/gofrs/flock v0.13.0 h1:95JolYOvGMqeH31+FC7D2+uULf6mG61mEZ/A8dRYMzw= github.com/gofrs/flock v0.13.0/go.mod h1:jxeyy9R1auM5S6JYDBhDt+E2TCo7DkratH4Pgi8P+Z0= github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= @@ -631,16 +645,13 @@ github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zV github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt/v4 v4.5.1 h1:JdqV9zKUdtaa9gdPlywC3aeoEsR681PlKC+4F5gQgeo= -github.com/golang-jwt/jwt/v4 v4.5.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= +github.com/golang-jwt/jwt/v4 v4.5.2 h1:YtQM7lnr8iZ+j5q71MGKkNw9Mn7AjHM68uc9g5fXeUI= +github.com/golang-jwt/jwt/v4 v4.5.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.2.5 h1:DrW6hGnjIhtvhOIiAKT6Psh/Kd/ldepEa81DKeiRJ5I= github.com/golang/glog v1.2.5/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ= -github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= @@ -686,10 +697,10 @@ github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Z github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= -github.com/google/cel-go v0.26.1 h1:iPbVVEdkhTX++hpe3lzSk7D3G3QSYqLGoHOcEio+UXQ= -github.com/google/cel-go v0.26.1/go.mod h1:A9O8OU9rdvrK5MQyrqfIxo1a0u4g3sF8KB6PUIaryMM= -github.com/google/flatbuffers v24.3.25+incompatible h1:CX395cjN9Kke9mmalRoL3d81AtFUxJM+yDthflgJGkI= -github.com/google/flatbuffers v24.3.25+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/cel-go v0.28.0 h1:KjSWstCpz/MN5t4a8gnGJNIYUsJRpdi/r97xWDphIQc= +github.com/google/cel-go v0.28.0/go.mod h1:X0bD6iVNR8pkROSOoHVdgTkzmRcosof7WQqCD6wcMc8= +github.com/google/flatbuffers v25.2.10+incompatible h1:F3vclr7C3HpB1k9mxCGRMXq6FdUalZ6H/pNX4FP1v0Q= +github.com/google/flatbuffers v25.2.10+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -697,15 +708,14 @@ github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= -github.com/google/go-containerregistry v0.20.7 h1:24VGNpS0IwrOZ2ms2P1QE3Xa5X9p4phx0aUgzYzHW6I= -github.com/google/go-containerregistry v0.20.7/go.mod h1:Lx5LCZQjLH1QBaMPeGwsME9biPeo1lPx6lbGj/UmzgM= +github.com/google/go-containerregistry v0.21.5 h1:KTJG9Pn/jC0VdZR6ctV3/jcN+q6/Iqlx0sTVz3ywZlM= +github.com/google/go-containerregistry v0.21.5/go.mod h1:ySvMuiWg+dOsRW0Hw8GYwfMwBlNRTmpYBFJPlkco5zU= github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= @@ -725,8 +735,8 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.3.14 h1:yh8ncqsbUY4shRD5dA6RlzjJaT4hi3kII+zYw8wmLb8= github.com/googleapis/enterprise-certificate-proxy v0.3.14/go.mod h1:vqVt9yG9480NtzREnTlmGSBmFrA+bzb0yl0TxoBQXOg= -github.com/googleapis/gax-go/v2 v2.17.0 h1:RksgfBpxqff0EZkDWYuz9q/uWsTVz+kf43LsZ1J6SMc= -github.com/googleapis/gax-go/v2 v2.17.0/go.mod h1:mzaqghpQp4JDh3HvADwrat+6M3MOIDp5YKHhb9PAgDY= +github.com/googleapis/gax-go/v2 v2.22.0 h1:PjIWBpgGIVKGoCXuiCoP64altEJCj3/Ei+kSU5vlZD4= +github.com/googleapis/gax-go/v2 v2.22.0/go.mod h1:irWBbALSr0Sk3qlqb9SyJ1h68WjgeFuiOzI4Rqw5+aY= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gordonklaus/ineffassign v0.1.0 h1:y2Gd/9I7MdY1oEIt+n+rowjBNDcLQq3RsH5hwJd0f9s= github.com/gordonklaus/ineffassign v0.1.0/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0= @@ -755,6 +765,10 @@ github.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= github.com/gostaticanalysis/testutil v0.5.0 h1:Dq4wT1DdTwTGCQQv3rl3IvD5Ld0E6HiY+3Zh0sUGqw8= github.com/gostaticanalysis/testutil v0.5.0/go.mod h1:OLQSbuM6zw2EvCcXTz1lVq5unyoNft372msDY0nY5Hs= +github.com/grafana/pyroscope-go v1.2.7 h1:VWBBlqxjyR0Cwk2W6UrE8CdcdD80GOFNutj0Kb1T8ac= +github.com/grafana/pyroscope-go v1.2.7/go.mod h1:o/bpSLiJYYP6HQtvcoVKiE9s5RiNgjYTj1DhiddP2Pc= +github.com/grafana/pyroscope-go/godeltaprof v0.1.9 h1:c1Us8i6eSmkW+Ez05d3co8kasnuOY813tbMN8i/a3Og= +github.com/grafana/pyroscope-go/godeltaprof v0.1.9/go.mod h1:2+l7K7twW49Ct4wFluZD3tZ6e0SjanjcUUBPVD/UuGU= github.com/graph-gophers/graphql-go v1.3.0 h1:Eb9x/q6MFpCLz7jBCiP/WTxjSDrYLR1QY41SORZyNJ0= github.com/graph-gophers/graphql-go v1.3.0/go.mod h1:9CQHMSxwO4MprSdzoIEobiHpoLtHm77vfxsvsIN5Vuc= github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= @@ -765,8 +779,8 @@ github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgf github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5 h1:jP1RStw811EvUDzsUQ9oESqw2e4RqCjSAD9qIL8eMns= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.5/go.mod h1:WXNBZ64q3+ZUemCMXD9kYnr56H7CgZxDBHCVwstfl3s= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= github.com/hashicorp/aws-sdk-go-base/v2 v2.0.0-beta.72 h1:vTCWu1wbdYo7PEZFem/rlr01+Un+wwVmI7wiegFdRLk= @@ -793,8 +807,8 @@ github.com/hashicorp/go-metrics v0.5.4 h1:8mmPiIJkTPPEbAiV97IxdAGNdRdaWwVap1BU6e github.com/hashicorp/go-metrics v0.5.4/go.mod h1:CG5yz4NZ/AI/aQt9Ucm/vdBnbh7fvmv4lxZ350i+QQI= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-plugin v1.6.3 h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg= -github.com/hashicorp/go-plugin v1.6.3/go.mod h1:MRobyh+Wc/nYy1V4KAXUiYfzxoYhs7V1mlH1Z7iY2h0= +github.com/hashicorp/go-plugin v1.7.0 h1:YghfQH/0QmPNc/AZMTFE3ac8fipZyZECHdDPshfk+mA= +github.com/hashicorp/go-plugin v1.7.0/go.mod h1:BExt6KEaIYx804z8k4gRzRLEvxKVb+kn0NMcihqOqb8= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= @@ -805,8 +819,8 @@ github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/C github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go-version v1.8.0 h1:KAkNb1HAiZd1ukkxDFGmokVZe1Xy9HG6NUp+bPle2i4= -github.com/hashicorp/go-version v1.8.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.9.0 h1:CeOIz6k+LoN3qX9Z0tyQrPtiB1DFYRPfCIBtaXPSCnA= +github.com/hashicorp/go-version v1.9.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= @@ -824,8 +838,8 @@ github.com/hdevalence/ed25519consensus v0.2.0 h1:37ICyZqdyj0lAZ8P4D1d1id3HqbbG1N github.com/hdevalence/ed25519consensus v0.2.0/go.mod h1:w3BHWjwJbFU29IRHL1Iqkw3sus+7FctEyM4RqDxYNzo= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= -github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4 h1:X4egAf/gcS1zATw6wn4Ej8vjuVGxeHdan+bRb2ebyv4= -github.com/holiman/billy v0.0.0-20240216141850-2abb0c79d3c4/go.mod h1:5GuXa7vkL8u9FkFuWdVvfR5ix8hRB7DbOAaYULamFpc= +github.com/holiman/billy v0.0.0-20250707135307-f2f9b9aae7db h1:IZUYC/xb3giYwBLMnr8d0TGTzPKFGNTCGgGLoyeX330= +github.com/holiman/billy v0.0.0-20250707135307-f2f9b9aae7db/go.mod h1:xTEYN9KCHxuYHs+NmrmzFcnvHMzLLNiGFafCb1n3Mfg= github.com/holiman/bloomfilter/v2 v2.0.3 h1:73e0e/V0tCydx14a0SCYS/EWCxgwLZ18CZcZKVu0fao= github.com/holiman/bloomfilter/v2 v2.0.3/go.mod h1:zpoh+gs7qcpqrHr3dB55AMiJwo0iURXE7ZOP9L9hSkA= github.com/holiman/uint256 v1.3.2 h1:a9EgMPSC1AAaj1SZL5zIQD3WbwTuHrMGOerLjGmM/TA= @@ -854,16 +868,20 @@ github.com/influxdata/influxdb1-client v0.0.0-20220302092344-a9ab5670611c h1:qSH github.com/influxdata/influxdb1-client v0.0.0-20220302092344-a9ab5670611c/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839 h1:W9WBk7wlPfJLvMCdtV4zPulc4uCPrlywQOmbFOhgQNU= github.com/influxdata/line-protocol v0.0.0-20200327222509-2487e7298839/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= +github.com/ipfs/go-cid v0.5.0 h1:goEKKhaGm0ul11IHA7I6p1GmKz8kEYniqFopaB5Otwg= +github.com/ipfs/go-cid v0.5.0/go.mod h1:0L7vmeNXpQpUS9vt+yEARkJ8rOg43DF3iPgn4GIN0mk= github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus= github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc= +github.com/jbenet/go-temp-err-catcher v0.1.0 h1:zpb3ZH6wIE8Shj2sKS+khgRvf7T7RABoLk/+KKHggpk= +github.com/jbenet/go-temp-err-catcher v0.1.0/go.mod h1:0kJRvmDZXNMIiJirNPEYfhpPwbGVtZVWC34vc5WLsDk= github.com/jdx/go-netrc v1.0.0 h1:QbLMLyCZGj0NA8glAhxUpf1zDg6cxnWgMBbjq40W0gQ= github.com/jdx/go-netrc v1.0.0/go.mod h1:Gh9eFQJnoTNIRHXl2j5bJXA1u84hQWJWgGh569zF3v8= github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jgautheron/goconst v1.7.1 h1:VpdAG7Ca7yvvJk5n8dMwQhfEZJh95kl/Hl9S1OI5Jkk= github.com/jgautheron/goconst v1.7.1/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4= -github.com/jhump/protoreflect v1.17.0 h1:qOEr613fac2lOuTgWN4tPAtLL7fUSbuJL5X5XumQh94= -github.com/jhump/protoreflect v1.17.0/go.mod h1:h9+vUUL38jiBzck8ck+6G/aeMX8Z4QUY/NiJPwPNi+8= +github.com/jhump/protoreflect v1.18.0 h1:TOz0MSR/0JOZ5kECB/0ufGnC2jdsgZ123Rd/k4Z5/2w= +github.com/jhump/protoreflect v1.18.0/go.mod h1:ezWcltJIVF4zYdIFM+D/sHV4Oh5LNU08ORzCGfwvTz8= github.com/jhump/protoreflect/v2 v2.0.0-beta.2 h1:qZU+rEZUOYTz1Bnhi3xbwn+VxdXkLVeEpAeZzVXLY88= github.com/jhump/protoreflect/v2 v2.0.0-beta.2/go.mod h1:4tnOYkB/mq7QTyS3YKtVtNrJv4Psqout8HA1U+hZtgM= github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs= @@ -882,6 +900,7 @@ github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/u github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= @@ -902,15 +921,19 @@ github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYs github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/compress v1.18.5 h1:/h1gH5Ce+VWNLSWqPzOVn6XBO+vJbCNGvjoaGBFW2IE= github.com/klauspost/compress v1.18.5/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ= -github.com/klauspost/cpuid/v2 v2.0.4/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= -github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE= -github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= +github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y= +github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU= github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/koron/go-ssdp v0.0.6 h1:Jb0h04599eq/CY7rB5YEqPS83HmRfHP2azkxMN2rFtU= +github.com/koron/go-ssdp v0.0.6/go.mod h1:0R9LfRJGek1zWTjN3JUNlm5INCDYGpRDfAptnct63fI= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= @@ -937,15 +960,35 @@ github.com/ldez/usetesting v0.4.2 h1:J2WwbrFGk3wx4cZwSMiCQQ00kjGR0+tuuyW0Lqm4lwA github.com/ldez/usetesting v0.4.2/go.mod h1:eEs46T3PpQ+9RgN9VjpY6qWdiw2/QmfiDeWmdZdrjIQ= github.com/leanovate/gopter v0.2.11 h1:vRjThO1EKPb/1NsDXuDrzldR28RLkBflWYcU9CvzWu4= github.com/leanovate/gopter v0.2.11/go.mod h1:aK3tzZP/C+p1m3SPRE4SYZFGP7jjkuSI4f7Xvpt0S9c= -github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4= github.com/leonklingele/grouper v1.1.2 h1:o1ARBDLOmmasUaNDesWqWCIFH3u7hoFlM84YrjT3mIY= github.com/leonklingele/grouper v1.1.2/go.mod h1:6D0M/HVkhs2yRKRFZUoGjeDy7EZTfFBE9gl4kjmIGkA= -github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= -github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.12.3 h1:tTWxr2YLKwIvK90ZXEw8GP7UFHtcbTtty8zsI+YjrfQ= +github.com/lib/pq v1.12.3/go.mod h1:/p+8NSbOcwzAEI7wiMXFlgydTwcgTr3OSKMsD2BitpA= +github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= +github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= +github.com/libp2p/go-flow-metrics v0.2.0 h1:EIZzjmeOE6c8Dav0sNv35vhZxATIXWZg6j/C08XmmDw= +github.com/libp2p/go-flow-metrics v0.2.0/go.mod h1:st3qqfu8+pMfh+9Mzqb2GTiwrAGjIPszEjZmtksN8Jc= +github.com/libp2p/go-libp2p v0.47.0 h1:qQpBjSCWNQFF0hjBbKirMXE9RHLtSuzTDkTfr1rw0yc= +github.com/libp2p/go-libp2p v0.47.0/go.mod h1:s8HPh7mMV933OtXzONaGFseCg/BE//m1V34p3x4EUOY= +github.com/libp2p/go-libp2p-asn-util v0.4.1 h1:xqL7++IKD9TBFMgnLPZR6/6iYhawHKHl950SO9L6n94= +github.com/libp2p/go-libp2p-asn-util v0.4.1/go.mod h1:d/NI6XZ9qxw67b4e+NgpQexCIiFYJjErASrYW4PFDN8= +github.com/libp2p/go-libp2p-testing v0.12.0 h1:EPvBb4kKMWO29qP4mZGyhVzUyR25dvfUIK5WDu6iPUA= +github.com/libp2p/go-libp2p-testing v0.12.0/go.mod h1:KcGDRXyN7sQCllucn1cOOS+Dmm7ujhfEyXQL5lvkcPg= +github.com/libp2p/go-msgio v0.3.0 h1:mf3Z8B1xcFN314sWX+2vOTShIE0Mmn2TXn3YCUQGNj0= +github.com/libp2p/go-msgio v0.3.0/go.mod h1:nyRM819GmVaF9LX3l03RMh10QdOroF++NBbxAb0mmDM= +github.com/libp2p/go-netroute v0.3.0 h1:nqPCXHmeNmgTJnktosJ/sIef9hvwYCrsLxXmfNks/oc= +github.com/libp2p/go-netroute v0.3.0/go.mod h1:Nkd5ShYgSMS5MUKy/MU2T57xFoOKvvLR92Lic48LEyA= +github.com/libp2p/go-reuseport v0.4.0 h1:nR5KU7hD0WxXCJbmw7r2rhRYruNRl2koHw8fQscQm2s= +github.com/libp2p/go-reuseport v0.4.0/go.mod h1:ZtI03j/wO5hZVDFo2jKywN6bYKWLOy8Se6DrI2E1cLU= +github.com/libp2p/go-yamux/v5 v5.0.1 h1:f0WoX/bEF2E8SbE4c/k1Mo+/9z0O4oC/hWEA+nfYRSg= +github.com/libp2p/go-yamux/v5 v5.0.1/go.mod h1:en+3cdX51U0ZslwRdRLrvQsdayFt3TSUKvBGErzpWbU= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/linxGnu/grocksdb v1.10.4 h1:C9WZslnCjXxx+BL/fXCIe1pLhEri3V9vLQcBZOHadnU= -github.com/linxGnu/grocksdb v1.10.4/go.mod h1:OLQKZwiKwaJiAVCsOzWKvwiLwfZ5Vz8Md5TYR7t7pM8= +github.com/linxGnu/grocksdb v1.10.7 h1:fCi4qvZWo04VgFwGWmO8HQJgUVounJBy+C2TMVPU/ho= +github.com/linxGnu/grocksdb v1.10.7/go.mod h1:OLQKZwiKwaJiAVCsOzWKvwiLwfZ5Vz8Md5TYR7t7pM8= +github.com/lufia/plan9stats v0.0.0-20260216142805-b3301c5f2a88 h1:PTw+yKnXcOFCR6+8hHTyWBeQ/P4Nb7dd4/0ohEcWQuM= +github.com/lufia/plan9stats v0.0.0-20260216142805-b3301c5f2a88/go.mod h1:autxFIvghDt3jPTLoqZ9OZ7s9qTGNAWmYCjVFWPX/zg= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= github.com/macabu/inamedparam v0.1.3 h1:2tk/phHkMlEL/1GNe/Yf6kkR/hkcUdAEY3L0hjYV1Mk= github.com/macabu/inamedparam v0.1.3/go.mod h1:93FLICAIk/quk7eaPPQvbzihUdn/QkGDwIZEoLtpH6I= @@ -957,6 +1000,10 @@ github.com/maratori/testableexamples v1.0.0 h1:dU5alXRrD8WKSjOUnmJZuzdxWOEQ57+7s github.com/maratori/testableexamples v1.0.0/go.mod h1:4rhjL1n20TUTT4vdh3RDqSizKLyXp7K2u6HgraZCGzE= github.com/maratori/testpackage v1.1.1 h1:S58XVV5AD7HADMmD0fNnziNHqKvSdDuEKdPD1rNTU04= github.com/maratori/testpackage v1.1.1/go.mod h1:s4gRK/ym6AMrqpOa/kEbQTV4Q4jb7WeLZzVhVVVOQMc= +github.com/marcopolo/simnet v0.0.4 h1:50Kx4hS9kFGSRIbrt9xUS3NJX33EyPqHVmpXvaKLqrY= +github.com/marcopolo/simnet v0.0.4/go.mod h1:tfQF1u2DmaB6WHODMtQaLtClEf3a296CKQLq5gAsIS0= +github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd h1:br0buuQ854V8u83wA0rVZ8ttrq5CpaPZdvrK0LP2lOk= +github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd/go.mod h1:QuCEs1Nt24+FYQEqAAncTDPJIuGs+LxK1MCiFL25pMU= github.com/matoous/godox v1.1.0 h1:W5mqwbyWrwZv6OQ5Z1a/DHGMOvXYCBP3+Ht7KMoJhq4= github.com/matoous/godox v1.1.0/go.mod h1:jgE/3fUXiTurkdHOLT5WEkThTSuE7yxHv5iWPa80afs= github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= @@ -964,17 +1011,15 @@ github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwM github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= -github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= -github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.22 h1:j8l17JJ9i6VGPUFUYoTUKPSgKe/83EYU2zBC7YNKMw4= +github.com/mattn/go-isatty v0.0.22/go.mod h1:ZXfXG4SQHsB/w3ZeOYbR0PrPwLy+n6xiMrJlRFqopa4= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= @@ -985,10 +1030,20 @@ github.com/mdp/qrterminal/v3 v3.2.1/go.mod h1:jOTmXvnBsMy5xqLniO0R++Jmjs2sTm9dFS github.com/mgechev/revive v1.7.0 h1:JyeQ4yO5K8aZhIKf5rec56u0376h8AlKNQEmjfkjKlY= github.com/mgechev/revive v1.7.0/go.mod h1:qZnwcNhoguE58dfi96IJeSTPeZQejNeoMQLUZGi4SW4= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/minio/highwayhash v1.0.3 h1:kbnuUMoHYyVl7szWjSxJnxw11k2U709jqFPPmIUyD6Q= -github.com/minio/highwayhash v1.0.3/go.mod h1:GGYsuwP/fPD6Y9hMiXuapVvlIUEhFhMTh0rxU3ik1LQ= -github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g= -github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM= +github.com/miekg/dns v1.1.66 h1:FeZXOS3VCVsKnEAd+wBkjMC3D2K+ww66Cq3VnCINuJE= +github.com/miekg/dns v1.1.66/go.mod h1:jGFzBsSNbJw6z1HYut1RKBKHA9PBdxeHrZG8J+gC2WE= +github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c h1:bzE/A84HN25pxAuk9Eej1Kz9OUelF97nAc82bDquQI8= +github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c/go.mod h1:0SQS9kMwD2VsyFEB++InYyBJroV/FRmBgcydeSUcJms= +github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b h1:z78hV3sbSMAUoyUMM0I83AUIT6Hu17AWfgjzIbtrYFc= +github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b/go.mod h1:lxPUiZwKoFL8DUUmalo2yJJUCxbPKtm8OKfqr2/FTNU= +github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc h1:PTfri+PuQmWDqERdnNMiD9ZejrlswWrCpBEZgWOiTrc= +github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc/go.mod h1:cGKTAVKx4SxOuR/czcZ/E2RSJ3sfHs8FpHhQ5CWMf9s= +github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ= +github.com/minio/highwayhash v1.0.4 h1:asJizugGgchQod2ja9NJlGOWq4s7KsAWr5XUc9Clgl4= +github.com/minio/highwayhash v1.0.4/go.mod h1:GGYsuwP/fPD6Y9hMiXuapVvlIUEhFhMTh0rxU3ik1LQ= +github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM= +github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= +github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= @@ -1004,22 +1059,48 @@ github.com/mitchellh/pointerstructure v1.2.0 h1:O+i9nHnXS3l/9Wu7r4NrEdwA2VFTicjU github.com/mitchellh/pointerstructure v1.2.0/go.mod h1:BRAsLI5zgXmw97Lf6s25bs8ohIXc3tViBH44KcwB2g4= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= -github.com/moby/sys/atomicwriter v0.1.0 h1:kw5D/EqkBwsBFi0ss9v1VG3wIkVhzGvLklJ+w3A14Sw= -github.com/moby/sys/atomicwriter v0.1.0/go.mod h1:Ul8oqv2ZMNHOceF643P6FKPXeCmYtlQMvpizfsSoaWs= -github.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7zgvCU= -github.com/moby/sys/sequential v0.6.0/go.mod h1:uyv8EUTrca5PnDsdMGXhZe6CCe8U/UiTWd+lL+7b/Ko= -github.com/moby/term v0.5.2 h1:6qk3FJAFDs6i/q3W/pQ97SX192qKfZgGjCQqfCJkgzQ= -github.com/moby/term v0.5.2/go.mod h1:d3djjFCrjnB+fl8NJux+EJzu0msscUP+f8it8hPkFLc= +github.com/moby/moby/api v1.54.2 h1:wiat9QAhnDQjA7wk1kh/TqHz2I1uUA7M7t9SAl/JNXg= +github.com/moby/moby/api v1.54.2/go.mod h1:+RQ6wluLwtYaTd1WnPLykIDPekkuyD/ROWQClE83pzs= +github.com/moby/moby/client v0.4.1 h1:DMQgisVoMkmMs7fp3ROSdiBnoAu8+vo3GggFl06M/wY= +github.com/moby/moby/client v0.4.1/go.mod h1:z52C9O2POPOsnxZAy//WtKcQ32P+jT/NGeXu/7nfjGQ= +github.com/moby/sys/user v0.4.0 h1:jhcMKit7SA80hivmFJcbB1vqmw//wU61Zdui2eQXuMs= +github.com/moby/sys/user v0.4.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/moricho/tparallel v0.3.2 h1:odr8aZVFA3NZrNybggMkYO3rgPRcqjeQUlBBFVxKHTI= github.com/moricho/tparallel v0.3.2/go.mod h1:OQ+K3b4Ln3l2TZveGCywybl68glfLEwFGqvnjok8b+U= -github.com/morikuni/aec v1.1.0 h1:vBBl0pUnvi/Je71dsRrhMBtreIqNMYErSAbEeb8jrXQ= -github.com/morikuni/aec v1.1.0/go.mod h1:xDRgiq/iw5l+zkao76YTKzKttOp2cwPEne25HDkJnBw= +github.com/mr-tron/base58 v1.1.2/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= +github.com/mr-tron/base58 v1.3.0 h1:K6Y13R2h+dku0wOqKtecgRnBUBPrZzLZy5aIj8lCcJI= +github.com/mr-tron/base58 v1.3.0/go.mod h1:2BuubE67DCSWwVfx37JWNG8emOC0sHEU4/HpcYgCLX8= +github.com/mschoch/smat v0.2.0 h1:8imxQsjDm8yFEAVBe7azKmKSgzSkZXDuKkSq9374khM= +github.com/mschoch/smat v0.2.0/go.mod h1:kc9mz7DoBKqDyiRL7VZN8KvXQMWeTaVnttLRXOlotKw= github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= +github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE= +github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYgtWibDcT0rExnbI= +github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9rQyccr0= +github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4= +github.com/multiformats/go-multiaddr v0.1.1/go.mod h1:aMKBKNEYmzmDmxfX88/vz+J5IU55txyt0p4aiWVohjo= +github.com/multiformats/go-multiaddr v0.16.1 h1:fgJ0Pitow+wWXzN9do+1b8Pyjmo8m5WhGfzpL82MpCw= +github.com/multiformats/go-multiaddr v0.16.1/go.mod h1:JSVUmXDjsVFiW7RjIFMP7+Ev+h1DTbiJgVeTV/tcmP0= +github.com/multiformats/go-multiaddr-dns v0.4.1 h1:whi/uCLbDS3mSEUMb1MsoT4uzUeZB0N32yzufqS0i5M= +github.com/multiformats/go-multiaddr-dns v0.4.1/go.mod h1:7hfthtB4E4pQwirrz+J0CcDUfbWzTqEzVyYKKIKpgkc= +github.com/multiformats/go-multiaddr-fmt v0.1.0 h1:WLEFClPycPkp4fnIzoFoV9FVd49/eQsuaL3/CWe167E= +github.com/multiformats/go-multiaddr-fmt v0.1.0/go.mod h1:hGtDIW4PU4BqJ50gW2quDuPVjyWNZxToGUh/HwTZYJo= +github.com/multiformats/go-multibase v0.2.0 h1:isdYCVLvksgWlMW9OZRYJEa9pZETFivncJHmHnnd87g= +github.com/multiformats/go-multibase v0.2.0/go.mod h1:bFBZX4lKCA/2lyOFSAoKH5SS6oPyjtnzK/XTFDPkNuk= +github.com/multiformats/go-multicodec v0.9.1 h1:x/Fuxr7ZuR4jJV4Os5g444F7xC4XmyUaT/FWtE+9Zjo= +github.com/multiformats/go-multicodec v0.9.1/go.mod h1:LLWNMtyV5ithSBUo3vFIMaeDy+h3EbkMTek1m+Fybbo= +github.com/multiformats/go-multihash v0.0.8/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew= +github.com/multiformats/go-multihash v0.2.3 h1:7Lyc8XfX/IY2jWb/gI7JP+o7JEq9hOa7BFvVU9RSh+U= +github.com/multiformats/go-multihash v0.2.3/go.mod h1:dXgKXCXjBzdscBLk9JkjINiEsCKRVch90MdaGiKsvSM= +github.com/multiformats/go-multistream v0.6.1 h1:4aoX5v6T+yWmc2raBHsTvzmFhOI8WVOer28DeBBEYdQ= +github.com/multiformats/go-multistream v0.6.1/go.mod h1:ksQf6kqHAb6zIsyw7Zm+gAuVo57Qbq84E27YlYqavqw= +github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8= +github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= @@ -1043,14 +1124,14 @@ github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3L github.com/nunnatsa/ginkgolinter v0.19.1 h1:mjwbOlDQxZi9Cal+KfbEJTCz327OLNfwNvoZ70NJ+c4= github.com/nunnatsa/ginkgolinter v0.19.1/go.mod h1:jkQ3naZDmxaZMXPWaS9rblH+i+GWXQCaS/JFIWcOH2s= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/nxadm/tail v1.4.11 h1:8feyoE3OzPrcshW5/MJ4sGESc5cqmGkGCWlco4l0bqY= -github.com/nxadm/tail v1.4.11/go.mod h1:OTaG3NK980DZzxbRq6lEuzgU+mug70nY11sMd4JXXHc= -github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a h1:dlRvE5fWabOchtH7znfiFCcOvmIYgOeAS5ifBXBlh9Q= -github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a/go.mod h1:hVoHR2EVESiICEMbg137etN/Lx+lSrHPTD39Z/uE+2s= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/oasisprotocol/curve25519-voi v0.0.0-20251114093237-2ab5a27a1729 h1:yfQ2sO9WJXUAIUR+g7NUkxJSKCAFJcR5sUDu+ZmjTZI= +github.com/oasisprotocol/curve25519-voi v0.0.0-20251114093237-2ab5a27a1729/go.mod h1:hVoHR2EVESiICEMbg137etN/Lx+lSrHPTD39Z/uE+2s= github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= -github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= -github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= +github.com/oklog/run v1.2.0 h1:O8x3yXwah4A73hJdlrwo/2X6J62gE5qTMusH0dvz60E= +github.com/oklog/run v1.2.0/go.mod h1:mgDbKRSwPhJfesJ4PntqFUbKQRZ50NgmZTSPlFA0YFk= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= @@ -1073,8 +1154,8 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8 github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M= -github.com/opencontainers/runc v1.1.12 h1:BOIssBaW1La0/qbNZHXOOa71dZfZEQOzW7dqQf3phss= -github.com/opencontainers/runc v1.1.12/go.mod h1:S+lQwSfncpBha7XTy/5lBwWgm5+y5Ma/O44Ekby9FK8= +github.com/opencontainers/runc v1.2.8 h1:RnEICeDReapbZ5lZEgHvj7E9Q3Eex9toYmaGBsbvU5Q= +github.com/opencontainers/runc v1.2.8/go.mod h1:cC0YkmZcuvr+rtBZ6T7NBoVbMGNAdLa/21vIElJDOzI= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= @@ -1098,29 +1179,69 @@ github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIw github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 h1:onHthvaw9LFnH4t2DcNVpwGmV9E1BkGknEliJkfwQj0= +github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58/go.mod h1:DXv8WO4yhMYhSNPKjeNKa5WY9YCIEBRbNzFFPJbWO6Y= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= +github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4= github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7 h1:oYW+YCJ1pachXTQmzR3rNLYGGz4g/UgFcjb28p/viDM= github.com/peterh/liner v1.1.1-0.20190123174540-a2c9a5303de7/go.mod h1:CRroGNssyjTd/qIG2FyxByd2S8JEAZXBl4qUrZf8GS0= -github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= -github.com/petermattis/goid v0.0.0-20260113132338-7c7de50cc741 h1:KPpdlQLZcHfTMQRi6bFQ7ogNO0ltFT4PmtwTLW4W+14= -github.com/petermattis/goid v0.0.0-20260113132338-7c7de50cc741/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/petermattis/goid v0.0.0-20250813065127-a731cc31b4fe/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/petermattis/goid v0.0.0-20260330135022-df67b199bc81 h1:WDsQxOJDy0N1VRAjXLpi8sCEZRSGarLWQevDxpTBRrM= +github.com/petermattis/goid v0.0.0-20260330135022-df67b199bc81/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= -github.com/pion/dtls/v2 v2.2.7 h1:cSUBsETxepsCSFSxC3mc/aDo14qQLMSL+O6IjG28yV8= +github.com/pion/datachannel v1.5.10 h1:ly0Q26K1i6ZkGf42W7D4hQYR90pZwzFOjTq5AuCKk4o= +github.com/pion/datachannel v1.5.10/go.mod h1:p/jJfC9arb29W7WrxyKbepTU20CFgyx5oLo8Rs4Py/M= github.com/pion/dtls/v2 v2.2.7/go.mod h1:8WiMkebSHFD0T+dIU+UeBaoV7kDhOW5oDCzZ7WZ/F9s= -github.com/pion/logging v0.2.2 h1:M9+AIj/+pxNsDfAT64+MAVgJO0rsyLnoJKCqf//DoeY= +github.com/pion/dtls/v2 v2.2.12 h1:KP7H5/c1EiVAAKUmXyCzPiQe5+bCJrpOeKg/L05dunk= +github.com/pion/dtls/v2 v2.2.12/go.mod h1:d9SYc9fch0CqK90mRk1dC7AkzzpwJj6u2GU3u+9pqFE= +github.com/pion/dtls/v3 v3.1.2 h1:gqEdOUXLtCGW+afsBLO0LtDD8GnuBBjEy6HRtyofZTc= +github.com/pion/dtls/v3 v3.1.2/go.mod h1:Hw/igcX4pdY69z1Hgv5x7wJFrUkdgHwAn/Q/uo7YHRo= +github.com/pion/ice/v4 v4.0.10 h1:P59w1iauC/wPk9PdY8Vjl4fOFL5B+USq1+xbDcN6gT4= +github.com/pion/ice/v4 v4.0.10/go.mod h1:y3M18aPhIxLlcO/4dn9X8LzLLSma84cx6emMSu14FGw= +github.com/pion/interceptor v0.1.40 h1:e0BjnPcGpr2CFQgKhrQisBU7V3GXK6wrfYrGYaU6Jq4= +github.com/pion/interceptor v0.1.40/go.mod h1:Z6kqH7M/FYirg3frjGJ21VLSRJGBXB/KqaTIrdqnOic= github.com/pion/logging v0.2.2/go.mod h1:k0/tDVsRCX2Mb2ZEmTqNa7CWsQPc+YYCB7Q+5pahoms= +github.com/pion/logging v0.2.4 h1:tTew+7cmQ+Mc1pTBLKH2puKsOvhm32dROumOZ655zB8= +github.com/pion/logging v0.2.4/go.mod h1:DffhXTKYdNZU+KtJ5pyQDjvOAh/GsNSyv1lbkFbe3so= +github.com/pion/mdns/v2 v2.0.7 h1:c9kM8ewCgjslaAmicYMFQIde2H9/lrZpjBkN8VwoVtM= +github.com/pion/mdns/v2 v2.0.7/go.mod h1:vAdSYNAT0Jy3Ru0zl2YiW3Rm/fJCwIeM0nToenfOJKA= +github.com/pion/randutil v0.1.0 h1:CFG1UdESneORglEsnimhUjf33Rwjubwj6xfiOXBa3mA= +github.com/pion/randutil v0.1.0/go.mod h1:XcJrSMMbbMRhASFVOlj/5hQial/Y8oH/HVo7TBZq+j8= +github.com/pion/rtcp v1.2.15 h1:LZQi2JbdipLOj4eBjK4wlVoQWfrZbh3Q6eHtWtJBZBo= +github.com/pion/rtcp v1.2.15/go.mod h1:jlGuAjHMEXwMUHK78RgX0UmEJFV4zUKOFHR7OP+D3D0= +github.com/pion/rtp v1.8.19 h1:jhdO/3XhL/aKm/wARFVmvTfq0lC/CvN1xwYKmduly3c= +github.com/pion/rtp v1.8.19/go.mod h1:bAu2UFKScgzyFqvUKmbvzSdPr+NGbZtv6UB2hesqXBk= +github.com/pion/sctp v1.8.39 h1:PJma40vRHa3UTO3C4MyeJDQ+KIobVYRZQZ0Nt7SjQnE= +github.com/pion/sctp v1.8.39/go.mod h1:cNiLdchXra8fHQwmIoqw0MbLLMs+f7uQ+dGMG2gWebE= +github.com/pion/sdp/v3 v3.0.13 h1:uN3SS2b+QDZnWXgdr69SM8KB4EbcnPnPf2Laxhty/l4= +github.com/pion/sdp/v3 v3.0.13/go.mod h1:88GMahN5xnScv1hIMTqLdu/cOcUkj6a9ytbncwMCq2E= +github.com/pion/srtp/v3 v3.0.6 h1:E2gyj1f5X10sB/qILUGIkL4C2CqK269Xq167PbGCc/4= +github.com/pion/srtp/v3 v3.0.6/go.mod h1:BxvziG3v/armJHAaJ87euvkhHqWe9I7iiOy50K2QkhY= +github.com/pion/stun v0.6.1 h1:8lp6YejULeHBF8NmV8e2787BogQhduZugh5PdhDyyN4= +github.com/pion/stun v0.6.1/go.mod h1:/hO7APkX4hZKu/D0f2lHzNyvdkTGtIy3NDmLR7kSz/8= github.com/pion/stun/v2 v2.0.0 h1:A5+wXKLAypxQri59+tmQKVs7+l6mMM+3d+eER9ifRU0= github.com/pion/stun/v2 v2.0.0/go.mod h1:22qRSh08fSEttYUmJZGlriq9+03jtVmXNODgLccj8GQ= -github.com/pion/transport/v2 v2.2.1 h1:7qYnCBlpgSJNYMbLCKuSY9KbQdBFoETvPNETv0y4N7c= +github.com/pion/stun/v3 v3.0.0 h1:4h1gwhWLWuZWOJIJR9s2ferRO+W3zA/b6ijOI6mKzUw= +github.com/pion/stun/v3 v3.0.0/go.mod h1:HvCN8txt8mwi4FBvS3EmDghW6aQJ24T+y+1TKjB5jyU= github.com/pion/transport/v2 v2.2.1/go.mod h1:cXXWavvCnFF6McHTft3DWS9iic2Mftcz1Aq29pGcU5g= -github.com/pion/transport/v3 v3.0.1 h1:gDTlPJwROfSfz6QfSi0ZmeCSkFcnWWiiR9ES0ouANiM= +github.com/pion/transport/v2 v2.2.4/go.mod h1:q2U/tf9FEfnSBGSW6w5Qp5PFWRLRj3NjLhCCgpRK4p0= +github.com/pion/transport/v2 v2.2.10 h1:ucLBLE8nuxiHfvkFKnkDQRYWYfp8ejf4YBOPfaQpw6Q= +github.com/pion/transport/v2 v2.2.10/go.mod h1:sq1kSLWs+cHW9E+2fJP95QudkzbK7wscs8yYgQToO5E= github.com/pion/transport/v3 v3.0.1/go.mod h1:UY7kiITrlMv7/IKgd5eTUcaahZx5oUN3l9SzK5f5xE0= +github.com/pion/transport/v3 v3.0.7 h1:iRbMH05BzSNwhILHoBoAPxoB9xQgOaJk+591KC9P1o0= +github.com/pion/transport/v3 v3.0.7/go.mod h1:YleKiTZ4vqNxVwh77Z0zytYi7rXHl7j6uPLGhhz9rwo= +github.com/pion/transport/v4 v4.0.1 h1:sdROELU6BZ63Ab7FrOLn13M6YdJLY20wldXW2Cu2k8o= +github.com/pion/transport/v4 v4.0.1/go.mod h1:nEuEA4AD5lPdcIegQDpVLgNoDGreqM/YqmEx3ovP4jM= +github.com/pion/turn/v4 v4.0.2 h1:ZqgQ3+MjP32ug30xAbD6Mn+/K4Sxi3SdNOTFf+7mpps= +github.com/pion/turn/v4 v4.0.2/go.mod h1:pMMKP/ieNAG/fN5cZiN4SDuyKsXtNTr0ccN7IToA1zs= +github.com/pion/webrtc/v4 v4.1.2 h1:mpuUo/EJ1zMNKGE79fAdYNFZBX790KE7kQQpLMjjR54= +github.com/pion/webrtc/v4 v4.1.2/go.mod h1:xsCXiNAmMEjIdFxAYU0MbB3RwRieJsegSB2JZsGN+8U= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -1135,6 +1256,8 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH github.com/polyfloyd/go-errorlint v1.7.1 h1:RyLVXIbosq1gBdk/pChWA8zWYLsq9UEw7a1L5TVMCnA= github.com/polyfloyd/go-errorlint v1.7.1/go.mod h1:aXjNb1x2TNhoLsk26iv1yl7a+zTnXPhwEMtEXukiLR8= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt9k/+g42oCprj/FisM4qX9L3sZB3upGN2ZU= +github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= @@ -1163,6 +1286,8 @@ github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16 github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= github.com/prometheus/common v0.67.5 h1:pIgK94WWlQt1WLwAC5j2ynLaBRDiinoAb86HZHTUGI4= github.com/prometheus/common v0.67.5/go.mod h1:SjE/0MzDEEAyrdr5Gqc6G+sXI67maCxzaT3A2+HqjUw= +github.com/prometheus/otlptranslator v1.0.0 h1:s0LJW/iN9dkIH+EnhiD3BlkkP5QVIUVEoIwkU+A6qos= +github.com/prometheus/otlptranslator v1.0.0/go.mod h1:vRYWnXvI6aWGpsdY/mOT/cbeVRBlPWtBNDb7kGR3uKM= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= @@ -1170,8 +1295,8 @@ github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+Gx github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.19.2 h1:zUMhqEW66Ex7OXIiDkll3tl9a1ZdilUOd/F6ZXw4Vws= -github.com/prometheus/procfs v0.19.2/go.mod h1:M0aotyiemPhBCM0z5w87kL22CxfcH05ZpYlu+b4J7mw= +github.com/prometheus/procfs v0.20.1 h1:XwbrGOIplXW/AU3YhIhLODXMJYyC1isLFfYCsTEycfc= +github.com/prometheus/procfs v0.20.1/go.mod h1:o9EMBZGRyvDrSPH1RqdxhojkuXstoe4UlK79eF5TGGo= github.com/protocolbuffers/protoscope v0.0.0-20221109213918-8e7a6aafa2c9 h1:arwj11zP0yJIxIRiDn22E0H8PxfF7TsTrc2wIPFIsf4= github.com/protocolbuffers/protoscope v0.0.0-20221109213918-8e7a6aafa2c9/go.mod h1:SKZx6stCn03JN3BOWTwvVIO2ajMkb/zQdTceXYhKw/4= github.com/prysmaticlabs/gohashtree v0.0.4-beta h1:H/EbCuXPeTV3lpKeXGPpEV9gsUpkqOOVnWapUyeWro4= @@ -1190,11 +1315,13 @@ github.com/quic-go/qpack v0.6.0 h1:g7W+BMYynC1LbYLSqRt8PBg5Tgwxn214ZZR34VIOjz8= github.com/quic-go/qpack v0.6.0/go.mod h1:lUpLKChi8njB4ty2bFLX2x4gzDqXwUpaO1DP9qMDZII= github.com/quic-go/quic-go v0.59.0 h1:OLJkp1Mlm/aS7dpKgTc6cnpynnD2Xg7C1pwL6vy/SAw= github.com/quic-go/quic-go v0.59.0/go.mod h1:upnsH4Ju1YkqpLXC305eW3yDZ4NfnNbmQRCMWS58IKU= +github.com/quic-go/webtransport-go v0.10.0 h1:LqXXPOXuETY5Xe8ITdGisBzTYmUOy5eSj+9n4hLTjHI= +github.com/quic-go/webtransport-go v0.10.0/go.mod h1:LeGIXr5BQKE3UsynwVBeQrU1TPrbh73MGoC6jd+V7ow= github.com/raeperd/recvcheck v0.2.0 h1:GnU+NsbiCqdC2XX5+vMZzP+jAJC5fht7rcVTAhX74UI= github.com/raeperd/recvcheck v0.2.0/go.mod h1:n04eYkwIR0JbgD73wT8wL4JjPC3wm0nFtzBnWNocnYU= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= -github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= -github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/rcrowley/go-metrics v0.0.0-20250401214520-65e299d6c5c9 h1:bsUq1dX0N8AOIL7EB/X911+m4EHsnWEHeJ0c+3TTBrg= +github.com/rcrowley/go-metrics v0.0.0-20250401214520-65e299d6c5c9/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= @@ -1209,9 +1336,8 @@ github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7 github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= -github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0= -github.com/rs/zerolog v1.34.0 h1:k43nTLIwcTVQAncfCw4KZ2VY6ukYoZaBPNOE8txlOeY= -github.com/rs/zerolog v1.34.0/go.mod h1:bJsvje4Z08ROH4Nhs5iH600c3IkWhwp44iRc54W6wYQ= +github.com/rs/zerolog v1.35.0 h1:VD0ykx7HMiMJytqINBsKcbLS+BJ4WYjz+05us+LRTdI= +github.com/rs/zerolog v1.35.0/go.mod h1:EjML9kdfa/RMA7h/6z6pYmq1ykOuA8/mjWaEvGI+jcw= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= @@ -1220,15 +1346,15 @@ github.com/ryancurrah/gomodguard v1.3.5/go.mod h1:MXlEPQRxgfPQa62O8wzK3Ozbkv9Rkq github.com/ryanrolds/sqlclosecheck v0.5.1 h1:dibWW826u0P8jNLsLN+En7+RqWWTYrjCB9fJfSfdyCU= github.com/ryanrolds/sqlclosecheck v0.5.1/go.mod h1:2g3dUjoS6AL4huFdv6wn55WpLIDjY7ZgUR4J8HOO/XQ= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/sagikazarmark/locafero v0.11.0 h1:1iurJgmM9G3PA/I+wWYIOw/5SyBtxapeHDcg+AAIFXc= -github.com/sagikazarmark/locafero v0.11.0/go.mod h1:nVIGvgyzw595SUSUE6tvCp3YYTeHs15MvlmU87WwIik= +github.com/sagikazarmark/locafero v0.12.0 h1:/NQhBAkUb4+fH1jivKHWusDYFjMOOKU88eegjfxfHb4= +github.com/sagikazarmark/locafero v0.12.0/go.mod h1:sZh36u/YSZ918v0Io+U9ogLYQJ9tLLBmM4eneO6WwsI= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/sanposhiho/wastedassign/v2 v2.1.0 h1:crurBF7fJKIORrV85u9UUpePDYGWnwvv3+A96WvwXT0= github.com/sanposhiho/wastedassign/v2 v2.1.0/go.mod h1:+oSmSC+9bQ+VUAxA66nBb0Z7N8CK7mscKTDYC6aIek4= github.com/santhosh-tekuri/jsonschema/v6 v6.0.1 h1:PKK9DyHxif4LZo+uQSgXNqs0jj5+xZwwfKHgph2lxBw= github.com/santhosh-tekuri/jsonschema/v6 v6.0.1/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU= -github.com/sasha-s/go-deadlock v0.3.5 h1:tNCOEEDG6tBqrNDOX35j/7hL5FcFViG6awUGROb2NsU= -github.com/sasha-s/go-deadlock v0.3.5/go.mod h1:bugP6EGbdGYObIlx7pUZtWqlvo8k9H6vCBBsiChJQ5U= +github.com/sasha-s/go-deadlock v0.3.9 h1:fiaT9rB7g5sr5ddNZvlwheclN9IP86eFW9WgqlEQV+w= +github.com/sasha-s/go-deadlock v0.3.9/go.mod h1:KuZj51ZFmx42q/mPaYbRk0P1xcwe697zsJKE03vD4/Y= github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tMEOsumirXcOJqAw= github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ= github.com/sashamelentyev/usestdlibvars v1.28.0 h1:jZnudE2zKCtYlGzLVreNp5pmCdOxXUzwsMDBkR21cyQ= @@ -1238,10 +1364,12 @@ github.com/securego/gosec/v2 v2.22.2 h1:IXbuI7cJninj0nRpZSLCUlotsj8jGusohfONMrHo github.com/securego/gosec/v2 v2.22.2/go.mod h1:UEBGA+dSKb+VqM6TdehR7lnQtIIMorYJ4/9CW1KVQBE= github.com/segmentio/asm v1.2.1 h1:DTNbBqs57ioxAD4PrArqftgypG4/qNpXoJx8TVXxPR0= github.com/segmentio/asm v1.2.1/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs= -github.com/segmentio/encoding v0.5.3 h1:OjMgICtcSFuNvQCdwqMCv9Tg7lEOXGwm1J5RPQccx6w= -github.com/segmentio/encoding v0.5.3/go.mod h1:HS1ZKa3kSN32ZHVZ7ZLPLXWvOVIiZtyJnO1gPH1sKt0= +github.com/segmentio/encoding v0.5.4 h1:OW1VRern8Nw6ITAtwSZ7Idrl3MXCFwXHPgqESYfvNt0= +github.com/segmentio/encoding v0.5.4/go.mod h1:HS1ZKa3kSN32ZHVZ7ZLPLXWvOVIiZtyJnO1gPH1sKt0= github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI= github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shirou/gopsutil/v4 v4.26.3 h1:2ESdQt90yU3oXF/CdOlRCJxrP+Am1aBYubTMTfxJ1qc= +github.com/shirou/gopsutil/v4 v4.26.3/go.mod h1:LZ6ewCSkBqUpvSOf+LsTGnRinC6iaNUNMGBtDkJBaLQ= github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= @@ -1261,10 +1389,10 @@ github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4k github.com/sonatard/noctx v0.1.0 h1:JjqOc2WN16ISWAjAk8M5ej0RfExEXtkEyExl2hLW+OM= github.com/sonatard/noctx v0.1.0/go.mod h1:0RvBxqY8D4j9cTTTWE8ylt2vqj2EPI8fHmrxHdsaZ2c= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= -github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw= -github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8/go.mod h1:3n1Cwaq1E1/1lhQhtRK2ts/ZwZEhjcQeJQ1RuC6Q/8U= github.com/sourcegraph/go-diff v0.7.0 h1:9uLlrd5T46OXs5qpp8L/MTltk0zikUGi0sNNyCpA8G0= github.com/sourcegraph/go-diff v0.7.0/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs= +github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= +github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I= github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg= github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY= @@ -1285,8 +1413,6 @@ github.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YE github.com/ssgreg/nlreturn/v2 v2.2.1/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I= github.com/stbenjam/no-sprintf-host-port v0.2.0 h1:i8pxvGrt1+4G0czLr/WnmyH7zbZ8Bg8etvARQ1rpyl4= github.com/stbenjam/no-sprintf-host-port v0.2.0/go.mod h1:eL0bQ9PasS0hsyTyfTjjG+E80QIyPnBVQbYZyv20Jfk= -github.com/stoewer/go-strcase v1.3.1 h1:iS0MdW+kVTxgMoE1LAZyMiYJFKlOzLooE4MxjirtkAs= -github.com/stoewer/go-strcase v1.3.1/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= github.com/storyicon/sigverify v1.1.0 h1:Fz153Jvloz1P0G3TrG7dHGyAlB3mpjmFeu5IszfJWQ0= github.com/storyicon/sigverify v1.1.0/go.mod h1:q0qxvhdUsMIBAry3h7/IMW7BebRkiT8496TrQP1XW5s= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= @@ -1296,8 +1422,9 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/objx v0.5.3 h1:jmXUvGomnU1o3W/V5h2VEradbpJDwGrzugQQvL0POH4= +github.com/stretchr/objx v0.5.3/go.mod h1:rDQraq+vQZU7Fde9LOZLr8Tax6zZvy4kuNKF+QYS+U0= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -1308,6 +1435,7 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= @@ -1327,29 +1455,31 @@ github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag= github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY= +github.com/test-go/testify v1.1.4 h1:Tf9lntrKUMHiXQ07qBScBTSA0dhYQlu83hswqelv1iE= +github.com/test-go/testify v1.1.4/go.mod h1:rH7cfJo/47vWGdi4GPj16x3/t1xGOj2YxzmNQzk2ghU= github.com/tetafro/godot v1.5.0 h1:aNwfVI4I3+gdxjMgYPus9eHmoBeJIbnajOyqZYStzuw= github.com/tetafro/godot v1.5.0/go.mod h1:2oVxTBSftRTh4+MVfUaUXR6bn2GDXCaMcOG4Dk3rfio= github.com/tetratelabs/wazero v1.11.0 h1:+gKemEuKCTevU4d7ZTzlsvgd1uaToIDtlQlmNbwqYhA= github.com/tetratelabs/wazero v1.11.0/go.mod h1:eV28rsN8Q+xwjogd7f4/Pp4xFxO7uOGbLcD/LzB1wiU= -github.com/tidwall/btree v1.8.1 h1:27ehoXvm5AG/g+1VxLS1SD3vRhp/H7LuEfwNvddEdmA= -github.com/tidwall/btree v1.8.1/go.mod h1:jBbTdUWhSZClZWoDg54VnvV7/54modSOzDN7VXftj1A= github.com/tidwall/gjson v1.14.2/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/gjson v1.18.0 h1:FIDeeyB800efLX89e5a8Y0BNH+LOngJyGrIWxG2FKQY= github.com/tidwall/gjson v1.18.0/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= -github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= -github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= +github.com/tidwall/match v1.2.0 h1:0pt8FlkOwjN2fPt4bIl4BoNxb98gGHN2ObFEDkrfZnM= +github.com/tidwall/match v1.2.0/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= +github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/sjson v1.2.5 h1:kLy8mja+1c9jlljvWTlSazM7cKDRfJuR/bOJhcY5NcY= github.com/tidwall/sjson v1.2.5/go.mod h1:Fvgq9kS/6ociJEDnK0Fk1cpYF4FIW6ZF7LAe+6jwd28= github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3 h1:y4mJRFlM6fUyPhoXuFg/Yu02fg/nIPFMOY8tOqppoFg= github.com/timakin/bodyclose v0.0.0-20241017074812-ed6a65f985e3/go.mod h1:mkjARE7Yr8qU23YcGMSALbIxTQ9r9QBVahQOBRfU460= github.com/timonwong/loggercheck v0.10.1 h1:uVZYClxQFpw55eh+PIoqM7uAOHMrhVcDoWDery9R8Lg= github.com/timonwong/loggercheck v0.10.1/go.mod h1:HEAWU8djynujaAVX7QI65Myb8qgfcZ1uKbdpg3ZzKl8= -github.com/tklauser/go-sysconf v0.3.15 h1:VE89k0criAymJ/Os65CSn1IXaol+1wrsFHEB8Ol49K4= -github.com/tklauser/go-sysconf v0.3.15/go.mod h1:Dmjwr6tYFIseJw7a3dRLJfsHAMXZ3nEnL/aZY+0IuI4= -github.com/tklauser/numcpus v0.10.0 h1:18njr6LDBk1zuna922MgdjQuJFjrdppsZG60sHGfjso= -github.com/tklauser/numcpus v0.10.0/go.mod h1:BiTKazU708GQTYF4mB+cmlpT2Is1gLk7XVuEeem8LsQ= +github.com/tklauser/go-sysconf v0.3.16 h1:frioLaCQSsF5Cy1jgRBrzr6t502KIIwQ0MArYICU0nA= +github.com/tklauser/go-sysconf v0.3.16/go.mod h1:/qNL9xxDhc7tx3HSRsLWNnuzbVfh3e7gh/BmM179nYI= +github.com/tklauser/numcpus v0.11.0 h1:nSTwhKH5e1dMNsCdVBukSZrURJRoHbSEQjdEbY+9RXw= +github.com/tklauser/numcpus v0.11.0/go.mod h1:z+LwcLq54uWZTX0u/bGobaV34u6V7KNlTZejzM6/3MQ= github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tomarrell/wrapcheck/v2 v2.10.0 h1:SzRCryzy4IrAH7bVGG4cK40tNUhmVmMDuJujy4XwYDg= github.com/tomarrell/wrapcheck/v2 v2.10.0/go.mod h1:g9vNIyhb5/9TQgumxQyOEqDHsmGYcGsVMOx/xGkqdMo= @@ -1360,8 +1490,7 @@ github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= github.com/tyler-smith/go-bip39 v1.1.0 h1:5eUemwrMargf3BSLRRCalXT93Ns6pQJIjYQN2nyfOP8= github.com/tyler-smith/go-bip39 v1.1.0/go.mod h1:gUYDtqQw1JS3ZJ8UWVcGTGqqr6YIN3CWg+kkNaLt55U= -github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= -github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= github.com/ulikunitz/xz v0.5.15 h1:9DNdB5s+SgV3bQ2ApL10xRc35ck0DuIX/isZvIk+ubY= github.com/ulikunitz/xz v0.5.15/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= github.com/ultraware/funlen v0.2.0 h1:gCHmCn+d2/1SemTdYMiKLAHFYxTYz7z9VIDRaTGyLkI= @@ -1377,8 +1506,11 @@ github.com/uudashr/gocognit v1.2.0 h1:3BU9aMr1xbhPlvJLSydKwdLN3tEUUrzPSSM8S4hDYR github.com/uudashr/gocognit v1.2.0/go.mod h1:k/DdKPI6XBZO1q7HgoV2juESI2/Ofj9AcHPZhBBdrTU= github.com/uudashr/iface v1.3.1 h1:bA51vmVx1UIhiIsQFSNq6GZ6VPTk3WNMZgRiCe9R29U= github.com/uudashr/iface v1.3.1/go.mod h1:4QvspiRd3JLPAEXBQ9AiZpLbJlrWWgRChOKDJEuQTdg= -github.com/vbatts/tar-split v0.12.2 h1:w/Y6tjxpeiFMR47yzZPlPj/FcPLpXbTUi/9H7d3CPa4= -github.com/vbatts/tar-split v0.12.2/go.mod h1:eF6B6i6ftWQcDqEn3/iGFRFRo8cBIMSJVOpnNdfTMFA= +github.com/vbatts/tar-split v0.12.3 h1:Cd46rkGXI3Td4yrVNwU8ripbxFaQbmesqhjBUUYAJSw= +github.com/vbatts/tar-split v0.12.3/go.mod h1:sQOc6OlqGCr7HkGx/IDBeKiTIvqhmj8KffNhEXG4Nq0= +github.com/wlynxg/anet v0.0.3/go.mod h1:eay5PRQr7fIVAMbTbchTnO9gG65Hg/uYGdc7mguHxoA= +github.com/wlynxg/anet v0.0.5 h1:J3VJGi1gvo0JwZ/P1/Yc/8p63SoW98B5dHkYDmpgvvU= +github.com/wlynxg/anet v0.0.5/go.mod h1:eay5PRQr7fIVAMbTbchTnO9gG65Hg/uYGdc7mguHxoA= github.com/xen0n/gosmopolitan v1.2.2 h1:/p2KTnMzwRexIW8GlKawsTWOxn7UHA+jCMF/V8HHtvU= github.com/xen0n/gosmopolitan v1.2.2/go.mod h1:7XX7Mj61uLYrj0qmeN0zi7XDon9JRAEhYQqAPLVNTeg= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= @@ -1414,8 +1546,8 @@ go-simpler.org/musttag v0.13.0/go.mod h1:FTzIGeK6OkKlUDVpj0iQUXZLUO1Js9+mvykDQy9 go-simpler.org/sloglint v0.9.0 h1:/40NQtjRx9txvsB/RN022KsUJU+zaaSb/9q9BSefSrE= go-simpler.org/sloglint v0.9.0/go.mod h1:G/OrAF6uxj48sHahCzrbarVMptL2kjWTaUeC8+fOGww= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.4.0-alpha.1 h1:3yrqQzbRRPFPdOMWS/QQIVxVnzSkAZQYeWlZFv1kbj4= -go.etcd.io/bbolt v1.4.0-alpha.1/go.mod h1:S/Z/Nm3iuOnyO1W4XuFfPci51Gj6F1Hv0z8hisyYYOw= +go.etcd.io/bbolt v1.4.3 h1:dEadXpI6G79deX5prL3QRNP6JB8UxVkqo4UPnHaNXJo= +go.etcd.io/bbolt v1.4.3/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E= go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= go.lsp.dev/jsonrpc2 v0.10.0 h1:Pr/YcXJoEOTMc/b6OTmcR1DPJ3mSWl/SWiU1Cct6VmI= go.lsp.dev/jsonrpc2 v0.10.0/go.mod h1:fmEzIdXPi/rf6d4uFcayi8HpFP1nBF99ERP1htC72Ac= @@ -1428,41 +1560,83 @@ go.lsp.dev/uri v0.3.0/go.mod h1:P5sbO1IQR+qySTWOCnhnK7phBx+W3zbLqSMDJNTw88I= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= -go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64= go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= -go.opentelemetry.io/contrib/detectors/gcp v1.39.0 h1:kWRNZMsfBHZ+uHjiH4y7Etn2FK26LAGkNFw7RHv1DhE= -go.opentelemetry.io/contrib/detectors/gcp v1.39.0/go.mod h1:t/OGqzHBa5v6RHZwrDBJ2OirWc+4q/w2fTbLZwAKjTk= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 h1:YH4g8lQroajqUwWbq/tr2QX1JFmEXaDLgG+ew9bLMWo= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0 h1:ssfIgGNANqpVFCndZvcuyKbl0g+UAVcbBcqGkG28H0Y= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.64.0/go.mod h1:GQ/474YrbE4Jx8gZ4q5I4hrhUzM6UPzyrqJYV2AqPoQ= +go.opentelemetry.io/contrib/bridges/otelslog v0.17.0 h1:NFIS6x7wyObQ7cR84x7bt1sr8nYBx89s3x3GwRjw40k= +go.opentelemetry.io/contrib/bridges/otelslog v0.17.0/go.mod h1:39SaByOyDMRMe872AE7uelMuQZidIw7LLFAnQi0FWTE= +go.opentelemetry.io/contrib/detectors/gcp v1.43.0 h1:62yY3dT7/ShwOxzA0RsKRgshBmfElKI4d/Myu2OxDFU= +go.opentelemetry.io/contrib/detectors/gcp v1.43.0/go.mod h1:RyaZMFY7yi1kAs45S6mbFGz8O8rqB0dTY14uzvG4LCs= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 h1:0Qx7VGBacMm9ZENQ7TnNObTYI4ShC+lHI16seduaxZo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0/go.mod h1:Sje3i3MjSPKTSPvVWCaL8ugBzJwik3u4smCjUeuupqg= +go.opentelemetry.io/contrib/instrumentation/host v0.67.0 h1:TBZlpWERGQYejjjxOCaul34rx1gM8Dc3erQH3DDe1ng= +go.opentelemetry.io/contrib/instrumentation/host v0.67.0/go.mod h1:gY4HjuF4CJmklxYjdJNH3wxBlAehJfX/g/vQo+kL0TU= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.68.0 h1:CqXxU8VOmDefoh0+ztfGaymYbhdB/tT3zs79QaZTNGY= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.68.0/go.mod h1:BuhAPThV8PBHBvg8ZzZ/Ok3idOdhWIodywz2xEcRbJo= +go.opentelemetry.io/contrib/instrumentation/runtime v0.67.0 h1:fM78cKITJ2r08cl+nw5i+hI9zWAu3iak8o1Os/ca2Ck= +go.opentelemetry.io/contrib/instrumentation/runtime v0.67.0/go.mod h1:ybmlzIqGcQzwt5lAfi8TpSnHo/CI3yv1Czodmm+OJa8= +go.opentelemetry.io/contrib/otelconf v0.22.0 h1:+kpcfczGOFM85zDZyqQCzWefhovegfn24D0WwmQz0n4= +go.opentelemetry.io/contrib/otelconf v0.22.0/go.mod h1:ojdbOukO+JRDJQmJY2PRIZEg0UYVzcOuZR59hp7xffc= +go.opentelemetry.io/contrib/propagators/autoprop v0.67.0 h1:XhcQRf4MeqwQw96FcnatDAj6gwE19SUrWZ1VwNg77iE= +go.opentelemetry.io/contrib/propagators/autoprop v0.67.0/go.mod h1:7OK06SuNIBIlc5Uq3JGQEsKHuXw29t9OJemvDYyP1dk= +go.opentelemetry.io/contrib/propagators/aws v1.42.0 h1:Kbr3xDxs6kcxp5ThXTKWK2OtwLhNoXBVtqguNYcsZL0= +go.opentelemetry.io/contrib/propagators/aws v1.42.0/go.mod h1:Jzw9hZHtxdpCN7x8S17UH59X/EiFivp6VXLs9bdM1OQ= +go.opentelemetry.io/contrib/propagators/b3 v1.42.0 h1:B2Pew5ufEtgkjLF+tSkXjgYZXQr9m7aCm1wLKB0URbU= +go.opentelemetry.io/contrib/propagators/b3 v1.42.0/go.mod h1:iPgUcSEF5DORW6+yNbdw/YevUy+QqJ508ncjhrRSCjc= +go.opentelemetry.io/contrib/propagators/jaeger v1.42.0 h1:jP8unWI6q5kcb3gpGLjKDGaUa+JW+nHKWvpS/q+YuWA= +go.opentelemetry.io/contrib/propagators/jaeger v1.42.0/go.mod h1:xd89e/pUyPatUP1C4z1UknD9jHptESO99tWyvd4mWD4= +go.opentelemetry.io/contrib/propagators/ot v1.42.0 h1:uQjD1NNqX1+DfcAoWParPt1egNg9vC9gH4xarJ9Khxo= +go.opentelemetry.io/contrib/propagators/ot v1.42.0/go.mod h1:yw/c2TCmQLIv109HBOCn6NlJ8Dp7MNfjMcqQZRnAMmg= go.opentelemetry.io/otel v1.43.0 h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I= go.opentelemetry.io/otel v1.43.0/go.mod h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0 h1:f0cb2XPmrqn4XMy9PNliTgRKJgS5WcL/u0/WRYGz4t0= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.39.0/go.mod h1:vnakAaFckOMiMtOIhFI2MNH4FYrZzXCYxmb1LlhoGz8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0 h1:wpMfgF8E1rkrT1Z6meFh1NDtownE9Ii3n3X2GJYjsaU= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.33.0/go.mod h1:wAy0T/dUbs468uOlkT31xjvqQgEVXv58BRFWEgn5v/0= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.40.0 h1:ZrPRak/kS4xI3AVXy8F7pipuDXmDsrO8Lg+yQjBLjw0= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.40.0/go.mod h1:3y6kQCWztq6hyW8Z9YxQDDm0Je9AJoFar2G0yDcmhRk= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.18.0 h1:deI9UQMoGFgrg5iLPgzueqFPHevDl+28YKfSpPTI6rY= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.18.0/go.mod h1:PFx9NgpNUKXdf7J4Q3agRxMs3Y07QhTCVipKmLsMKnU= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.19.0 h1:HIBTQ3VO5aupLKjC90JgMqpezVXwFuq6Ryjn0/izoag= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.19.0/go.mod h1:ji9vId85hMxqfvICA0Jt8JqEdrXaAkcpkI9HPXya0ro= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.42.0 h1:MdKucPl/HbzckWWEisiNqMPhRrAOQX8r4jTuGr636gk= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.42.0/go.mod h1:RolT8tWtfHcjajEH5wFIZ4Dgh5jpPdFXYV9pTAk/qjc= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.43.0 h1:w1K+pCJoPpQifuVpsKamUdn9U0zM3xUziVOqsGksUrY= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.43.0/go.mod h1:HBy4BjzgVE8139ieRI75oXm3EcDN+6GhD88JT1Kjvxg= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 h1:88Y4s2C8oTui1LGM6bTWkw0ICGcOLCAI5l6zsD1j20k= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0/go.mod h1:Vl1/iaggsuRlrHf/hfPJPvVag77kKyvrLeD10kpMl+A= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0 h1:zWWrB1U6nqhS/k6zYB74CjRpuiitRtLLi68VcgmOEto= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.42.0/go.mod h1:2qXPNBX1OVRC0IwOnfo1ljoid+RD0QK3443EaqVlsOU= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 h1:3iZJKlCZufyRzPzlQhUIWVmfltrXuGyfjREgGP3UUjc= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0/go.mod h1:/G+nUPfhq2e+qiXMGxMwumDrP5jtzU+mWN7/sjT2rak= +go.opentelemetry.io/otel/exporters/prometheus v0.64.0 h1:g0LRDXMX/G1SEZtK8zl8Chm4K6GBwRkjPKE36LxiTYs= +go.opentelemetry.io/otel/exporters/prometheus v0.64.0/go.mod h1:UrgcjnarfdlBDP3GjDIJWe6HTprwSazNjwsI+Ru6hro= +go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.18.0 h1:KJVjPD3rcPb98rIs3HznyJlrfx9ge5oJvxxlGR+P/7s= +go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.18.0/go.mod h1:K3kRa2ckmHWQaTWQdPRHc7qGXASuVuoEQXzrvlA98Ws= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.43.0 h1:TC+BewnDpeiAmcscXbGMfxkO+mwYUwE/VySwvw88PfA= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.43.0/go.mod h1:J/ZyF4vfPwsSr9xJSPyQ4LqtcTPULFR64KwTikGLe+A= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.42.0 h1:s/1iRkCKDfhlh1JF26knRneorus8aOwVIDhvYx9WoDw= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.42.0/go.mod h1:UI3wi0FXg1Pofb8ZBiBLhtMzgoTm1TYkMvn71fAqDzs= +go.opentelemetry.io/otel/log v0.19.0 h1:KUZs/GOsw79TBBMfDWsXS+KZ4g2Ckzksd1ymzsIEbo4= +go.opentelemetry.io/otel/log v0.19.0/go.mod h1:5DQYeGmxVIr4n0/BcJvF4upsraHjg6vudJJpnkL6Ipk= go.opentelemetry.io/otel/metric v1.43.0 h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM= go.opentelemetry.io/otel/metric v1.43.0/go.mod h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY= go.opentelemetry.io/otel/sdk v1.43.0 h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg= go.opentelemetry.io/otel/sdk v1.43.0/go.mod h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg= +go.opentelemetry.io/otel/sdk/log v0.19.0 h1:scYVLqT22D2gqXItnWiocLUKGH9yvkkeql5dBDiXyko= +go.opentelemetry.io/otel/sdk/log v0.19.0/go.mod h1:vFBowwXGLlW9AvpuF7bMgnNI95LiW10szrOdvzBHlAg= +go.opentelemetry.io/otel/sdk/log/logtest v0.19.0 h1:BEbF7ZBB6qQloV/Ub1+3NQoOUnVtcGkU3XX4Ws3GQfk= +go.opentelemetry.io/otel/sdk/log/logtest v0.19.0/go.mod h1:Lua81/3yM0wOmoHTokLj9y9ADeA02v1naRrVrkAZuKk= go.opentelemetry.io/otel/sdk/metric v1.43.0 h1:S88dyqXjJkuBNLeMcVPRFXpRw2fuwdvfCGLEo89fDkw= go.opentelemetry.io/otel/sdk/metric v1.43.0/go.mod h1:C/RJtwSEJ5hzTiUz5pXF1kILHStzb9zFlIEe85bhj6A= go.opentelemetry.io/otel/trace v1.43.0 h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A= go.opentelemetry.io/otel/trace v1.43.0/go.mod h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v1.9.0 h1:l706jCMITVouPOqEnii2fIAuO3IVGBRPV5ICjceRb/A= -go.opentelemetry.io/proto/otlp v1.9.0/go.mod h1:xE+Cx5E/eEHw+ISFkwPLwCZefwVjY+pqKg1qcK03+/4= +go.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g= +go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs= go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8= +go.uber.org/dig v1.19.0 h1:BACLhebsYdpQ7IROQ1AGPjrXcP5dF80U3gKoFzbaq/4= +go.uber.org/dig v1.19.0/go.mod h1:Us0rSJiThwCv2GteUN0Q7OKvU7n5J4dxZ9JKUXozFdE= +go.uber.org/fx v1.24.0 h1:wE8mruvpg2kiiL1Vqd0CC+tr0/24XIB10Iwp2lLWzkg= +go.uber.org/fx v1.24.0/go.mod h1:AmDeGyS+ZARGKM4tlH4FY2Jr63VjbEDJHtqXTGP5hbo= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= @@ -1479,33 +1653,41 @@ go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= -go.yaml.in/yaml/v2 v2.4.3 h1:6gvOSjQoTB3vt1l+CU+tSyi/HOjfOjRLJ4YwYZGwRO0= -go.yaml.in/yaml/v2 v2.4.3/go.mod h1:zSxWcmIDjOzPXpjlTTbAsKokqkDNAVtZO0WOMiT90s8= +go.yaml.in/yaml/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= +go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= -golang.org/x/arch v0.17.0 h1:4O3dfLzd+lQewptAHqjewQZQDyEdejz3VwgeYwkZneU= -golang.org/x/arch v0.17.0/go.mod h1:bdwinDaKcfZUGpH09BB7ZmOfhalA8lQdzl62l8gGWsk= +golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= +golang.org/x/arch v0.3.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= +golang.org/x/arch v0.26.0 h1:jZ6dpec5haP/fUv1kLCbuJy6dnRrfX6iVK08lZBFpk4= +golang.org/x/arch v0.26.0/go.mod h1:0X+GdSIP+kL5wPmpK7sdkEVTt2XoYP0cSjQSbZBwOi8= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200602180216-279210d13fed/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE= +golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= -golang.org/x/crypto v0.49.0 h1:+Ng2ULVvLHnJ/ZFEq4KdcDd/cfjrrjjNSXNzxg0Y4U4= -golang.org/x/crypto v0.49.0/go.mod h1:ErX4dUh2UM+CFYiXZRTcMpEcN8b/1gxEuv3nODoYtCA= +golang.org/x/crypto v0.18.0/go.mod h1:R0j02AL6hcrfOiy9T4ZYp/rcWeMxM3L6QYxlOuEG1mg= +golang.org/x/crypto v0.50.0 h1:zO47/JPrL6vsNkINmLoo/PH1gcxpls50DNogFvB5ZGI= +golang.org/x/crypto v0.50.0/go.mod h1:3muZ7vA7PBCE6xgPX7nkzzjiUq87kRItoJQM1Yo8S+Q= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp v0.0.0-20260112195511-716be5621a96 h1:Z/6YuSHTLOHfNFdb8zVZomZr7cqNgTJvA8+Qz75D8gU= -golang.org/x/exp v0.0.0-20260112195511-716be5621a96/go.mod h1:nzimsREAkjBCIEFtHiYkrJyT+2uy9YZJB7H1k68CXZU= +golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f h1:W3F4c+6OLc6H2lb//N1q4WpJkhzJCK5J6kUi1NTVXfM= +golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f/go.mod h1:J1xhfL/vlindoeF/aINzNzt2Bket5bjo9sdOYzOsU80= golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/exp/typeparams v0.0.0-20230203172020-98cc5a0785f9/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/exp/typeparams v0.0.0-20250210185358-939b2ce775ac h1:TSSpLIG4v+p0rPv1pNOQtl1I8knsO4S9trOxNMOLVP4= @@ -1532,8 +1714,8 @@ golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8= -golang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w= +golang.org/x/mod v0.35.0 h1:Ww1D637e6Pg+Zb2KrWfHQUnH2dQRLBQyAtpr/haaJeM= +golang.org/x/mod v0.35.0/go.mod h1:+GwiRhIInF8wPm+4AoT6L0FA1QWAad3OMdTRx4tFYlU= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1558,7 +1740,7 @@ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20200813134508-3edf25e44fcc/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= @@ -1573,8 +1755,9 @@ golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= -golang.org/x/net v0.52.0 h1:He/TN1l0e4mmR3QqHMT2Xab3Aj3L9qjbhRm78/6jrW0= -golang.org/x/net v0.52.0/go.mod h1:R1MAz7uMZxVMualyPXb+VaqGSa3LIaUqk0eEt3w36Sw= +golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= +golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA= +golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1625,11 +1808,13 @@ golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200814200057-3d37ad5750ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1637,7 +1822,6 @@ golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1649,8 +1833,8 @@ golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1660,11 +1844,12 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.42.0 h1:omrd2nAlyT5ESRdCLYdm3+fMfNFE/+Rf4bDIQImRJeo= -golang.org/x/sys v0.42.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4 h1:bTLqdHv7xrGlFbvf5/TXNxy/iUwwdkjhqQTJDjW7aj0= -golang.org/x/telemetry v0.0.0-20260209163413-e7419c687ee4/go.mod h1:g5NllXBEermZrmR51cJDQxmJUHUOfRAaNyWBM+R+548= +golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= +golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/telemetry v0.0.0-20260409153401-be6f6cb8b1fa h1:efT73AJZfAAUV7SOip6pWGkwJDzIGiKBZGVzHYa+ve4= +golang.org/x/telemetry v0.0.0-20260409153401-be6f6cb8b1fa/go.mod h1:kHjTxDEnAu6/Nl9lDkzjWpR+bmKfxeiRuSDlsMb70gE= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= @@ -1675,22 +1860,25 @@ golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= -golang.org/x/term v0.41.0 h1:QCgPso/Q3RTJx2Th4bDLqML4W6iJiaXFq2/ftQF13YU= -golang.org/x/term v0.41.0/go.mod h1:3pfBgksrReYfZ5lvYM0kSO0LIkAl4Yl2bXOkKP7Ec2A= +golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= +golang.org/x/term v0.42.0 h1:UiKe+zDFmJobeJ5ggPwOshJIVt6/Ft0rcfrXZDLWAWY= +golang.org/x/term v0.42.0/go.mod h1:Dq/D+snpsbazcBG5+F9Q1n2rXV8Ma+71xEjTRufARgY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.35.0 h1:JOVx6vVDFokkpaq1AEptVzLTpDe9KGpj5tR4/X+ybL8= -golang.org/x/text v0.35.0/go.mod h1:khi/HExzZJ2pGnjenulevKNX1W67CUy0AsXcNubPGCA= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg= +golang.org/x/text v0.36.0/go.mod h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= @@ -1730,8 +1918,8 @@ golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= -golang.org/x/tools v0.42.0 h1:uNgphsn75Tdz5Ji2q36v/nsFSfR/9BRFvqhGBaJGd5k= -golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0= +golang.org/x/tools v0.44.0 h1:UP4ajHPIcuMjT1GqzDWRlalUEoY+uzoZKnhOjbIPD2c= +golang.org/x/tools v0.44.0/go.mod h1:KA0AfVErSdxRZIsOVipbv3rQhVXTnlU6UhKxHd1seDI= golang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM= golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated h1:1h2MnaIAIXISqTFKdENegdpAgUXz6NrPEsbIeWaBRvM= @@ -1740,11 +1928,11 @@ golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= -gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +gonum.org/v1/gonum v0.17.0 h1:VbpOemQlsSMrYmn7T2OUvQ4dqxQXU+ouZFQsZOx50z4= +gonum.org/v1/gonum v0.17.0/go.mod h1:El3tOrEuMpv2UdMrbNlKEh9vd86bmQ6vqIcDwxEOc1E= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= -google.golang.org/api v0.271.0 h1:cIPN4qcUc61jlh7oXu6pwOQqbJW2GqYh5PS6rB2C/JY= -google.golang.org/api v0.271.0/go.mod h1:CGT29bhwkbF+i11qkRUJb2KMKqcJ1hdFceEIRd9u64Q= +google.golang.org/api v0.276.0 h1:nVArUtfLEihtW+b0DdcqRGK1xoEm2+ltAihyztq7MKY= +google.golang.org/api v0.276.0/go.mod h1:Fnag/EWUPIcJXuIkP1pjoTgS5vdxlk3eeemL7Do6bvw= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1759,12 +1947,12 @@ google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfG google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20220314164441-57ef72a4c106/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= -google.golang.org/genproto v0.0.0-20260128011058-8636f8732409 h1:VQZ/yAbAtjkHgH80teYd2em3xtIkkHd7ZhqfH2N9CsM= -google.golang.org/genproto v0.0.0-20260128011058-8636f8732409/go.mod h1:rxKD3IEILWEu3P44seeNOAwZN4SaoKaQ/2eTg4mM6EM= -google.golang.org/genproto/googleapis/api v0.0.0-20260203192932-546029d2fa20 h1:7ei4lp52gK1uSejlA8AZl5AJjeLUOHBQscRQZUgAcu0= -google.golang.org/genproto/googleapis/api v0.0.0-20260203192932-546029d2fa20/go.mod h1:ZdbssH/1SOVnjnDlXzxDHK2MCidiqXtbYccJNzNYPEE= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171 h1:ggcbiqK8WWh6l1dnltU4BgWGIGo+EVYxCaAPih/zQXQ= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260226221140-a57be14db171/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/genproto v0.0.0-20260414002931-afd174a4e478 h1:aLsVTW0lZ8+IY5u/ERjZSCvAmhuR7slKzyha3YikDNA= +google.golang.org/genproto v0.0.0-20260414002931-afd174a4e478/go.mod h1:YJAzKjfHIUHb9T+bfu8L7mthAp7VVXQBUs1PLdBWS7M= +google.golang.org/genproto/googleapis/api v0.0.0-20260427160629-7cedc36a6bc4 h1:yOzSCGPx+cp5VO7IxvZ9SBFF7j1tZVcNtlHR2iYKtVo= +google.golang.org/genproto/googleapis/api v0.0.0-20260427160629-7cedc36a6bc4/go.mod h1:Q9HWtNeE7tM9npdIsEvqXj1QJIvVoeAV3rtXtS715Cw= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260427160629-7cedc36a6bc4 h1:tEkOQcXgF6dH1G+MVKZrfpYvozGrzb91k6ha7jireSM= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260427160629-7cedc36a6bc4/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= @@ -1779,12 +1967,11 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= -google.golang.org/grpc v1.79.3 h1:sybAEdRIEtvcD68Gx7dmnwjZKlyfuc61Dyo9pGXXkKE= -google.golang.org/grpc v1.79.3/go.mod h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ= +google.golang.org/grpc v1.80.0 h1:Xr6m2WmWZLETvUNvIUmeD5OAagMw3FiKmMlTdViWsHM= +google.golang.org/grpc v1.80.0/go.mod h1:ho/dLnxwi3EDJA4Zghp7k2Ec1+c2jqup0bFkw07bwF4= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.0 h1:6Al3kEFFP9VJhRz3DID6quisgPnTeZVr4lep9kkxdPA= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.6.0/go.mod h1:QLvsjh0OIR0TYBeiu2bkWGTJBUNQ64st52iWj/yA93I= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= @@ -1801,6 +1988,7 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= @@ -1842,6 +2030,8 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.6.1 h1:R094WgE8K4JirYjBaOpz/AvTyUu/3wbmAoskKN/pxTI= honnef.co/go/tools v0.6.1/go.mod h1:3puzxxljPCe8RGJX7BIy1plGbxEOZni5mR2aXe3/uk4= +lukechampine.com/blake3 v1.4.1 h1:I3Smz7gso8w4/TunLKec6K2fn+kyKtDxr/xcQEN84Wg= +lukechampine.com/blake3 v1.4.1/go.mod h1:QFosUxmjB8mnrWFSNwKmvxHpfY72bmD2tQ0kBMM3kwo= mvdan.cc/gofumpt v0.7.0 h1:bg91ttqXmi9y2xawvkuMXyvAA/1ZGJqYAEGjXuP0JXU= mvdan.cc/gofumpt v0.7.0/go.mod h1:txVFJy/Sc/mvaycET54pV8SW8gWxTlUuGHVEcncmNUo= mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f h1:lMpcwN6GxNbWtbpI1+xzFLSW8XzX0u72NttUGVFjO3U= @@ -1855,6 +2045,7 @@ pgregory.net/rapid v1.2.0 h1:keKAYRcjm+e1F0oAuU5F5+YPAWcyxNNRK2wud503Gnk= pgregory.net/rapid v1.2.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= pluginrpc.com/pluginrpc v0.5.0 h1:tOQj2D35hOmvHyPu8e7ohW2/QvAnEtKscy2IJYWQ2yo= pluginrpc.com/pluginrpc v0.5.0/go.mod h1:UNWZ941hcVAoOZUn8YZsMmOZBzbUjQa3XMns8RQLp9o= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= rsc.io/qr v0.2.0 h1:6vBLea5/NRMVTz8V66gipeLycZMl/+UlFmk8DvqQ6WY= rsc.io/qr v0.2.0/go.mod h1:IF+uZjkb9fqyeF/4tlBoynqmQxUoPfWEKh921coOuXs= sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= diff --git a/testing/ibc/app.go b/testing/ibc/app.go index 9affab51..838fd8bf 100644 --- a/testing/ibc/app.go +++ b/testing/ibc/app.go @@ -12,7 +12,7 @@ import ( sdkmath "cosmossdk.io/math" clienthelpers "cosmossdk.io/client/v2/helpers" - "cosmossdk.io/log" + "cosmossdk.io/log/v2" abci "github.com/cometbft/cometbft/abci/types" "github.com/cometbft/cometbft/crypto/ed25519" tmproto "github.com/cometbft/cometbft/proto/tendermint/types" @@ -23,7 +23,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - ibctesting "github.com/cosmos/ibc-go/v10/testing" + ibctesting "github.com/cosmos/ibc-go/v11/testing" evmtypes "github.com/cosmos/evm/x/vm/types" diff --git a/testing/ibc/e2e/ibc_denom_resolution_test.go b/testing/ibc/e2e/ibc_denom_resolution_test.go index cd50160f..8286db1c 100644 --- a/testing/ibc/e2e/ibc_denom_resolution_test.go +++ b/testing/ibc/e2e/ibc_denom_resolution_test.go @@ -9,9 +9,9 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - transfertypes "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types" - clienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" - ibctesting "github.com/cosmos/ibc-go/v10/testing" + transfertypes "github.com/cosmos/ibc-go/v11/modules/apps/transfer/types" + clienttypes "github.com/cosmos/ibc-go/v11/modules/core/02-client/types" + ibctesting "github.com/cosmos/ibc-go/v11/testing" "github.com/stretchr/testify/suite" ibctest "github.com/bitbadges/bitbadgeschain/testing/ibc" diff --git a/testing/ibc/e2e/ibc_escrow_test.go b/testing/ibc/e2e/ibc_escrow_test.go index d59fb812..589ebd9b 100644 --- a/testing/ibc/e2e/ibc_escrow_test.go +++ b/testing/ibc/e2e/ibc_escrow_test.go @@ -8,9 +8,9 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - transfertypes "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types" - clienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" - ibctesting "github.com/cosmos/ibc-go/v10/testing" + transfertypes "github.com/cosmos/ibc-go/v11/modules/apps/transfer/types" + clienttypes "github.com/cosmos/ibc-go/v11/modules/core/02-client/types" + ibctesting "github.com/cosmos/ibc-go/v11/testing" "github.com/stretchr/testify/suite" "github.com/bitbadges/bitbadgeschain/third_party/osmomath" diff --git a/testing/ibc/e2e/ibc_hooks_comprehensive_test.go b/testing/ibc/e2e/ibc_hooks_comprehensive_test.go index a802a485..90b71f98 100644 --- a/testing/ibc/e2e/ibc_hooks_comprehensive_test.go +++ b/testing/ibc/e2e/ibc_hooks_comprehensive_test.go @@ -11,12 +11,12 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - transfertypes "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types" - clienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" - ibctesting "github.com/cosmos/ibc-go/v10/testing" + transfertypes "github.com/cosmos/ibc-go/v11/modules/apps/transfer/types" + clienttypes "github.com/cosmos/ibc-go/v11/modules/core/02-client/types" + ibctesting "github.com/cosmos/ibc-go/v11/testing" "github.com/stretchr/testify/suite" - channeltypes "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" + channeltypes "github.com/cosmos/ibc-go/v11/modules/core/04-channel/types" ibctest "github.com/bitbadges/bitbadgeschain/testing/ibc" "github.com/bitbadges/bitbadgeschain/third_party/osmomath" diff --git a/testing/ibc/e2e/ibc_hooks_test.go b/testing/ibc/e2e/ibc_hooks_test.go index fbbd53db..8dc11759 100644 --- a/testing/ibc/e2e/ibc_hooks_test.go +++ b/testing/ibc/e2e/ibc_hooks_test.go @@ -9,9 +9,9 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - transfertypes "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types" - clienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" - ibctesting "github.com/cosmos/ibc-go/v10/testing" + transfertypes "github.com/cosmos/ibc-go/v11/modules/apps/transfer/types" + clienttypes "github.com/cosmos/ibc-go/v11/modules/core/02-client/types" + ibctesting "github.com/cosmos/ibc-go/v11/testing" "github.com/stretchr/testify/suite" customhookstypes "github.com/bitbadges/bitbadgeschain/x/custom-hooks/types" diff --git a/testing/ibc/e2e/ibc_rate_limit_test.go b/testing/ibc/e2e/ibc_rate_limit_test.go index b3cf906c..9be577bd 100644 --- a/testing/ibc/e2e/ibc_rate_limit_test.go +++ b/testing/ibc/e2e/ibc_rate_limit_test.go @@ -8,9 +8,9 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - transfertypes "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types" - clienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" - ibctesting "github.com/cosmos/ibc-go/v10/testing" + transfertypes "github.com/cosmos/ibc-go/v11/modules/apps/transfer/types" + clienttypes "github.com/cosmos/ibc-go/v11/modules/core/02-client/types" + ibctesting "github.com/cosmos/ibc-go/v11/testing" "github.com/stretchr/testify/suite" ibctest "github.com/bitbadges/bitbadgeschain/testing/ibc" diff --git a/testing/ibc/e2e/ibc_transfer_test.go b/testing/ibc/e2e/ibc_transfer_test.go index f1914318..43a69ef0 100644 --- a/testing/ibc/e2e/ibc_transfer_test.go +++ b/testing/ibc/e2e/ibc_transfer_test.go @@ -8,9 +8,9 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - transfertypes "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types" - clienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" - ibctesting "github.com/cosmos/ibc-go/v10/testing" + transfertypes "github.com/cosmos/ibc-go/v11/modules/apps/transfer/types" + clienttypes "github.com/cosmos/ibc-go/v11/modules/core/02-client/types" + ibctesting "github.com/cosmos/ibc-go/v11/testing" "github.com/stretchr/testify/suite" ibctest "github.com/bitbadges/bitbadgeschain/testing/ibc" diff --git a/testing/ibc/e2e/suite_test.go b/testing/ibc/e2e/suite_test.go index 21e603e4..6369c912 100644 --- a/testing/ibc/e2e/suite_test.go +++ b/testing/ibc/e2e/suite_test.go @@ -8,8 +8,8 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - transfertypes "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types" - ibctesting "github.com/cosmos/ibc-go/v10/testing" + transfertypes "github.com/cosmos/ibc-go/v11/modules/apps/transfer/types" + ibctesting "github.com/cosmos/ibc-go/v11/testing" "github.com/stretchr/testify/suite" "github.com/bitbadges/bitbadgeschain/app" diff --git a/testing/ibc/helpers.go b/testing/ibc/helpers.go index 21c4dda9..5fe0c373 100644 --- a/testing/ibc/helpers.go +++ b/testing/ibc/helpers.go @@ -8,10 +8,10 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - clienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" - channeltypes "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" - transfertypes "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types" - ibctesting "github.com/cosmos/ibc-go/v10/testing" + clienttypes "github.com/cosmos/ibc-go/v11/modules/core/02-client/types" + channeltypes "github.com/cosmos/ibc-go/v11/modules/core/04-channel/types" + transfertypes "github.com/cosmos/ibc-go/v11/modules/apps/transfer/types" + ibctesting "github.com/cosmos/ibc-go/v11/testing" "github.com/bitbadges/bitbadgeschain/app" ) diff --git a/testutil/keeper/ibc_helpers.go b/testutil/keeper/ibc_helpers.go index 394b65dc..f8838d08 100644 --- a/testutil/keeper/ibc_helpers.go +++ b/testutil/keeper/ibc_helpers.go @@ -6,29 +6,14 @@ import ( "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" "github.com/cosmos/cosmos-sdk/runtime" - sdk "github.com/cosmos/cosmos-sdk/types" - paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - storetypes "cosmossdk.io/store/types" - upgradekeeper "cosmossdk.io/x/upgrade/keeper" - upgradetypes "cosmossdk.io/x/upgrade/types" - ibcclienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" - ibctypes "github.com/cosmos/ibc-go/v10/modules/core/types" + storetypes "github.com/cosmos/cosmos-sdk/store/v2/types" + upgradekeeper "github.com/cosmos/cosmos-sdk/x/upgrade/keeper" + upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" + ibcclienttypes "github.com/cosmos/ibc-go/v11/modules/core/02-client/types" ) -// noopParamSubspace is a no-op implementation of ParamSubspace for testing -type noopParamSubspace struct{} - -var _ ibctypes.ParamSubspace = (*noopParamSubspace)(nil) - -// GetParamSet implements ibctypes.ParamSubspace -func (n *noopParamSubspace) GetParamSet(ctx sdk.Context, ps paramtypes.ParamSet) { - // No-op -} - -// NewNoopParamSubspace creates a new no-op ParamSubspace -func NewNoopParamSubspace() ibctypes.ParamSubspace { - return &noopParamSubspace{} -} +// IBC v11 removed ibctypes.ParamSubspace entirely; the noop helper that +// previously lived here is no longer needed. // noopUpgradeKeeper is a no-op implementation of UpgradeKeeper for testing type noopUpgradeKeeper struct{} diff --git a/third_party/apptesting/test_suite.go b/third_party/apptesting/test_suite.go index a1102995..04fb6464 100644 --- a/third_party/apptesting/test_suite.go +++ b/third_party/apptesting/test_suite.go @@ -8,10 +8,10 @@ import ( "time" coreheader "cosmossdk.io/core/header" - "cosmossdk.io/log" + "cosmossdk.io/log/v2" "cosmossdk.io/math" - "cosmossdk.io/store/rootmulti" - storetypes "cosmossdk.io/store/types" + "github.com/cosmos/cosmos-sdk/store/v2/rootmulti" + storetypes "github.com/cosmos/cosmos-sdk/store/v2/types" abci "github.com/cometbft/cometbft/abci/types" "github.com/cometbft/cometbft/crypto/ed25519" cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" @@ -38,7 +38,6 @@ import ( "github.com/bitbadges/bitbadgeschain/x/gamm/poolmodels/balancer" gammtypes "github.com/bitbadges/bitbadgeschain/x/gamm/types" - storemetrics "cosmossdk.io/store/metrics" moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil" @@ -216,7 +215,7 @@ func (s *KeeperTestHelper) CreateTestContextWithMultiStore() (sdk.Context, store db := dbm.NewMemDB() logger := log.NewNopLogger() - ms := rootmulti.NewStore(db, logger, storemetrics.NewNoOpMetrics()) + ms := rootmulti.NewStore(db, logger) return sdk.NewContext(ms, cmtproto.Header{}, false, logger), ms } @@ -238,7 +237,7 @@ func (s *KeeperTestHelper) Commit() { header.Time = newBlockTime header.Height++ - s.Ctx = s.App.BaseApp.NewUncachedContext(false, header).WithHeaderInfo(coreheader.Info{ + s.Ctx = s.App.BaseApp.NewNextBlockContext(header).WithHeaderInfo(coreheader.Info{ Height: header.Height, Time: header.Time, }) diff --git a/third_party/osmoutils/cache_ctx.go b/third_party/osmoutils/cache_ctx.go index 292b3e9f..d27d7af1 100644 --- a/third_party/osmoutils/cache_ctx.go +++ b/third_party/osmoutils/cache_ctx.go @@ -6,7 +6,7 @@ import ( "runtime" "runtime/debug" - "cosmossdk.io/store/types" + "github.com/cosmos/cosmos-sdk/store/v2/types" sdk "github.com/cosmos/cosmos-sdk/types" ) diff --git a/third_party/osmoutils/store_helper.go b/third_party/osmoutils/store_helper.go index 82739651..14acfeb7 100644 --- a/third_party/osmoutils/store_helper.go +++ b/third_party/osmoutils/store_helper.go @@ -5,15 +5,15 @@ import ( "errors" "fmt" - "cosmossdk.io/store/prefix" + "github.com/cosmos/cosmos-sdk/store/v2/prefix" db "github.com/cosmos/cosmos-db" sdk "github.com/cosmos/cosmos-sdk/types" - storetypes "cosmossdk.io/store/types" + storetypes "github.com/cosmos/cosmos-sdk/store/v2/types" "github.com/bitbadges/bitbadgeschain/third_party/osmomath" - "cosmossdk.io/store" + store "github.com/cosmos/cosmos-sdk/store/v2" "github.com/cosmos/gogoproto/proto" ) diff --git a/vendor-shims/cosmossdk-x-upgrade/CHANGELOG.md b/vendor-shims/cosmossdk-x-upgrade/CHANGELOG.md new file mode 100644 index 00000000..f7a5947e --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/CHANGELOG.md @@ -0,0 +1,81 @@ + + +# Changelog + +## [Unreleased] + +## [v0.2.0](https://github.com/cosmos/cosmos-sdk/releases/tag/x/upgrade/v0.2.0) - 2025-04-24 + +* SDK v0.53.x support. + +## [v0.1.4](https://github.com/cosmos/cosmos-sdk/releases/tag/x/upgrade/v0.1.4) - 2024-07-15 + +### Improvements + +* [#20771](https://github.com/cosmos/cosmos-sdk/pull/20771) Create upgrade directory only when necessary (upgrade flow and not init flow). + +## [v0.1.3](https://github.com/cosmos/cosmos-sdk/releases/tag/x/upgrade/v0.1.3) - 2024-06-04 + +* (deps) [#20530](https://github.com/cosmos/cosmos-sdk/pull/20530) Bump vulnerable `github.com/hashicorp/go-getter` to v1.7.4. + * In theory, we do not need a new release for this, but we are doing it as `x/upgrade` is used in Cosmovisor. + +## [v0.1.2](https://github.com/cosmos/cosmos-sdk/releases/tag/x/upgrade/v0.1.2) - 2024-04-22 + +### Improvements + +* (deps) [#19810](https://github.com/cosmos/cosmos-sdk/pull/19810) Upgrade SDK version due to prometheus breaking change. +* (deps) [#19810](https://github.com/cosmos/cosmos-sdk/pull/19810) Bump `cosmossdk.io/store` to v1.1.0. + +### Bug Fixes + +* [#19706](https://github.com/cosmos/cosmos-sdk/pull/19706) Stop treating inline JSON as a URL. + +## [v0.1.1](https://github.com/cosmos/cosmos-sdk/releases/tag/x/upgrade/v0.1.1) - 2023-12-11 + +### Improvements + +* [#18470](https://github.com/cosmos/cosmos-sdk/pull/18470) Improve go-getter settings. + +## [v0.1.0](https://github.com/cosmos/cosmos-sdk/releases/tag/x/upgrade/v0.1.0) - 2023-11-07 + +### Features + +* [#14880](https://github.com/cosmos/cosmos-sdk/pull/14880) Switch from using gov v1beta1 to gov v1 in upgrade CLIs. +* [#14764](https://github.com/cosmos/cosmos-sdk/pull/14764) The `x/upgrade` module is extracted to have a separate go.mod file which allows it be a standalone module. + +### Improvements + +* [#16903](https://github.com/cosmos/cosmos-sdk/pull/16903) Use AutoCLI for upgrade querying commands. + +### API Breaking Changes + +* [#16845](https://github.com/cosmos/cosmos-sdk/pull/16845) Remove gov v1beta1 handler. Use gov v1 proposals directly, or replicate the handler in your app. +* [#16511](https://github.com/cosmos/cosmos-sdk/pull/16511) `BinaryDownloadURLMap.ValidateBasic()` and `BinaryDownloadURLMap.CheckURLs` now both take a checksum parameter when willing to ensure a checksum is provided for each URL. +* [#16511](https://github.com/cosmos/cosmos-sdk/pull/16511) `plan.DownloadURLWithChecksum` has been renamed to `plan.DownloadURL` and does not validate the URL anymore. Call `plan.ValidateURL` before calling `plan.DownloadURL` to validate the URL. +* [#16511](https://github.com/cosmos/cosmos-sdk/pull/16511) `plan.DownloadUpgrade` does not validate URL anymore. Call `plan.ValidateURL` before calling `plan.DownloadUpgrade` to validate the URL. +* [#16227](https://github.com/cosmos/cosmos-sdk/issues/16227) `NewKeeper` now takes a `KVStoreService` instead of a `StoreKey`, methods in the `Keeper` now take a `context.Context` instead of a `sdk.Context` and return an `error`. `UpgradeHandler` now receives a `context.Context`. `GetUpgradedClient`, `GetUpgradedConsensusState`, `GetUpgradePlan` now return a specific error for "not found". + +### Bug Fixes + +* [#17421](https://github.com/cosmos/cosmos-sdk/pull/17421) Replace `BeginBlock` by `PreBlock`. Read [ADR-68](https://github.com/cosmos/cosmos-sdk/blob/main/docs/architecture/adr-068-preblock.md) for more information. diff --git a/vendor-shims/cosmossdk-x-upgrade/LICENSE b/vendor-shims/cosmossdk-x-upgrade/LICENSE new file mode 100644 index 00000000..105133ec --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/LICENSE @@ -0,0 +1,202 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright Cosmos-SDK Authors + Copyright 2016 All in Bits, Inc + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/vendor-shims/cosmossdk-x-upgrade/README.md b/vendor-shims/cosmossdk-x-upgrade/README.md new file mode 100644 index 00000000..46e4061a --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/README.md @@ -0,0 +1,609 @@ +--- +sidebar_position: 1 +--- + +# `x/upgrade` + +## Abstract + +`x/upgrade` is an implementation of a Cosmos SDK module that facilitates smoothly +upgrading a live Cosmos chain to a new (breaking) software version. It accomplishes this by +providing a `PreBlocker` hook that prevents the blockchain state machine from +proceeding once a pre-defined upgrade block height has been reached. + +The module does not prescribe anything regarding how governance decides to do an +upgrade, but just the mechanism for coordinating the upgrade safely. Without software +support for upgrades, upgrading a live chain is risky because all of the validators +need to pause their state machines at exactly the same point in the process. If +this is not done correctly, there can be state inconsistencies which are hard to +recover from. + +* [Concepts](#concepts) +* [State](#state) +* [Events](#events) +* [Client](#client) + * [CLI](#cli) + * [REST](#rest) + * [gRPC](#grpc) +* [Resources](#resources) + +## Concepts + +### Plan + +The `x/upgrade` module defines a `Plan` type in which a live upgrade is scheduled +to occur. A `Plan` can be scheduled at a specific block height. +A `Plan` is created once a (frozen) release candidate along with an appropriate upgrade +`Handler` (see below) is agreed upon, where the `Name` of a `Plan` corresponds to a +specific `Handler`. Typically, a `Plan` is created through a governance proposal +process, where if voted upon and passed, will be scheduled. The `Info` of a `Plan` +may contain various metadata about the upgrade, typically application specific +upgrade info to be included on-chain such as a git commit that validators could +automatically upgrade to. + +```go +type Plan struct { + Name string + Height int64 + Info string +} +``` + +#### Sidecar Process + +If an operator running the application binary also runs a sidecar process to assist +in the automatic download and upgrade of a binary, the `Info` allows this process to +be seamless. This tool is [Cosmovisor](https://github.com/cosmos/cosmos-sdk/tree/main/tools/cosmovisor#readme). + +### Handler + +The `x/upgrade` module facilitates upgrading from major version X to major version Y. To +accomplish this, node operators must first upgrade their current binary to a new +binary that has a corresponding `Handler` for the new version Y. It is assumed that +this version has fully been tested and approved by the community at large. This +`Handler` defines what state migrations need to occur before the new binary Y +can successfully run the chain. Naturally, this `Handler` is application specific +and not defined on a per-module basis. Registering a `Handler` is done via +`Keeper#SetUpgradeHandler` in the application. + +```go +type UpgradeHandler func(Context, Plan, VersionMap) (VersionMap, error) +``` + +During each `EndBlock` execution, the `x/upgrade` module checks if there exists a +`Plan` that should execute (is scheduled at that height). If so, the corresponding +`Handler` is executed. If the `Plan` is expected to execute but no `Handler` is registered +or if the binary was upgraded too early, the node will gracefully panic and exit. + +### StoreLoader + +The `x/upgrade` module also facilitates store migrations as part of the upgrade. The +`StoreLoader` sets the migrations that need to occur before the new binary can +successfully run the chain. This `StoreLoader` is also application specific and +not defined on a per-module basis. Registering this `StoreLoader` is done via +`app#SetStoreLoader` in the application. + +```go +func UpgradeStoreLoader (upgradeHeight int64, storeUpgrades *store.StoreUpgrades) baseapp.StoreLoader +``` + +If there's a planned upgrade and the upgrade height is reached, the old binary writes `Plan` to the disk before panicking. + +This information is critical to ensure the `StoreUpgrades` happens smoothly at correct height and +expected upgrade. It eliminiates the chances for the new binary to execute `StoreUpgrades` multiple +times everytime on restart. Also if there are multiple upgrades planned on same height, the `Name` +will ensure these `StoreUpgrades` takes place only in planned upgrade handler. + +### Proposal + +Typically, a `Plan` is proposed and submitted through governance via a proposal +containing a `MsgSoftwareUpgrade` message. +This proposal prescribes to the standard governance process. If the proposal passes, +the `Plan`, which targets a specific `Handler`, is persisted and scheduled. The +upgrade can be delayed or hastened by updating the `Plan.Height` in a new proposal. + +```protobuf reference +https://github.com/cosmos/cosmos-sdk/blob/v0.47.0-rc1/proto/cosmos/upgrade/v1beta1/tx.proto#L29-L41 +``` + +#### Cancelling Upgrade Proposals + +Upgrade proposals can be cancelled. There exists a gov-enabled `MsgCancelUpgrade` +message type, which can be embedded in a proposal, voted on and, if passed, will +remove the scheduled upgrade `Plan`. +Of course this requires that the upgrade was known to be a bad idea well before the +upgrade itself, to allow time for a vote. + +```protobuf reference +https://github.com/cosmos/cosmos-sdk/blob/v0.47.0-rc1/proto/cosmos/upgrade/v1beta1/tx.proto#L48-L57 +``` + +If such a possibility is desired, the upgrade height is to be +`2 * (VotingPeriod + DepositPeriod) + (SafetyDelta)` from the beginning of the +upgrade proposal. The `SafetyDelta` is the time available from the success of an +upgrade proposal and the realization it was a bad idea (due to external social consensus). + +A `MsgCancelUpgrade` proposal can also be made while the original +`MsgSoftwareUpgrade` proposal is still being voted upon, as long as the `VotingPeriod` +ends after the `MsgSoftwareUpgrade` proposal. + +## State + +The internal state of the `x/upgrade` module is relatively minimal and simple. The +state contains the currently active upgrade `Plan` (if one exists) by key +`0x0` and if a `Plan` is marked as "done" by key `0x1`. The state +contains the consensus versions of all app modules in the application. The versions +are stored as big endian `uint64`, and can be accessed with prefix `0x2` appended +by the corresponding module name of type `string`. The state maintains a +`Protocol Version` which can be accessed by key `0x3`. + +* Plan: `0x0 -> Plan` +* Done: `0x1 | byte(plan name) -> BigEndian(Block Height)` +* ConsensusVersion: `0x2 | byte(module name) -> BigEndian(Module Consensus Version)` +* ProtocolVersion: `0x3 -> BigEndian(Protocol Version)` + +The `x/upgrade` module contains no genesis state. + +## Events + +The `x/upgrade` does not emit any events by itself. Any and all proposal related +events are emitted through the `x/gov` module. + +## Client + +### CLI + +A user can query and interact with the `upgrade` module using the CLI. + +#### Query + +The `query` commands allow users to query `upgrade` state. + +```bash +simd query upgrade --help +``` + +##### applied + +The `applied` command allows users to query the block header for height at which a completed upgrade was applied. + +```bash +simd query upgrade applied [upgrade-name] [flags] +``` + +If upgrade-name was previously executed on the chain, this returns the header for the block at which it was applied. +This helps a client determine which binary was valid over a given range of blocks, as well as more context to understand past migrations. + +Example: + +```bash +simd query upgrade applied "test-upgrade" +``` + +Example Output: + +```bash +"block_id": { + "hash": "A769136351786B9034A5F196DC53F7E50FCEB53B48FA0786E1BFC45A0BB646B5", + "parts": { + "total": 1, + "hash": "B13CBD23011C7480E6F11BE4594EE316548648E6A666B3575409F8F16EC6939E" + } + }, + "block_size": "7213", + "header": { + "version": { + "block": "11" + }, + "chain_id": "testnet-2", + "height": "455200", + "time": "2021-04-10T04:37:57.085493838Z", + "last_block_id": { + "hash": "0E8AD9309C2DC411DF98217AF59E044A0E1CCEAE7C0338417A70338DF50F4783", + "parts": { + "total": 1, + "hash": "8FE572A48CD10BC2CBB02653CA04CA247A0F6830FF19DC972F64D339A355E77D" + } + }, + "last_commit_hash": "DE890239416A19E6164C2076B837CC1D7F7822FC214F305616725F11D2533140", + "data_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "validators_hash": "A31047ADE54AE9072EE2A12FF260A8990BA4C39F903EAF5636B50D58DBA72582", + "next_validators_hash": "A31047ADE54AE9072EE2A12FF260A8990BA4C39F903EAF5636B50D58DBA72582", + "consensus_hash": "048091BC7DDC283F77BFBF91D73C44DA58C3DF8A9CBC867405D8B7F3DAADA22F", + "app_hash": "28ECC486AFC332BA6CC976706DBDE87E7D32441375E3F10FD084CD4BAF0DA021", + "last_results_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "evidence_hash": "E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855", + "proposer_address": "2ABC4854B1A1C5AA8403C4EA853A81ACA901CC76" + }, + "num_txs": "0" +} +``` + +##### module versions + +The `module_versions` command gets a list of module names and their respective consensus versions. + +Following the command with a specific module name will return only +that module's information. + +```bash +simd query upgrade module_versions [optional module_name] [flags] +``` + +Example: + +```bash +simd query upgrade module_versions +``` + +Example Output: + +```bash +module_versions: +- name: auth + version: "2" +- name: authz + version: "1" +- name: bank + version: "2" +- name: distribution + version: "2" +- name: evidence + version: "1" +- name: feegrant + version: "1" +- name: genutil + version: "1" +- name: gov + version: "2" +- name: ibc + version: "2" +- name: mint + version: "1" +- name: params + version: "1" +- name: slashing + version: "2" +- name: staking + version: "2" +- name: transfer + version: "1" +- name: upgrade + version: "1" +- name: vesting + version: "1" +``` + +Example: + +```bash +regen query upgrade module_versions ibc +``` + +Example Output: + +```bash +module_versions: +- name: ibc + version: "2" +``` + +##### plan + +The `plan` command gets the currently scheduled upgrade plan, if one exists. + +```bash +regen query upgrade plan [flags] +``` + +Example: + +```bash +simd query upgrade plan +``` + +Example Output: + +```bash +height: "130" +info: "" +name: test-upgrade +time: "0001-01-01T00:00:00Z" +upgraded_client_state: null +``` + +#### Transactions + +The upgrade module supports the following transactions: + +* `software-proposal` - submits an upgrade proposal: + +```bash +simd tx upgrade software-upgrade v2 --title="Test Proposal" --summary="testing" --deposit="100000000stake" --upgrade-height 1000000 \ +--upgrade-info '{ "binaries": { "linux/amd64":"https://example.com/simd.zip?checksum=sha256:aec070645fe53ee3b3763059376134f058cc337247c978add178b6ccdfb0019f" } }' --from cosmos1.. +``` + +* `cancel-software-upgrade` - cancels a previously submitted upgrade proposal: + +```bash +simd tx upgrade cancel-software-upgrade --title="Test Proposal" --summary="testing" --deposit="100000000stake" --from cosmos1.. +``` + +### REST + +A user can query the `upgrade` module using REST endpoints. + +#### Applied Plan + +`AppliedPlan` queries a previously applied upgrade plan by its name. + +```bash +/cosmos/upgrade/v1beta1/applied_plan/{name} +``` + +Example: + +```bash +curl -X GET "http://localhost:1317/cosmos/upgrade/v1beta1/applied_plan/v2.0-upgrade" -H "accept: application/json" +``` + +Example Output: + +```bash +{ + "height": "30" +} +``` + +#### Current Plan + +`CurrentPlan` queries the current upgrade plan. + +```bash +/cosmos/upgrade/v1beta1/current_plan +``` + +Example: + +```bash +curl -X GET "http://localhost:1317/cosmos/upgrade/v1beta1/current_plan" -H "accept: application/json" +``` + +Example Output: + +```bash +{ + "plan": "v2.1-upgrade" +} +``` + +#### Module versions + +`ModuleVersions` queries the list of module versions from state. + +```bash +/cosmos/upgrade/v1beta1/module_versions +``` + +Example: + +```bash +curl -X GET "http://localhost:1317/cosmos/upgrade/v1beta1/module_versions" -H "accept: application/json" +``` + +Example Output: + +```bash +{ + "module_versions": [ + { + "name": "auth", + "version": "2" + }, + { + "name": "authz", + "version": "1" + }, + { + "name": "bank", + "version": "2" + }, + { + "name": "distribution", + "version": "2" + }, + { + "name": "evidence", + "version": "1" + }, + { + "name": "feegrant", + "version": "1" + }, + { + "name": "genutil", + "version": "1" + }, + { + "name": "gov", + "version": "2" + }, + { + "name": "ibc", + "version": "2" + }, + { + "name": "mint", + "version": "1" + }, + { + "name": "params", + "version": "1" + }, + { + "name": "slashing", + "version": "2" + }, + { + "name": "staking", + "version": "2" + }, + { + "name": "transfer", + "version": "1" + }, + { + "name": "upgrade", + "version": "1" + }, + { + "name": "vesting", + "version": "1" + } + ] +} +``` + +### gRPC + +A user can query the `upgrade` module using gRPC endpoints. + +#### Applied Plan + +`AppliedPlan` queries a previously applied upgrade plan by its name. + +```bash +cosmos.upgrade.v1beta1.Query/AppliedPlan +``` + +Example: + +```bash +grpcurl -plaintext \ + -d '{"name":"v2.0-upgrade"}' \ + localhost:9090 \ + cosmos.upgrade.v1beta1.Query/AppliedPlan +``` + +Example Output: + +```bash +{ + "height": "30" +} +``` + +#### Current Plan + +`CurrentPlan` queries the current upgrade plan. + +```bash +cosmos.upgrade.v1beta1.Query/CurrentPlan +``` + +Example: + +```bash +grpcurl -plaintext localhost:9090 cosmos.slashing.v1beta1.Query/CurrentPlan +``` + +Example Output: + +```bash +{ + "plan": "v2.1-upgrade" +} +``` + +#### Module versions + +`ModuleVersions` queries the list of module versions from state. + +```bash +cosmos.upgrade.v1beta1.Query/ModuleVersions +``` + +Example: + +```bash +grpcurl -plaintext localhost:9090 cosmos.slashing.v1beta1.Query/ModuleVersions +``` + +Example Output: + +```bash +{ + "module_versions": [ + { + "name": "auth", + "version": "2" + }, + { + "name": "authz", + "version": "1" + }, + { + "name": "bank", + "version": "2" + }, + { + "name": "distribution", + "version": "2" + }, + { + "name": "evidence", + "version": "1" + }, + { + "name": "feegrant", + "version": "1" + }, + { + "name": "genutil", + "version": "1" + }, + { + "name": "gov", + "version": "2" + }, + { + "name": "ibc", + "version": "2" + }, + { + "name": "mint", + "version": "1" + }, + { + "name": "params", + "version": "1" + }, + { + "name": "slashing", + "version": "2" + }, + { + "name": "staking", + "version": "2" + }, + { + "name": "transfer", + "version": "1" + }, + { + "name": "upgrade", + "version": "1" + }, + { + "name": "vesting", + "version": "1" + } + ] +} +``` + +## Resources + +A list of (external) resources to learn more about the `x/upgrade` module. + +* [Cosmos Dev Series: Cosmos Blockchain Upgrade](https://medium.com/web3-surfers/cosmos-dev-series-cosmos-sdk-based-blockchain-upgrade-b5e99181554c) - The blog post that explains how software upgrades work in detail. diff --git a/vendor-shims/cosmossdk-x-upgrade/abci.go b/vendor-shims/cosmossdk-x-upgrade/abci.go new file mode 100644 index 00000000..6f2cabcc --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/abci.go @@ -0,0 +1,134 @@ +package upgrade + +import ( + "context" + "errors" + "fmt" + + "cosmossdk.io/core/appmodule" + storetypes "cosmossdk.io/store/types" + "cosmossdk.io/x/upgrade/keeper" + "cosmossdk.io/x/upgrade/types" + + "github.com/cosmos/cosmos-sdk/telemetry" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +// PreBlocker will check if there is a scheduled plan and if it is ready to be executed. +// If the current height is in the provided set of heights to skip, it will skip and clear the upgrade plan. +// If it is ready, it will execute it if the handler is installed, and panic/abort otherwise. +// If the plan is not ready, it will ensure the handler is not registered too early (and abort otherwise). +// +// The purpose is to ensure the binary is switched EXACTLY at the desired block, and to allow +// a migration to be executed if needed upon this switch (migration defined in the new binary) +// skipUpgradeHeightArray is a set of block heights for which the upgrade must be skipped +// +// Note: The MetricKey will change to MetricKeyPreBlocker in v0.54.0. +func PreBlocker(ctx context.Context, k *keeper.Keeper) (appmodule.ResponsePreBlock, error) { + defer telemetry.ModuleMeasureSince(types.ModuleName, telemetry.Now(), telemetry.MetricKeyBeginBlocker) + + sdkCtx := sdk.UnwrapSDKContext(ctx) + blockHeight := sdkCtx.HeaderInfo().Height + plan, err := k.GetUpgradePlan(ctx) + if err != nil && !errors.Is(err, types.ErrNoUpgradePlanFound) { + return nil, err + } + found := err == nil + + if !k.DowngradeVerified() { + k.SetDowngradeVerified(true) + // This check will make sure that we are using a valid binary. + // It'll panic in these cases if there is no upgrade handler registered for the last applied upgrade. + // 1. If there is no scheduled upgrade. + // 2. If the plan is not ready. + // 3. If the plan is ready and skip upgrade height is set for current height. + if !found || !plan.ShouldExecute(blockHeight) || (plan.ShouldExecute(blockHeight) && k.IsSkipHeight(blockHeight)) { + lastAppliedPlan, _, err := k.GetLastCompletedUpgrade(ctx) + if err != nil { + return nil, err + } + + if lastAppliedPlan != "" && !k.HasHandler(lastAppliedPlan) { + var appVersion uint64 + + cp := sdkCtx.ConsensusParams() + if cp.Version != nil { + appVersion = cp.Version.App + } + + return nil, fmt.Errorf("wrong app version %d, upgrade handler is missing for %s upgrade plan", appVersion, lastAppliedPlan) + } + } + } + + if !found { + return &sdk.ResponsePreBlock{ + ConsensusParamsChanged: false, + }, nil + } + + logger := k.Logger(ctx) + + // To make sure clear upgrade is executed at the same block + if plan.ShouldExecute(blockHeight) { + // If skip upgrade has been set for current height, we clear the upgrade plan + if k.IsSkipHeight(blockHeight) { + skipUpgradeMsg := fmt.Sprintf("UPGRADE \"%s\" SKIPPED at %d: %s", plan.Name, plan.Height, plan.Info) + logger.Info(skipUpgradeMsg) + + // Clear the upgrade plan at current height + if err := k.ClearUpgradePlan(ctx); err != nil { + return nil, err + } + return &sdk.ResponsePreBlock{ + ConsensusParamsChanged: false, + }, nil + } + + // Prepare shutdown if we don't have an upgrade handler for this upgrade name (meaning this software is out of date) + if !k.HasHandler(plan.Name) { + // Write the upgrade info to disk. The UpgradeStoreLoader uses this info to perform or skip + // store migrations. + err := k.DumpUpgradeInfoToDisk(blockHeight, plan) + if err != nil { + return nil, fmt.Errorf("unable to write upgrade info to filesystem: %w", err) + } + + upgradeMsg := BuildUpgradeNeededMsg(plan) + logger.Error(upgradeMsg) + + // Returning an error will end up in a panic + return nil, errors.New(upgradeMsg) + } + + // We have an upgrade handler for this upgrade name, so apply the upgrade + logger.Info(fmt.Sprintf("applying upgrade \"%s\" at %s", plan.Name, plan.DueAt())) + sdkCtx = sdkCtx.WithBlockGasMeter(storetypes.NewInfiniteGasMeter()) + if err := k.ApplyUpgrade(sdkCtx, plan); err != nil { + return nil, err + } + return &sdk.ResponsePreBlock{ + // the consensus parameters might be modified in the migration, + // refresh the consensus parameters in context. + ConsensusParamsChanged: true, + }, nil + } + + // if we have a pending upgrade, but it is not yet time, make sure we did not + // set the handler already + if k.HasHandler(plan.Name) { + downgradeMsg := fmt.Sprintf("BINARY UPDATED BEFORE TRIGGER! UPGRADE \"%s\" - in binary but not executed on chain. Downgrade your binary", plan.Name) + logger.Error(downgradeMsg) + + // Returning an error will end up in a panic + return nil, errors.New(downgradeMsg) + } + return &sdk.ResponsePreBlock{ + ConsensusParamsChanged: false, + }, nil +} + +// BuildUpgradeNeededMsg prints the message that notifies that an upgrade is needed. +func BuildUpgradeNeededMsg(plan types.Plan) string { + return fmt.Sprintf("UPGRADE \"%s\" NEEDED at %s: %s", plan.Name, plan.DueAt(), plan.Info) +} diff --git a/vendor-shims/cosmossdk-x-upgrade/abci_test.go b/vendor-shims/cosmossdk-x-upgrade/abci_test.go new file mode 100644 index 00000000..9019bd83 --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/abci_test.go @@ -0,0 +1,529 @@ +package upgrade_test + +import ( + "context" + "errors" + "os" + "testing" + "time" + + "github.com/stretchr/testify/require" + + "cosmossdk.io/core/appmodule" + "cosmossdk.io/core/header" + "cosmossdk.io/log" + storetypes "cosmossdk.io/store/types" + "cosmossdk.io/x/upgrade" + "cosmossdk.io/x/upgrade/keeper" + "cosmossdk.io/x/upgrade/types" + + "github.com/cosmos/cosmos-sdk/baseapp" + addresscodec "github.com/cosmos/cosmos-sdk/codec/address" + "github.com/cosmos/cosmos-sdk/runtime" + "github.com/cosmos/cosmos-sdk/testutil" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/cosmos/cosmos-sdk/types/module" + moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" +) + +type TestSuite struct { + preModule appmodule.HasPreBlocker + keeper *keeper.Keeper + ctx sdk.Context + baseApp *baseapp.BaseApp + encCfg moduletestutil.TestEncodingConfig +} + +func (s *TestSuite) VerifyDoUpgrade(t *testing.T) { + t.Helper() + t.Log("Verify that a panic happens at the upgrade height") + newCtx := s.ctx.WithHeaderInfo(header.Info{Height: s.ctx.HeaderInfo().Height + 1, Time: time.Now()}) + + _, err := s.preModule.PreBlock(newCtx) + require.ErrorContains(t, err, "UPGRADE \"test\" NEEDED at height: 11: ") + + t.Log("Verify that the upgrade can be successfully applied with a handler") + s.keeper.SetUpgradeHandler("test", func(ctx context.Context, plan types.Plan, vm module.VersionMap) (module.VersionMap, error) { + return vm, nil + }) + + _, err = s.preModule.PreBlock(newCtx) + require.NoError(t, err) + + s.VerifyCleared(t, newCtx) +} + +func (s *TestSuite) VerifyDoUpgradeWithCtx(t *testing.T, newCtx sdk.Context, proposalName string) { + t.Helper() + t.Log("Verify that a panic happens at the upgrade height") + + _, err := s.preModule.PreBlock(newCtx) + require.ErrorContains(t, err, "UPGRADE \""+proposalName+"\" NEEDED at height: ") + + t.Log("Verify that the upgrade can be successfully applied with a handler") + s.keeper.SetUpgradeHandler(proposalName, func(ctx context.Context, plan types.Plan, vm module.VersionMap) (module.VersionMap, error) { + return vm, nil + }) + + _, err = s.preModule.PreBlock(newCtx) + require.NoError(t, err) + + s.VerifyCleared(t, newCtx) +} + +func (s *TestSuite) VerifyCleared(t *testing.T, newCtx sdk.Context) { + t.Helper() + t.Log("Verify that the upgrade plan has been cleared") + _, err := s.keeper.GetUpgradePlan(newCtx) + require.ErrorIs(t, err, types.ErrNoUpgradePlanFound) +} + +func (s *TestSuite) VerifyNotDone(t *testing.T, newCtx sdk.Context, name string) { + t.Helper() + t.Log("Verify that upgrade was not done") + height, err := s.keeper.GetDoneHeight(newCtx, name) + require.Zero(t, height) + require.NoError(t, err) +} + +func (s *TestSuite) VerifyDone(t *testing.T, newCtx sdk.Context, name string) { + t.Helper() + t.Log("Verify that the upgrade plan has been executed") + height, err := s.keeper.GetDoneHeight(newCtx, name) + require.NotZero(t, height) + require.NoError(t, err) +} + +func (s *TestSuite) VerifySet(t *testing.T, skipUpgradeHeights map[int64]bool) { + t.Helper() + t.Log("Verify if the skip upgrade has been set") + + for k := range skipUpgradeHeights { + require.True(t, s.keeper.IsSkipHeight(k)) + } +} + +func setupTest(t *testing.T, height int64, skip map[int64]bool) *TestSuite { + t.Helper() + s := TestSuite{} + s.encCfg = moduletestutil.MakeTestEncodingConfig(upgrade.AppModuleBasic{}) + key := storetypes.NewKVStoreKey(types.StoreKey) + storeService := runtime.NewKVStoreService(key) + testCtx := testutil.DefaultContextWithDB(t, key, storetypes.NewTransientStoreKey("transient_test")) + + s.baseApp = baseapp.NewBaseApp( + "upgrade", + log.NewNopLogger(), + testCtx.DB, + s.encCfg.TxConfig.TxDecoder(), + ) + + s.keeper = keeper.NewKeeper(skip, storeService, s.encCfg.Codec, t.TempDir(), nil, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + s.keeper.SetVersionSetter(s.baseApp) + + s.ctx = testCtx.Ctx.WithHeaderInfo(header.Info{Time: time.Now(), Height: height}) + + s.preModule = upgrade.NewAppModule(s.keeper, addresscodec.NewBech32Codec("cosmos")) + return &s +} + +func TestRequireFutureBlock(t *testing.T) { + s := setupTest(t, 10, map[int64]bool{}) + err := s.keeper.ScheduleUpgrade(s.ctx, types.Plan{Name: "test", Height: s.ctx.HeaderInfo().Height - 1}) + require.Error(t, err) + require.True(t, errors.Is(err, sdkerrors.ErrInvalidRequest), err) +} + +func TestDoHeightUpgrade(t *testing.T) { + s := setupTest(t, 10, map[int64]bool{}) + t.Log("Verify can schedule an upgrade") + err := s.keeper.ScheduleUpgrade(s.ctx, types.Plan{Name: "test", Height: s.ctx.HeaderInfo().Height + 1}) + require.NoError(t, err) + + s.VerifyDoUpgrade(t) +} + +func TestCanOverwriteScheduleUpgrade(t *testing.T) { + s := setupTest(t, 10, map[int64]bool{}) + t.Log("Can overwrite plan") + err := s.keeper.ScheduleUpgrade(s.ctx, types.Plan{Name: "bad_test", Height: s.ctx.HeaderInfo().Height + 10}) + require.NoError(t, err) + err = s.keeper.ScheduleUpgrade(s.ctx, types.Plan{Name: "test", Height: s.ctx.HeaderInfo().Height + 1}) + require.NoError(t, err) + + s.VerifyDoUpgrade(t) +} + +func TestHaltIfTooNew(t *testing.T) { + s := setupTest(t, 10, map[int64]bool{}) + t.Log("Verify that we don't panic with registered plan not in database at all") + var called int + s.keeper.SetUpgradeHandler("future", func(_ context.Context, _ types.Plan, vm module.VersionMap) (module.VersionMap, error) { + called++ + return vm, nil + }) + + newCtx := s.ctx.WithHeaderInfo(header.Info{Height: s.ctx.HeaderInfo().Height + 1, Time: time.Now()}) + _, err := s.preModule.PreBlock(newCtx) + require.NoError(t, err) + require.Equal(t, 0, called) + + t.Log("Verify we error if we have a registered handler ahead of time") + err = s.keeper.ScheduleUpgrade(s.ctx, types.Plan{Name: "future", Height: s.ctx.HeaderInfo().Height + 3}) + require.NoError(t, err) + _, err = s.preModule.PreBlock(newCtx) + require.EqualError(t, err, "BINARY UPDATED BEFORE TRIGGER! UPGRADE \"future\" - in binary but not executed on chain. Downgrade your binary") + require.Equal(t, 0, called) + + t.Log("Verify we no longer panic if the plan is on time") + + futCtx := s.ctx.WithHeaderInfo(header.Info{Height: s.ctx.HeaderInfo().Height + 3, Time: time.Now()}) + _, err = s.preModule.PreBlock(futCtx) + require.NoError(t, err) + require.Equal(t, 1, called) + + s.VerifyCleared(t, futCtx) +} + +func TestCanClear(t *testing.T) { + s := setupTest(t, 10, map[int64]bool{}) + t.Log("Verify upgrade is scheduled") + err := s.keeper.ScheduleUpgrade(s.ctx, types.Plan{Name: "test", Height: s.ctx.HeaderInfo().Height + 100}) + require.NoError(t, err) + + err = s.keeper.ClearUpgradePlan(s.ctx) + require.NoError(t, err) + + s.VerifyCleared(t, s.ctx) +} + +func TestCantApplySameUpgradeTwice(t *testing.T) { + s := setupTest(t, 10, map[int64]bool{}) + height := s.ctx.HeaderInfo().Height + 1 + err := s.keeper.ScheduleUpgrade(s.ctx, types.Plan{Name: "test", Height: height}) + require.NoError(t, err) + s.VerifyDoUpgrade(t) + t.Log("Verify an executed upgrade \"test\" can't be rescheduled") + err = s.keeper.ScheduleUpgrade(s.ctx, types.Plan{Name: "test", Height: height}) + require.Error(t, err) + require.True(t, errors.Is(err, sdkerrors.ErrInvalidRequest), err) +} + +func TestNoSpuriousUpgrades(t *testing.T) { + s := setupTest(t, 10, map[int64]bool{}) + t.Log("Verify that no upgrade panic is triggered in the BeginBlocker when we haven't scheduled an upgrade") + _, err := s.preModule.PreBlock(s.ctx) + require.NoError(t, err) +} + +func TestPlanStringer(t *testing.T) { + require.Equal(t, "name:\"test\" time: height:100 ", (&types.Plan{Name: "test", Height: 100, Info: ""}).String()) + require.Equal(t, `name:"test" time: height:100 `, (&types.Plan{Name: "test", Height: 100, Info: ""}).String()) +} + +func TestContains(t *testing.T) { + var skipOne int64 = 11 + s := setupTest(t, 10, map[int64]bool{skipOne: true}) + + s.VerifySet(t, map[int64]bool{skipOne: true}) + t.Log("case where array contains the element") + require.True(t, s.keeper.IsSkipHeight(11)) + + t.Log("case where array doesn't contain the element") + require.False(t, s.keeper.IsSkipHeight(4)) +} + +func TestSkipUpgradeSkippingAll(t *testing.T) { + var ( + skipOne int64 = 11 + skipTwo int64 = 20 + ) + s := setupTest(t, 10, map[int64]bool{skipOne: true, skipTwo: true}) + + newCtx := s.ctx + + err := s.keeper.ScheduleUpgrade(s.ctx, types.Plan{Name: "test", Height: skipOne}) + require.NoError(t, err) + + t.Log("Verify if skip upgrade flag clears upgrade plan in both cases") + s.VerifySet(t, map[int64]bool{skipOne: true, skipTwo: true}) + + newCtx = newCtx.WithHeaderInfo(header.Info{Height: skipOne}) + _, err = s.preModule.PreBlock(newCtx) + require.NoError(t, err) + + t.Log("Verify a second proposal also is being cleared") + err = s.keeper.ScheduleUpgrade(s.ctx, types.Plan{Name: "test2", Height: skipTwo}) + require.NoError(t, err) + + newCtx = newCtx.WithHeaderInfo(header.Info{Height: skipTwo}) + _, err = s.preModule.PreBlock(newCtx) + require.NoError(t, err) + + // To ensure verification is being done only after both upgrades are cleared + t.Log("Verify if both proposals are cleared") + s.VerifyCleared(t, s.ctx) + s.VerifyNotDone(t, s.ctx, "test") + s.VerifyNotDone(t, s.ctx, "test2") +} + +func TestUpgradeSkippingOne(t *testing.T) { + var ( + skipOne int64 = 11 + skipTwo int64 = 20 + ) + s := setupTest(t, 10, map[int64]bool{skipOne: true}) + + newCtx := s.ctx + + err := s.keeper.ScheduleUpgrade(s.ctx, types.Plan{Name: "test", Height: skipOne}) + require.NoError(t, err) + + t.Log("Verify if skip upgrade flag clears upgrade plan in one case and does upgrade on another") + s.VerifySet(t, map[int64]bool{skipOne: true}) + + // Setting block height of proposal test + newCtx = newCtx.WithHeaderInfo(header.Info{Height: skipOne}) + _, err = s.preModule.PreBlock(newCtx) + require.NoError(t, err) + + t.Log("Verify the second proposal is not skipped") + err = s.keeper.ScheduleUpgrade(s.ctx, types.Plan{Name: "test2", Height: skipTwo}) + require.NoError(t, err) + // Setting block height of proposal test2 + newCtx = newCtx.WithHeaderInfo(header.Info{Height: skipTwo}) + s.VerifyDoUpgradeWithCtx(t, newCtx, "test2") + + t.Log("Verify first proposal is cleared and second is done") + s.VerifyNotDone(t, s.ctx, "test") + s.VerifyDone(t, s.ctx, "test2") +} + +func TestUpgradeSkippingOnlyTwo(t *testing.T) { + var ( + skipOne int64 = 11 + skipTwo int64 = 20 + skipThree int64 = 25 + ) + s := setupTest(t, 10, map[int64]bool{skipOne: true, skipTwo: true}) + + newCtx := s.ctx + + err := s.keeper.ScheduleUpgrade(s.ctx, types.Plan{Name: "test", Height: skipOne}) + require.NoError(t, err) + + t.Log("Verify if skip upgrade flag clears upgrade plan in both cases and does third upgrade") + s.VerifySet(t, map[int64]bool{skipOne: true, skipTwo: true}) + + // Setting block height of proposal test + newCtx = newCtx.WithHeaderInfo(header.Info{Height: skipOne}) + _, err = s.preModule.PreBlock(newCtx) + require.NoError(t, err) + + // A new proposal with height in skipUpgradeHeights + err = s.keeper.ScheduleUpgrade(s.ctx, types.Plan{Name: "test2", Height: skipTwo}) + require.NoError(t, err) + // Setting block height of proposal test2 + newCtx = newCtx.WithHeaderInfo(header.Info{Height: skipTwo}) + _, err = s.preModule.PreBlock(newCtx) + require.NoError(t, err) + + t.Log("Verify a new proposal is not skipped") + err = s.keeper.ScheduleUpgrade(s.ctx, types.Plan{Name: "test3", Height: skipThree}) + require.NoError(t, err) + newCtx = newCtx.WithHeaderInfo(header.Info{Height: skipThree}) + s.VerifyDoUpgradeWithCtx(t, newCtx, "test3") + + t.Log("Verify two proposals are cleared and third is done") + s.VerifyNotDone(t, s.ctx, "test") + s.VerifyNotDone(t, s.ctx, "test2") + s.VerifyDone(t, s.ctx, "test3") +} + +func TestUpgradeWithoutSkip(t *testing.T) { + s := setupTest(t, 10, map[int64]bool{}) + newCtx := s.ctx.WithHeaderInfo(header.Info{Height: s.ctx.HeaderInfo().Height + 1, Time: time.Now()}) + err := s.keeper.ScheduleUpgrade(s.ctx, types.Plan{Name: "test", Height: s.ctx.HeaderInfo().Height + 1}) + require.NoError(t, err) + t.Log("Verify if upgrade happens without skip upgrade") + _, err = s.preModule.PreBlock(newCtx) + require.ErrorContains(t, err, "UPGRADE \"test\" NEEDED at height:") + + s.VerifyDoUpgrade(t) + s.VerifyDone(t, s.ctx, "test") +} + +func TestDumpUpgradeInfoToFile(t *testing.T) { + s := setupTest(t, 10, map[int64]bool{}) + + // require no error when the upgrade info file does not exist + _, err := s.keeper.ReadUpgradeInfoFromDisk() + require.NoError(t, err) + + planHeight := s.ctx.HeaderInfo().Height + 1 + plan := types.Plan{ + Name: "test", + Height: 0, // this should be overwritten by DumpUpgradeInfoToFile + } + t.Log("verify if upgrade height is dumped to file") + err = s.keeper.DumpUpgradeInfoToDisk(planHeight, plan) + require.Nil(t, err) + + upgradeInfo, err := s.keeper.ReadUpgradeInfoFromDisk() + require.NoError(t, err) + + t.Log("Verify upgrade height from file matches ") + require.Equal(t, upgradeInfo.Height, planHeight) + require.Equal(t, upgradeInfo.Name, plan.Name) + + // clear the test file + upgradeInfoFilePath, err := s.keeper.GetUpgradeInfoPath() + require.Nil(t, err) + err = os.Remove(upgradeInfoFilePath) + require.Nil(t, err) +} + +// TODO: add testcase to for `no upgrade handler is present for last applied upgrade`. +func TestBinaryVersion(t *testing.T) { + var skipHeight int64 = 15 + s := setupTest(t, 10, map[int64]bool{skipHeight: true}) + + testCases := []struct { + name string + preRun func() sdk.Context + expectError bool + }{ + { + "test not panic: no scheduled upgrade or applied upgrade is present", + func() sdk.Context { + return s.ctx + }, + false, + }, + { + "test not panic: upgrade handler is present for last applied upgrade", + func() sdk.Context { + s.keeper.SetUpgradeHandler("test0", func(_ context.Context, _ types.Plan, vm module.VersionMap) (module.VersionMap, error) { + return vm, nil + }) + + err := s.keeper.ScheduleUpgrade(s.ctx, types.Plan{Name: "test0", Height: s.ctx.HeaderInfo().Height + 2}) + require.NoError(t, err) + + newCtx := s.ctx.WithHeaderInfo(header.Info{Height: 12}) + require.NoError(t, s.keeper.ApplyUpgrade(newCtx, types.Plan{ + Name: "test0", + Height: 12, + })) + + return newCtx + }, + false, + }, + { + "test panic: upgrade needed", + func() sdk.Context { + err := s.keeper.ScheduleUpgrade(s.ctx, types.Plan{Name: "test2", Height: 13}) + require.NoError(t, err) + + newCtx := s.ctx.WithHeaderInfo(header.Info{Height: 13}) + return newCtx + }, + true, + }, + } + + for _, tc := range testCases { + ctx := tc.preRun() + _, err := s.preModule.PreBlock(ctx) + if tc.expectError { + require.Error(t, err) + } else { + require.NoError(t, err) + } + } +} + +func TestDowngradeVerification(t *testing.T) { + // could not use setupTest() here, because we have to use the same key + // for the two keepers. + encCfg := moduletestutil.MakeTestEncodingConfig(upgrade.AppModuleBasic{}) + key := storetypes.NewKVStoreKey(types.StoreKey) + storeService := runtime.NewKVStoreService(key) + testCtx := testutil.DefaultContextWithDB(t, key, storetypes.NewTransientStoreKey("transient_test")) + ctx := testCtx.Ctx.WithHeaderInfo(header.Info{Time: time.Now(), Height: 10}) + + skip := map[int64]bool{} + k := keeper.NewKeeper(skip, storeService, encCfg.Codec, t.TempDir(), nil, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + m := upgrade.NewAppModule(k, addresscodec.NewBech32Codec("cosmos")) + + // submit a plan. + planName := "downgrade" + err := k.ScheduleUpgrade(ctx, types.Plan{Name: planName, Height: ctx.HeaderInfo().Height + 1}) + require.NoError(t, err) + ctx = ctx.WithHeaderInfo(header.Info{Height: ctx.HeaderInfo().Height + 1}) + + // set the handler. + k.SetUpgradeHandler(planName, func(_ context.Context, _ types.Plan, vm module.VersionMap) (module.VersionMap, error) { + return vm, nil + }) + + // successful upgrade. + _, err = m.PreBlock(ctx) + require.NoError(t, err) + ctx = ctx.WithHeaderInfo(header.Info{Height: ctx.HeaderInfo().Height + 1}) + + testCases := map[string]struct { + preRun func(*keeper.Keeper, sdk.Context, string) + expectError bool + }{ + "valid binary": { + preRun: func(k *keeper.Keeper, ctx sdk.Context, name string) { + k.SetUpgradeHandler(planName, func(ctx context.Context, plan types.Plan, vm module.VersionMap) (module.VersionMap, error) { + return vm, nil + }) + }, + }, + "downgrade with an active plan": { + preRun: func(k *keeper.Keeper, ctx sdk.Context, name string) { + err := k.ScheduleUpgrade(ctx, types.Plan{Name: "another" + planName, Height: ctx.HeaderInfo().Height + 1}) + require.NoError(t, err, name) + }, + expectError: true, + }, + "downgrade without any active plan": { + expectError: true, + }, + } + + for name, tc := range testCases { + ctx, _ := ctx.CacheContext() + + // downgrade. now keeper does not have the handler. + k := keeper.NewKeeper(skip, storeService, encCfg.Codec, t.TempDir(), nil, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + m := upgrade.NewAppModule(k, addresscodec.NewBech32Codec("cosmos")) + + // assertions + lastAppliedPlan, _, err := k.GetLastCompletedUpgrade(ctx) + require.NoError(t, err) + require.Equal(t, planName, lastAppliedPlan) + require.False(t, k.HasHandler(planName)) + require.False(t, k.DowngradeVerified()) + _, err = k.GetUpgradePlan(ctx) + require.ErrorIs(t, err, types.ErrNoUpgradePlanFound) + + if tc.preRun != nil { + tc.preRun(k, ctx, name) + } + + _, err = m.PreBlock(ctx) + if tc.expectError { + require.Error(t, err, name) + } else { + require.NoError(t, err, name) + } + } +} diff --git a/vendor-shims/cosmossdk-x-upgrade/autocli.go b/vendor-shims/cosmossdk-x-upgrade/autocli.go new file mode 100644 index 00000000..36265aea --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/autocli.go @@ -0,0 +1,66 @@ +package upgrade + +import ( + autocliv1 "cosmossdk.io/api/cosmos/autocli/v1" + upgradev1beta1 "cosmossdk.io/api/cosmos/upgrade/v1beta1" +) + +func (am AppModule) AutoCLIOptions() *autocliv1.ModuleOptions { + return &autocliv1.ModuleOptions{ + Query: &autocliv1.ServiceCommandDescriptor{ + Service: upgradev1beta1.Query_ServiceDesc.ServiceName, + RpcCommandOptions: []*autocliv1.RpcCommandOptions{ + { + RpcMethod: "CurrentPlan", + Use: "plan", + Short: "Query the upgrade plan (if one exists)", + Long: "Gets the currently scheduled upgrade plan, if one exists", + }, + { + RpcMethod: "AppliedPlan", + Use: "applied [upgrade-name]", + Short: "Query the block header for height at which a completed upgrade was applied", + Long: "If upgrade-name was previously executed on the chain, this returns the header for the block at which it was applied. This helps a client determine which binary was valid over a given range of blocks, as well as more context to understand past migrations.", + PositionalArgs: []*autocliv1.PositionalArgDescriptor{ + {ProtoField: "name"}, + }, + }, + { + RpcMethod: "ModuleVersions", + Use: "module-versions [optional module_name]", + Alias: []string{"module_versions"}, + Short: "Query the list of module versions", + Long: "Gets a list of module names and their respective consensus versions. Following the command with a specific module name will return only that module's information.", + PositionalArgs: []*autocliv1.PositionalArgDescriptor{ + {ProtoField: "module_name", Optional: true}, + }, + }, + { + RpcMethod: "Authority", + Use: "authority", + Short: "Get the upgrade authority address", + }, + { + RpcMethod: "UpgradedConsensusState", + Skip: true, // Skipping this command as the query is deprecated. + }, + }, + }, + Tx: &autocliv1.ServiceCommandDescriptor{ + Service: upgradev1beta1.Msg_ServiceDesc.ServiceName, + RpcCommandOptions: []*autocliv1.RpcCommandOptions{ + { + RpcMethod: "CancelUpgrade", + Use: "cancel-upgrade-proposal", + Short: "Submit a proposal to cancel a planned chain upgrade.", + GovProposal: true, + }, + { + RpcMethod: "SoftwareUpgrade", + Skip: true, // skipped because authority gated + }, + }, + EnhanceCustomCommand: true, + }, + } +} diff --git a/vendor-shims/cosmossdk-x-upgrade/client/cli/parse.go b/vendor-shims/cosmossdk-x-upgrade/client/cli/parse.go new file mode 100644 index 00000000..8171ba2f --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/client/cli/parse.go @@ -0,0 +1,21 @@ +package cli + +import ( + "github.com/spf13/pflag" + + "cosmossdk.io/x/upgrade/types" +) + +func parsePlan(fs *pflag.FlagSet, name string) (types.Plan, error) { + height, err := fs.GetInt64(FlagUpgradeHeight) + if err != nil { + return types.Plan{}, err + } + + info, err := fs.GetString(FlagUpgradeInfo) + if err != nil { + return types.Plan{}, err + } + + return types.Plan{Name: name, Height: height, Info: info}, nil +} diff --git a/vendor-shims/cosmossdk-x-upgrade/client/cli/parse_test.go b/vendor-shims/cosmossdk-x-upgrade/client/cli/parse_test.go new file mode 100644 index 00000000..d4f9b4bb --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/client/cli/parse_test.go @@ -0,0 +1,33 @@ +package cli + +import ( + "strconv" + "testing" + + "github.com/stretchr/testify/require" + + "cosmossdk.io/x/upgrade/types" + + addresscodec "github.com/cosmos/cosmos-sdk/codec/address" +) + +func TestParsePlan(t *testing.T) { + fs := NewCmdSubmitUpgradeProposal(addresscodec.NewBech32Codec("cosmos")).Flags() + + proposal := types.MsgSoftwareUpgrade{ + Plan: types.Plan{ + Name: "plan name", + Height: 123456, + Info: "plan info", + }, + } + + require.NoError(t, fs.Set(FlagUpgradeHeight, strconv.FormatInt(proposal.Plan.Height, 10))) + require.NoError(t, fs.Set(FlagUpgradeInfo, proposal.Plan.Info)) + + p, err := parsePlan(fs, proposal.Plan.Name) + require.NoError(t, err) + require.Equal(t, p.Name, proposal.Plan.Name) + require.Equal(t, p.Height, proposal.Plan.Height) + require.Equal(t, p.Info, proposal.Plan.Info) +} diff --git a/vendor-shims/cosmossdk-x-upgrade/client/cli/tx.go b/vendor-shims/cosmossdk-x-upgrade/client/cli/tx.go new file mode 100644 index 00000000..d798dd79 --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/client/cli/tx.go @@ -0,0 +1,194 @@ +package cli + +import ( + "fmt" + "os" + "path/filepath" + + "github.com/spf13/cobra" + + addresscodec "cosmossdk.io/core/address" + "cosmossdk.io/x/upgrade/plan" + "cosmossdk.io/x/upgrade/types" + + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/client/tx" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/address" + "github.com/cosmos/cosmos-sdk/x/gov/client/cli" +) + +const ( + FlagUpgradeHeight = "upgrade-height" + FlagUpgradeInfo = "upgrade-info" + FlagNoValidate = "no-validate" + FlagNoChecksumRequired = "no-checksum-required" + FlagDaemonName = "daemon-name" + FlagAuthority = "authority" +) + +// GetTxCmd returns the transaction commands for this module +func GetTxCmd(ac addresscodec.Codec) *cobra.Command { + cmd := &cobra.Command{ + Use: types.ModuleName, + Short: "Upgrade transaction subcommands", + } + + cmd.AddCommand( + NewCmdSubmitUpgradeProposal(ac), + NewCmdSubmitCancelUpgradeProposal(ac), + ) + + return cmd +} + +// NewCmdSubmitUpgradeProposal implements a command handler for submitting a software upgrade proposal transaction. +func NewCmdSubmitUpgradeProposal(ac addresscodec.Codec) *cobra.Command { + cmd := &cobra.Command{ + Use: "software-upgrade [name] (--upgrade-height [height]) (--upgrade-info [info]) [flags]", + Args: cobra.ExactArgs(1), + Short: "Submit a software upgrade proposal", + Long: "Submit a software upgrade along with an initial deposit.\n" + + "Please specify a unique name and height for the upgrade to take effect.\n" + + "You may include info to reference a binary download link, in a format compatible with: https://docs.cosmos.network/main/tooling/cosmovisor", + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + proposal, err := cli.ReadGovPropFlags(clientCtx, cmd.Flags()) + if err != nil { + return err + } + + name := args[0] + p, err := parsePlan(cmd.Flags(), name) + if err != nil { + return err + } + + noValidate, err := cmd.Flags().GetBool(FlagNoValidate) + if err != nil { + return err + } + + if !noValidate { + daemonName, err := cmd.Flags().GetString(FlagDaemonName) + if err != nil { + return err + } + + noChecksum, err := cmd.Flags().GetBool(FlagNoChecksumRequired) + if err != nil { + return err + } + + var planInfo *plan.Info + if planInfo, err = plan.ParseInfo(p.Info, plan.ParseOptionEnforceChecksum(!noChecksum)); err != nil { + return err + } + + if err = planInfo.ValidateFull(daemonName); err != nil { + return err + } + } + + authority, _ := cmd.Flags().GetString(FlagAuthority) + if authority != "" { + if _, err = ac.StringToBytes(authority); err != nil { + return fmt.Errorf("invalid authority address: %w", err) + } + } else { + authority = sdk.AccAddress(address.Module("gov")).String() + } + + if err := proposal.SetMsgs([]sdk.Msg{ + &types.MsgSoftwareUpgrade{ + Authority: authority, + Plan: p, + }, + }); err != nil { + return fmt.Errorf("failed to create submit upgrade proposal message: %w", err) + } + + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), proposal) + }, + } + + cmd.Flags().Int64(FlagUpgradeHeight, 0, "The height at which the upgrade must happen") + cmd.Flags().String(FlagUpgradeInfo, "", "Info for the upgrade plan such as new version download urls, etc.") + cmd.Flags().Bool(FlagNoValidate, false, "Skip validation of the upgrade info (dangerous!)") + cmd.Flags().Bool(FlagNoChecksumRequired, false, "Skip requirement of checksums for binaries in the upgrade info") + cmd.Flags().String(FlagDaemonName, getDefaultDaemonName(), "The name of the executable being upgraded (for upgrade-info validation). Default is the DAEMON_NAME env var if set, or else this executable") + cmd.Flags().String(FlagAuthority, "", "The address of the upgrade module authority (defaults to gov)") + + // add common proposal flags + flags.AddTxFlagsToCmd(cmd) + cli.AddGovPropFlagsToCmd(cmd) + _ = cmd.MarkFlagRequired(cli.FlagTitle) + + return cmd +} + +// NewCmdSubmitCancelUpgradeProposal implements a command handler for submitting a software upgrade cancel proposal transaction. +func NewCmdSubmitCancelUpgradeProposal(ac addresscodec.Codec) *cobra.Command { + cmd := &cobra.Command{ + Use: "cancel-software-upgrade [flags]", + Args: cobra.ExactArgs(0), + Short: "Cancel the current software upgrade proposal", + Long: "Cancel a software upgrade along with an initial deposit.", + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + proposal, err := cli.ReadGovPropFlags(clientCtx, cmd.Flags()) + if err != nil { + return err + } + + authority, _ := cmd.Flags().GetString(FlagAuthority) + if authority != "" { + if _, err = ac.StringToBytes(authority); err != nil { + return fmt.Errorf("invalid authority address: %w", err) + } + } else { + authority = sdk.AccAddress(address.Module("gov")).String() + } + + if err := proposal.SetMsgs([]sdk.Msg{ + &types.MsgCancelUpgrade{ + Authority: authority, + }, + }); err != nil { + return fmt.Errorf("failed to create cancel upgrade proposal message: %w", err) + } + + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), proposal) + }, + } + + cmd.Flags().String(FlagAuthority, "", "The address of the upgrade module authority (defaults to gov)") + + // add common proposal flags + flags.AddTxFlagsToCmd(cmd) + cli.AddGovPropFlagsToCmd(cmd) + _ = cmd.MarkFlagRequired(cli.FlagTitle) + + return cmd +} + +// getDefaultDaemonName gets the default name to use for the daemon. +// If a DAEMON_NAME env var is set, that is used. +// Otherwise, the last part of the currently running executable is used. +func getDefaultDaemonName() string { + // DAEMON_NAME is specifically used here to correspond with the Cosmovisor setup env vars. + name := os.Getenv("DAEMON_NAME") + if len(name) == 0 { + _, name = filepath.Split(os.Args[0]) + } + return name +} diff --git a/vendor-shims/cosmossdk-x-upgrade/doc.go b/vendor-shims/cosmossdk-x-upgrade/doc.go new file mode 100644 index 00000000..a66ab41e --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/doc.go @@ -0,0 +1,12 @@ +/* +Package upgrade provides a Cosmos SDK module that can be used for smoothly upgrading a live Cosmos chain to a +new software version. It accomplishes this by providing a BeginBlocker hook that prevents the blockchain state +machine from proceeding once a pre-defined upgrade block height has been reached. The module does not prescribe +anything regarding how governance decides to do an upgrade, but just the mechanism for coordinating the upgrade safely. +Without software support for upgrades, upgrading a live chain is risky because all of the validators need to pause +their state machines at exactly the same point in the process. If this is not done correctly, there can be state +inconsistencies which are hard to recover from. + +For more information, read the documentation on https://docs.cosmos.network/main/modules/upgrade. +*/ +package upgrade diff --git a/vendor-shims/cosmossdk-x-upgrade/exported/exported.go b/vendor-shims/cosmossdk-x-upgrade/exported/exported.go new file mode 100644 index 00000000..859f7fe1 --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/exported/exported.go @@ -0,0 +1,7 @@ +package exported + +// ProtocolVersionSetter defines the interface fulfilled by BaseApp +// which allows setting it's appVersion field. +type ProtocolVersionSetter interface { + SetProtocolVersion(uint64) +} diff --git a/vendor-shims/cosmossdk-x-upgrade/go.mod b/vendor-shims/cosmossdk-x-upgrade/go.mod new file mode 100644 index 00000000..4bd517e8 --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/go.mod @@ -0,0 +1,211 @@ +module cosmossdk.io/x/upgrade + +go 1.23.2 + +require ( + cosmossdk.io/api v0.9.2 + cosmossdk.io/core v0.11.3 + cosmossdk.io/depinject v1.2.0 + cosmossdk.io/errors v1.0.2 + cosmossdk.io/log v1.5.1 + cosmossdk.io/store v1.1.2 + github.com/cometbft/cometbft v0.38.17 + github.com/cosmos/cosmos-db v1.1.1 + github.com/cosmos/cosmos-proto v1.0.0-beta.5 + github.com/cosmos/cosmos-sdk v0.53.0 + github.com/cosmos/gogoproto v1.7.0 + github.com/golang/protobuf v1.5.4 + github.com/grpc-ecosystem/grpc-gateway v1.16.0 + github.com/hashicorp/go-cleanhttp v0.5.2 + github.com/hashicorp/go-getter v1.7.8 + github.com/hashicorp/go-metrics v0.5.4 + github.com/spf13/cast v1.7.1 + github.com/spf13/cobra v1.9.1 + github.com/spf13/pflag v1.0.6 + github.com/spf13/viper v1.20.1 + github.com/stretchr/testify v1.10.0 + google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463 + google.golang.org/grpc v1.72.0 + google.golang.org/protobuf v1.36.6 +) + +require ( + cel.dev/expr v0.20.0 // indirect + cloud.google.com/go v0.116.0 // indirect + cloud.google.com/go/auth v0.14.1 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.7 // indirect + cloud.google.com/go/compute/metadata v0.6.0 // indirect + cloud.google.com/go/iam v1.2.2 // indirect + cloud.google.com/go/monitoring v1.21.2 // indirect + cloud.google.com/go/storage v1.49.0 // indirect + cosmossdk.io/collections v1.2.0 // indirect + cosmossdk.io/math v1.5.3 // indirect + cosmossdk.io/schema v1.1.0 // indirect + cosmossdk.io/x/tx v0.14.0 // indirect + filippo.io/edwards25519 v1.1.0 // indirect + github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect + github.com/99designs/keyring v1.2.1 // indirect + github.com/DataDog/datadog-go v3.2.0+incompatible // indirect + github.com/DataDog/zstd v1.5.7 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.26.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1 // indirect + github.com/aws/aws-sdk-go v1.44.224 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect + github.com/bgentry/speakeasy v0.2.0 // indirect + github.com/bytedance/sonic v1.13.2 // indirect + github.com/bytedance/sonic/loader v0.2.4 // indirect + github.com/cenkalti/backoff/v4 v4.3.0 // indirect + github.com/cespare/xxhash/v2 v2.3.0 // indirect + github.com/chzyer/readline v1.5.1 // indirect + github.com/cloudwego/base64x v0.1.5 // indirect + github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42 // indirect + github.com/cockroachdb/errors v1.11.3 // indirect + github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce // indirect + github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b // indirect + github.com/cockroachdb/pebble v1.1.5 // indirect + github.com/cockroachdb/redact v1.1.6 // indirect + github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 // indirect + github.com/cometbft/cometbft-db v0.14.1 // indirect + github.com/cosmos/btcutil v1.0.5 // indirect + github.com/cosmos/go-bip39 v1.0.0 // indirect + github.com/cosmos/gogogateway v1.2.0 // indirect + github.com/cosmos/iavl v1.2.2 // indirect + github.com/cosmos/ics23/go v0.11.0 // indirect + github.com/cosmos/ledger-cosmos-go v0.14.0 // indirect + github.com/danieljoos/wincred v1.1.2 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 // indirect + github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f // indirect + github.com/dgraph-io/badger/v4 v4.2.0 // indirect + github.com/dgraph-io/ristretto v0.1.1 // indirect + github.com/dustin/go-humanize v1.0.1 // indirect + github.com/dvsekhvalnov/jose2go v1.6.0 // indirect + github.com/emicklei/dot v1.6.2 // indirect + github.com/envoyproxy/go-control-plane/envoy v1.32.4 // indirect + github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect + github.com/fatih/color v1.15.0 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/fsnotify/fsnotify v1.9.0 // indirect + github.com/getsentry/sentry-go v0.27.0 // indirect + github.com/go-jose/go-jose/v4 v4.0.5 // indirect + github.com/go-kit/kit v0.13.0 // indirect + github.com/go-kit/log v0.2.1 // indirect + github.com/go-logfmt/logfmt v0.6.0 // indirect + github.com/go-logr/logr v1.4.2 // indirect + github.com/go-logr/stdr v1.2.2 // indirect + github.com/go-viper/mapstructure/v2 v2.2.1 // indirect + github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 // indirect + github.com/gogo/googleapis v1.4.1 // indirect + github.com/gogo/protobuf v1.3.2 // indirect + github.com/golang/glog v1.2.4 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/snappy v0.0.4 // indirect + github.com/google/btree v1.1.3 // indirect + github.com/google/flatbuffers v2.0.8+incompatible // indirect + github.com/google/go-cmp v0.7.0 // indirect + github.com/google/orderedcode v0.0.1 // indirect + github.com/google/s2a-go v0.1.9 // indirect + github.com/google/uuid v1.6.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.4 // indirect + github.com/googleapis/gax-go/v2 v2.14.1 // 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 + github.com/hashicorp/go-hclog v1.6.3 // indirect + github.com/hashicorp/go-immutable-radix v1.3.1 // indirect + github.com/hashicorp/go-plugin v1.6.3 // indirect + github.com/hashicorp/go-safetemp v1.0.0 // indirect + github.com/hashicorp/go-version v1.6.0 // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect + github.com/hashicorp/yamux v0.1.2 // indirect + github.com/hdevalence/ed25519consensus v0.2.0 // indirect + github.com/huandu/skiplist v1.2.1 // indirect + github.com/iancoleman/strcase v0.3.0 // indirect + github.com/improbable-eng/grpc-web v0.15.0 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/jmespath/go-jmespath v0.4.0 // indirect + github.com/jmhodges/levigo v1.0.0 // indirect + github.com/klauspost/compress v1.18.0 // indirect + github.com/klauspost/cpuid/v2 v2.2.10 // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/kr/text v0.2.0 // indirect + github.com/lib/pq v1.10.9 // indirect + github.com/linxGnu/grocksdb v1.8.14 // indirect + github.com/manifoldco/promptui v0.9.0 // indirect + github.com/mattn/go-colorable v0.1.14 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect + github.com/minio/highwayhash v1.0.3 // indirect + github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/mitchellh/go-testing-interface v1.14.1 // indirect + github.com/mtibben/percent v0.2.1 // indirect + github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect + github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a // indirect + github.com/oklog/run v1.1.0 // indirect + github.com/pelletier/go-toml/v2 v2.2.4 // indirect + github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/prometheus/client_golang v1.22.0 // indirect + github.com/prometheus/client_model v0.6.1 // indirect + github.com/prometheus/common v0.63.0 // indirect + github.com/prometheus/procfs v0.15.1 // indirect + github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 // indirect + github.com/rogpeppe/go-internal v1.14.1 // indirect + github.com/rs/cors v1.11.1 // indirect + github.com/rs/zerolog v1.34.0 // indirect + github.com/sagikazarmark/locafero v0.7.0 // indirect + github.com/sasha-s/go-deadlock v0.3.5 // indirect + github.com/sourcegraph/conc v0.3.0 // indirect + github.com/spf13/afero v1.12.0 // indirect + github.com/spiffe/go-spiffe/v2 v2.5.0 // indirect + github.com/subosito/gotenv v1.6.0 // indirect + github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect + github.com/tendermint/go-amino v0.16.0 // indirect + github.com/tidwall/btree v1.7.0 // indirect + github.com/twitchyliquid64/golang-asm v0.15.1 // indirect + github.com/ulikunitz/xz v0.5.11 // indirect + github.com/zeebo/errs v1.4.0 // indirect + github.com/zondax/hid v0.9.2 // indirect + github.com/zondax/ledger-go v0.14.3 // indirect + go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 // indirect + go.opencensus.io v0.24.0 // indirect + go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/contrib/detectors/gcp v1.34.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.58.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 // indirect + go.opentelemetry.io/otel v1.34.0 // indirect + go.opentelemetry.io/otel/metric v1.34.0 // indirect + go.opentelemetry.io/otel/sdk v1.34.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.34.0 // indirect + go.opentelemetry.io/otel/trace v1.34.0 // indirect + go.uber.org/mock v0.5.2 // indirect + go.uber.org/multierr v1.11.0 // indirect + golang.org/x/arch v0.15.0 // indirect + golang.org/x/crypto v0.37.0 // indirect + golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 // indirect + golang.org/x/net v0.39.0 // indirect + golang.org/x/oauth2 v0.27.0 // indirect + golang.org/x/sync v0.13.0 // indirect + golang.org/x/sys v0.32.0 // indirect + golang.org/x/term v0.31.0 // indirect + golang.org/x/text v0.24.0 // indirect + golang.org/x/time v0.10.0 // indirect + google.golang.org/api v0.222.0 // indirect + google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250422160041-2d3770c4ea7f // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + gotest.tools/v3 v3.5.2 // indirect + nhooyr.io/websocket v1.8.6 // indirect + pgregory.net/rapid v1.2.0 // indirect + sigs.k8s.io/yaml v1.4.0 // indirect +) + +// Fix upstream GHSA-h395-qcrw-5vmq and GHSA-3vp4-m3rf-835h vulnerabilities. +// TODO Remove it: https://github.com/cosmos/cosmos-sdk/issues/10409 +replace github.com/gin-gonic/gin => github.com/gin-gonic/gin v1.9.1 diff --git a/vendor-shims/cosmossdk-x-upgrade/go.sum b/vendor-shims/cosmossdk-x-upgrade/go.sum new file mode 100644 index 00000000..7f6c3109 --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/go.sum @@ -0,0 +1,2460 @@ +cel.dev/expr v0.20.0 h1:OunBvVCfvpWlt4dN7zg3FM6TDkzOePe1+foGJ9AXeeI= +cel.dev/expr v0.20.0/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw= +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= +cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= +cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= +cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= +cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= +cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= +cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= +cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= +cloud.google.com/go v0.100.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U= +cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= +cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= +cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= +cloud.google.com/go v0.104.0/go.mod h1:OO6xxXdJyvuJPcEPBLN9BJPD+jep5G1+2U5B5gkRYtA= +cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= +cloud.google.com/go v0.107.0/go.mod h1:wpc2eNrD7hXUTy8EKS10jkxpZBjASrORK7goS+3YX2I= +cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= +cloud.google.com/go v0.116.0 h1:B3fRrSDkLRt5qSHWe40ERJvhvnQwdZiHu0bJOpldweE= +cloud.google.com/go v0.116.0/go.mod h1:cEPSRWPzZEswwdr9BxE6ChEn01dWlTaF05LiC2Xs70U= +cloud.google.com/go/accessapproval v1.4.0/go.mod h1:zybIuC3KpDOvotz59lFe5qxRZx6C75OtwbisN56xYB4= +cloud.google.com/go/accessapproval v1.5.0/go.mod h1:HFy3tuiGvMdcd/u+Cu5b9NkO1pEICJ46IR82PoUdplw= +cloud.google.com/go/accessapproval v1.6.0/go.mod h1:R0EiYnwV5fsRFiKZkPHr6mwyk2wxUJ30nL4j2pcFY2E= +cloud.google.com/go/accesscontextmanager v1.3.0/go.mod h1:TgCBehyr5gNMz7ZaH9xubp+CE8dkrszb4oK9CWyvD4o= +cloud.google.com/go/accesscontextmanager v1.4.0/go.mod h1:/Kjh7BBu/Gh83sv+K60vN9QE5NJcd80sU33vIe2IFPE= +cloud.google.com/go/accesscontextmanager v1.6.0/go.mod h1:8XCvZWfYw3K/ji0iVnp+6pu7huxoQTLmxAbVjbloTtM= +cloud.google.com/go/accesscontextmanager v1.7.0/go.mod h1:CEGLewx8dwa33aDAZQujl7Dx+uYhS0eay198wB/VumQ= +cloud.google.com/go/aiplatform v1.22.0/go.mod h1:ig5Nct50bZlzV6NvKaTwmplLLddFx0YReh9WfTO5jKw= +cloud.google.com/go/aiplatform v1.24.0/go.mod h1:67UUvRBKG6GTayHKV8DBv2RtR1t93YRu5B1P3x99mYY= +cloud.google.com/go/aiplatform v1.27.0/go.mod h1:Bvxqtl40l0WImSb04d0hXFU7gDOiq9jQmorivIiWcKg= +cloud.google.com/go/aiplatform v1.35.0/go.mod h1:7MFT/vCaOyZT/4IIFfxH4ErVg/4ku6lKv3w0+tFTgXQ= +cloud.google.com/go/aiplatform v1.36.1/go.mod h1:WTm12vJRPARNvJ+v6P52RDHCNe4AhvjcIZ/9/RRHy/k= +cloud.google.com/go/aiplatform v1.37.0/go.mod h1:IU2Cv29Lv9oCn/9LkFiiuKfwrRTq+QQMbW+hPCxJGZw= +cloud.google.com/go/analytics v0.11.0/go.mod h1:DjEWCu41bVbYcKyvlws9Er60YE4a//bK6mnhWvQeFNI= +cloud.google.com/go/analytics v0.12.0/go.mod h1:gkfj9h6XRf9+TS4bmuhPEShsh3hH8PAZzm/41OOhQd4= +cloud.google.com/go/analytics v0.17.0/go.mod h1:WXFa3WSym4IZ+JiKmavYdJwGG/CvpqiqczmL59bTD9M= +cloud.google.com/go/analytics v0.18.0/go.mod h1:ZkeHGQlcIPkw0R/GW+boWHhCOR43xz9RN/jn7WcqfIE= +cloud.google.com/go/analytics v0.19.0/go.mod h1:k8liqf5/HCnOUkbawNtrWWc+UAzyDlW89doe8TtoDsE= +cloud.google.com/go/apigateway v1.3.0/go.mod h1:89Z8Bhpmxu6AmUxuVRg/ECRGReEdiP3vQtk4Z1J9rJk= +cloud.google.com/go/apigateway v1.4.0/go.mod h1:pHVY9MKGaH9PQ3pJ4YLzoj6U5FUDeDFBllIz7WmzJoc= +cloud.google.com/go/apigateway v1.5.0/go.mod h1:GpnZR3Q4rR7LVu5951qfXPJCHquZt02jf7xQx7kpqN8= +cloud.google.com/go/apigeeconnect v1.3.0/go.mod h1:G/AwXFAKo0gIXkPTVfZDd2qA1TxBXJ3MgMRBQkIi9jc= +cloud.google.com/go/apigeeconnect v1.4.0/go.mod h1:kV4NwOKqjvt2JYR0AoIWo2QGfoRtn/pkS3QlHp0Ni04= +cloud.google.com/go/apigeeconnect v1.5.0/go.mod h1:KFaCqvBRU6idyhSNyn3vlHXc8VMDJdRmwDF6JyFRqZ8= +cloud.google.com/go/apigeeregistry v0.4.0/go.mod h1:EUG4PGcsZvxOXAdyEghIdXwAEi/4MEaoqLMLDMIwKXY= +cloud.google.com/go/apigeeregistry v0.5.0/go.mod h1:YR5+s0BVNZfVOUkMa5pAR2xGd0A473vA5M7j247o1wM= +cloud.google.com/go/apigeeregistry v0.6.0/go.mod h1:BFNzW7yQVLZ3yj0TKcwzb8n25CFBri51GVGOEUcgQsc= +cloud.google.com/go/apikeys v0.4.0/go.mod h1:XATS/yqZbaBK0HOssf+ALHp8jAlNHUgyfprvNcBIszU= +cloud.google.com/go/apikeys v0.5.0/go.mod h1:5aQfwY4D+ewMMWScd3hm2en3hCj+BROlyrt3ytS7KLI= +cloud.google.com/go/apikeys v0.6.0/go.mod h1:kbpXu5upyiAlGkKrJgQl8A0rKNNJ7dQ377pdroRSSi8= +cloud.google.com/go/appengine v1.4.0/go.mod h1:CS2NhuBuDXM9f+qscZ6V86m1MIIqPj3WC/UoEuR1Sno= +cloud.google.com/go/appengine v1.5.0/go.mod h1:TfasSozdkFI0zeoxW3PTBLiNqRmzraodCWatWI9Dmak= +cloud.google.com/go/appengine v1.6.0/go.mod h1:hg6i0J/BD2cKmDJbaFSYHFyZkgBEfQrDg/X0V5fJn84= +cloud.google.com/go/appengine v1.7.0/go.mod h1:eZqpbHFCqRGa2aCdope7eC0SWLV1j0neb/QnMJVWx6A= +cloud.google.com/go/appengine v1.7.1/go.mod h1:IHLToyb/3fKutRysUlFO0BPt5j7RiQ45nrzEJmKTo6E= +cloud.google.com/go/area120 v0.5.0/go.mod h1:DE/n4mp+iqVyvxHN41Vf1CR602GiHQjFPusMFW6bGR4= +cloud.google.com/go/area120 v0.6.0/go.mod h1:39yFJqWVgm0UZqWTOdqkLhjoC7uFfgXRC8g/ZegeAh0= +cloud.google.com/go/area120 v0.7.0/go.mod h1:a3+8EUD1SX5RUcCs3MY5YasiO1z6yLiNLRiFrykbynY= +cloud.google.com/go/area120 v0.7.1/go.mod h1:j84i4E1RboTWjKtZVWXPqvK5VHQFJRF2c1Nm69pWm9k= +cloud.google.com/go/artifactregistry v1.6.0/go.mod h1:IYt0oBPSAGYj/kprzsBjZ/4LnG/zOcHyFHjWPCi6SAQ= +cloud.google.com/go/artifactregistry v1.7.0/go.mod h1:mqTOFOnGZx8EtSqK/ZWcsm/4U8B77rbcLP6ruDU2Ixk= +cloud.google.com/go/artifactregistry v1.8.0/go.mod h1:w3GQXkJX8hiKN0v+at4b0qotwijQbYUqF2GWkZzAhC0= +cloud.google.com/go/artifactregistry v1.9.0/go.mod h1:2K2RqvA2CYvAeARHRkLDhMDJ3OXy26h3XW+3/Jh2uYc= +cloud.google.com/go/artifactregistry v1.11.1/go.mod h1:lLYghw+Itq9SONbCa1YWBoWs1nOucMH0pwXN1rOBZFI= +cloud.google.com/go/artifactregistry v1.11.2/go.mod h1:nLZns771ZGAwVLzTX/7Al6R9ehma4WUEhZGWV6CeQNQ= +cloud.google.com/go/artifactregistry v1.12.0/go.mod h1:o6P3MIvtzTOnmvGagO9v/rOjjA0HmhJ+/6KAXrmYDCI= +cloud.google.com/go/artifactregistry v1.13.0/go.mod h1:uy/LNfoOIivepGhooAUpL1i30Hgee3Cu0l4VTWHUC08= +cloud.google.com/go/asset v1.5.0/go.mod h1:5mfs8UvcM5wHhqtSv8J1CtxxaQq3AdBxxQi2jGW/K4o= +cloud.google.com/go/asset v1.7.0/go.mod h1:YbENsRK4+xTiL+Ofoj5Ckf+O17kJtgp3Y3nn4uzZz5s= +cloud.google.com/go/asset v1.8.0/go.mod h1:mUNGKhiqIdbr8X7KNayoYvyc4HbbFO9URsjbytpUaW0= +cloud.google.com/go/asset v1.9.0/go.mod h1:83MOE6jEJBMqFKadM9NLRcs80Gdw76qGuHn8m3h8oHQ= +cloud.google.com/go/asset v1.10.0/go.mod h1:pLz7uokL80qKhzKr4xXGvBQXnzHn5evJAEAtZiIb0wY= +cloud.google.com/go/asset v1.11.1/go.mod h1:fSwLhbRvC9p9CXQHJ3BgFeQNM4c9x10lqlrdEUYXlJo= +cloud.google.com/go/asset v1.12.0/go.mod h1:h9/sFOa4eDIyKmH6QMpm4eUK3pDojWnUhTgJlk762Hg= +cloud.google.com/go/asset v1.13.0/go.mod h1:WQAMyYek/b7NBpYq/K4KJWcRqzoalEsxz/t/dTk4THw= +cloud.google.com/go/assuredworkloads v1.5.0/go.mod h1:n8HOZ6pff6re5KYfBXcFvSViQjDwxFkAkmUFffJRbbY= +cloud.google.com/go/assuredworkloads v1.6.0/go.mod h1:yo2YOk37Yc89Rsd5QMVECvjaMKymF9OP+QXWlKXUkXw= +cloud.google.com/go/assuredworkloads v1.7.0/go.mod h1:z/736/oNmtGAyU47reJgGN+KVoYoxeLBoj4XkKYscNI= +cloud.google.com/go/assuredworkloads v1.8.0/go.mod h1:AsX2cqyNCOvEQC8RMPnoc0yEarXQk6WEKkxYfL6kGIo= +cloud.google.com/go/assuredworkloads v1.9.0/go.mod h1:kFuI1P78bplYtT77Tb1hi0FMxM0vVpRC7VVoJC3ZoT0= +cloud.google.com/go/assuredworkloads v1.10.0/go.mod h1:kwdUQuXcedVdsIaKgKTp9t0UJkE5+PAVNhdQm4ZVq2E= +cloud.google.com/go/auth v0.14.1 h1:AwoJbzUdxA/whv1qj3TLKwh3XX5sikny2fc40wUl+h0= +cloud.google.com/go/auth v0.14.1/go.mod h1:4JHUxlGXisL0AW8kXPtUF6ztuOksyfUQNFjfsOCXkPM= +cloud.google.com/go/auth/oauth2adapt v0.2.7 h1:/Lc7xODdqcEw8IrZ9SvwnlLX6j9FHQM74z6cBk9Rw6M= +cloud.google.com/go/auth/oauth2adapt v0.2.7/go.mod h1:NTbTTzfvPl1Y3V1nPpOgl2w6d/FjO7NNUQaWSox6ZMc= +cloud.google.com/go/automl v1.5.0/go.mod h1:34EjfoFGMZ5sgJ9EoLsRtdPSNZLcfflJR39VbVNS2M0= +cloud.google.com/go/automl v1.6.0/go.mod h1:ugf8a6Fx+zP0D59WLhqgTDsQI9w07o64uf/Is3Nh5p8= +cloud.google.com/go/automl v1.7.0/go.mod h1:RL9MYCCsJEOmt0Wf3z9uzG0a7adTT1fe+aObgSpkCt8= +cloud.google.com/go/automl v1.8.0/go.mod h1:xWx7G/aPEe/NP+qzYXktoBSDfjO+vnKMGgsApGJJquM= +cloud.google.com/go/automl v1.12.0/go.mod h1:tWDcHDp86aMIuHmyvjuKeeHEGq76lD7ZqfGLN6B0NuU= +cloud.google.com/go/baremetalsolution v0.3.0/go.mod h1:XOrocE+pvK1xFfleEnShBlNAXf+j5blPPxrhjKgnIFc= +cloud.google.com/go/baremetalsolution v0.4.0/go.mod h1:BymplhAadOO/eBa7KewQ0Ppg4A4Wplbn+PsFKRLo0uI= +cloud.google.com/go/baremetalsolution v0.5.0/go.mod h1:dXGxEkmR9BMwxhzBhV0AioD0ULBmuLZI8CdwalUxuss= +cloud.google.com/go/batch v0.3.0/go.mod h1:TR18ZoAekj1GuirsUsR1ZTKN3FC/4UDnScjT8NXImFE= +cloud.google.com/go/batch v0.4.0/go.mod h1:WZkHnP43R/QCGQsZ+0JyG4i79ranE2u8xvjq/9+STPE= +cloud.google.com/go/batch v0.7.0/go.mod h1:vLZN95s6teRUqRQ4s3RLDsH8PvboqBK+rn1oevL159g= +cloud.google.com/go/beyondcorp v0.2.0/go.mod h1:TB7Bd+EEtcw9PCPQhCJtJGjk/7TC6ckmnSFS+xwTfm4= +cloud.google.com/go/beyondcorp v0.3.0/go.mod h1:E5U5lcrcXMsCuoDNyGrpyTm/hn7ne941Jz2vmksAxW8= +cloud.google.com/go/beyondcorp v0.4.0/go.mod h1:3ApA0mbhHx6YImmuubf5pyW8srKnCEPON32/5hj+RmM= +cloud.google.com/go/beyondcorp v0.5.0/go.mod h1:uFqj9X+dSfrheVp7ssLTaRHd2EHqSL4QZmH4e8WXGGU= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/bigquery v1.42.0/go.mod h1:8dRTJxhtG+vwBKzE5OseQn/hiydoQN3EedCaOdYmxRA= +cloud.google.com/go/bigquery v1.43.0/go.mod h1:ZMQcXHsl+xmU1z36G2jNGZmKp9zNY5BUua5wDgmNCfw= +cloud.google.com/go/bigquery v1.44.0/go.mod h1:0Y33VqXTEsbamHJvJHdFmtqHvMIY28aK1+dFsvaChGc= +cloud.google.com/go/bigquery v1.47.0/go.mod h1:sA9XOgy0A8vQK9+MWhEQTY6Tix87M/ZurWFIxmF9I/E= +cloud.google.com/go/bigquery v1.48.0/go.mod h1:QAwSz+ipNgfL5jxiaK7weyOhzdoAy1zFm0Nf1fysJac= +cloud.google.com/go/bigquery v1.49.0/go.mod h1:Sv8hMmTFFYBlt/ftw2uN6dFdQPzBlREY9yBh7Oy7/4Q= +cloud.google.com/go/bigquery v1.50.0/go.mod h1:YrleYEh2pSEbgTBZYMJ5SuSr0ML3ypjRB1zgf7pvQLU= +cloud.google.com/go/billing v1.4.0/go.mod h1:g9IdKBEFlItS8bTtlrZdVLWSSdSyFUZKXNS02zKMOZY= +cloud.google.com/go/billing v1.5.0/go.mod h1:mztb1tBc3QekhjSgmpf/CV4LzWXLzCArwpLmP2Gm88s= +cloud.google.com/go/billing v1.6.0/go.mod h1:WoXzguj+BeHXPbKfNWkqVtDdzORazmCjraY+vrxcyvI= +cloud.google.com/go/billing v1.7.0/go.mod h1:q457N3Hbj9lYwwRbnlD7vUpyjq6u5U1RAOArInEiD5Y= +cloud.google.com/go/billing v1.12.0/go.mod h1:yKrZio/eu+okO/2McZEbch17O5CB5NpZhhXG6Z766ss= +cloud.google.com/go/billing v1.13.0/go.mod h1:7kB2W9Xf98hP9Sr12KfECgfGclsH3CQR0R08tnRlRbc= +cloud.google.com/go/binaryauthorization v1.1.0/go.mod h1:xwnoWu3Y84jbuHa0zd526MJYmtnVXn0syOjaJgy4+dM= +cloud.google.com/go/binaryauthorization v1.2.0/go.mod h1:86WKkJHtRcv5ViNABtYMhhNWRrD1Vpi//uKEy7aYEfI= +cloud.google.com/go/binaryauthorization v1.3.0/go.mod h1:lRZbKgjDIIQvzYQS1p99A7/U1JqvqeZg0wiI5tp6tg0= +cloud.google.com/go/binaryauthorization v1.4.0/go.mod h1:tsSPQrBd77VLplV70GUhBf/Zm3FsKmgSqgm4UmiDItk= +cloud.google.com/go/binaryauthorization v1.5.0/go.mod h1:OSe4OU1nN/VswXKRBmciKpo9LulY41gch5c68htf3/Q= +cloud.google.com/go/certificatemanager v1.3.0/go.mod h1:n6twGDvcUBFu9uBgt4eYvvf3sQ6My8jADcOVwHmzadg= +cloud.google.com/go/certificatemanager v1.4.0/go.mod h1:vowpercVFyqs8ABSmrdV+GiFf2H/ch3KyudYQEMM590= +cloud.google.com/go/certificatemanager v1.6.0/go.mod h1:3Hh64rCKjRAX8dXgRAyOcY5vQ/fE1sh8o+Mdd6KPgY8= +cloud.google.com/go/channel v1.8.0/go.mod h1:W5SwCXDJsq/rg3tn3oG0LOxpAo6IMxNa09ngphpSlnk= +cloud.google.com/go/channel v1.9.0/go.mod h1:jcu05W0my9Vx4mt3/rEHpfxc9eKi9XwsdDL8yBMbKUk= +cloud.google.com/go/channel v1.11.0/go.mod h1:IdtI0uWGqhEeatSB62VOoJ8FSUhJ9/+iGkJVqp74CGE= +cloud.google.com/go/channel v1.12.0/go.mod h1:VkxCGKASi4Cq7TbXxlaBezonAYpp1GCnKMY6tnMQnLU= +cloud.google.com/go/cloudbuild v1.3.0/go.mod h1:WequR4ULxlqvMsjDEEEFnOG5ZSRSgWOywXYDb1vPE6U= +cloud.google.com/go/cloudbuild v1.4.0/go.mod h1:5Qwa40LHiOXmz3386FrjrYM93rM/hdRr7b53sySrTqA= +cloud.google.com/go/cloudbuild v1.6.0/go.mod h1:UIbc/w9QCbH12xX+ezUsgblrWv+Cv4Tw83GiSMHOn9M= +cloud.google.com/go/cloudbuild v1.7.0/go.mod h1:zb5tWh2XI6lR9zQmsm1VRA+7OCuve5d8S+zJUul8KTg= +cloud.google.com/go/cloudbuild v1.9.0/go.mod h1:qK1d7s4QlO0VwfYn5YuClDGg2hfmLZEb4wQGAbIgL1s= +cloud.google.com/go/clouddms v1.3.0/go.mod h1:oK6XsCDdW4Ib3jCCBugx+gVjevp2TMXFtgxvPSee3OM= +cloud.google.com/go/clouddms v1.4.0/go.mod h1:Eh7sUGCC+aKry14O1NRljhjyrr0NFC0G2cjwX0cByRk= +cloud.google.com/go/clouddms v1.5.0/go.mod h1:QSxQnhikCLUw13iAbffF2CZxAER3xDGNHjsTAkQJcQA= +cloud.google.com/go/cloudtasks v1.5.0/go.mod h1:fD92REy1x5woxkKEkLdvavGnPJGEn8Uic9nWuLzqCpY= +cloud.google.com/go/cloudtasks v1.6.0/go.mod h1:C6Io+sxuke9/KNRkbQpihnW93SWDU3uXt92nu85HkYI= +cloud.google.com/go/cloudtasks v1.7.0/go.mod h1:ImsfdYWwlWNJbdgPIIGJWC+gemEGTBK/SunNQQNCAb4= +cloud.google.com/go/cloudtasks v1.8.0/go.mod h1:gQXUIwCSOI4yPVK7DgTVFiiP0ZW/eQkydWzwVMdHxrI= +cloud.google.com/go/cloudtasks v1.9.0/go.mod h1:w+EyLsVkLWHcOaqNEyvcKAsWp9p29dL6uL9Nst1cI7Y= +cloud.google.com/go/cloudtasks v1.10.0/go.mod h1:NDSoTLkZ3+vExFEWu2UJV1arUyzVDAiZtdWcsUyNwBs= +cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= +cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= +cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= +cloud.google.com/go/compute v1.6.0/go.mod h1:T29tfhtVbq1wvAPo0E3+7vhgmkOYeXjhFvz/FMzPu0s= +cloud.google.com/go/compute v1.6.1/go.mod h1:g85FgpzFvNULZ+S8AYq87axRKuf2Kh7deLqV/jJ3thU= +cloud.google.com/go/compute v1.7.0/go.mod h1:435lt8av5oL9P3fv1OEzSbSUe+ybHXGMPQHHZWZxy9U= +cloud.google.com/go/compute v1.10.0/go.mod h1:ER5CLbMxl90o2jtNbGSbtfOpQKR0t15FOtRsugnLrlU= +cloud.google.com/go/compute v1.12.0/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= +cloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= +cloud.google.com/go/compute v1.13.0/go.mod h1:5aPTS0cUNMIc1CE546K+Th6weJUNQErARyZtRXDJ8GE= +cloud.google.com/go/compute v1.14.0/go.mod h1:YfLtxrj9sU4Yxv+sXzZkyPjEyPBZfXHUvjxega5vAdo= +cloud.google.com/go/compute v1.15.1/go.mod h1:bjjoF/NtFUrkD/urWfdHaKuOPDR5nWIs63rR+SXhcpA= +cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs= +cloud.google.com/go/compute v1.19.0/go.mod h1:rikpw2y+UMidAe9tISo04EHNOIf42RLYF/q8Bs93scU= +cloud.google.com/go/compute v1.19.1/go.mod h1:6ylj3a05WF8leseCdIf77NK0g1ey+nj5IKd5/kvShxE= +cloud.google.com/go/compute/metadata v0.1.0/go.mod h1:Z1VN+bulIf6bt4P/C37K4DyZYZEXYonfTBHHFPO/4UU= +cloud.google.com/go/compute/metadata v0.2.0/go.mod h1:zFmK7XCadkQkj6TtorcaGlCW1hT1fIilQDwofLpJ20k= +cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= +cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/compute/metadata v0.6.0 h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4j01OwKxG9I= +cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg= +cloud.google.com/go/contactcenterinsights v1.3.0/go.mod h1:Eu2oemoePuEFc/xKFPjbTuPSj0fYJcPls9TFlPNnHHY= +cloud.google.com/go/contactcenterinsights v1.4.0/go.mod h1:L2YzkGbPsv+vMQMCADxJoT9YiTTnSEd6fEvCeHTYVck= +cloud.google.com/go/contactcenterinsights v1.6.0/go.mod h1:IIDlT6CLcDoyv79kDv8iWxMSTZhLxSCofVV5W6YFM/w= +cloud.google.com/go/container v1.6.0/go.mod h1:Xazp7GjJSeUYo688S+6J5V+n/t+G5sKBTFkKNudGRxg= +cloud.google.com/go/container v1.7.0/go.mod h1:Dp5AHtmothHGX3DwwIHPgq45Y8KmNsgN3amoYfxVkLo= +cloud.google.com/go/container v1.13.1/go.mod h1:6wgbMPeQRw9rSnKBCAJXnds3Pzj03C4JHamr8asWKy4= +cloud.google.com/go/container v1.14.0/go.mod h1:3AoJMPhHfLDxLvrlVWaK57IXzaPnLaZq63WX59aQBfM= +cloud.google.com/go/container v1.15.0/go.mod h1:ft+9S0WGjAyjDggg5S06DXj+fHJICWg8L7isCQe9pQA= +cloud.google.com/go/containeranalysis v0.5.1/go.mod h1:1D92jd8gRR/c0fGMlymRgxWD3Qw9C1ff6/T7mLgVL8I= +cloud.google.com/go/containeranalysis v0.6.0/go.mod h1:HEJoiEIu+lEXM+k7+qLCci0h33lX3ZqoYFdmPcoO7s4= +cloud.google.com/go/containeranalysis v0.7.0/go.mod h1:9aUL+/vZ55P2CXfuZjS4UjQ9AgXoSw8Ts6lemfmxBxI= +cloud.google.com/go/containeranalysis v0.9.0/go.mod h1:orbOANbwk5Ejoom+s+DUCTTJ7IBdBQJDcSylAx/on9s= +cloud.google.com/go/datacatalog v1.3.0/go.mod h1:g9svFY6tuR+j+hrTw3J2dNcmI0dzmSiyOzm8kpLq0a0= +cloud.google.com/go/datacatalog v1.5.0/go.mod h1:M7GPLNQeLfWqeIm3iuiruhPzkt65+Bx8dAKvScX8jvs= +cloud.google.com/go/datacatalog v1.6.0/go.mod h1:+aEyF8JKg+uXcIdAmmaMUmZ3q1b/lKLtXCmXdnc0lbc= +cloud.google.com/go/datacatalog v1.7.0/go.mod h1:9mEl4AuDYWw81UGc41HonIHH7/sn52H0/tc8f8ZbZIE= +cloud.google.com/go/datacatalog v1.8.0/go.mod h1:KYuoVOv9BM8EYz/4eMFxrr4DUKhGIOXxZoKYF5wdISM= +cloud.google.com/go/datacatalog v1.8.1/go.mod h1:RJ58z4rMp3gvETA465Vg+ag8BGgBdnRPEMMSTr5Uv+M= +cloud.google.com/go/datacatalog v1.12.0/go.mod h1:CWae8rFkfp6LzLumKOnmVh4+Zle4A3NXLzVJ1d1mRm0= +cloud.google.com/go/datacatalog v1.13.0/go.mod h1:E4Rj9a5ZtAxcQJlEBTLgMTphfP11/lNaAshpoBgemX8= +cloud.google.com/go/dataflow v0.6.0/go.mod h1:9QwV89cGoxjjSR9/r7eFDqqjtvbKxAK2BaYU6PVk9UM= +cloud.google.com/go/dataflow v0.7.0/go.mod h1:PX526vb4ijFMesO1o202EaUmouZKBpjHsTlCtB4parQ= +cloud.google.com/go/dataflow v0.8.0/go.mod h1:Rcf5YgTKPtQyYz8bLYhFoIV/vP39eL7fWNcSOyFfLJE= +cloud.google.com/go/dataform v0.3.0/go.mod h1:cj8uNliRlHpa6L3yVhDOBrUXH+BPAO1+KFMQQNSThKo= +cloud.google.com/go/dataform v0.4.0/go.mod h1:fwV6Y4Ty2yIFL89huYlEkwUPtS7YZinZbzzj5S9FzCE= +cloud.google.com/go/dataform v0.5.0/go.mod h1:GFUYRe8IBa2hcomWplodVmUx/iTL0FrsauObOM3Ipr0= +cloud.google.com/go/dataform v0.6.0/go.mod h1:QPflImQy33e29VuapFdf19oPbE4aYTJxr31OAPV+ulA= +cloud.google.com/go/dataform v0.7.0/go.mod h1:7NulqnVozfHvWUBpMDfKMUESr+85aJsC/2O0o3jWPDE= +cloud.google.com/go/datafusion v1.4.0/go.mod h1:1Zb6VN+W6ALo85cXnM1IKiPw+yQMKMhB9TsTSRDo/38= +cloud.google.com/go/datafusion v1.5.0/go.mod h1:Kz+l1FGHB0J+4XF2fud96WMmRiq/wj8N9u007vyXZ2w= +cloud.google.com/go/datafusion v1.6.0/go.mod h1:WBsMF8F1RhSXvVM8rCV3AeyWVxcC2xY6vith3iw3S+8= +cloud.google.com/go/datalabeling v0.5.0/go.mod h1:TGcJ0G2NzcsXSE/97yWjIZO0bXj0KbVlINXMG9ud42I= +cloud.google.com/go/datalabeling v0.6.0/go.mod h1:WqdISuk/+WIGeMkpw/1q7bK/tFEZxsrFJOJdY2bXvTQ= +cloud.google.com/go/datalabeling v0.7.0/go.mod h1:WPQb1y08RJbmpM3ww0CSUAGweL0SxByuW2E+FU+wXcM= +cloud.google.com/go/dataplex v1.3.0/go.mod h1:hQuRtDg+fCiFgC8j0zV222HvzFQdRd+SVX8gdmFcZzA= +cloud.google.com/go/dataplex v1.4.0/go.mod h1:X51GfLXEMVJ6UN47ESVqvlsRplbLhcsAt0kZCCKsU0A= +cloud.google.com/go/dataplex v1.5.2/go.mod h1:cVMgQHsmfRoI5KFYq4JtIBEUbYwc3c7tXmIDhRmNNVQ= +cloud.google.com/go/dataplex v1.6.0/go.mod h1:bMsomC/aEJOSpHXdFKFGQ1b0TDPIeL28nJObeO1ppRs= +cloud.google.com/go/dataproc v1.7.0/go.mod h1:CKAlMjII9H90RXaMpSxQ8EU6dQx6iAYNPcYPOkSbi8s= +cloud.google.com/go/dataproc v1.8.0/go.mod h1:5OW+zNAH0pMpw14JVrPONsxMQYMBqJuzORhIBfBn9uI= +cloud.google.com/go/dataproc v1.12.0/go.mod h1:zrF3aX0uV3ikkMz6z4uBbIKyhRITnxvr4i3IjKsKrw4= +cloud.google.com/go/dataqna v0.5.0/go.mod h1:90Hyk596ft3zUQ8NkFfvICSIfHFh1Bc7C4cK3vbhkeo= +cloud.google.com/go/dataqna v0.6.0/go.mod h1:1lqNpM7rqNLVgWBJyk5NF6Uen2PHym0jtVJonplVsDA= +cloud.google.com/go/dataqna v0.7.0/go.mod h1:Lx9OcIIeqCrw1a6KdO3/5KMP1wAmTc0slZWwP12Qq3c= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/datastore v1.10.0/go.mod h1:PC5UzAmDEkAmkfaknstTYbNpgE49HAgW2J1gcgUfmdM= +cloud.google.com/go/datastore v1.11.0/go.mod h1:TvGxBIHCS50u8jzG+AW/ppf87v1of8nwzFNgEZU1D3c= +cloud.google.com/go/datastream v1.2.0/go.mod h1:i/uTP8/fZwgATHS/XFu0TcNUhuA0twZxxQ3EyCUQMwo= +cloud.google.com/go/datastream v1.3.0/go.mod h1:cqlOX8xlyYF/uxhiKn6Hbv6WjwPPuI9W2M9SAXwaLLQ= +cloud.google.com/go/datastream v1.4.0/go.mod h1:h9dpzScPhDTs5noEMQVWP8Wx8AFBRyS0s8KWPx/9r0g= +cloud.google.com/go/datastream v1.5.0/go.mod h1:6TZMMNPwjUqZHBKPQ1wwXpb0d5VDVPl2/XoS5yi88q4= +cloud.google.com/go/datastream v1.6.0/go.mod h1:6LQSuswqLa7S4rPAOZFVjHIG3wJIjZcZrw8JDEDJuIs= +cloud.google.com/go/datastream v1.7.0/go.mod h1:uxVRMm2elUSPuh65IbZpzJNMbuzkcvu5CjMqVIUHrww= +cloud.google.com/go/deploy v1.4.0/go.mod h1:5Xghikd4VrmMLNaF6FiRFDlHb59VM59YoDQnOUdsH/c= +cloud.google.com/go/deploy v1.5.0/go.mod h1:ffgdD0B89tToyW/U/D2eL0jN2+IEV/3EMuXHA0l4r+s= +cloud.google.com/go/deploy v1.6.0/go.mod h1:f9PTHehG/DjCom3QH0cntOVRm93uGBDt2vKzAPwpXQI= +cloud.google.com/go/deploy v1.8.0/go.mod h1:z3myEJnA/2wnB4sgjqdMfgxCA0EqC3RBTNcVPs93mtQ= +cloud.google.com/go/dialogflow v1.15.0/go.mod h1:HbHDWs33WOGJgn6rfzBW1Kv807BE3O1+xGbn59zZWI4= +cloud.google.com/go/dialogflow v1.16.1/go.mod h1:po6LlzGfK+smoSmTBnbkIZY2w8ffjz/RcGSS+sh1el0= +cloud.google.com/go/dialogflow v1.17.0/go.mod h1:YNP09C/kXA1aZdBgC/VtXX74G/TKn7XVCcVumTflA+8= +cloud.google.com/go/dialogflow v1.18.0/go.mod h1:trO7Zu5YdyEuR+BhSNOqJezyFQ3aUzz0njv7sMx/iek= +cloud.google.com/go/dialogflow v1.19.0/go.mod h1:JVmlG1TwykZDtxtTXujec4tQ+D8SBFMoosgy+6Gn0s0= +cloud.google.com/go/dialogflow v1.29.0/go.mod h1:b+2bzMe+k1s9V+F2jbJwpHPzrnIyHihAdRFMtn2WXuM= +cloud.google.com/go/dialogflow v1.31.0/go.mod h1:cuoUccuL1Z+HADhyIA7dci3N5zUssgpBJmCzI6fNRB4= +cloud.google.com/go/dialogflow v1.32.0/go.mod h1:jG9TRJl8CKrDhMEcvfcfFkkpp8ZhgPz3sBGmAUYJ2qE= +cloud.google.com/go/dlp v1.6.0/go.mod h1:9eyB2xIhpU0sVwUixfBubDoRwP+GjeUoxxeueZmqvmM= +cloud.google.com/go/dlp v1.7.0/go.mod h1:68ak9vCiMBjbasxeVD17hVPxDEck+ExiHavX8kiHG+Q= +cloud.google.com/go/dlp v1.9.0/go.mod h1:qdgmqgTyReTz5/YNSSuueR8pl7hO0o9bQ39ZhtgkWp4= +cloud.google.com/go/documentai v1.7.0/go.mod h1:lJvftZB5NRiFSX4moiye1SMxHx0Bc3x1+p9e/RfXYiU= +cloud.google.com/go/documentai v1.8.0/go.mod h1:xGHNEB7CtsnySCNrCFdCyyMz44RhFEEX2Q7UD0c5IhU= +cloud.google.com/go/documentai v1.9.0/go.mod h1:FS5485S8R00U10GhgBC0aNGrJxBP8ZVpEeJ7PQDZd6k= +cloud.google.com/go/documentai v1.10.0/go.mod h1:vod47hKQIPeCfN2QS/jULIvQTugbmdc0ZvxxfQY1bg4= +cloud.google.com/go/documentai v1.16.0/go.mod h1:o0o0DLTEZ+YnJZ+J4wNfTxmDVyrkzFvttBXXtYRMHkM= +cloud.google.com/go/documentai v1.18.0/go.mod h1:F6CK6iUH8J81FehpskRmhLq/3VlwQvb7TvwOceQ2tbs= +cloud.google.com/go/domains v0.6.0/go.mod h1:T9Rz3GasrpYk6mEGHh4rymIhjlnIuB4ofT1wTxDeT4Y= +cloud.google.com/go/domains v0.7.0/go.mod h1:PtZeqS1xjnXuRPKE/88Iru/LdfoRyEHYA9nFQf4UKpg= +cloud.google.com/go/domains v0.8.0/go.mod h1:M9i3MMDzGFXsydri9/vW+EWz9sWb4I6WyHqdlAk0idE= +cloud.google.com/go/edgecontainer v0.1.0/go.mod h1:WgkZ9tp10bFxqO8BLPqv2LlfmQF1X8lZqwW4r1BTajk= +cloud.google.com/go/edgecontainer v0.2.0/go.mod h1:RTmLijy+lGpQ7BXuTDa4C4ssxyXT34NIuHIgKuP4s5w= +cloud.google.com/go/edgecontainer v0.3.0/go.mod h1:FLDpP4nykgwwIfcLt6zInhprzw0lEi2P1fjO6Ie0qbc= +cloud.google.com/go/edgecontainer v1.0.0/go.mod h1:cttArqZpBB2q58W/upSG++ooo6EsblxDIolxa3jSjbY= +cloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU= +cloud.google.com/go/essentialcontacts v1.3.0/go.mod h1:r+OnHa5jfj90qIfZDO/VztSFqbQan7HV75p8sA+mdGI= +cloud.google.com/go/essentialcontacts v1.4.0/go.mod h1:8tRldvHYsmnBCHdFpvU+GL75oWiBKl80BiqlFh9tp+8= +cloud.google.com/go/essentialcontacts v1.5.0/go.mod h1:ay29Z4zODTuwliK7SnX8E86aUF2CTzdNtvv42niCX0M= +cloud.google.com/go/eventarc v1.7.0/go.mod h1:6ctpF3zTnaQCxUjHUdcfgcA1A2T309+omHZth7gDfmc= +cloud.google.com/go/eventarc v1.8.0/go.mod h1:imbzxkyAU4ubfsaKYdQg04WS1NvncblHEup4kvF+4gw= +cloud.google.com/go/eventarc v1.10.0/go.mod h1:u3R35tmZ9HvswGRBnF48IlYgYeBcPUCjkr4BTdem2Kw= +cloud.google.com/go/eventarc v1.11.0/go.mod h1:PyUjsUKPWoRBCHeOxZd/lbOOjahV41icXyUY5kSTvVY= +cloud.google.com/go/filestore v1.3.0/go.mod h1:+qbvHGvXU1HaKX2nD0WEPo92TP/8AQuCVEBXNY9z0+w= +cloud.google.com/go/filestore v1.4.0/go.mod h1:PaG5oDfo9r224f8OYXURtAsY+Fbyq/bLYoINEK8XQAI= +cloud.google.com/go/filestore v1.5.0/go.mod h1:FqBXDWBp4YLHqRnVGveOkHDf8svj9r5+mUDLupOWEDs= +cloud.google.com/go/filestore v1.6.0/go.mod h1:di5unNuss/qfZTw2U9nhFqo8/ZDSc466dre85Kydllg= +cloud.google.com/go/firestore v1.9.0/go.mod h1:HMkjKHNTtRyZNiMzu7YAsLr9K3X2udY2AMwDaMEQiiE= +cloud.google.com/go/functions v1.6.0/go.mod h1:3H1UA3qiIPRWD7PeZKLvHZ9SaQhR26XIJcC0A5GbvAk= +cloud.google.com/go/functions v1.7.0/go.mod h1:+d+QBcWM+RsrgZfV9xo6KfA1GlzJfxcfZcRPEhDDfzg= +cloud.google.com/go/functions v1.8.0/go.mod h1:RTZ4/HsQjIqIYP9a9YPbU+QFoQsAlYgrwOXJWHn1POY= +cloud.google.com/go/functions v1.9.0/go.mod h1:Y+Dz8yGguzO3PpIjhLTbnqV1CWmgQ5UwtlpzoyquQ08= +cloud.google.com/go/functions v1.10.0/go.mod h1:0D3hEOe3DbEvCXtYOZHQZmD+SzYsi1YbI7dGvHfldXw= +cloud.google.com/go/functions v1.12.0/go.mod h1:AXWGrF3e2C/5ehvwYo/GH6O5s09tOPksiKhz+hH8WkA= +cloud.google.com/go/functions v1.13.0/go.mod h1:EU4O007sQm6Ef/PwRsI8N2umygGqPBS/IZQKBQBcJ3c= +cloud.google.com/go/gaming v1.5.0/go.mod h1:ol7rGcxP/qHTRQE/RO4bxkXq+Fix0j6D4LFPzYTIrDM= +cloud.google.com/go/gaming v1.6.0/go.mod h1:YMU1GEvA39Qt3zWGyAVA9bpYz/yAhTvaQ1t2sK4KPUA= +cloud.google.com/go/gaming v1.7.0/go.mod h1:LrB8U7MHdGgFG851iHAfqUdLcKBdQ55hzXy9xBJz0+w= +cloud.google.com/go/gaming v1.8.0/go.mod h1:xAqjS8b7jAVW0KFYeRUxngo9My3f33kFmua++Pi+ggM= +cloud.google.com/go/gaming v1.9.0/go.mod h1:Fc7kEmCObylSWLO334NcO+O9QMDyz+TKC4v1D7X+Bc0= +cloud.google.com/go/gkebackup v0.2.0/go.mod h1:XKvv/4LfG829/B8B7xRkk8zRrOEbKtEam6yNfuQNH60= +cloud.google.com/go/gkebackup v0.3.0/go.mod h1:n/E671i1aOQvUxT541aTkCwExO/bTer2HDlj4TsBRAo= +cloud.google.com/go/gkebackup v0.4.0/go.mod h1:byAyBGUwYGEEww7xsbnUTBHIYcOPy/PgUWUtOeRm9Vg= +cloud.google.com/go/gkeconnect v0.5.0/go.mod h1:c5lsNAg5EwAy7fkqX/+goqFsU1Da/jQFqArp+wGNr/o= +cloud.google.com/go/gkeconnect v0.6.0/go.mod h1:Mln67KyU/sHJEBY8kFZ0xTeyPtzbq9StAVvEULYK16A= +cloud.google.com/go/gkeconnect v0.7.0/go.mod h1:SNfmVqPkaEi3bF/B3CNZOAYPYdg7sU+obZ+QTky2Myw= +cloud.google.com/go/gkehub v0.9.0/go.mod h1:WYHN6WG8w9bXU0hqNxt8rm5uxnk8IH+lPY9J2TV7BK0= +cloud.google.com/go/gkehub v0.10.0/go.mod h1:UIPwxI0DsrpsVoWpLB0stwKCP+WFVG9+y977wO+hBH0= +cloud.google.com/go/gkehub v0.11.0/go.mod h1:JOWHlmN+GHyIbuWQPl47/C2RFhnFKH38jH9Ascu3n0E= +cloud.google.com/go/gkehub v0.12.0/go.mod h1:djiIwwzTTBrF5NaXCGv3mf7klpEMcST17VBTVVDcuaw= +cloud.google.com/go/gkemulticloud v0.3.0/go.mod h1:7orzy7O0S+5kq95e4Hpn7RysVA7dPs8W/GgfUtsPbrA= +cloud.google.com/go/gkemulticloud v0.4.0/go.mod h1:E9gxVBnseLWCk24ch+P9+B2CoDFJZTyIgLKSalC7tuI= +cloud.google.com/go/gkemulticloud v0.5.0/go.mod h1:W0JDkiyi3Tqh0TJr//y19wyb1yf8llHVto2Htf2Ja3Y= +cloud.google.com/go/grafeas v0.2.0/go.mod h1:KhxgtF2hb0P191HlY5besjYm6MqTSTj3LSI+M+ByZHc= +cloud.google.com/go/gsuiteaddons v1.3.0/go.mod h1:EUNK/J1lZEZO8yPtykKxLXI6JSVN2rg9bN8SXOa0bgM= +cloud.google.com/go/gsuiteaddons v1.4.0/go.mod h1:rZK5I8hht7u7HxFQcFei0+AtfS9uSushomRlg+3ua1o= +cloud.google.com/go/gsuiteaddons v1.5.0/go.mod h1:TFCClYLd64Eaa12sFVmUyG62tk4mdIsI7pAnSXRkcFo= +cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c= +cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY= +cloud.google.com/go/iam v0.5.0/go.mod h1:wPU9Vt0P4UmCux7mqtRu6jcpPAb74cP1fh50J3QpkUc= +cloud.google.com/go/iam v0.6.0/go.mod h1:+1AH33ueBne5MzYccyMHtEKqLE4/kJOibtffMHDMFMc= +cloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg= +cloud.google.com/go/iam v0.8.0/go.mod h1:lga0/y3iH6CX7sYqypWJ33hf7kkfXJag67naqGESjkE= +cloud.google.com/go/iam v0.11.0/go.mod h1:9PiLDanza5D+oWFZiH1uG+RnRCfEGKoyl6yo4cgWZGY= +cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY= +cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0= +cloud.google.com/go/iam v1.2.2 h1:ozUSofHUGf/F4tCNy/mu9tHLTaxZFLOUiKzjcgWHGIA= +cloud.google.com/go/iam v1.2.2/go.mod h1:0Ys8ccaZHdI1dEUilwzqng/6ps2YB6vRsjIe00/+6JY= +cloud.google.com/go/iap v1.4.0/go.mod h1:RGFwRJdihTINIe4wZ2iCP0zF/qu18ZwyKxrhMhygBEc= +cloud.google.com/go/iap v1.5.0/go.mod h1:UH/CGgKd4KyohZL5Pt0jSKE4m3FR51qg6FKQ/z/Ix9A= +cloud.google.com/go/iap v1.6.0/go.mod h1:NSuvI9C/j7UdjGjIde7t7HBz+QTwBcapPE07+sSRcLk= +cloud.google.com/go/iap v1.7.0/go.mod h1:beqQx56T9O1G1yNPph+spKpNibDlYIiIixiqsQXxLIo= +cloud.google.com/go/iap v1.7.1/go.mod h1:WapEwPc7ZxGt2jFGB/C/bm+hP0Y6NXzOYGjpPnmMS74= +cloud.google.com/go/ids v1.1.0/go.mod h1:WIuwCaYVOzHIj2OhN9HAwvW+DBdmUAdcWlFxRl+KubM= +cloud.google.com/go/ids v1.2.0/go.mod h1:5WXvp4n25S0rA/mQWAg1YEEBBq6/s+7ml1RDCW1IrcY= +cloud.google.com/go/ids v1.3.0/go.mod h1:JBdTYwANikFKaDP6LtW5JAi4gubs57SVNQjemdt6xV4= +cloud.google.com/go/iot v1.3.0/go.mod h1:r7RGh2B61+B8oz0AGE+J72AhA0G7tdXItODWsaA2oLs= +cloud.google.com/go/iot v1.4.0/go.mod h1:dIDxPOn0UvNDUMD8Ger7FIaTuvMkj+aGk94RPP0iV+g= +cloud.google.com/go/iot v1.5.0/go.mod h1:mpz5259PDl3XJthEmh9+ap0affn/MqNSP4My77Qql9o= +cloud.google.com/go/iot v1.6.0/go.mod h1:IqdAsmE2cTYYNO1Fvjfzo9po179rAtJeVGUvkLN3rLE= +cloud.google.com/go/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA= +cloud.google.com/go/kms v1.5.0/go.mod h1:QJS2YY0eJGBg3mnDfuaCyLauWwBJiHRboYxJ++1xJNg= +cloud.google.com/go/kms v1.6.0/go.mod h1:Jjy850yySiasBUDi6KFUwUv2n1+o7QZFyuUJg6OgjA0= +cloud.google.com/go/kms v1.8.0/go.mod h1:4xFEhYFqvW+4VMELtZyxomGSYtSQKzM178ylFW4jMAg= +cloud.google.com/go/kms v1.9.0/go.mod h1:qb1tPTgfF9RQP8e1wq4cLFErVuTJv7UsSC915J8dh3w= +cloud.google.com/go/kms v1.10.0/go.mod h1:ng3KTUtQQU9bPX3+QGLsflZIHlkbn8amFAMY63m8d24= +cloud.google.com/go/kms v1.10.1/go.mod h1:rIWk/TryCkR59GMC3YtHtXeLzd634lBbKenvyySAyYI= +cloud.google.com/go/language v1.4.0/go.mod h1:F9dRpNFQmJbkaop6g0JhSBXCNlO90e1KWx5iDdxbWic= +cloud.google.com/go/language v1.6.0/go.mod h1:6dJ8t3B+lUYfStgls25GusK04NLh3eDLQnWM3mdEbhI= +cloud.google.com/go/language v1.7.0/go.mod h1:DJ6dYN/W+SQOjF8e1hLQXMF21AkH2w9wiPzPCJa2MIE= +cloud.google.com/go/language v1.8.0/go.mod h1:qYPVHf7SPoNNiCL2Dr0FfEFNil1qi3pQEyygwpgVKB8= +cloud.google.com/go/language v1.9.0/go.mod h1:Ns15WooPM5Ad/5no/0n81yUetis74g3zrbeJBE+ptUY= +cloud.google.com/go/lifesciences v0.5.0/go.mod h1:3oIKy8ycWGPUyZDR/8RNnTOYevhaMLqh5vLUXs9zvT8= +cloud.google.com/go/lifesciences v0.6.0/go.mod h1:ddj6tSX/7BOnhxCSd3ZcETvtNr8NZ6t/iPhY2Tyfu08= +cloud.google.com/go/lifesciences v0.8.0/go.mod h1:lFxiEOMqII6XggGbOnKiyZ7IBwoIqA84ClvoezaA/bo= +cloud.google.com/go/logging v1.6.1/go.mod h1:5ZO0mHHbvm8gEmeEUHrmDlTDSu5imF6MUP9OfilNXBw= +cloud.google.com/go/logging v1.7.0/go.mod h1:3xjP2CjkM3ZkO73aj4ASA5wRPGGCRrPIAeNqVNkzY8M= +cloud.google.com/go/logging v1.12.0 h1:ex1igYcGFd4S/RZWOCU51StlIEuey5bjqwH9ZYjHibk= +cloud.google.com/go/logging v1.12.0/go.mod h1:wwYBt5HlYP1InnrtYI0wtwttpVU1rifnMT7RejksUAM= +cloud.google.com/go/longrunning v0.1.1/go.mod h1:UUFxuDWkv22EuY93jjmDMFT5GPQKeFVJBIF6QlTqdsE= +cloud.google.com/go/longrunning v0.3.0/go.mod h1:qth9Y41RRSUE69rDcOn6DdK3HfQfsUI0YSmW3iIlLJc= +cloud.google.com/go/longrunning v0.4.1/go.mod h1:4iWDqhBZ70CvZ6BfETbvam3T8FMvLK+eFj0E6AaRQTo= +cloud.google.com/go/longrunning v0.6.2 h1:xjDfh1pQcWPEvnfjZmwjKQEcHnpz6lHjfy7Fo0MK+hc= +cloud.google.com/go/longrunning v0.6.2/go.mod h1:k/vIs83RN4bE3YCswdXC5PFfWVILjm3hpEUlSko4PiI= +cloud.google.com/go/managedidentities v1.3.0/go.mod h1:UzlW3cBOiPrzucO5qWkNkh0w33KFtBJU281hacNvsdE= +cloud.google.com/go/managedidentities v1.4.0/go.mod h1:NWSBYbEMgqmbZsLIyKvxrYbtqOsxY1ZrGM+9RgDqInM= +cloud.google.com/go/managedidentities v1.5.0/go.mod h1:+dWcZ0JlUmpuxpIDfyP5pP5y0bLdRwOS4Lp7gMni/LA= +cloud.google.com/go/maps v0.1.0/go.mod h1:BQM97WGyfw9FWEmQMpZ5T6cpovXXSd1cGmFma94eubI= +cloud.google.com/go/maps v0.6.0/go.mod h1:o6DAMMfb+aINHz/p/jbcY+mYeXBoZoxTfdSQ8VAJaCw= +cloud.google.com/go/maps v0.7.0/go.mod h1:3GnvVl3cqeSvgMcpRlQidXsPYuDGQ8naBis7MVzpXsY= +cloud.google.com/go/mediatranslation v0.5.0/go.mod h1:jGPUhGTybqsPQn91pNXw0xVHfuJ3leR1wj37oU3y1f4= +cloud.google.com/go/mediatranslation v0.6.0/go.mod h1:hHdBCTYNigsBxshbznuIMFNe5QXEowAuNmmC7h8pu5w= +cloud.google.com/go/mediatranslation v0.7.0/go.mod h1:LCnB/gZr90ONOIQLgSXagp8XUW1ODs2UmUMvcgMfI2I= +cloud.google.com/go/memcache v1.4.0/go.mod h1:rTOfiGZtJX1AaFUrOgsMHX5kAzaTQ8azHiuDoTPzNsE= +cloud.google.com/go/memcache v1.5.0/go.mod h1:dk3fCK7dVo0cUU2c36jKb4VqKPS22BTkf81Xq617aWM= +cloud.google.com/go/memcache v1.6.0/go.mod h1:XS5xB0eQZdHtTuTF9Hf8eJkKtR3pVRCcvJwtm68T3rA= +cloud.google.com/go/memcache v1.7.0/go.mod h1:ywMKfjWhNtkQTxrWxCkCFkoPjLHPW6A7WOTVI8xy3LY= +cloud.google.com/go/memcache v1.9.0/go.mod h1:8oEyzXCu+zo9RzlEaEjHl4KkgjlNDaXbCQeQWlzNFJM= +cloud.google.com/go/metastore v1.5.0/go.mod h1:2ZNrDcQwghfdtCwJ33nM0+GrBGlVuh8rakL3vdPY3XY= +cloud.google.com/go/metastore v1.6.0/go.mod h1:6cyQTls8CWXzk45G55x57DVQ9gWg7RiH65+YgPsNh9s= +cloud.google.com/go/metastore v1.7.0/go.mod h1:s45D0B4IlsINu87/AsWiEVYbLaIMeUSoxlKKDqBGFS8= +cloud.google.com/go/metastore v1.8.0/go.mod h1:zHiMc4ZUpBiM7twCIFQmJ9JMEkDSyZS9U12uf7wHqSI= +cloud.google.com/go/metastore v1.10.0/go.mod h1:fPEnH3g4JJAk+gMRnrAnoqyv2lpUCqJPWOodSaf45Eo= +cloud.google.com/go/monitoring v1.7.0/go.mod h1:HpYse6kkGo//7p6sT0wsIC6IBDET0RhIsnmlA53dvEk= +cloud.google.com/go/monitoring v1.8.0/go.mod h1:E7PtoMJ1kQXWxPjB6mv2fhC5/15jInuulFdYYtlcvT4= +cloud.google.com/go/monitoring v1.12.0/go.mod h1:yx8Jj2fZNEkL/GYZyTLS4ZtZEZN8WtDEiEqG4kLK50w= +cloud.google.com/go/monitoring v1.13.0/go.mod h1:k2yMBAB1H9JT/QETjNkgdCGD9bPF712XiLTVr+cBrpw= +cloud.google.com/go/monitoring v1.21.2 h1:FChwVtClH19E7pJ+e0xUhJPGksctZNVOk2UhMmblmdU= +cloud.google.com/go/monitoring v1.21.2/go.mod h1:hS3pXvaG8KgWTSz+dAdyzPrGUYmi2Q+WFX8g2hqVEZU= +cloud.google.com/go/networkconnectivity v1.4.0/go.mod h1:nOl7YL8odKyAOtzNX73/M5/mGZgqqMeryi6UPZTk/rA= +cloud.google.com/go/networkconnectivity v1.5.0/go.mod h1:3GzqJx7uhtlM3kln0+x5wyFvuVH1pIBJjhCpjzSt75o= +cloud.google.com/go/networkconnectivity v1.6.0/go.mod h1:OJOoEXW+0LAxHh89nXd64uGG+FbQoeH8DtxCHVOMlaM= +cloud.google.com/go/networkconnectivity v1.7.0/go.mod h1:RMuSbkdbPwNMQjB5HBWD5MpTBnNm39iAVpC3TmsExt8= +cloud.google.com/go/networkconnectivity v1.10.0/go.mod h1:UP4O4sWXJG13AqrTdQCD9TnLGEbtNRqjuaaA7bNjF5E= +cloud.google.com/go/networkconnectivity v1.11.0/go.mod h1:iWmDD4QF16VCDLXUqvyspJjIEtBR/4zq5hwnY2X3scM= +cloud.google.com/go/networkmanagement v1.4.0/go.mod h1:Q9mdLLRn60AsOrPc8rs8iNV6OHXaGcDdsIQe1ohekq8= +cloud.google.com/go/networkmanagement v1.5.0/go.mod h1:ZnOeZ/evzUdUsnvRt792H0uYEnHQEMaz+REhhzJRcf4= +cloud.google.com/go/networkmanagement v1.6.0/go.mod h1:5pKPqyXjB/sgtvB5xqOemumoQNB7y95Q7S+4rjSOPYY= +cloud.google.com/go/networksecurity v0.5.0/go.mod h1:xS6fOCoqpVC5zx15Z/MqkfDwH4+m/61A3ODiDV1xmiQ= +cloud.google.com/go/networksecurity v0.6.0/go.mod h1:Q5fjhTr9WMI5mbpRYEbiexTzROf7ZbDzvzCrNl14nyU= +cloud.google.com/go/networksecurity v0.7.0/go.mod h1:mAnzoxx/8TBSyXEeESMy9OOYwo1v+gZ5eMRnsT5bC8k= +cloud.google.com/go/networksecurity v0.8.0/go.mod h1:B78DkqsxFG5zRSVuwYFRZ9Xz8IcQ5iECsNrPn74hKHU= +cloud.google.com/go/notebooks v1.2.0/go.mod h1:9+wtppMfVPUeJ8fIWPOq1UnATHISkGXGqTkxeieQ6UY= +cloud.google.com/go/notebooks v1.3.0/go.mod h1:bFR5lj07DtCPC7YAAJ//vHskFBxA5JzYlH68kXVdk34= +cloud.google.com/go/notebooks v1.4.0/go.mod h1:4QPMngcwmgb6uw7Po99B2xv5ufVoIQ7nOGDyL4P8AgA= +cloud.google.com/go/notebooks v1.5.0/go.mod h1:q8mwhnP9aR8Hpfnrc5iN5IBhrXUy8S2vuYs+kBJ/gu0= +cloud.google.com/go/notebooks v1.7.0/go.mod h1:PVlaDGfJgj1fl1S3dUwhFMXFgfYGhYQt2164xOMONmE= +cloud.google.com/go/notebooks v1.8.0/go.mod h1:Lq6dYKOYOWUCTvw5t2q1gp1lAp0zxAxRycayS0iJcqQ= +cloud.google.com/go/optimization v1.1.0/go.mod h1:5po+wfvX5AQlPznyVEZjGJTMr4+CAkJf2XSTQOOl9l4= +cloud.google.com/go/optimization v1.2.0/go.mod h1:Lr7SOHdRDENsh+WXVmQhQTrzdu9ybg0NecjHidBq6xs= +cloud.google.com/go/optimization v1.3.1/go.mod h1:IvUSefKiwd1a5p0RgHDbWCIbDFgKuEdB+fPPuP0IDLI= +cloud.google.com/go/orchestration v1.3.0/go.mod h1:Sj5tq/JpWiB//X/q3Ngwdl5K7B7Y0KZ7bfv0wL6fqVA= +cloud.google.com/go/orchestration v1.4.0/go.mod h1:6W5NLFWs2TlniBphAViZEVhrXRSMgUGDfW7vrWKvsBk= +cloud.google.com/go/orchestration v1.6.0/go.mod h1:M62Bevp7pkxStDfFfTuCOaXgaaqRAga1yKyoMtEoWPQ= +cloud.google.com/go/orgpolicy v1.4.0/go.mod h1:xrSLIV4RePWmP9P3tBl8S93lTmlAxjm06NSm2UTmKvE= +cloud.google.com/go/orgpolicy v1.5.0/go.mod h1:hZEc5q3wzwXJaKrsx5+Ewg0u1LxJ51nNFlext7Tanwc= +cloud.google.com/go/orgpolicy v1.10.0/go.mod h1:w1fo8b7rRqlXlIJbVhOMPrwVljyuW5mqssvBtU18ONc= +cloud.google.com/go/osconfig v1.7.0/go.mod h1:oVHeCeZELfJP7XLxcBGTMBvRO+1nQ5tFG9VQTmYS2Fs= +cloud.google.com/go/osconfig v1.8.0/go.mod h1:EQqZLu5w5XA7eKizepumcvWx+m8mJUhEwiPqWiZeEdg= +cloud.google.com/go/osconfig v1.9.0/go.mod h1:Yx+IeIZJ3bdWmzbQU4fxNl8xsZ4amB+dygAwFPlvnNo= +cloud.google.com/go/osconfig v1.10.0/go.mod h1:uMhCzqC5I8zfD9zDEAfvgVhDS8oIjySWh+l4WK6GnWw= +cloud.google.com/go/osconfig v1.11.0/go.mod h1:aDICxrur2ogRd9zY5ytBLV89KEgT2MKB2L/n6x1ooPw= +cloud.google.com/go/oslogin v1.4.0/go.mod h1:YdgMXWRaElXz/lDk1Na6Fh5orF7gvmJ0FGLIs9LId4E= +cloud.google.com/go/oslogin v1.5.0/go.mod h1:D260Qj11W2qx/HVF29zBg+0fd6YCSjSqLUkY/qEenQU= +cloud.google.com/go/oslogin v1.6.0/go.mod h1:zOJ1O3+dTU8WPlGEkFSh7qeHPPSoxrcMbbK1Nm2iX70= +cloud.google.com/go/oslogin v1.7.0/go.mod h1:e04SN0xO1UNJ1M5GP0vzVBFicIe4O53FOfcixIqTyXo= +cloud.google.com/go/oslogin v1.9.0/go.mod h1:HNavntnH8nzrn8JCTT5fj18FuJLFJc4NaZJtBnQtKFs= +cloud.google.com/go/phishingprotection v0.5.0/go.mod h1:Y3HZknsK9bc9dMi+oE8Bim0lczMU6hrX0UpADuMefr0= +cloud.google.com/go/phishingprotection v0.6.0/go.mod h1:9Y3LBLgy0kDTcYET8ZH3bq/7qni15yVUoAxiFxnlSUA= +cloud.google.com/go/phishingprotection v0.7.0/go.mod h1:8qJI4QKHoda/sb/7/YmMQ2omRLSLYSu9bU0EKCNI+Lk= +cloud.google.com/go/policytroubleshooter v1.3.0/go.mod h1:qy0+VwANja+kKrjlQuOzmlvscn4RNsAc0e15GGqfMxg= +cloud.google.com/go/policytroubleshooter v1.4.0/go.mod h1:DZT4BcRw3QoO8ota9xw/LKtPa8lKeCByYeKTIf/vxdE= +cloud.google.com/go/policytroubleshooter v1.5.0/go.mod h1:Rz1WfV+1oIpPdN2VvvuboLVRsB1Hclg3CKQ53j9l8vw= +cloud.google.com/go/policytroubleshooter v1.6.0/go.mod h1:zYqaPTsmfvpjm5ULxAyD/lINQxJ0DDsnWOP/GZ7xzBc= +cloud.google.com/go/privatecatalog v0.5.0/go.mod h1:XgosMUvvPyxDjAVNDYxJ7wBW8//hLDDYmnsNcMGq1K0= +cloud.google.com/go/privatecatalog v0.6.0/go.mod h1:i/fbkZR0hLN29eEWiiwue8Pb+GforiEIBnV9yrRUOKI= +cloud.google.com/go/privatecatalog v0.7.0/go.mod h1:2s5ssIFO69F5csTXcwBP7NPFTZvps26xGzvQ2PQaBYg= +cloud.google.com/go/privatecatalog v0.8.0/go.mod h1:nQ6pfaegeDAq/Q5lrfCQzQLhubPiZhSaNhIgfJlnIXs= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/pubsub v1.26.0/go.mod h1:QgBH3U/jdJy/ftjPhTkyXNj543Tin1pRYcdcPRnFIRI= +cloud.google.com/go/pubsub v1.27.1/go.mod h1:hQN39ymbV9geqBnfQq6Xf63yNhUAhv9CZhzp5O6qsW0= +cloud.google.com/go/pubsub v1.28.0/go.mod h1:vuXFpwaVoIPQMGXqRyUQigu/AX1S3IWugR9xznmcXX8= +cloud.google.com/go/pubsub v1.30.0/go.mod h1:qWi1OPS0B+b5L+Sg6Gmc9zD1Y+HaM0MdUr7LsupY1P4= +cloud.google.com/go/pubsublite v1.5.0/go.mod h1:xapqNQ1CuLfGi23Yda/9l4bBCKz/wC3KIJ5gKcxveZg= +cloud.google.com/go/pubsublite v1.6.0/go.mod h1:1eFCS0U11xlOuMFV/0iBqw3zP12kddMeCbj/F3FSj9k= +cloud.google.com/go/pubsublite v1.7.0/go.mod h1:8hVMwRXfDfvGm3fahVbtDbiLePT3gpoiJYJY+vxWxVM= +cloud.google.com/go/recaptchaenterprise v1.3.1/go.mod h1:OdD+q+y4XGeAlxRaMn1Y7/GveP6zmq76byL6tjPE7d4= +cloud.google.com/go/recaptchaenterprise/v2 v2.1.0/go.mod h1:w9yVqajwroDNTfGuhmOjPDN//rZGySaf6PtFVcSCa7o= +cloud.google.com/go/recaptchaenterprise/v2 v2.2.0/go.mod h1:/Zu5jisWGeERrd5HnlS3EUGb/D335f9k51B/FVil0jk= +cloud.google.com/go/recaptchaenterprise/v2 v2.3.0/go.mod h1:O9LwGCjrhGHBQET5CA7dd5NwwNQUErSgEDit1DLNTdo= +cloud.google.com/go/recaptchaenterprise/v2 v2.4.0/go.mod h1:Am3LHfOuBstrLrNCBrlI5sbwx9LBg3te2N6hGvHn2mE= +cloud.google.com/go/recaptchaenterprise/v2 v2.5.0/go.mod h1:O8LzcHXN3rz0j+LBC91jrwI3R+1ZSZEWrfL7XHgNo9U= +cloud.google.com/go/recaptchaenterprise/v2 v2.6.0/go.mod h1:RPauz9jeLtB3JVzg6nCbe12qNoaa8pXc4d/YukAmcnA= +cloud.google.com/go/recaptchaenterprise/v2 v2.7.0/go.mod h1:19wVj/fs5RtYtynAPJdDTb69oW0vNHYDBTbB4NvMD9c= +cloud.google.com/go/recommendationengine v0.5.0/go.mod h1:E5756pJcVFeVgaQv3WNpImkFP8a+RptV6dDLGPILjvg= +cloud.google.com/go/recommendationengine v0.6.0/go.mod h1:08mq2umu9oIqc7tDy8sx+MNJdLG0fUi3vaSVbztHgJ4= +cloud.google.com/go/recommendationengine v0.7.0/go.mod h1:1reUcE3GIu6MeBz/h5xZJqNLuuVjNg1lmWMPyjatzac= +cloud.google.com/go/recommender v1.5.0/go.mod h1:jdoeiBIVrJe9gQjwd759ecLJbxCDED4A6p+mqoqDvTg= +cloud.google.com/go/recommender v1.6.0/go.mod h1:+yETpm25mcoiECKh9DEScGzIRyDKpZ0cEhWGo+8bo+c= +cloud.google.com/go/recommender v1.7.0/go.mod h1:XLHs/W+T8olwlGOgfQenXBTbIseGclClff6lhFVe9Bs= +cloud.google.com/go/recommender v1.8.0/go.mod h1:PkjXrTT05BFKwxaUxQmtIlrtj0kph108r02ZZQ5FE70= +cloud.google.com/go/recommender v1.9.0/go.mod h1:PnSsnZY7q+VL1uax2JWkt/UegHssxjUVVCrX52CuEmQ= +cloud.google.com/go/redis v1.7.0/go.mod h1:V3x5Jq1jzUcg+UNsRvdmsfuFnit1cfe3Z/PGyq/lm4Y= +cloud.google.com/go/redis v1.8.0/go.mod h1:Fm2szCDavWzBk2cDKxrkmWBqoCiL1+Ctwq7EyqBCA/A= +cloud.google.com/go/redis v1.9.0/go.mod h1:HMYQuajvb2D0LvMgZmLDZW8V5aOC/WxstZHiy4g8OiA= +cloud.google.com/go/redis v1.10.0/go.mod h1:ThJf3mMBQtW18JzGgh41/Wld6vnDDc/F/F35UolRZPM= +cloud.google.com/go/redis v1.11.0/go.mod h1:/X6eicana+BWcUda5PpwZC48o37SiFVTFSs0fWAJ7uQ= +cloud.google.com/go/resourcemanager v1.3.0/go.mod h1:bAtrTjZQFJkiWTPDb1WBjzvc6/kifjj4QBYuKCCoqKA= +cloud.google.com/go/resourcemanager v1.4.0/go.mod h1:MwxuzkumyTX7/a3n37gmsT3py7LIXwrShilPh3P1tR0= +cloud.google.com/go/resourcemanager v1.5.0/go.mod h1:eQoXNAiAvCf5PXxWxXjhKQoTMaUSNrEfg+6qdf/wots= +cloud.google.com/go/resourcemanager v1.6.0/go.mod h1:YcpXGRs8fDzcUl1Xw8uOVmI8JEadvhRIkoXXUNVYcVo= +cloud.google.com/go/resourcemanager v1.7.0/go.mod h1:HlD3m6+bwhzj9XCouqmeiGuni95NTrExfhoSrkC/3EI= +cloud.google.com/go/resourcesettings v1.3.0/go.mod h1:lzew8VfESA5DQ8gdlHwMrqZs1S9V87v3oCnKCWoOuQU= +cloud.google.com/go/resourcesettings v1.4.0/go.mod h1:ldiH9IJpcrlC3VSuCGvjR5of/ezRrOxFtpJoJo5SmXg= +cloud.google.com/go/resourcesettings v1.5.0/go.mod h1:+xJF7QSG6undsQDfsCJyqWXyBwUoJLhetkRMDRnIoXA= +cloud.google.com/go/retail v1.8.0/go.mod h1:QblKS8waDmNUhghY2TI9O3JLlFk8jybHeV4BF19FrE4= +cloud.google.com/go/retail v1.9.0/go.mod h1:g6jb6mKuCS1QKnH/dpu7isX253absFl6iE92nHwlBUY= +cloud.google.com/go/retail v1.10.0/go.mod h1:2gDk9HsL4HMS4oZwz6daui2/jmKvqShXKQuB2RZ+cCc= +cloud.google.com/go/retail v1.11.0/go.mod h1:MBLk1NaWPmh6iVFSz9MeKG/Psyd7TAgm6y/9L2B4x9Y= +cloud.google.com/go/retail v1.12.0/go.mod h1:UMkelN/0Z8XvKymXFbD4EhFJlYKRx1FGhQkVPU5kF14= +cloud.google.com/go/run v0.2.0/go.mod h1:CNtKsTA1sDcnqqIFR3Pb5Tq0usWxJJvsWOCPldRU3Do= +cloud.google.com/go/run v0.3.0/go.mod h1:TuyY1+taHxTjrD0ZFk2iAR+xyOXEA0ztb7U3UNA0zBo= +cloud.google.com/go/run v0.8.0/go.mod h1:VniEnuBwqjigv0A7ONfQUaEItaiCRVujlMqerPPiktM= +cloud.google.com/go/run v0.9.0/go.mod h1:Wwu+/vvg8Y+JUApMwEDfVfhetv30hCG4ZwDR/IXl2Qg= +cloud.google.com/go/scheduler v1.4.0/go.mod h1:drcJBmxF3aqZJRhmkHQ9b3uSSpQoltBPGPxGAWROx6s= +cloud.google.com/go/scheduler v1.5.0/go.mod h1:ri073ym49NW3AfT6DZi21vLZrG07GXr5p3H1KxN5QlI= +cloud.google.com/go/scheduler v1.6.0/go.mod h1:SgeKVM7MIwPn3BqtcBntpLyrIJftQISRrYB5ZtT+KOk= +cloud.google.com/go/scheduler v1.7.0/go.mod h1:jyCiBqWW956uBjjPMMuX09n3x37mtyPJegEWKxRsn44= +cloud.google.com/go/scheduler v1.8.0/go.mod h1:TCET+Y5Gp1YgHT8py4nlg2Sew8nUHMqcpousDgXJVQc= +cloud.google.com/go/scheduler v1.9.0/go.mod h1:yexg5t+KSmqu+njTIh3b7oYPheFtBWGcbVUYF1GGMIc= +cloud.google.com/go/secretmanager v1.6.0/go.mod h1:awVa/OXF6IiyaU1wQ34inzQNc4ISIDIrId8qE5QGgKA= +cloud.google.com/go/secretmanager v1.8.0/go.mod h1:hnVgi/bN5MYHd3Gt0SPuTPPp5ENina1/LxM+2W9U9J4= +cloud.google.com/go/secretmanager v1.9.0/go.mod h1:b71qH2l1yHmWQHt9LC80akm86mX8AL6X1MA01dW8ht4= +cloud.google.com/go/secretmanager v1.10.0/go.mod h1:MfnrdvKMPNra9aZtQFvBcvRU54hbPD8/HayQdlUgJpU= +cloud.google.com/go/security v1.5.0/go.mod h1:lgxGdyOKKjHL4YG3/YwIL2zLqMFCKs0UbQwgyZmfJl4= +cloud.google.com/go/security v1.7.0/go.mod h1:mZklORHl6Bg7CNnnjLH//0UlAlaXqiG7Lb9PsPXLfD0= +cloud.google.com/go/security v1.8.0/go.mod h1:hAQOwgmaHhztFhiQ41CjDODdWP0+AE1B3sX4OFlq+GU= +cloud.google.com/go/security v1.9.0/go.mod h1:6Ta1bO8LXI89nZnmnsZGp9lVoVWXqsVbIq/t9dzI+2Q= +cloud.google.com/go/security v1.10.0/go.mod h1:QtOMZByJVlibUT2h9afNDWRZ1G96gVywH8T5GUSb9IA= +cloud.google.com/go/security v1.12.0/go.mod h1:rV6EhrpbNHrrxqlvW0BWAIawFWq3X90SduMJdFwtLB8= +cloud.google.com/go/security v1.13.0/go.mod h1:Q1Nvxl1PAgmeW0y3HTt54JYIvUdtcpYKVfIB8AOMZ+0= +cloud.google.com/go/securitycenter v1.13.0/go.mod h1:cv5qNAqjY84FCN6Y9z28WlkKXyWsgLO832YiWwkCWcU= +cloud.google.com/go/securitycenter v1.14.0/go.mod h1:gZLAhtyKv85n52XYWt6RmeBdydyxfPeTrpToDPw4Auc= +cloud.google.com/go/securitycenter v1.15.0/go.mod h1:PeKJ0t8MoFmmXLXWm41JidyzI3PJjd8sXWaVqg43WWk= +cloud.google.com/go/securitycenter v1.16.0/go.mod h1:Q9GMaLQFUD+5ZTabrbujNWLtSLZIZF7SAR0wWECrjdk= +cloud.google.com/go/securitycenter v1.18.1/go.mod h1:0/25gAzCM/9OL9vVx4ChPeM/+DlfGQJDwBy/UC8AKK0= +cloud.google.com/go/securitycenter v1.19.0/go.mod h1:LVLmSg8ZkkyaNy4u7HCIshAngSQ8EcIRREP3xBnyfag= +cloud.google.com/go/servicecontrol v1.4.0/go.mod h1:o0hUSJ1TXJAmi/7fLJAedOovnujSEvjKCAFNXPQ1RaU= +cloud.google.com/go/servicecontrol v1.5.0/go.mod h1:qM0CnXHhyqKVuiZnGKrIurvVImCs8gmqWsDoqe9sU1s= +cloud.google.com/go/servicecontrol v1.10.0/go.mod h1:pQvyvSRh7YzUF2efw7H87V92mxU8FnFDawMClGCNuAA= +cloud.google.com/go/servicecontrol v1.11.0/go.mod h1:kFmTzYzTUIuZs0ycVqRHNaNhgR+UMUpw9n02l/pY+mc= +cloud.google.com/go/servicecontrol v1.11.1/go.mod h1:aSnNNlwEFBY+PWGQ2DoM0JJ/QUXqV5/ZD9DOLB7SnUk= +cloud.google.com/go/servicedirectory v1.4.0/go.mod h1:gH1MUaZCgtP7qQiI+F+A+OpeKF/HQWgtAddhTbhL2bs= +cloud.google.com/go/servicedirectory v1.5.0/go.mod h1:QMKFL0NUySbpZJ1UZs3oFAmdvVxhhxB6eJ/Vlp73dfg= +cloud.google.com/go/servicedirectory v1.6.0/go.mod h1:pUlbnWsLH9c13yGkxCmfumWEPjsRs1RlmJ4pqiNjVL4= +cloud.google.com/go/servicedirectory v1.7.0/go.mod h1:5p/U5oyvgYGYejufvxhgwjL8UVXjkuw7q5XcG10wx1U= +cloud.google.com/go/servicedirectory v1.8.0/go.mod h1:srXodfhY1GFIPvltunswqXpVxFPpZjf8nkKQT7XcXaY= +cloud.google.com/go/servicedirectory v1.9.0/go.mod h1:29je5JjiygNYlmsGz8k6o+OZ8vd4f//bQLtvzkPPT/s= +cloud.google.com/go/servicemanagement v1.4.0/go.mod h1:d8t8MDbezI7Z2R1O/wu8oTggo3BI2GKYbdG4y/SJTco= +cloud.google.com/go/servicemanagement v1.5.0/go.mod h1:XGaCRe57kfqu4+lRxaFEAuqmjzF0r+gWHjWqKqBvKFo= +cloud.google.com/go/servicemanagement v1.6.0/go.mod h1:aWns7EeeCOtGEX4OvZUWCCJONRZeFKiptqKf1D0l/Jc= +cloud.google.com/go/servicemanagement v1.8.0/go.mod h1:MSS2TDlIEQD/fzsSGfCdJItQveu9NXnUniTrq/L8LK4= +cloud.google.com/go/serviceusage v1.3.0/go.mod h1:Hya1cozXM4SeSKTAgGXgj97GlqUvF5JaoXacR1JTP/E= +cloud.google.com/go/serviceusage v1.4.0/go.mod h1:SB4yxXSaYVuUBYUml6qklyONXNLt83U0Rb+CXyhjEeU= +cloud.google.com/go/serviceusage v1.5.0/go.mod h1:w8U1JvqUqwJNPEOTQjrMHkw3IaIFLoLsPLvsE3xueec= +cloud.google.com/go/serviceusage v1.6.0/go.mod h1:R5wwQcbOWsyuOfbP9tGdAnCAc6B9DRwPG1xtWMDeuPA= +cloud.google.com/go/shell v1.3.0/go.mod h1:VZ9HmRjZBsjLGXusm7K5Q5lzzByZmJHf1d0IWHEN5X4= +cloud.google.com/go/shell v1.4.0/go.mod h1:HDxPzZf3GkDdhExzD/gs8Grqk+dmYcEjGShZgYa9URw= +cloud.google.com/go/shell v1.6.0/go.mod h1:oHO8QACS90luWgxP3N9iZVuEiSF84zNyLytb+qE2f9A= +cloud.google.com/go/spanner v1.41.0/go.mod h1:MLYDBJR/dY4Wt7ZaMIQ7rXOTLjYrmxLE/5ve9vFfWos= +cloud.google.com/go/spanner v1.44.0/go.mod h1:G8XIgYdOK+Fbcpbs7p2fiprDw4CaZX63whnSMLVBxjk= +cloud.google.com/go/spanner v1.45.0/go.mod h1:FIws5LowYz8YAE1J8fOS7DJup8ff7xJeetWEo5REA2M= +cloud.google.com/go/speech v1.6.0/go.mod h1:79tcr4FHCimOp56lwC01xnt/WPJZc4v3gzyT7FoBkCM= +cloud.google.com/go/speech v1.7.0/go.mod h1:KptqL+BAQIhMsj1kOP2la5DSEEerPDuOP/2mmkhHhZQ= +cloud.google.com/go/speech v1.8.0/go.mod h1:9bYIl1/tjsAnMgKGHKmBZzXKEkGgtU+MpdDPTE9f7y0= +cloud.google.com/go/speech v1.9.0/go.mod h1:xQ0jTcmnRFFM2RfX/U+rk6FQNUF6DQlydUSyoooSpco= +cloud.google.com/go/speech v1.14.1/go.mod h1:gEosVRPJ9waG7zqqnsHpYTOoAS4KouMRLDFMekpJ0J0= +cloud.google.com/go/speech v1.15.0/go.mod h1:y6oH7GhqCaZANH7+Oe0BhgIogsNInLlz542tg3VqeYI= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= +cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= +cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= +cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= +cloud.google.com/go/storage v1.28.1/go.mod h1:Qnisd4CqDdo6BGs2AD5LLnEsmSQ80wQ5ogcBBKhU86Y= +cloud.google.com/go/storage v1.29.0/go.mod h1:4puEjyTKnku6gfKoTfNOU/W+a9JyuVNxjpS5GBrB8h4= +cloud.google.com/go/storage v1.49.0 h1:zenOPBOWHCnojRd9aJZAyQXBYqkJkdQS42dxL55CIMw= +cloud.google.com/go/storage v1.49.0/go.mod h1:k1eHhhpLvrPjVGfo0mOUPEJ4Y2+a/Hv5PiwehZI9qGU= +cloud.google.com/go/storagetransfer v1.5.0/go.mod h1:dxNzUopWy7RQevYFHewchb29POFv3/AaBgnhqzqiK0w= +cloud.google.com/go/storagetransfer v1.6.0/go.mod h1:y77xm4CQV/ZhFZH75PLEXY0ROiS7Gh6pSKrM8dJyg6I= +cloud.google.com/go/storagetransfer v1.7.0/go.mod h1:8Giuj1QNb1kfLAiWM1bN6dHzfdlDAVC9rv9abHot2W4= +cloud.google.com/go/storagetransfer v1.8.0/go.mod h1:JpegsHHU1eXg7lMHkvf+KE5XDJ7EQu0GwNJbbVGanEw= +cloud.google.com/go/talent v1.1.0/go.mod h1:Vl4pt9jiHKvOgF9KoZo6Kob9oV4lwd/ZD5Cto54zDRw= +cloud.google.com/go/talent v1.2.0/go.mod h1:MoNF9bhFQbiJ6eFD3uSsg0uBALw4n4gaCaEjBw9zo8g= +cloud.google.com/go/talent v1.3.0/go.mod h1:CmcxwJ/PKfRgd1pBjQgU6W3YBwiewmUzQYH5HHmSCmM= +cloud.google.com/go/talent v1.4.0/go.mod h1:ezFtAgVuRf8jRsvyE6EwmbTK5LKciD4KVnHuDEFmOOA= +cloud.google.com/go/talent v1.5.0/go.mod h1:G+ODMj9bsasAEJkQSzO2uHQWXHHXUomArjWQQYkqK6c= +cloud.google.com/go/texttospeech v1.4.0/go.mod h1:FX8HQHA6sEpJ7rCMSfXuzBcysDAuWusNNNvN9FELDd8= +cloud.google.com/go/texttospeech v1.5.0/go.mod h1:oKPLhR4n4ZdQqWKURdwxMy0uiTS1xU161C8W57Wkea4= +cloud.google.com/go/texttospeech v1.6.0/go.mod h1:YmwmFT8pj1aBblQOI3TfKmwibnsfvhIBzPXcW4EBovc= +cloud.google.com/go/tpu v1.3.0/go.mod h1:aJIManG0o20tfDQlRIej44FcwGGl/cD0oiRyMKG19IQ= +cloud.google.com/go/tpu v1.4.0/go.mod h1:mjZaX8p0VBgllCzF6wcU2ovUXN9TONFLd7iz227X2Xg= +cloud.google.com/go/tpu v1.5.0/go.mod h1:8zVo1rYDFuW2l4yZVY0R0fb/v44xLh3llq7RuV61fPM= +cloud.google.com/go/trace v1.3.0/go.mod h1:FFUE83d9Ca57C+K8rDl/Ih8LwOzWIV1krKgxg6N0G28= +cloud.google.com/go/trace v1.4.0/go.mod h1:UG0v8UBqzusp+z63o7FK74SdFE+AXpCLdFb1rshXG+Y= +cloud.google.com/go/trace v1.8.0/go.mod h1:zH7vcsbAhklH8hWFig58HvxcxyQbaIqMarMg9hn5ECA= +cloud.google.com/go/trace v1.9.0/go.mod h1:lOQqpE5IaWY0Ixg7/r2SjixMuc6lfTFeO4QGM4dQWOk= +cloud.google.com/go/trace v1.11.2 h1:4ZmaBdL8Ng/ajrgKqY5jfvzqMXbrDcBsUGXOT9aqTtI= +cloud.google.com/go/trace v1.11.2/go.mod h1:bn7OwXd4pd5rFuAnTrzBuoZ4ax2XQeG3qNgYmfCy0Io= +cloud.google.com/go/translate v1.3.0/go.mod h1:gzMUwRjvOqj5i69y/LYLd8RrNQk+hOmIXTi9+nb3Djs= +cloud.google.com/go/translate v1.4.0/go.mod h1:06Dn/ppvLD6WvA5Rhdp029IX2Mi3Mn7fpMRLPvXT5Wg= +cloud.google.com/go/translate v1.5.0/go.mod h1:29YDSYveqqpA1CQFD7NQuP49xymq17RXNaUDdc0mNu0= +cloud.google.com/go/translate v1.6.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= +cloud.google.com/go/translate v1.7.0/go.mod h1:lMGRudH1pu7I3n3PETiOB2507gf3HnfLV8qlkHZEyos= +cloud.google.com/go/video v1.8.0/go.mod h1:sTzKFc0bUSByE8Yoh8X0mn8bMymItVGPfTuUBUyRgxk= +cloud.google.com/go/video v1.9.0/go.mod h1:0RhNKFRF5v92f8dQt0yhaHrEuH95m068JYOvLZYnJSw= +cloud.google.com/go/video v1.12.0/go.mod h1:MLQew95eTuaNDEGriQdcYn0dTwf9oWiA4uYebxM5kdg= +cloud.google.com/go/video v1.13.0/go.mod h1:ulzkYlYgCp15N2AokzKjy7MQ9ejuynOJdf1tR5lGthk= +cloud.google.com/go/video v1.14.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= +cloud.google.com/go/video v1.15.0/go.mod h1:SkgaXwT+lIIAKqWAJfktHT/RbgjSuY6DobxEp0C5yTQ= +cloud.google.com/go/videointelligence v1.6.0/go.mod h1:w0DIDlVRKtwPCn/C4iwZIJdvC69yInhW0cfi+p546uU= +cloud.google.com/go/videointelligence v1.7.0/go.mod h1:k8pI/1wAhjznARtVT9U1llUaFNPh7muw8QyOUpavru4= +cloud.google.com/go/videointelligence v1.8.0/go.mod h1:dIcCn4gVDdS7yte/w+koiXn5dWVplOZkE+xwG9FgK+M= +cloud.google.com/go/videointelligence v1.9.0/go.mod h1:29lVRMPDYHikk3v8EdPSaL8Ku+eMzDljjuvRs105XoU= +cloud.google.com/go/videointelligence v1.10.0/go.mod h1:LHZngX1liVtUhZvi2uNS0VQuOzNi2TkY1OakiuoUOjU= +cloud.google.com/go/vision v1.2.0/go.mod h1:SmNwgObm5DpFBme2xpyOyasvBc1aPdjvMk2bBk0tKD0= +cloud.google.com/go/vision/v2 v2.2.0/go.mod h1:uCdV4PpN1S0jyCyq8sIM42v2Y6zOLkZs+4R9LrGYwFo= +cloud.google.com/go/vision/v2 v2.3.0/go.mod h1:UO61abBx9QRMFkNBbf1D8B1LXdS2cGiiCRx0vSpZoUo= +cloud.google.com/go/vision/v2 v2.4.0/go.mod h1:VtI579ll9RpVTrdKdkMzckdnwMyX2JILb+MhPqRbPsY= +cloud.google.com/go/vision/v2 v2.5.0/go.mod h1:MmaezXOOE+IWa+cS7OhRRLK2cNv1ZL98zhqFFZaaH2E= +cloud.google.com/go/vision/v2 v2.6.0/go.mod h1:158Hes0MvOS9Z/bDMSFpjwsUrZ5fPrdwuyyvKSGAGMY= +cloud.google.com/go/vision/v2 v2.7.0/go.mod h1:H89VysHy21avemp6xcf9b9JvZHVehWbET0uT/bcuY/0= +cloud.google.com/go/vmmigration v1.2.0/go.mod h1:IRf0o7myyWFSmVR1ItrBSFLFD/rJkfDCUTO4vLlJvsE= +cloud.google.com/go/vmmigration v1.3.0/go.mod h1:oGJ6ZgGPQOFdjHuocGcLqX4lc98YQ7Ygq8YQwHh9A7g= +cloud.google.com/go/vmmigration v1.5.0/go.mod h1:E4YQ8q7/4W9gobHjQg4JJSgXXSgY21nA5r8swQV+Xxc= +cloud.google.com/go/vmmigration v1.6.0/go.mod h1:bopQ/g4z+8qXzichC7GW1w2MjbErL54rk3/C843CjfY= +cloud.google.com/go/vmwareengine v0.1.0/go.mod h1:RsdNEf/8UDvKllXhMz5J40XxDrNJNN4sagiox+OI208= +cloud.google.com/go/vmwareengine v0.2.2/go.mod h1:sKdctNJxb3KLZkE/6Oui94iw/xs9PRNC2wnNLXsHvH8= +cloud.google.com/go/vmwareengine v0.3.0/go.mod h1:wvoyMvNWdIzxMYSpH/R7y2h5h3WFkx6d+1TIsP39WGY= +cloud.google.com/go/vpcaccess v1.4.0/go.mod h1:aQHVbTWDYUR1EbTApSVvMq1EnT57ppDmQzZ3imqIk4w= +cloud.google.com/go/vpcaccess v1.5.0/go.mod h1:drmg4HLk9NkZpGfCmZ3Tz0Bwnm2+DKqViEpeEpOq0m8= +cloud.google.com/go/vpcaccess v1.6.0/go.mod h1:wX2ILaNhe7TlVa4vC5xce1bCnqE3AeH27RV31lnmZes= +cloud.google.com/go/webrisk v1.4.0/go.mod h1:Hn8X6Zr+ziE2aNd8SliSDWpEnSS1u4R9+xXZmFiHmGE= +cloud.google.com/go/webrisk v1.5.0/go.mod h1:iPG6fr52Tv7sGk0H6qUFzmL3HHZev1htXuWDEEsqMTg= +cloud.google.com/go/webrisk v1.6.0/go.mod h1:65sW9V9rOosnc9ZY7A7jsy1zoHS5W9IAXv6dGqhMQMc= +cloud.google.com/go/webrisk v1.7.0/go.mod h1:mVMHgEYH0r337nmt1JyLthzMr6YxwN1aAIEc2fTcq7A= +cloud.google.com/go/webrisk v1.8.0/go.mod h1:oJPDuamzHXgUc+b8SiHRcVInZQuybnvEW72PqTc7sSg= +cloud.google.com/go/websecurityscanner v1.3.0/go.mod h1:uImdKm2wyeXQevQJXeh8Uun/Ym1VqworNDlBXQevGMo= +cloud.google.com/go/websecurityscanner v1.4.0/go.mod h1:ebit/Fp0a+FWu5j4JOmJEV8S8CzdTkAS77oDsiSqYWQ= +cloud.google.com/go/websecurityscanner v1.5.0/go.mod h1:Y6xdCPy81yi0SQnDY1xdNTNpfY1oAgXUlcfN3B3eSng= +cloud.google.com/go/workflows v1.6.0/go.mod h1:6t9F5h/unJz41YqfBmqSASJSXccBLtD1Vwf+KmJENM0= +cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoISEXH2bcHC3M= +cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M= +cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA= +cloud.google.com/go/workflows v1.10.0/go.mod h1:fZ8LmRmZQWacon9UCX1r/g/DfAXx5VcPALq2CxzdePw= +cosmossdk.io/api v0.9.2 h1:9i9ptOBdmoIEVEVWLtYYHjxZonlF/aOVODLFaxpmNtg= +cosmossdk.io/api v0.9.2/go.mod h1:CWt31nVohvoPMTlPv+mMNCtC0a7BqRdESjCsstHcTkU= +cosmossdk.io/collections v1.2.0 h1:IesfVG8G/+FYCMVMP01frS/Cw99Omk5vBh3cHbO01Gg= +cosmossdk.io/collections v1.2.0/go.mod h1:4NkMoYw6qRA8fnSH/yn1D/MOutr8qyQnwsO50Mz9ItU= +cosmossdk.io/core v0.11.3 h1:mei+MVDJOwIjIniaKelE3jPDqShCc/F4LkNNHh+4yfo= +cosmossdk.io/core v0.11.3/go.mod h1:9rL4RE1uDt5AJ4Tg55sYyHWXA16VmpHgbe0PbJc6N2Y= +cosmossdk.io/depinject v1.2.0 h1:6NW/FSK1IkWTrX7XxUpBmX1QMBozpEI9SsWkKTBc5zw= +cosmossdk.io/depinject v1.2.0/go.mod h1:pvitjtUxZZZTQESKNS9KhGjWVslJZxtO9VooRJYyPjk= +cosmossdk.io/errors v1.0.2 h1:wcYiJz08HThbWxd/L4jObeLaLySopyyuUFB5w4AGpCo= +cosmossdk.io/errors v1.0.2/go.mod h1:0rjgiHkftRYPj//3DrD6y8hcm40HcPv/dR4R/4efr0k= +cosmossdk.io/log v1.5.1 h1:wLwiYXmfrort/O+j6EkjF+HvbdrRQd+4cYCPKFSm+zM= +cosmossdk.io/log v1.5.1/go.mod h1:5cXXBvfBkR2/BcXmosdCSLXllvgSjphrrDVdfVRmBGM= +cosmossdk.io/math v1.5.3 h1:WH6tu6Z3AUCeHbeOSHg2mt9rnoiUWVWaQ2t6Gkll96U= +cosmossdk.io/math v1.5.3/go.mod h1:uqcZv7vexnhMFJF+6zh9EWdm/+Ylyln34IvPnBauPCQ= +cosmossdk.io/schema v1.1.0 h1:mmpuz3dzouCoyjjcMcA/xHBEmMChN+EHh8EHxHRHhzE= +cosmossdk.io/schema v1.1.0/go.mod h1:Gb7pqO+tpR+jLW5qDcNOSv0KtppYs7881kfzakguhhI= +cosmossdk.io/store v1.1.2 h1:3HOZG8+CuThREKv6cn3WSohAc6yccxO3hLzwK6rBC7o= +cosmossdk.io/store v1.1.2/go.mod h1:60rAGzTHevGm592kFhiUVkNC9w7gooSEn5iUBPzHQ6A= +cosmossdk.io/x/tx v0.14.0 h1:hB3O25kIcyDW/7kMTLMaO8Ripj3yqs5imceVd6c/heA= +cosmossdk.io/x/tx v0.14.0/go.mod h1:Tn30rSRA1PRfdGB3Yz55W4Sn6EIutr9xtMKSHij+9PM= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= +filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= +gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= +git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc= +github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs= +github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= +github.com/99designs/keyring v1.2.1 h1:tYLp1ULvO7i3fI5vE21ReQuj99QFSs7lGm0xWyJo87o= +github.com/99designs/keyring v1.2.1/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= +github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/DataDog/datadog-go v3.2.0+incompatible h1:qSG2N4FghB1He/r2mFrWKCaL7dXCilEuNEeAn20fdD4= +github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= +github.com/DataDog/zstd v1.5.7 h1:ybO8RBeh29qrxIhCA9E8gKY6xfONU9T6G6aP9DTKfLE= +github.com/DataDog/zstd v1.5.7/go.mod h1:g4AWEaM3yOg3HYfnJ3YIawPnVdXJh9QME85blwSAmyw= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.26.0 h1:f2Qw/Ehhimh5uO1fayV0QIW7DShEQqhtUfhYc+cBPlw= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.26.0/go.mod h1:2bIszWvQRlJVmJLiuLhukLImRjKPcYdzzsx6darK02A= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1 h1:UQ0AhxogsIRZDkElkblfnwjc3IaltCm2HUMvezQaL7s= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.48.1/go.mod h1:jyqM3eLpJ3IbIFDTKVz2rF9T/xWGW0rIriGwnz8l9Tk= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.48.1 h1:oTX4vsorBZo/Zdum6OKPA4o7544hm6smoRv1QjpTwGo= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.48.1/go.mod h1:0wEl7vrAD8mehJyohS9HZy+WyEOaQO2mJx86Cvh93kM= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1 h1:8nn+rsCvTq9axyEh382S0PFLBeaFwNsT43IrPWzctRU= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.48.1/go.mod h1:viRWSEhtMZqz1rhwmOVKkWl6SwmVowfL9O2YR5gI2PE= +github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= +github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= +github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= +github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= +github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= +github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= +github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= +github.com/adlio/schema v1.3.6 h1:k1/zc2jNfeiZBA5aFTRy37jlBIuCkXCm0XmvpzCKI9I= +github.com/adlio/schema v1.3.6/go.mod h1:qkxwLgPBd1FgLRHYVCmQT/rrBr3JH38J9LjmVzWNudg= +github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= +github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY= +github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk= +github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/apache/arrow/go/v10 v10.0.1/go.mod h1:YvhnlEePVnBS4+0z3fhPfUy7W1Ikj0Ih0vcRo/gZ1M0= +github.com/apache/arrow/go/v11 v11.0.0/go.mod h1:Eg5OsL5H+e299f7u5ssuXsuHQVEGC4xei5aX110hRiI= +github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= +github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= +github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= +github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/aws/aws-sdk-go v1.44.224 h1:09CiaaF35nRmxrzWZ2uRq5v6Ghg/d2RiPjZnSgtt+RQ= +github.com/aws/aws-sdk-go v1.44.224/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bgentry/speakeasy v0.2.0 h1:tgObeVOf8WAvtuAX6DhJ4xks4CFNwPDZiqzGqIHE51E= +github.com/bgentry/speakeasy v0.2.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bits-and-blooms/bitset v1.22.0 h1:Tquv9S8+SGaS3EhyA+up3FXzmkhxPGjQQCkcs2uw7w4= +github.com/bits-and-blooms/bitset v1.22.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8= +github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= +github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= +github.com/btcsuite/btcd/btcutil v1.1.6 h1:zFL2+c3Lb9gEgqKNzowKUPQNb8jV7v5Oaodi/AYFd6c= +github.com/btcsuite/btcd/btcutil v1.1.6/go.mod h1:9dFymx8HpuLqBnsPELrImQeTQfKBQqzqGbbV3jK55aE= +github.com/bufbuild/protocompile v0.14.1 h1:iA73zAf/fyljNjQKwYzUHD6AD4R8KMasmwa/FBatYVw= +github.com/bufbuild/protocompile v0.14.1/go.mod h1:ppVdAIhbr2H8asPk6k4pY7t9zB1OU5DoEw9xY/FUi1c= +github.com/bytedance/sonic v1.5.0/go.mod h1:ED5hyg4y6t3/9Ku1R6dU/4KyJ48DZ4jPhfY1O2AihPM= +github.com/bytedance/sonic v1.9.1/go.mod h1:i736AoUSYt75HyZLoJW9ERYxcy6eaN6h4BZXU064P/U= +github.com/bytedance/sonic v1.13.2 h1:8/H1FempDZqC4VqjptGo14QQlJx8VdZJegxs6wwfqpQ= +github.com/bytedance/sonic v1.13.2/go.mod h1:o68xyaF9u2gvVBuGHPlUVCy+ZfmNNO5ETf1+KgkJhz4= +github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= +github.com/bytedance/sonic/loader v0.2.4 h1:ZWCw4stuXUsn1/+zQDqeE7JKP+QO47tz7QCNan80NzY= +github.com/bytedance/sonic/loader v0.2.4/go.mod h1:N8A3vUdtUebEY2/VQC0MyhYeKUFosQU6FxH2JmUe6VI= +github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= +github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= +github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= +github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/census-instrumentation/opencensus-proto v0.3.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= +github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= +github.com/chenzhuoyu/base64x v0.0.0-20211019084208-fb5309c8db06/go.mod h1:DH46F32mSOjUmXrMHnKwZdA8wcEefY7UVqBKYGjpdQY= +github.com/chenzhuoyu/base64x v0.0.0-20221115062448-fe3a3abad311/go.mod h1:b583jCggY9gE99b6G5LEC39OIiVsWj+R97kbl5odCEk= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/logex v1.2.1 h1:XHDu3E6q+gdHgsdTPH6ImJMIp436vR6MPtH8gP05QzM= +github.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/readline v1.5.1 h1:upd/6fQk4src78LMRzh5vItIt361/o4uq553V8B5sGI= +github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObkaSkeBlk= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04= +github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8= +github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= +github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= +github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudwego/base64x v0.1.5 h1:XPciSp1xaq2VCSt6lF0phncD4koWyULpl5bUxbfCyP4= +github.com/cloudwego/base64x v0.1.5/go.mod h1:0zlkT4Wn5C6NdauXdJRhSKRlJvmclQ1hhJgA0rcu/8w= +github.com/cloudwego/iasm v0.2.0/go.mod h1:8rXZaNYT2n95jn+zTI1sDr+IgcD2GVs0nlbbQPiEFhY= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42 h1:Om6kYQYDUk5wWbT0t0q6pvyM49i9XZAv9dDrkDA7gjk= +github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/cockroachdb/apd/v2 v2.0.2 h1:weh8u7Cneje73dDh+2tEVLUvyBc89iwepWCD8b8034E= +github.com/cockroachdb/apd/v2 v2.0.2/go.mod h1:DDxRlzC2lo3/vSlmSoS7JkqbbrARPuFOGr0B9pvN3Gw= +github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= +github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f h1:otljaYPt5hWxV3MUfO5dFPFiOXg9CyG5/kCfayTqsJ4= +github.com/cockroachdb/datadriven v1.0.3-0.20230413201302-be42291fc80f/go.mod h1:a9RdTaap04u637JoCzcUoIcDmvwSUtcUFtT/C3kJlTU= +github.com/cockroachdb/errors v1.11.3 h1:5bA+k2Y6r+oz/6Z/RFlNeVCesGARKuC6YymtcDrbC/I= +github.com/cockroachdb/errors v1.11.3/go.mod h1:m4UIW4CDjx+R5cybPsNrRbreomiFqt8o1h1wUVazSd8= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce h1:giXvy4KSc/6g/esnpM7Geqxka4WSqI1SZc7sMJFd3y4= +github.com/cockroachdb/fifo v0.0.0-20240606204812-0bbfbd93a7ce/go.mod h1:9/y3cnZ5GKakj/H4y9r9GTjCvAFta7KLgSHPJJYc52M= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b h1:r6VH0faHjZeQy818SGhaone5OnYfxFR/+AzdY3sf5aE= +github.com/cockroachdb/logtags v0.0.0-20230118201751-21c54148d20b/go.mod h1:Vz9DsVWQQhf3vs21MhPMZpMGSht7O/2vFW2xusFUVOs= +github.com/cockroachdb/pebble v1.1.5 h1:5AAWCBWbat0uE0blr8qzufZP5tBjkRyy/jWe1QWLnvw= +github.com/cockroachdb/pebble v1.1.5/go.mod h1:17wO9el1YEigxkP/YtV8NtCivQDgoCyBg5c4VR/eOWo= +github.com/cockroachdb/redact v1.1.6 h1:zXJBwDZ84xJNlHl1rMyCojqyIxv+7YUpQiJLQ7n4314= +github.com/cockroachdb/redact v1.1.6/go.mod h1:BVNblN9mBWFyMyqK1k3AAiSxhvhfK2oOZZ2lK+dpvRg= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06 h1:zuQyyAKVxetITBuuhv3BI9cMrmStnpT18zmgmTxunpo= +github.com/cockroachdb/tokenbucket v0.0.0-20230807174530-cc333fc44b06/go.mod h1:7nc4anLGjupUW/PeY5qiNYsdNXj7zopG+eqsS7To5IQ= +github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= +github.com/cometbft/cometbft v0.38.17 h1:FkrQNbAjiFqXydeAO81FUzriL4Bz0abYxN/eOHrQGOk= +github.com/cometbft/cometbft v0.38.17/go.mod h1:5l0SkgeLRXi6bBfQuevXjKqML1jjfJJlvI1Ulp02/o4= +github.com/cometbft/cometbft-db v0.14.1 h1:SxoamPghqICBAIcGpleHbmoPqy+crij/++eZz3DlerQ= +github.com/cometbft/cometbft-db v0.14.1/go.mod h1:KHP1YghilyGV/xjD5DP3+2hyigWx0WTp9X+0Gnx0RxQ= +github.com/containerd/continuity v0.3.0 h1:nisirsYROK15TAMVukJOUyGJjz4BNQJBVsNvAXZJ/eg= +github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= +github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cosmos/btcutil v1.0.5 h1:t+ZFcX77LpKtDBhjucvnOH8C2l2ioGsBNEQ3jef8xFk= +github.com/cosmos/btcutil v1.0.5/go.mod h1:IyB7iuqZMJlthe2tkIFL33xPyzbFYP0XVdS8P5lUPis= +github.com/cosmos/cosmos-db v1.1.1 h1:FezFSU37AlBC8S98NlSagL76oqBRWq/prTPvFcEJNCM= +github.com/cosmos/cosmos-db v1.1.1/go.mod h1:AghjcIPqdhSLP/2Z0yha5xPH3nLnskz81pBx3tcVSAw= +github.com/cosmos/cosmos-proto v1.0.0-beta.5 h1:eNcayDLpip+zVLRLYafhzLvQlSmyab+RC5W7ZfmxJLA= +github.com/cosmos/cosmos-proto v1.0.0-beta.5/go.mod h1:hQGLpiIUloJBMdQMMWb/4wRApmI9hjHH05nefC0Ojec= +github.com/cosmos/cosmos-sdk v0.53.0 h1:ZsB2tnBVudumV059oPuElcr0K1lLOutaI6WJ+osNTbI= +github.com/cosmos/cosmos-sdk v0.53.0/go.mod h1:UPcRyFwOUy2PfSFBWxBceO/HTjZOuBVqY583WyazIGs= +github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY= +github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= +github.com/cosmos/gogogateway v1.2.0 h1:Ae/OivNhp8DqBi/sh2A8a1D0y638GpL3tkmLQAiKxTE= +github.com/cosmos/gogogateway v1.2.0/go.mod h1:iQpLkGWxYcnCdz5iAdLcRBSw3h7NXeOkZ4GUkT+tbFI= +github.com/cosmos/gogoproto v1.4.2/go.mod h1:cLxOsn1ljAHSV527CHOtaIP91kK6cCrZETRBrkzItWU= +github.com/cosmos/gogoproto v1.7.0 h1:79USr0oyXAbxg3rspGh/m4SWNyoz/GLaAh0QlCe2fro= +github.com/cosmos/gogoproto v1.7.0/go.mod h1:yWChEv5IUEYURQasfyBW5ffkMHR/90hiHgbNgrtp4j0= +github.com/cosmos/iavl v1.2.2 h1:qHhKW3I70w+04g5KdsdVSHRbFLgt3yY3qTMd4Xa4rC8= +github.com/cosmos/iavl v1.2.2/go.mod h1:GiM43q0pB+uG53mLxLDzimxM9l/5N9UuSY3/D0huuVw= +github.com/cosmos/ics23/go v0.11.0 h1:jk5skjT0TqX5e5QJbEnwXIS2yI2vnmLOgpQPeM5RtnU= +github.com/cosmos/ics23/go v0.11.0/go.mod h1:A8OjxPE67hHST4Icw94hOxxFEJMBG031xIGF/JHNIY0= +github.com/cosmos/ledger-cosmos-go v0.14.0 h1:WfCHricT3rPbkPSVKRH+L4fQGKYHuGOK9Edpel8TYpE= +github.com/cosmos/ledger-cosmos-go v0.14.0/go.mod h1:E07xCWSBl3mTGofZ2QnL4cIUzMbbGVyik84QYKbX3RA= +github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/danieljoos/wincred v1.1.2 h1:QLdCxFs1/Yl4zduvBdcHB8goaYk9RARS2SgLLRuAyr0= +github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/decred/dcrd/crypto/blake256 v1.1.0 h1:zPMNGQCm0g4QTY27fOCorQW7EryeQ/U0x++OzVrdms8= +github.com/decred/dcrd/crypto/blake256 v1.1.0/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0 h1:NMZiJj8QnKe1LgsbDayM4UoHwbvwDRwnI3hwNaAHRnc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.4.0/go.mod h1:ZXNYxsqcloTdSy/rNShjYzMhyjf0LaoftYK0p+A3h40= +github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f h1:U5y3Y5UE0w7amNe7Z5G/twsBW0KEalRQXZzf8ufSh9I= +github.com/desertbit/timer v0.0.0-20180107155436-c41aec40b27f/go.mod h1:xH/i4TFMt8koVQZ6WFms69WAsDWr2XsYL3Hkl7jkoLE= +github.com/dgraph-io/badger/v4 v4.2.0 h1:kJrlajbXXL9DFTNuhhu9yCx7JJa4qpYWxtE8BzuWsEs= +github.com/dgraph-io/badger/v4 v4.2.0/go.mod h1:qfCqhPoWDFJRx1gp5QwwyGo8xk1lbHUxvK9nK0OGAak= +github.com/dgraph-io/ristretto v0.1.1 h1:6CWw5tJNgpegArSHpNHJKldNeq03FQCwYvfMVWajOK8= +github.com/dgraph-io/ristretto v0.1.1/go.mod h1:S1GPSBCYCIhmVNfcth17y2zZtQT6wzkzgwUve0VDWWA= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= +github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= +github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= +github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= +github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= +github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= +github.com/dvsekhvalnov/jose2go v1.6.0 h1:Y9gnSnP4qEI0+/uQkHvFXeD2PLPJeXEL+ySMEA2EjTY= +github.com/dvsekhvalnov/jose2go v1.6.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= +github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= +github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/emicklei/dot v1.6.2 h1:08GN+DD79cy/tzN6uLCT84+2Wk9u+wvqP+Hkx/dIR8A= +github.com/emicklei/dot v1.6.2/go.mod h1:DeV7GvQtIw4h2u73RKBkkFdvVAz0D9fzeJrgPW6gy/s= +github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= +github.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJJM//w9BV6Fxbg2LuVd34= +github.com/envoyproxy/go-control-plane v0.11.1-0.20230524094728-9239064ad72f/go.mod h1:sfYdkwUW4BA3PbKjySwjJy+O4Pu0h62rlqCMHNk+K+Q= +github.com/envoyproxy/go-control-plane v0.13.4 h1:zEqyPVyku6IvWCFwux4x9RxkLOMUL+1vC9xUFv5l2/M= +github.com/envoyproxy/go-control-plane v0.13.4/go.mod h1:kDfuBlDVsSj2MjrLEtRWtHlsWIFcGyB2RMO44Dc5GZA= +github.com/envoyproxy/go-control-plane/envoy v1.32.4 h1:jb83lalDRZSpPWW2Z7Mck/8kXZ5CQAFYVjQcdVIr83A= +github.com/envoyproxy/go-control-plane/envoy v1.32.4/go.mod h1:Gzjc5k8JcJswLjAx1Zm+wSYE20UrLtt7JZMWiWQXQEw= +github.com/envoyproxy/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI= +github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= +github.com/envoyproxy/protoc-gen-validate v0.9.1/go.mod h1:OKNgG7TCp5pF4d6XftA0++PMirau2/yoOwVac3AbF2w= +github.com/envoyproxy/protoc-gen-validate v0.10.1/go.mod h1:DRjgyB0I43LtJapqN6NiRwroiAU2PaFuvk/vjgh61ss= +github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= +github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= +github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= +github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= +github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= +github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= +github.com/fsnotify/fsnotify v1.9.0 h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k= +github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= +github.com/gabriel-vasile/mimetype v1.4.2 h1:w5qFW6JKBz9Y393Y4q372O9A7cUSequkh1Q7OhCmWKU= +github.com/gabriel-vasile/mimetype v1.4.2/go.mod h1:zApsH/mKG4w07erKIaJPFiX0Tsq9BFQgN3qGY5GnNgA= +github.com/getsentry/sentry-go v0.27.0 h1:Pv98CIbtB3LkMWmXi4Joa5OOcwbmnX88sF5qbK3r3Ps= +github.com/getsentry/sentry-go v0.27.0/go.mod h1:lc76E2QywIyW8WuBnwl8Lc4bkmQH4+w1gwTf25trprY= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.9.1 h1:4idEAncQnU5cB7BeOkPtxjfCSye0AAm1R0RVIqJ+Jmg= +github.com/gin-gonic/gin v1.9.1/go.mod h1:hPrL7YrpYKXt5YId3A/Tnip5kqbEAP+KLuI3SUcPTeU= +github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= +github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= +github.com/go-fonts/dejavu v0.1.0/go.mod h1:4Wt4I4OU2Nq9asgDCteaAaWZOV24E+0/Pwo0gppep4g= +github.com/go-fonts/latin-modern v0.2.0/go.mod h1:rQVLdDMK+mK1xscDwsqM5J8U2jrRa3T0ecnM9pNujks= +github.com/go-fonts/liberation v0.1.1/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= +github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2HYqyqAO9z7GY= +github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-jose/go-jose/v4 v4.0.5 h1:M6T8+mKZl/+fNNuFHvGIzDz7BTLQPIounk/b9dw3AaE= +github.com/go-jose/go-jose/v4 v4.0.5/go.mod h1:s3P1lRrkT8igV8D9OjyL4WRyHvjB6a4JSllnOrmmBOA= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= +github.com/go-kit/kit v0.13.0 h1:OoneCcHKHQ03LfBpoQCUfCluwd2Vt3ohz+kvbJneZAU= +github.com/go-kit/kit v0.13.0/go.mod h1:phqEHMMUbyrCFCTgH48JueqrM3md2HcAZ8N3XE4FKDg= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= +github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= +github.com/go-latex/latex v0.0.0-20210118124228-b3d85cf34e07/go.mod h1:CO1AlKB2CSIqUrmQPqA0gdRIlnLEY0gK5JGjh37zN5U= +github.com/go-latex/latex v0.0.0-20210823091927-c0d11ff05a81/go.mod h1:SX0U8uGpxhq9o2S/CELCSUxEWWAuoCUcVCQWv7G2OCk= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= +github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= +github.com/go-pdf/fpdf v0.5.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= +github.com/go-pdf/fpdf v0.6.0/go.mod h1:HzcnA+A23uwogo0tp9yU+l3V+KXhiESpt1PMayhOh5M= +github.com/go-playground/assert/v2 v2.2.0/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.14.1 h1:EWaQ/wswjilfKLTECiXz7Rh+3BjFhfDFKv/oXslEjJA= +github.com/go-playground/locales v0.14.1/go.mod h1:hxrqLVvrK65+Rwrd5Fc6F2O76J/NuW9t0sjnWqG1slY= +github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJnYK9S473LQFuzCbDbfSFY= +github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= +github.com/go-playground/validator/v10 v10.14.0 h1:vgvQWe3XCz3gIeFDm/HnTIbj6UGmg/+t63MyGU2n5js= +github.com/go-playground/validator/v10 v10.14.0/go.mod h1:9iXMNT7sEkjXb0I+enO7QXmzG6QCsPWY4zveKFVRSyU= +github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss= +github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee h1:s+21KNqlpePfkah2I+gwHF8xmJWRjooY+5248k6m4A0= +github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= +github.com/gobwas/pool v0.2.0 h1:QEmUOlnSjWtnpRGHF3SauEiOsy82Cup83Vf2LcMlnc8= +github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/ws v1.0.2 h1:CoAavW/wd/kulfZmSIBt6p24n4j7tHgNVCjsfHVNUbo= +github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= +github.com/goccy/go-json v0.9.11/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= +github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2 h1:ZpnhV/YsD2/4cESfV5+Hoeu/iUR3ruzNvZ+yQfO03a0= +github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= +github.com/gogo/googleapis v1.4.1-0.20201022092350-68b0159b7869/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= +github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0= +github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= +github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= +github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= +github.com/golang/glog v1.2.4 h1:CNNw5U8lSiiBk7druxtSHHTsRWcxKoac6kZKm2peBBc= +github.com/golang/glog v1.2.4/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= +github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= +github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.0/go.mod h1:Qd/q+1AKNOZr9uGQzbzCmRO6sUih6GTPZv6a1/R87v0= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= +github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg= +github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/flatbuffers v2.0.8+incompatible h1:ivUb1cGomAB101ZM1T0nOiWz9pSrTMoa9+EiY7igmkM= +github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9Fc= +github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0= +github.com/google/orderedcode v0.0.1 h1:UzfcAexk9Vhv8+9pNOgRu41f16lHq725vPwnSeiG/Us= +github.com/google/orderedcode v0.0.1/go.mod h1:iVyU4/qPKHY5h/wSd6rZZCDcLJNxiWO6dvsYES2Sb20= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= +github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= +github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= +github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= +github.com/googleapis/enterprise-certificate-proxy v0.2.1/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/enterprise-certificate-proxy v0.3.4 h1:XYIDZApgAnrN1c855gTgghdIA6Stxb52D5RnLI1SLyw= +github.com/googleapis/enterprise-certificate-proxy v0.3.4/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= +github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= +github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= +github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= +github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= +github.com/googleapis/gax-go/v2 v2.4.0/go.mod h1:XOTVJ59hdnfJLIP/dh8n5CGryZR2LxK9wbMD5+iXC6c= +github.com/googleapis/gax-go/v2 v2.5.1/go.mod h1:h6B0KMMFNtI2ddbGJn3T3ZbwkeT6yqEF02fYlzkUCyo= +github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= +github.com/googleapis/gax-go/v2 v2.7.0/go.mod h1:TEop28CZZQ2y+c0VxMUmu1lV+fQx57QpBWsYpwqHJx8= +github.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= +github.com/googleapis/gax-go/v2 v2.14.1 h1:hb0FFeiPaQskmvakKu5EbCbpntQn48jyHuvrkurSS/Q= +github.com/googleapis/gax-go/v2 v2.14.1/go.mod h1:Hb/NubMaVM88SrNkvl8X/o8XWwDJEPqouaLeN2IUxoA= +github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= +github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= +github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= +github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w= +github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= +github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= +github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= +github.com/grpc-ecosystem/go-grpc-middleware v1.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI= +github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= +github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= +github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c h1:6rhixN/i8ZofjG1Y75iExal34USq5p+wiN1tpie8IrU= +github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= +github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= +github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-getter v1.7.8 h1:mshVHx1Fto0/MydBekWan5zUipGq7jO0novchgMmSiY= +github.com/hashicorp/go-getter v1.7.8/go.mod h1:2c6CboOEb9jG6YvmC9xdD+tyAFsrUaJPedwXDGr0TM4= +github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= +github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= +github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-metrics v0.5.4 h1:8mmPiIJkTPPEbAiV97IxdAGNdRdaWwVap1BU6elejKY= +github.com/hashicorp/go-metrics v0.5.4/go.mod h1:CG5yz4NZ/AI/aQt9Ucm/vdBnbh7fvmv4lxZ350i+QQI= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-plugin v1.6.3 h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg= +github.com/hashicorp/go-plugin v1.6.3/go.mod h1:MRobyh+Wc/nYy1V4KAXUiYfzxoYhs7V1mlH1Z7iY2h0= +github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= +github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= +github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= +github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/hashicorp/yamux v0.1.2 h1:XtB8kyFOyHXYVFnwT5C3+Bdo8gArse7j2AQ0DA0Uey8= +github.com/hashicorp/yamux v0.1.2/go.mod h1:C+zze2n6e/7wshOZep2A70/aQU6QBRWJO/G6FT1wIns= +github.com/hdevalence/ed25519consensus v0.2.0 h1:37ICyZqdyj0lAZ8P4D1d1id3HqbbG1N3iBb1Tb4rdcU= +github.com/hdevalence/ed25519consensus v0.2.0/go.mod h1:w3BHWjwJbFU29IRHL1Iqkw3sus+7FctEyM4RqDxYNzo= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/huandu/go-assert v1.1.5 h1:fjemmA7sSfYHJD7CUqs9qTwwfdNAx7/j2/ZlHXzNB3c= +github.com/huandu/go-assert v1.1.5/go.mod h1:yOLvuqZwmcHIC5rIzrBhT7D3Q9c3GFnd0JrPVhn/06U= +github.com/huandu/skiplist v1.2.1 h1:dTi93MgjwErA/8idWTzIw4Y1kZsMWx35fmI2c8Rij7w= +github.com/huandu/skiplist v1.2.1/go.mod h1:7v3iFjLcSAzO4fN5B8dvebvo/qsfumiLiDXMrPiHF9w= +github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= +github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= +github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= +github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/improbable-eng/grpc-web v0.15.0 h1:BN+7z6uNXZ1tQGcNAuaU1YjsLTApzkjt2tzCixLaUPQ= +github.com/improbable-eng/grpc-web v0.15.0/go.mod h1:1sy9HKV4Jt9aEs9JSnkWlRJPuPtwNr0l57L4f878wP8= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= +github.com/jhump/protoreflect v1.17.0 h1:qOEr613fac2lOuTgWN4tPAtLL7fUSbuJL5X5XumQh94= +github.com/jhump/protoreflect v1.17.0/go.mod h1:h9+vUUL38jiBzck8ck+6G/aeMX8Z4QUY/NiJPwPNi+8= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= +github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= +github.com/jmhodges/levigo v1.0.0 h1:q5EC36kV79HWeTBWsod3mG11EgStG3qArTKcvlksN1U= +github.com/jmhodges/levigo v1.0.0/go.mod h1:Q6Qx+uH3RAqyK4rFQroq9RL7mdkABMcfhEI+nNuzMJQ= +github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= +github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= +github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= +github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.11.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.15.9/go.mod h1:PhcZ0MbTNciWF3rruxRgKxI5NkcHHrHUDtV4Yw2GlzU= +github.com/klauspost/compress v1.15.11/go.mod h1:QPwzmACJjUTFsnSHH934V6woptycfrDDJnH7hvFVbGM= +github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo= +github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/klauspost/cpuid/v2 v2.2.4/go.mod h1:RVVoqg1df56z8g3pUjL/3lE5UfnlrJX8tyFgg4nqhuY= +github.com/klauspost/cpuid/v2 v2.2.10 h1:tBs3QSyvjDyFTq3uoc/9xFpCuOsJQFNPiAhYdw2skhE= +github.com/klauspost/cpuid/v2 v2.2.10/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0= +github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= +github.com/leodido/go-urn v1.2.4 h1:XlAE/cm/ms7TE/VMVoduSpNBoyc2dOxHs5MZSwAN63Q= +github.com/leodido/go-urn v1.2.4/go.mod h1:7ZrI8mTSeBSHl/UaRyKQW1qZeMgak41ANeCNaVckg+4= +github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= +github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= +github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/linxGnu/grocksdb v1.8.14 h1:HTgyYalNwBSG/1qCQUIott44wU5b2Y9Kr3z7SK5OfGQ= +github.com/linxGnu/grocksdb v1.8.14/go.mod h1:QYiYypR2d4v63Wj1adOOfzglnoII0gLj3PNh4fZkcFA= +github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= +github.com/lyft/protoc-gen-star v0.6.1/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= +github.com/lyft/protoc-gen-star/v2 v2.0.1/go.mod h1:RcCdONR2ScXaYnQC5tUzxzlpA3WVYF7/opLeUgcQs/o= +github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= +github.com/magiconair/properties v1.8.10 h1:s31yESBquKXCV9a/ScB3ESkOjUYYv+X0rg8SYxI99mE= +github.com/magiconair/properties v1.8.10/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/manifoldco/promptui v0.9.0 h1:3V4HzJk1TtXW1MTZMP7mdlwbBpIinw3HztaIlYthEiA= +github.com/manifoldco/promptui v0.9.0/go.mod h1:ka04sppxSGFAtxX0qhlYQjISsg9mR4GWtQEhdbn6Pgg= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= +github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= +github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= +github.com/minio/highwayhash v1.0.3 h1:kbnuUMoHYyVl7szWjSxJnxw11k2U709jqFPPmIUyD6Q= +github.com/minio/highwayhash v1.0.3/go.mod h1:GGYsuwP/fPD6Y9hMiXuapVvlIUEhFhMTh0rxU3ik1LQ= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= +github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= +github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= +github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/mtibben/percent v0.2.1 h1:5gssi8Nqo8QU/r2pynCm+hBQHpkB/uNK7BJCFogWdzs= +github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/grpc-proxy v0.0.0-20181017164139-0f1106ef9c76/go.mod h1:x5OoJHDHqxHS801UIuhqGl6QdSAEJvtausosHSdazIo= +github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= +github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= +github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= +github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= +github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/nxadm/tail v1.4.11 h1:8feyoE3OzPrcshW5/MJ4sGESc5cqmGkGCWlco4l0bqY= +github.com/nxadm/tail v1.4.11/go.mod h1:OTaG3NK980DZzxbRq6lEuzgU+mug70nY11sMd4JXXHc= +github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a h1:dlRvE5fWabOchtH7znfiFCcOvmIYgOeAS5ifBXBlh9Q= +github.com/oasisprotocol/curve25519-voi v0.0.0-20230904125328-1f23a7beb09a/go.mod h1:hVoHR2EVESiICEMbg137etN/Lx+lSrHPTD39Z/uE+2s= +github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= +github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA= +github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU= +github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= +github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= +github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= +github.com/onsi/gomega v1.26.0 h1:03cDLK28U6hWvCAns6NeydX3zIm4SF3ci69ulidS32Q= +github.com/onsi/gomega v1.26.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM= +github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= +github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= +github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7XWJGmnM7r3wg034= +github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= +github.com/opencontainers/runc v1.1.12 h1:BOIssBaW1La0/qbNZHXOOa71dZfZEQOzW7dqQf3phss= +github.com/opencontainers/runc v1.1.12/go.mod h1:S+lQwSfncpBha7XTy/5lBwWgm5+y5Ma/O44Ekby9FK8= +github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= +github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= +github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= +github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= +github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= +github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA= +github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= +github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= +github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= +github.com/pelletier/go-toml/v2 v2.0.8/go.mod h1:vuYfssBdrU2XDZ9bYydBu6t+6a6PYNcZljzZR9VXg+4= +github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= +github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= +github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7 h1:Dx7Ovyv/SFnMFw3fD4oEoeorXc6saIiQ23LrGLth0Gw= +github.com/petermattis/goid v0.0.0-20240813172612-4fcff4a6cae7/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/phpdave11/gofpdf v1.4.2/go.mod h1:zpO6xFn9yxo3YLyMvW8HcKWVdbNqgIfOOp2dXMnm1mY= +github.com/phpdave11/gofpdi v1.0.12/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= +github.com/phpdave11/gofpdi v1.0.13/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= +github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= +github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pingcap/errors v0.11.4 h1:lFuQV/oaUMGcD2tqt+01ROSmJs75VG1ToEOkZIZ4nE4= +github.com/pingcap/errors v0.11.4/go.mod h1:Oi8TUi2kEtXXLMJk9l1cGmz20kV3TaQ0usTwv5KuLY8= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= +github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= +github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= +github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo= +github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= +github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.22.0 h1:rb93p9lokFEsctTys46VnV1kLCDpVZ0a/Y92Vm0Zc6Q= +github.com/prometheus/client_golang v1.22.0/go.mod h1:R7ljNsLXhuQXYZYtw6GAE9AZg8Y7vEW5scdCXrWRXC0= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= +github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= +github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= +github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.15.0/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/common v0.63.0 h1:YR/EIY1o3mEFP/kZCD7iDMnLPlGyuU2Gb3HIcXnA98k= +github.com/prometheus/common v0.63.0/go.mod h1:VVFF/fBIoToEnWRVkYoXEkq3R3paCoxG9PXP74SnV18= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.3.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= +github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= +github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= +github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= +github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= +github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= +github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/rs/xid v1.6.0/go.mod h1:7XoLgs4eV+QndskICGsho+ADou8ySMSjJKDIan90Nz0= +github.com/rs/zerolog v1.34.0 h1:k43nTLIwcTVQAncfCw4KZ2VY6ukYoZaBPNOE8txlOeY= +github.com/rs/zerolog v1.34.0/go.mod h1:bJsvje4Z08ROH4Nhs5iH600c3IkWhwp44iRc54W6wYQ= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ruudk/golang-pdf417 v0.0.0-20181029194003-1af4ab5afa58/go.mod h1:6lfFZQK844Gfx8o5WFuvpxWRwnSoipWe/p622j1v06w= +github.com/ruudk/golang-pdf417 v0.0.0-20201230142125-a7e3863a1245/go.mod h1:pQAZKsJ8yyVxGRWYNEm9oFB8ieLgKFnamEyDmSA0BRk= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/sagikazarmark/locafero v0.7.0 h1:5MqpDsTGNDhY8sGp0Aowyf0qKsPrhewaLSsFaodPcyo= +github.com/sagikazarmark/locafero v0.7.0/go.mod h1:2za3Cg5rMaTMoG/2Ulr9AwtFaIppKXTRYnozin4aB5k= +github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= +github.com/sasha-s/go-deadlock v0.3.5 h1:tNCOEEDG6tBqrNDOX35j/7hL5FcFViG6awUGROb2NsU= +github.com/sasha-s/go-deadlock v0.3.5/go.mod h1:bugP6EGbdGYObIlx7pUZtWqlvo8k9H6vCBBsiChJQ5U= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= +github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= +github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= +github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= +github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/afero v1.9.2/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= +github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs= +github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4= +github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y= +github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= +github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= +github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.20.1 h1:ZMi+z/lvLyPSCoNtFCpqjy0S4kPbirhpTMwl8BkW9X4= +github.com/spf13/viper v1.20.1/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4= +github.com/spiffe/go-spiffe/v2 v2.5.0 h1:N2I01KCUkv1FAjZXJMwh95KK1ZIQLYbPfhaxw8WS0hE= +github.com/spiffe/go-spiffe/v2 v2.5.0/go.mod h1:P+NxobPc6wXhVtINNtFjNWGBTreew1GBUCwT2wPmb7g= +github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= +github.com/stretchr/testify v1.8.3/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +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.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= +github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d/go.mod h1:RRCYJbIwD5jmqPI9XoAFR0OcDxqUctll6zUj/+B4S48= +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= +github.com/tidwall/btree v1.7.0/go.mod h1:twD9XRA5jj9VUQGELzDO4HPQTNJsoWWfYEL+EUQ2cKY= +github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= +github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= +github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2+aY1QWCk3Cedj/Gdt08= +github.com/ugorji/go/codec v1.2.11 h1:BMaWp1Bb6fHwEtbplGBGJ498wD+LKlNSl25MjdZY4dU= +github.com/ugorji/go/codec v1.2.11/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= +github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8= +github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= +github.com/zeebo/errs v1.4.0 h1:XNdoD/RRMKP7HD0UhJnIzUy74ISdGGxURlYG8HSWSfM= +github.com/zeebo/errs v1.4.0/go.mod h1:sgbWHsvVuTPHcqJJGQ1WhI5KbWlHYz+2+2C/LSEtCw4= +github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= +github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U= +github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= +github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw= +github.com/zondax/ledger-go v0.14.3/go.mod h1:IKKaoxupuB43g4NxeQmbLXv7T9AlQyie1UpHb342ycI= +go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5 h1:qxen9oVGzDdIRP6ejyAJc760RwW4SnVDiTYTzwnXuxo= +go.etcd.io/bbolt v1.4.0-alpha.0.0.20240404170359-43604f3112c5/go.mod h1:eW0HG9/oHQhvRCvb1/pIXW4cOvtDqeQK+XSi3TnwaXY= +go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= +go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= +go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/contrib/detectors/gcp v1.34.0 h1:JRxssobiPg23otYU5SbWtQC//snGVIM3Tx6QRzlQBao= +go.opentelemetry.io/contrib/detectors/gcp v1.34.0/go.mod h1:cV4BMFcscUR/ckqLkbfQmF0PRsq8w/lMGzdbCSveBHo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.58.0 h1:PS8wXpbyaDJQ2VDHHncMe9Vct0Zn1fEjpsjrLxGJoSc= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.58.0/go.mod h1:HDBUsEjOuRC0EzKZ1bSaRGZWUBAzo+MhAcUUORSr4D0= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0 h1:yd02MEjBdJkG3uabWP9apV+OuWRIXGDuJEUJbOHmCFU= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.58.0/go.mod h1:umTcuxiv1n/s/S6/c2AT/g2CQ7u5C59sHDNmfSwgz7Q= +go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= +go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0 h1:WDdP9acbMYjbKIyJUhTvtzj601sVJOqgWdUxSdR/Ysc= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0/go.mod h1:BLbf7zbNIONBLPwvFnwNHGj4zge8uTCM/UPIVW1Mq2I= +go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= +go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= +go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= +go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= +go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= +go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= +go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/mock v0.5.2 h1:LbtPTcP8A5k9WPXj54PPPbjcI4Y6lhyOZXn+VS7wNko= +go.uber.org/mock v0.5.2/go.mod h1:wLlUxC2vVTPTaE3UD51E0BGOAElKrILxhVSDYQLld5o= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= +go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= +golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= +golang.org/x/arch v0.3.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8= +golang.org/x/arch v0.15.0 h1:QtOrQd0bTUnhNVNndMpLHNWrDmYzZ2KDqSrEymqInZw= +golang.org/x/arch v0.15.0/go.mod h1:JmwW7aLIoRUKgaTzhkiEFxvcEiQGyOg9BMonBJUS7EE= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= +golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= +golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE= +golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc= +golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191002040644-a1355ae1e2c3/go.mod h1:NOZ3BPKG0ec/BKJQgnvsSFpcKLM5xXVWnvZS97DWHgE= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= +golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE= +golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 h1:nDVHiLt8aIbd/VzvPWN6kSOPE7+F/fNFDSXLVYkE/Iw= +golang.org/x/exp v0.0.0-20250305212735-054e65f0b394/go.mod h1:sIifuuw/Yco/y6yb6+bDNfyeQ/MdPUy/hKEMYQV17cM= +golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20190910094157-69e4b8554b2a/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200119044424-58c23975cae1/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200430140353-33d19683fad8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20200618115811-c13761719519/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20201208152932-35266b937fa6/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210216034530-4410531fe030/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/image v0.0.0-20210607152325-775e3b0c77b9/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20210628002857-a66eb6448b8d/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20211028202545-6944b10bf410/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/image v0.0.0-20220302094943-723b81ca9867/go.mod h1:023OzeP/+EPmXeapQh35lcL3II3LrY8Ic+EFFKVhULM= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200421231249-e086a090c8fd/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= +golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.0.0-20220909164309-bea034e7d591/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221012135044-0b7e1fb9d458/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.0.0-20221014081412-f15817d10f9b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= +golang.org/x/net v0.4.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= +golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= +golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= +golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= +golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= +golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY= +golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= +golang.org/x/oauth2 v0.0.0-20220822191816-0ebed06d0094/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20220909003341-f21342109be1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221006150949-b44042a4b9c1/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec= +golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I= +golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= +golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4= +golang.org/x/oauth2 v0.27.0 h1:da9Vo7/tDv5RH/7nZDz1eMGS/q1Vv1N/7FCrBhI9I3M= +golang.org/x/oauth2 v0.27.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.13.0 h1:AauUjRAJ9OSnvULf/ARrrVywoJDy0YS2AwQ98I37610= +golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200420163511-1957bb5e6d1f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210304124612-50617c2ba197/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220315194320-039c03cc5b86/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220829200755-d48e67d00261/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20221010170243-090e33056c14/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20= +golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= +golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= +golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY= +golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= +golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= +golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= +golang.org/x/term v0.31.0 h1:erwDkOK1Msy6offm1mOgvspSkslFnIGsFnxOKoufg3o= +golang.org/x/term v0.31.0/go.mod h1:R4BeIy7D95HzImkxGkTW1UQTtP54tio2RyHz7PwK0aw= +golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0= +golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220922220347-f3bd1da661af/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.1.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= +golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190927191325-030b2cf1153e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201124115921-2c860bdd6e78/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.3.0/go.mod h1:/rWhSS2+zyEVwoJf8YAX6L2f0ntZ7Kn/mGgAWcipA5k= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= +gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= +gonum.org/v1/gonum v0.9.3/go.mod h1:TZumC3NeyVQskjXqmyWt4S3bINhy7B4eYwW69EbyX+0= +gonum.org/v1/gonum v0.11.0/go.mod h1:fSG4YDCxxUZQJ7rKsQrj0gMOg00Il0Z96/qMA4bVQhA= +gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= +gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc= +gonum.org/v1/plot v0.9.0/go.mod h1:3Pcqqmp6RHvJI72kgb8fThyUnav364FOsdDo2aGW5lY= +gonum.org/v1/plot v0.10.1/go.mod h1:VZW5OlhkL1mysU9vaqNHnsy86inf6Ot+jB3r+BczCEo= +google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= +google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= +google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= +google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= +google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= +google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= +google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= +google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= +google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= +google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= +google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= +google.golang.org/api v0.75.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.77.0/go.mod h1:pU9QmyHLnzlpar1Mjt4IbapUCy8J+6HD6GeELN69ljA= +google.golang.org/api v0.78.0/go.mod h1:1Sg78yoMLOhlQTeF+ARBoytAcH1NNyyl390YMy6rKmw= +google.golang.org/api v0.80.0/go.mod h1:xY3nI94gbvBrE0J6NHXhxOmW97HG7Khjkku6AFB3Hyg= +google.golang.org/api v0.84.0/go.mod h1:NTsGnUFJMYROtiquksZHBWtHfeMC7iYthki7Eq3pa8o= +google.golang.org/api v0.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= +google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.93.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= +google.golang.org/api v0.95.0/go.mod h1:eADj+UBuxkh5zlrSntJghuNeg8HwQ1w5lTKkuqaETEI= +google.golang.org/api v0.96.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.97.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.98.0/go.mod h1:w7wJQLTM+wvQpNf5JyEcBoxK0RH7EDrh/L4qfsuJ13s= +google.golang.org/api v0.99.0/go.mod h1:1YOf74vkVndF7pG6hIHuINsM7eWwpVTAfNMNiL91A08= +google.golang.org/api v0.100.0/go.mod h1:ZE3Z2+ZOr87Rx7dqFsdRQkRBk36kDtp/h+QpHbB7a70= +google.golang.org/api v0.102.0/go.mod h1:3VFl6/fzoA+qNuS1N1/VfXY4LjoXN/wzeIp7TweWwGo= +google.golang.org/api v0.103.0/go.mod h1:hGtW6nK1AC+d9si/UBhw8Xli+QMOf6xyNAyJw4qU9w0= +google.golang.org/api v0.106.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= +google.golang.org/api v0.107.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= +google.golang.org/api v0.108.0/go.mod h1:2Ts0XTHNVWxypznxWOYUeI4g3WdP9Pk2Qk58+a/O9MY= +google.golang.org/api v0.110.0/go.mod h1:7FC4Vvx1Mooxh8C5HWjzZHcavuS2f6pmJpZx60ca7iI= +google.golang.org/api v0.111.0/go.mod h1:qtFHvU9mhgTJegR31csQ+rwxyUTHOKFqCKWp1J0fdw0= +google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= +google.golang.org/api v0.222.0 h1:Aiewy7BKLCuq6cUCeOUrsAlzjXPqBkEeQ/iwGHVQa/4= +google.golang.org/api v0.222.0/go.mod h1:efZia3nXpWELrwMlN5vyQrD4GmJN1Vw0x68Et3r+a9c= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210126160654-44e461bb6506/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210329143202-679c6ae281ee/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= +google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220314164441-57ef72a4c106/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220329172620-7be39ac1afc7/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220413183235-5e96e2839df9/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= +google.golang.org/genproto v0.0.0-20220722212130-b98a9ff5e252/go.mod h1:GkXuJDJ6aQ7lnJcRF+SJVgFdQhypqgl3LB1C9vabdRE= +google.golang.org/genproto v0.0.0-20220801145646-83ce21fca29f/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= +google.golang.org/genproto v0.0.0-20220815135757-37a418bb8959/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220817144833-d7fd3f11b9b1/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220822174746-9e6da59bd2fc/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829144015-23454907ede3/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220829175752-36a9c930ecbf/go.mod h1:dbqgFATTzChvnt+ujMdZwITVAJHFtfyN1qUhDqEiIlk= +google.golang.org/genproto v0.0.0-20220913154956-18f8339a66a5/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220914142337-ca0e39ece12f/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220915135415-7fd63a7952de/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220916172020-2692e8806bfa/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220919141832-68c03719ef51/go.mod h1:0Nb8Qy+Sk5eDzHnzlStwW3itdNaWoZA5XeSG+R3JHSo= +google.golang.org/genproto v0.0.0-20220920201722-2b89144ce006/go.mod h1:ht8XFiar2npT/g4vkk7O0WYS1sHOHbdujxbEp7CJWbw= +google.golang.org/genproto v0.0.0-20220926165614-551eb538f295/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20220926220553-6981cbe3cfce/go.mod h1:woMGP53BroOrRY3xTxlbr8Y3eB/nzAvvFM83q7kG2OI= +google.golang.org/genproto v0.0.0-20221010155953-15ba04fc1c0e/go.mod h1:3526vdqwhZAwq4wsRUaVG555sVgsNmIjRtO7t/JH29U= +google.golang.org/genproto v0.0.0-20221014173430-6e2ab493f96b/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221014213838-99cd37c6964a/go.mod h1:1vXfmgAz9N9Jx0QA82PqRVauvCz1SGSz739p0f183jM= +google.golang.org/genproto v0.0.0-20221024153911-1573dae28c9c/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20221024183307-1bc688fe9f3e/go.mod h1:9qHF0xnpdSfF6knlcsnpzUu5y+rpwgbvsyGAZPBMg4s= +google.golang.org/genproto v0.0.0-20221027153422-115e99e71e1c/go.mod h1:CGI5F/G+E5bKwmfYo09AXuVN4dD894kIKUFmVbP2/Fo= +google.golang.org/genproto v0.0.0-20221109142239-94d6d90a7d66/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221114212237-e4508ebdbee1/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221117204609-8f9c96812029/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221201164419-0e50fba7f41c/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221201204527-e3fa12d562f3/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/genproto v0.0.0-20221202195650-67e5cbc046fd/go.mod h1:cTsE614GARnxrLsqKREzmNYJACSWWpAWdNMwnD7c2BE= +google.golang.org/genproto v0.0.0-20221227171554-f9683d7f8bef/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230112194545-e10362b5ecf9/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230113154510-dbe35b8444a5/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230123190316-2c411cf9d197/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230124163310-31e0e69b6fc2/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230125152338-dcaf20b6aeaa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230127162408-596548ed4efa/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230209215440-0dfe4f8abfcc/go.mod h1:RGgjbofJ8xD9Sq1VVhDM1Vok1vRONV+rg+CjzG4SZKM= +google.golang.org/genproto v0.0.0-20230216225411-c8e22ba71e44/go.mod h1:8B0gmkoRebU8ukX6HP+4wrVQUY1+6PkQ44BSyIlflHA= +google.golang.org/genproto v0.0.0-20230222225845-10f96fb3dbec/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= +google.golang.org/genproto v0.0.0-20230223222841-637eb2293923/go.mod h1:3Dl5ZL0q0isWJt+FVcfpQyirqemEuLAK/iFvg1UP1Hw= +google.golang.org/genproto v0.0.0-20230303212802-e74f57abe488/go.mod h1:TvhZT5f700eVlTNwND1xoEZQeWTB2RY/65kplwl/bFA= +google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= +google.golang.org/genproto v0.0.0-20230320184635-7606e756e683/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= +google.golang.org/genproto v0.0.0-20230323212658-478b75c54725/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230330154414-c0448cd141ea/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230331144136-dcfb400f0633/go.mod h1:UUQDJDOlWu4KYeJZffbWgBkS1YFobzKbLVfK69pe0Ak= +google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= +google.golang.org/genproto v0.0.0-20241118233622-e639e219e697 h1:ToEetK57OidYuqD4Q5w+vfEnPvPpuTwedCNVohYJfNk= +google.golang.org/genproto v0.0.0-20241118233622-e639e219e697/go.mod h1:JJrvXBWRZaFMxBufik1a4RpFw4HhgVtBBWQeQgUj2cc= +google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463 h1:hE3bRWtU6uceqlh4fhrSnUyjKHMKB9KrTLLG+bc0ddM= +google.golang.org/genproto/googleapis/api v0.0.0-20250324211829-b45e905df463/go.mod h1:U90ffi8eUL9MwPcrJylN5+Mk2v3vuPDptd5yyNUiRR8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250422160041-2d3770c4ea7f h1:N/PrbTw4kdkqNRzVfWPrBekzLuarFREcbFOiOLkXon4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250422160041-2d3770c4ea7f/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.32.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= +google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= +google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww= +google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= +google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= +google.golang.org/grpc v1.54.0/go.mod h1:PUSEXI6iWghWaB6lXM4knEgpJNu2qUcKfDtNci3EC2g= +google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= +google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM= +google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY= +google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= +gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= +lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= +lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= +modernc.org/cc/v3 v3.36.0/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/cc/v3 v3.36.2/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/cc/v3 v3.36.3/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= +modernc.org/ccgo/v3 v3.0.0-20220428102840-41399a37e894/go.mod h1:eI31LL8EwEBKPpNpA4bU1/i+sKOwOrQy8D87zWUcRZc= +modernc.org/ccgo/v3 v3.0.0-20220430103911-bc99d88307be/go.mod h1:bwdAnOoaIt8Ax9YdWGjxWsdkPcZyRPHqrOvJxaKAKGw= +modernc.org/ccgo/v3 v3.16.4/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= +modernc.org/ccgo/v3 v3.16.6/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= +modernc.org/ccgo/v3 v3.16.8/go.mod h1:zNjwkizS+fIFDrDjIAgBSCLkWbJuHF+ar3QRn+Z9aws= +modernc.org/ccgo/v3 v3.16.9/go.mod h1:zNMzC9A9xeNUepy6KuZBbugn3c0Mc9TeiJO4lgvkJDo= +modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ= +modernc.org/httpfs v1.0.6/go.mod h1:7dosgurJGp0sPaRanU53W4xZYKh14wfzX420oZADeHM= +modernc.org/libc v0.0.0-20220428101251-2d5f3daf273b/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= +modernc.org/libc v1.16.0/go.mod h1:N4LD6DBE9cf+Dzf9buBlzVJndKr/iJHG97vGLHYnb5A= +modernc.org/libc v1.16.1/go.mod h1:JjJE0eu4yeK7tab2n4S1w8tlWd9MxXLRzheaRnAKymU= +modernc.org/libc v1.16.17/go.mod h1:hYIV5VZczAmGZAnG15Vdngn5HSF5cSkbvfz2B7GRuVU= +modernc.org/libc v1.16.19/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= +modernc.org/libc v1.17.0/go.mod h1:XsgLldpP4aWlPlsjqKRdHPqCxCjISdHfM/yeWC5GyW0= +modernc.org/libc v1.17.1/go.mod h1:FZ23b+8LjxZs7XtFMbSzL/EhPxNbfZbErxEHc7cbD9s= +modernc.org/mathutil v1.2.2/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/mathutil v1.4.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= +modernc.org/memory v1.1.1/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= +modernc.org/memory v1.2.0/go.mod h1:/0wo5ibyrQiaoUoH7f9D8dnglAmILJ5/cxZlRECf+Nw= +modernc.org/memory v1.2.1/go.mod h1:PkUhL0Mugw21sHPeskwZW4D6VscE/GQJOnIpCnW6pSU= +modernc.org/opt v0.1.1/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= +modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= +modernc.org/sqlite v1.18.1/go.mod h1:6ho+Gow7oX5V+OiOQ6Tr4xeqbx13UZ6t+Fw9IRUG4d4= +modernc.org/strutil v1.1.1/go.mod h1:DE+MQQ/hjKBZS2zNInV5hhcipt5rLPWkmpbGeW5mmdw= +modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= +modernc.org/tcl v1.13.1/go.mod h1:XOLfOwzhkljL4itZkK6T72ckMgvj0BDsnKNdZVUOecw= +modernc.org/token v1.0.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= +modernc.org/z v1.5.1/go.mod h1:eWFB510QWW5Th9YGZT81s+LwvaAs3Q2yr4sP0rmLkv8= +nhooyr.io/websocket v1.8.6 h1:s+C3xAMLwGmlI31Nyn/eAehUlZPwfYZu2JXM621Q5/k= +nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= +nullprogram.com/x/optparse v1.0.0/go.mod h1:KdyPE+Igbe0jQUrVfMqDMeJQIJZEuyV7pjYmp6pbG50= +pgregory.net/rapid v1.2.0 h1:keKAYRcjm+e1F0oAuU5F5+YPAWcyxNNRK2wud503Gnk= +pgregory.net/rapid v1.2.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= +sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= +sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= +sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/vendor-shims/cosmossdk-x-upgrade/internal/conv/doc.go b/vendor-shims/cosmossdk-x-upgrade/internal/conv/doc.go new file mode 100644 index 00000000..1c86f5c1 --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/internal/conv/doc.go @@ -0,0 +1,2 @@ +// Package conv provides internal functions for convertions and data manipulation +package conv diff --git a/vendor-shims/cosmossdk-x-upgrade/internal/conv/string.go b/vendor-shims/cosmossdk-x-upgrade/internal/conv/string.go new file mode 100644 index 00000000..f7833405 --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/internal/conv/string.go @@ -0,0 +1,11 @@ +package conv + +import ( + "unsafe" +) + +// UnsafeStrToBytes uses unsafe to convert string into byte array. Returned bytes +// must not be altered after this function is called as it will cause a segmentation fault. +func UnsafeStrToBytes(s string) []byte { + return unsafe.Slice(unsafe.StringData(s), len(s)) // ref https://github.com/golang/go/issues/53003#issuecomment-1140276077 +} diff --git a/vendor-shims/cosmossdk-x-upgrade/internal/conv/string_test.go b/vendor-shims/cosmossdk-x-upgrade/internal/conv/string_test.go new file mode 100644 index 00000000..dfaaa038 --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/internal/conv/string_test.go @@ -0,0 +1,39 @@ +package conv + +import ( + "runtime" + "strconv" + "testing" + "time" + + "github.com/stretchr/testify/suite" +) + +func TestStringSuite(t *testing.T) { + suite.Run(t, new(StringSuite)) +} + +type StringSuite struct{ suite.Suite } + +func unsafeConvertStr() []byte { + return UnsafeStrToBytes("abc") +} + +func (s *StringSuite) TestUnsafeStrToBytes() { + // we convert in other function to trigger GC. We want to check that + // the underlying array in []bytes is accessible after GC will finish swapping. + for i := 0; i < 5; i++ { + b := unsafeConvertStr() + runtime.GC() + <-time.NewTimer(2 * time.Millisecond).C + b2 := append(b, 'd') + s.Equal("abc", string(b)) + s.Equal("abcd", string(b2)) + } +} + +func BenchmarkUnsafeStrToBytes(b *testing.B) { + for i := 0; i < b.N; i++ { + UnsafeStrToBytes(strconv.Itoa(i)) + } +} diff --git a/vendor-shims/cosmossdk-x-upgrade/keeper/grpc_query.go b/vendor-shims/cosmossdk-x-upgrade/keeper/grpc_query.go new file mode 100644 index 00000000..d3502372 --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/keeper/grpc_query.go @@ -0,0 +1,89 @@ +package keeper + +import ( + "context" + "errors" + + errorsmod "cosmossdk.io/errors" + "cosmossdk.io/x/upgrade/types" + + sdk "github.com/cosmos/cosmos-sdk/types" +) + +var _ types.QueryServer = Keeper{} + +// CurrentPlan implements the Query/CurrentPlan gRPC method +func (k Keeper) CurrentPlan(c context.Context, req *types.QueryCurrentPlanRequest) (*types.QueryCurrentPlanResponse, error) { + ctx := sdk.UnwrapSDKContext(c) + + plan, err := k.GetUpgradePlan(ctx) + if err != nil { + if errors.Is(err, types.ErrNoUpgradePlanFound) { + return &types.QueryCurrentPlanResponse{}, nil + } + + return nil, err + } + + return &types.QueryCurrentPlanResponse{Plan: &plan}, nil +} + +// AppliedPlan implements the Query/AppliedPlan gRPC method +func (k Keeper) AppliedPlan(c context.Context, req *types.QueryAppliedPlanRequest) (*types.QueryAppliedPlanResponse, error) { + ctx := sdk.UnwrapSDKContext(c) + + applied, err := k.GetDoneHeight(ctx, req.Name) + + return &types.QueryAppliedPlanResponse{Height: applied}, err +} + +// UpgradedConsensusState implements the Query/UpgradedConsensusState gRPC method +func (k Keeper) UpgradedConsensusState(c context.Context, req *types.QueryUpgradedConsensusStateRequest) (*types.QueryUpgradedConsensusStateResponse, error) { //nolint:staticcheck // we're using a deprecated call for compatibility + ctx := sdk.UnwrapSDKContext(c) + + consState, err := k.GetUpgradedConsensusState(ctx, req.LastHeight) + if err != nil { + if errors.Is(err, types.ErrNoUpgradedConsensusStateFound) { + return &types.QueryUpgradedConsensusStateResponse{}, nil //nolint:staticcheck // we're using a deprecated call for compatibility + } + + return nil, err + } + + return &types.QueryUpgradedConsensusStateResponse{ //nolint:staticcheck // we're using a deprecated call for compatibility + UpgradedConsensusState: consState, + }, nil +} + +// ModuleVersions implements the Query/QueryModuleVersions gRPC method +func (k Keeper) ModuleVersions(c context.Context, req *types.QueryModuleVersionsRequest) (*types.QueryModuleVersionsResponse, error) { + ctx := sdk.UnwrapSDKContext(c) + + // check if a specific module was requested + if len(req.ModuleName) > 0 { + version, err := k.getModuleVersion(ctx, req.ModuleName) + if err != nil { + // module requested, but not found or error happened + return nil, errorsmod.Wrapf(err, "x/upgrade: QueryModuleVersions module %s not found", req.ModuleName) + } + + // return the requested module + res := []*types.ModuleVersion{{Name: req.ModuleName, Version: version}} + return &types.QueryModuleVersionsResponse{ModuleVersions: res}, nil + } + + // if no module requested return all module versions from state + mv, err := k.GetModuleVersions(ctx) + if err != nil { + return nil, err + } + + return &types.QueryModuleVersionsResponse{ + ModuleVersions: mv, + }, nil +} + +// Authority implements the Query/Authority gRPC method, returning the account capable of performing upgrades +func (k Keeper) Authority(c context.Context, req *types.QueryAuthorityRequest) (*types.QueryAuthorityResponse, error) { + return &types.QueryAuthorityResponse{Address: k.authority}, nil +} diff --git a/vendor-shims/cosmossdk-x-upgrade/keeper/grpc_query_test.go b/vendor-shims/cosmossdk-x-upgrade/keeper/grpc_query_test.go new file mode 100644 index 00000000..276d385f --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/keeper/grpc_query_test.go @@ -0,0 +1,236 @@ +package keeper_test + +import ( + "context" + "fmt" + "testing" + + "github.com/stretchr/testify/suite" + + "cosmossdk.io/core/header" + storetypes "cosmossdk.io/store/types" + "cosmossdk.io/x/upgrade" + "cosmossdk.io/x/upgrade/keeper" + "cosmossdk.io/x/upgrade/types" + + "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/runtime" + "github.com/cosmos/cosmos-sdk/testutil" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" +) + +type UpgradeTestSuite struct { + suite.Suite + + upgradeKeeper *keeper.Keeper + ctx sdk.Context + queryClient types.QueryClient + encCfg moduletestutil.TestEncodingConfig +} + +func (suite *UpgradeTestSuite) SetupTest() { + suite.encCfg = moduletestutil.MakeTestEncodingConfig(upgrade.AppModuleBasic{}) + key := storetypes.NewKVStoreKey(types.StoreKey) + storeService := runtime.NewKVStoreService(key) + testCtx := testutil.DefaultContextWithDB(suite.T(), key, storetypes.NewTransientStoreKey("transient_test")) + suite.ctx = testCtx.Ctx + + skipUpgradeHeights := make(map[int64]bool) + + suite.upgradeKeeper = keeper.NewKeeper(skipUpgradeHeights, storeService, suite.encCfg.Codec, suite.T().TempDir(), nil, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + suite.Require().NoError(suite.upgradeKeeper.SetModuleVersionMap(suite.ctx, module.VersionMap{ + "bank": 0, + })) + + queryHelper := baseapp.NewQueryServerTestHelper(testCtx.Ctx, suite.encCfg.InterfaceRegistry) + types.RegisterQueryServer(queryHelper, suite.upgradeKeeper) + suite.queryClient = types.NewQueryClient(queryHelper) +} + +func (suite *UpgradeTestSuite) TestQueryCurrentPlan() { + var ( + req *types.QueryCurrentPlanRequest + expResponse types.QueryCurrentPlanResponse + ) + + testCases := []struct { + msg string + malleate func() + expPass bool + }{ + { + "without current upgrade plan", + func() { + req = &types.QueryCurrentPlanRequest{} + expResponse = types.QueryCurrentPlanResponse{} + }, + true, + }, + { + "with current upgrade plan", + func() { + plan := types.Plan{Name: "test-plan", Height: 5} + suite.Require().NoError(suite.upgradeKeeper.ScheduleUpgrade(suite.ctx, plan)) + + req = &types.QueryCurrentPlanRequest{} + expResponse = types.QueryCurrentPlanResponse{Plan: &plan} + }, + true, + }, + } + + for _, tc := range testCases { + suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { + suite.SetupTest() // reset + + tc.malleate() + + res, err := suite.queryClient.CurrentPlan(context.Background(), req) + + if tc.expPass { + suite.Require().NoError(err) + suite.Require().NotNil(res) + suite.Require().Equal(&expResponse, res) + } else { + suite.Require().Error(err) + } + }) + } +} + +func (suite *UpgradeTestSuite) TestAppliedCurrentPlan() { + var ( + req *types.QueryAppliedPlanRequest + expHeight int64 + ) + + testCases := []struct { + msg string + malleate func() + expPass bool + }{ + { + "with non-existent upgrade plan", + func() { + req = &types.QueryAppliedPlanRequest{Name: "foo"} + }, + true, + }, + { + "with applied upgrade plan", + func() { + expHeight = 5 + + planName := "test-plan" + plan := types.Plan{Name: planName, Height: expHeight} + suite.Require().NoError(suite.upgradeKeeper.ScheduleUpgrade(suite.ctx, plan)) + + suite.ctx = suite.ctx.WithHeaderInfo(header.Info{Height: expHeight}) + suite.upgradeKeeper.SetUpgradeHandler(planName, func(ctx context.Context, plan types.Plan, vm module.VersionMap) (module.VersionMap, error) { + return vm, nil + }) + suite.Require().NoError(suite.upgradeKeeper.ApplyUpgrade(suite.ctx, plan)) + + req = &types.QueryAppliedPlanRequest{Name: planName} + }, + true, + }, + } + + for _, tc := range testCases { + suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { + suite.SetupTest() // reset + + tc.malleate() + + res, err := suite.queryClient.AppliedPlan(context.Background(), req) + + if tc.expPass { + suite.Require().NoError(err) + suite.Require().NotNil(res) + suite.Require().Equal(expHeight, res.Height) + } else { + suite.Require().Error(err) + } + }) + } +} + +func (suite *UpgradeTestSuite) TestModuleVersions() { + testCases := []struct { + msg string + req types.QueryModuleVersionsRequest + single bool + expPass bool + }{ + { + msg: "test full query", + req: types.QueryModuleVersionsRequest{}, + single: false, + expPass: true, + }, + { + msg: "test single module", + req: types.QueryModuleVersionsRequest{ModuleName: "bank"}, + single: true, + expPass: true, + }, + { + msg: "test non-existent module", + req: types.QueryModuleVersionsRequest{ModuleName: "abcdefg"}, + single: true, + expPass: false, + }, + } + + vm, err := suite.upgradeKeeper.GetModuleVersionMap(suite.ctx) + suite.Require().NoError(err) + + mv, err := suite.upgradeKeeper.GetModuleVersions(suite.ctx) + suite.Require().NoError(err) + + for _, tc := range testCases { + suite.Run(fmt.Sprintf("Case %s", tc.msg), func() { + suite.SetupTest() // reset + + res, err := suite.queryClient.ModuleVersions(context.Background(), &tc.req) + + if tc.expPass { + suite.Require().NoError(err) + suite.Require().NotNil(res) + + if tc.single { + // test that the single module response is valid + suite.Require().Len(res.ModuleVersions, 1) + // make sure we got the right values + suite.Require().Equal(vm[tc.req.ModuleName], res.ModuleVersions[0].Version) + suite.Require().Equal(tc.req.ModuleName, res.ModuleVersions[0].Name) + } else { + // check that the full response is valid + suite.Require().NotEmpty(res.ModuleVersions) + suite.Require().Equal(len(mv), len(res.ModuleVersions)) + for i, v := range res.ModuleVersions { + suite.Require().Equal(mv[i].Version, v.Version) + suite.Require().Equal(mv[i].Name, v.Name) + } + } + } else { + suite.Require().Error(err) + } + }) + } +} + +func (suite *UpgradeTestSuite) TestAuthority() { + res, err := suite.queryClient.Authority(context.Background(), &types.QueryAuthorityRequest{}) + suite.Require().NoError(err) + suite.Require().Equal(authtypes.NewModuleAddress(govtypes.ModuleName).String(), res.Address) +} + +func TestUpgradeTestSuite(t *testing.T) { + suite.Run(t, new(UpgradeTestSuite)) +} diff --git a/vendor-shims/cosmossdk-x-upgrade/keeper/keeper.go b/vendor-shims/cosmossdk-x-upgrade/keeper/keeper.go new file mode 100644 index 00000000..b06aba7d --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/keeper/keeper.go @@ -0,0 +1,585 @@ +package keeper + +import ( + "context" + "encoding/binary" + "encoding/json" + "errors" + "fmt" + "os" + "path/filepath" + "sort" + "strconv" + + "github.com/hashicorp/go-metrics" + + corestore "cosmossdk.io/core/store" + errorsmod "cosmossdk.io/errors" + "cosmossdk.io/log" + "cosmossdk.io/store/prefix" + storetypes "cosmossdk.io/store/types" + xp "cosmossdk.io/x/upgrade/exported" + "cosmossdk.io/x/upgrade/types" + + "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/runtime" + "github.com/cosmos/cosmos-sdk/telemetry" + sdk "github.com/cosmos/cosmos-sdk/types" + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" + "github.com/cosmos/cosmos-sdk/types/kv" + "github.com/cosmos/cosmos-sdk/types/module" +) + +// Deprecated: UpgradeInfoFileName file to store upgrade information +// use x/upgrade/types.UpgradeInfoFilename instead. +const UpgradeInfoFileName string = "upgrade-info.json" + +type Keeper struct { + homePath string // root directory of app config + skipUpgradeHeights map[int64]bool // map of heights to skip for an upgrade + storeService corestore.KVStoreService // key to access x/upgrade store + cdc codec.BinaryCodec // App-wide binary codec + upgradeHandlers map[string]types.UpgradeHandler // map of plan name to upgrade handler + versionSetter xp.ProtocolVersionSetter // implements setting the protocol version field on BaseApp + downgradeVerified bool // tells if we've already sanity checked that this binary version isn't being used against an old state. + authority string // the address capable of executing and canceling an upgrade. Usually the gov module account + initVersionMap module.VersionMap // the module version map at init genesis +} + +// NewKeeper constructs an upgrade Keeper which requires the following arguments: +// skipUpgradeHeights - map of heights to skip an upgrade +// storeKey - a store key with which to access upgrade's store +// cdc - the app-wide binary codec +// homePath - root directory of the application's config +// vs - the interface implemented by baseapp which allows setting baseapp's protocol version field +func NewKeeper(skipUpgradeHeights map[int64]bool, storeService corestore.KVStoreService, cdc codec.BinaryCodec, homePath string, vs xp.ProtocolVersionSetter, authority string) *Keeper { + k := &Keeper{ + homePath: homePath, + skipUpgradeHeights: skipUpgradeHeights, + storeService: storeService, + cdc: cdc, + upgradeHandlers: map[string]types.UpgradeHandler{}, + versionSetter: vs, + authority: authority, + } + + return k +} + +// SetVersionSetter sets the interface implemented by baseapp which allows setting baseapp's protocol version field +func (k *Keeper) SetVersionSetter(vs xp.ProtocolVersionSetter) { + k.versionSetter = vs +} + +// GetVersionSetter gets the protocol version field of baseapp +func (k *Keeper) GetVersionSetter() xp.ProtocolVersionSetter { + return k.versionSetter +} + +// SetInitVersionMap sets the initial version map. +// This is only used in app wiring and should not be used in any other context. +func (k *Keeper) SetInitVersionMap(vm module.VersionMap) { + k.initVersionMap = vm +} + +// GetInitVersionMap gets the initial version map +// This is only used in upgrade InitGenesis and should not be used in any other context. +func (k *Keeper) GetInitVersionMap() module.VersionMap { + return k.initVersionMap +} + +// SetUpgradeHandler sets an UpgradeHandler for the upgrade specified by name. This handler will be called when the upgrade +// with this name is applied. In order for an upgrade with the given name to proceed, a handler for this upgrade +// must be set even if it is a no-op function. +func (k Keeper) SetUpgradeHandler(name string, upgradeHandler types.UpgradeHandler) { + k.upgradeHandlers[name] = upgradeHandler +} + +// setProtocolVersion sets the protocol version to state +func (k Keeper) setProtocolVersion(ctx context.Context, v uint64) error { + store := k.storeService.OpenKVStore(ctx) + versionBytes := make([]byte, 8) + binary.BigEndian.PutUint64(versionBytes, v) + return store.Set([]byte{types.ProtocolVersionByte}, versionBytes) +} + +// getProtocolVersion gets the protocol version from state +func (k Keeper) getProtocolVersion(ctx context.Context) (uint64, error) { + store := k.storeService.OpenKVStore(ctx) + ok, err := store.Has([]byte{types.ProtocolVersionByte}) + if err != nil { + return 0, err + } + + if ok { + pvBytes, err := store.Get([]byte{types.ProtocolVersionByte}) + if err != nil { + return 0, err + } + + protocolVersion := binary.BigEndian.Uint64(pvBytes) + return protocolVersion, nil + } + // default value + return 0, nil +} + +// SetModuleVersionMap saves a given version map to state +func (k Keeper) SetModuleVersionMap(ctx context.Context, vm module.VersionMap) error { + if len(vm) > 0 { + store := runtime.KVStoreAdapter(k.storeService.OpenKVStore(ctx)) + versionStore := prefix.NewStore(store, []byte{types.VersionMapByte}) + // Even though the underlying store (cachekv) store is sorted, we still + // prefer a deterministic iteration order of the map, to avoid undesired + // surprises if we ever change stores. + sortedModNames := make([]string, 0, len(vm)) + + for key := range vm { + sortedModNames = append(sortedModNames, key) + } + sort.Strings(sortedModNames) + + for _, modName := range sortedModNames { + ver := vm[modName] + nameBytes := []byte(modName) + verBytes := make([]byte, 8) + binary.BigEndian.PutUint64(verBytes, ver) + versionStore.Set(nameBytes, verBytes) + } + } + + return nil +} + +// GetModuleVersionMap returns a map of key module name and value module consensus version +// as defined in ADR-041. +func (k Keeper) GetModuleVersionMap(ctx context.Context) (module.VersionMap, error) { + store := k.storeService.OpenKVStore(ctx) + prefix := []byte{types.VersionMapByte} + it, err := store.Iterator(prefix, storetypes.PrefixEndBytes(prefix)) + if err != nil { + return nil, err + } + defer it.Close() + + vm := make(module.VersionMap) + for ; it.Valid(); it.Next() { + moduleBytes := it.Key() + // first byte is prefix key, so we remove it here + name := string(moduleBytes[1:]) + moduleVersion := binary.BigEndian.Uint64(it.Value()) + vm[name] = moduleVersion + } + + return vm, nil +} + +// GetModuleVersions gets a slice of module consensus versions +func (k Keeper) GetModuleVersions(ctx context.Context) ([]*types.ModuleVersion, error) { + store := k.storeService.OpenKVStore(ctx) + prefix := []byte{types.VersionMapByte} + it, err := store.Iterator(prefix, storetypes.PrefixEndBytes(prefix)) + if err != nil { + return nil, err + } + defer it.Close() + + mv := make([]*types.ModuleVersion, 0) + for ; it.Valid(); it.Next() { + moduleBytes := it.Key() + name := string(moduleBytes[1:]) + moduleVersion := binary.BigEndian.Uint64(it.Value()) + mv = append(mv, &types.ModuleVersion{ + Name: name, + Version: moduleVersion, + }) + } + + return mv, nil +} + +// getModuleVersion gets the version for a given module. If it doesn't exist it returns ErrNoModuleVersionFound, other +// errors may be returned if there is an error reading from the store. +func (k Keeper) getModuleVersion(ctx context.Context, name string) (uint64, error) { + store := k.storeService.OpenKVStore(ctx) + prefix := []byte{types.VersionMapByte} + it, err := store.Iterator(prefix, storetypes.PrefixEndBytes(prefix)) + if err != nil { + return 0, err + } + defer it.Close() + + for ; it.Valid(); it.Next() { + moduleName := string(it.Key()[1:]) + if moduleName == name { + version := binary.BigEndian.Uint64(it.Value()) + return version, nil + } + } + + return 0, types.ErrNoModuleVersionFound +} + +// ScheduleUpgrade schedules an upgrade based on the specified plan. +// If there is another Plan already scheduled, it will cancel and overwrite it. +// ScheduleUpgrade will also write the upgraded IBC ClientState to the upgraded client +// path if it is specified in the plan. +func (k Keeper) ScheduleUpgrade(ctx context.Context, plan types.Plan) error { + if err := plan.ValidateBasic(); err != nil { + return err + } + + // NOTE: allow for the possibility of chains to schedule upgrades in begin block of the same block + // as a strategy for emergency hard fork recoveries + sdkCtx := sdk.UnwrapSDKContext(ctx) + if plan.Height < sdkCtx.HeaderInfo().Height { + return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "upgrade cannot be scheduled in the past") + } + + doneHeight, err := k.GetDoneHeight(ctx, plan.Name) + if err != nil { + return err + } + + if doneHeight != 0 { + return errorsmod.Wrapf(sdkerrors.ErrInvalidRequest, "upgrade with name %s has already been completed", plan.Name) + } + + store := k.storeService.OpenKVStore(ctx) + + // clear any old IBC state stored by previous plan + oldPlan, err := k.GetUpgradePlan(ctx) + // if there's an error but it's not ErrNoUpgradePlanFound, return error + if err != nil && !errors.Is(err, types.ErrNoUpgradePlanFound) { + return err + } + + if err == nil { + err = k.ClearIBCState(ctx, oldPlan.Height) + if err != nil { + return err + } + } + + bz, err := k.cdc.Marshal(&plan) + if err != nil { + return err + } + + err = store.Set(types.PlanKey(), bz) + if err != nil { + return err + } + + telemetry.SetGaugeWithLabels([]string{"server", "info"}, 1, []metrics.Label{telemetry.NewLabel("upgrade_height", strconv.FormatInt(plan.Height, 10))}) + + return nil +} + +// SetUpgradedClient sets the expected upgraded client for the next version of this chain at the last height the current chain will commit. +func (k Keeper) SetUpgradedClient(ctx context.Context, planHeight int64, bz []byte) error { + store := k.storeService.OpenKVStore(ctx) + return store.Set(types.UpgradedClientKey(planHeight), bz) +} + +// GetUpgradedClient gets the expected upgraded client for the next version of this chain. If not found it returns +// ErrNoUpgradedClientFound, but other errors may be returned if there is an error reading from the store. +func (k Keeper) GetUpgradedClient(ctx context.Context, height int64) ([]byte, error) { + store := k.storeService.OpenKVStore(ctx) + bz, err := store.Get(types.UpgradedClientKey(height)) + if err != nil { + return nil, err + } + + if bz == nil { + return nil, types.ErrNoUpgradedClientFound + } + + return bz, nil +} + +// SetUpgradedConsensusState sets the expected upgraded consensus state for the next version of this chain +// using the last height committed on this chain. +func (k Keeper) SetUpgradedConsensusState(ctx context.Context, planHeight int64, bz []byte) error { + store := k.storeService.OpenKVStore(ctx) + return store.Set(types.UpgradedConsStateKey(planHeight), bz) +} + +// GetUpgradedConsensusState gets the expected upgraded consensus state for the next version of this chain. If not found +// it returns ErrNoUpgradedConsensusStateFound, but other errors may be returned if there is an error reading from the store. +func (k Keeper) GetUpgradedConsensusState(ctx context.Context, lastHeight int64) ([]byte, error) { + store := k.storeService.OpenKVStore(ctx) + bz, err := store.Get(types.UpgradedConsStateKey(lastHeight)) + if err != nil { + return nil, err + } + + if bz == nil { + return nil, types.ErrNoUpgradedConsensusStateFound + } + + return bz, nil +} + +// GetLastCompletedUpgrade returns the last applied upgrade name and height. +func (k Keeper) GetLastCompletedUpgrade(ctx context.Context) (string, int64, error) { + store := k.storeService.OpenKVStore(ctx) + prefix := []byte{types.DoneByte} + it, err := store.ReverseIterator(prefix, storetypes.PrefixEndBytes(prefix)) + if err != nil { + return "", 0, err + } + defer it.Close() + + if it.Valid() { + name, height := parseDoneKey(it.Key()) + return name, height, nil + } + + return "", 0, nil +} + +// parseDoneKey - split upgrade name and height from the done key +func parseDoneKey(key []byte) (string, int64) { + // 1 byte for the DoneByte + 8 bytes height + at least 1 byte for the name + kv.AssertKeyAtLeastLength(key, 10) + height := binary.BigEndian.Uint64(key[1:9]) + return string(key[9:]), int64(height) +} + +// encodeDoneKey - concatenate DoneByte, height and upgrade name to form the done key +func encodeDoneKey(name string, height int64) []byte { + key := make([]byte, 9+len(name)) // 9 = donebyte + uint64 len + key[0] = types.DoneByte + binary.BigEndian.PutUint64(key[1:9], uint64(height)) + copy(key[9:], name) + return key +} + +// GetDoneHeight returns the height at which the given upgrade was executed +func (k Keeper) GetDoneHeight(ctx context.Context, name string) (int64, error) { + store := k.storeService.OpenKVStore(ctx) + prefix := []byte{types.DoneByte} + it, err := store.Iterator(prefix, storetypes.PrefixEndBytes(prefix)) + if err != nil { + return 0, err + } + defer it.Close() + + for ; it.Valid(); it.Next() { + upgradeName, height := parseDoneKey(it.Key()) + if upgradeName == name { + return height, nil + } + } + + return 0, nil +} + +// ClearIBCState clears any planned IBC state +func (k Keeper) ClearIBCState(ctx context.Context, lastHeight int64) error { + // delete IBC client and consensus state from store if this is IBC plan + store := k.storeService.OpenKVStore(ctx) + err := store.Delete(types.UpgradedClientKey(lastHeight)) + if err != nil { + return err + } + + return store.Delete(types.UpgradedConsStateKey(lastHeight)) +} + +// ClearUpgradePlan clears any schedule upgrade and associated IBC states. +func (k Keeper) ClearUpgradePlan(ctx context.Context) error { + // clear IBC states every time upgrade plan is removed + oldPlan, err := k.GetUpgradePlan(ctx) + if err != nil { + // if there's no upgrade plan, return nil to match previous behavior + if errors.Is(err, types.ErrNoUpgradePlanFound) { + return nil + } + return err + } + + err = k.ClearIBCState(ctx, oldPlan.Height) + if err != nil { + return err + } + + store := k.storeService.OpenKVStore(ctx) + return store.Delete(types.PlanKey()) +} + +// Logger returns a module-specific logger. +func (k Keeper) Logger(ctx context.Context) log.Logger { + sdkCtx := sdk.UnwrapSDKContext(ctx) + return sdkCtx.Logger().With("module", "x/"+types.ModuleName) +} + +// GetUpgradePlan returns the currently scheduled Plan if any. If not found it returns +// ErrNoUpgradePlanFound, but other errors may be returned if there is an error reading from the store. +func (k Keeper) GetUpgradePlan(ctx context.Context) (plan types.Plan, err error) { + store := k.storeService.OpenKVStore(ctx) + bz, err := store.Get(types.PlanKey()) + if err != nil { + return plan, err + } + + if bz == nil { + return plan, types.ErrNoUpgradePlanFound + } + + err = k.cdc.Unmarshal(bz, &plan) + if err != nil { + return plan, err + } + + return plan, err +} + +// setDone marks this upgrade name as being done so the name can't be reused accidentally +func (k Keeper) setDone(ctx context.Context, name string) error { + store := k.storeService.OpenKVStore(ctx) + sdkCtx := sdk.UnwrapSDKContext(ctx) + return store.Set(encodeDoneKey(name, sdkCtx.HeaderInfo().Height), []byte{1}) +} + +// HasHandler returns true iff there is a handler registered for this name +func (k Keeper) HasHandler(name string) bool { + _, ok := k.upgradeHandlers[name] + return ok +} + +// ApplyUpgrade will execute the handler associated with the Plan and mark the plan as done. +func (k Keeper) ApplyUpgrade(ctx context.Context, plan types.Plan) error { + handler := k.upgradeHandlers[plan.Name] + if handler == nil { + return fmt.Errorf("ApplyUpgrade should never be called without first checking HasHandler") + } + + vm, err := k.GetModuleVersionMap(ctx) + if err != nil { + return err + } + + updatedVM, err := handler(ctx, plan, vm) + if err != nil { + return err + } + + err = k.SetModuleVersionMap(ctx, updatedVM) + if err != nil { + return err + } + + // incremement the protocol version and set it in state and baseapp + nextProtocolVersion, err := k.getProtocolVersion(ctx) + if err != nil { + return err + } + nextProtocolVersion++ + err = k.setProtocolVersion(ctx, nextProtocolVersion) + if err != nil { + return err + } + + if k.versionSetter != nil { + // set protocol version on BaseApp + k.versionSetter.SetProtocolVersion(nextProtocolVersion) + } + + // Must clear IBC state after upgrade is applied as it is stored separately from the upgrade plan. + // This will prevent resubmission of upgrade msg after upgrade is already completed. + err = k.ClearIBCState(ctx, plan.Height) + if err != nil { + return err + } + + err = k.ClearUpgradePlan(ctx) + if err != nil { + return err + } + + return k.setDone(ctx, plan.Name) +} + +// IsSkipHeight checks if the given height is part of skipUpgradeHeights +func (k Keeper) IsSkipHeight(height int64) bool { + return k.skipUpgradeHeights[height] +} + +// DumpUpgradeInfoToDisk writes upgrade information to UpgradeInfoFileName. +func (k Keeper) DumpUpgradeInfoToDisk(height int64, p types.Plan) error { + upgradeInfoFilePath, err := k.GetUpgradeInfoPath() + if err != nil { + return err + } + + upgradeInfo := types.Plan{ + Name: p.Name, + Height: height, + Info: p.Info, + } + info, err := json.Marshal(upgradeInfo) + if err != nil { + return err + } + + return os.WriteFile(upgradeInfoFilePath, info, 0o600) +} + +// GetUpgradeInfoPath returns the upgrade info file path +func (k Keeper) GetUpgradeInfoPath() (string, error) { + upgradeInfoFileDir := filepath.Join(k.homePath, "data") + if err := os.MkdirAll(upgradeInfoFileDir, os.ModePerm); err != nil { + return "", fmt.Errorf("could not create directory %q: %w", upgradeInfoFileDir, err) + } + + return filepath.Join(upgradeInfoFileDir, types.UpgradeInfoFilename), nil +} + +// ReadUpgradeInfoFromDisk returns the name and height of the upgrade which is +// written to disk by the old binary when panicking. An error is returned if +// the upgrade path directory cannot be created or if the file exists and +// cannot be read or if the upgrade info fails to unmarshal. +func (k Keeper) ReadUpgradeInfoFromDisk() (types.Plan, error) { + var upgradeInfo types.Plan + + upgradeInfoPath, err := k.GetUpgradeInfoPath() + if err != nil { + return upgradeInfo, err + } + + data, err := os.ReadFile(upgradeInfoPath) + if err != nil { + // if file does not exist, assume there are no upgrades + if os.IsNotExist(err) { + return upgradeInfo, nil + } + + return upgradeInfo, err + } + + if err := json.Unmarshal(data, &upgradeInfo); err != nil { + return upgradeInfo, err + } + + if err := upgradeInfo.ValidateBasic(); err != nil { + return upgradeInfo, err + } + + if upgradeInfo.Height > 0 { + telemetry.SetGaugeWithLabels([]string{"server", "info"}, 1, []metrics.Label{telemetry.NewLabel("upgrade_height", strconv.FormatInt(upgradeInfo.Height, 10))}) + } + + return upgradeInfo, nil +} + +// SetDowngradeVerified updates downgradeVerified. +func (k *Keeper) SetDowngradeVerified(v bool) { + k.downgradeVerified = v +} + +// DowngradeVerified returns downgradeVerified. +func (k Keeper) DowngradeVerified() bool { + return k.downgradeVerified +} diff --git a/vendor-shims/cosmossdk-x-upgrade/keeper/keeper_test.go b/vendor-shims/cosmossdk-x-upgrade/keeper/keeper_test.go new file mode 100644 index 00000000..c92e12f0 --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/keeper/keeper_test.go @@ -0,0 +1,390 @@ +package keeper_test + +import ( + "context" + "path/filepath" + "testing" + "time" + + "github.com/stretchr/testify/suite" + + "cosmossdk.io/core/header" + "cosmossdk.io/log" + storetypes "cosmossdk.io/store/types" + "cosmossdk.io/x/upgrade" + "cosmossdk.io/x/upgrade/keeper" + "cosmossdk.io/x/upgrade/types" + + "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/runtime" + "github.com/cosmos/cosmos-sdk/testutil" + simtestutil "github.com/cosmos/cosmos-sdk/testutil/sims" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + moduletestutil "github.com/cosmos/cosmos-sdk/types/module/testutil" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" +) + +type KeeperTestSuite struct { + suite.Suite + + key *storetypes.KVStoreKey + baseApp *baseapp.BaseApp + upgradeKeeper *keeper.Keeper + homeDir string + ctx sdk.Context + msgSrvr types.MsgServer + addrs []sdk.AccAddress + encCfg moduletestutil.TestEncodingConfig +} + +func (s *KeeperTestSuite) SetupTest() { + s.encCfg = moduletestutil.MakeTestEncodingConfig(upgrade.AppModuleBasic{}) + key := storetypes.NewKVStoreKey(types.StoreKey) + storeService := runtime.NewKVStoreService(key) + s.key = key + testCtx := testutil.DefaultContextWithDB(s.T(), key, storetypes.NewTransientStoreKey("transient_test")) + + s.baseApp = baseapp.NewBaseApp( + "upgrade", + log.NewNopLogger(), + testCtx.DB, + s.encCfg.TxConfig.TxDecoder(), + ) + + skipUpgradeHeights := make(map[int64]bool) + + homeDir := filepath.Join(s.T().TempDir(), "x_upgrade_keeper_test") + s.upgradeKeeper = keeper.NewKeeper(skipUpgradeHeights, storeService, s.encCfg.Codec, homeDir, nil, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + s.upgradeKeeper.SetVersionSetter(s.baseApp) + + vs := s.upgradeKeeper.GetVersionSetter() + s.Require().Equal(vs, s.baseApp) + + s.Require().Equal(testCtx.Ctx.Logger().With("module", "x/"+types.ModuleName), s.upgradeKeeper.Logger(testCtx.Ctx)) + s.T().Log("home dir:", homeDir) + s.homeDir = homeDir + s.ctx = testCtx.Ctx.WithHeaderInfo(header.Info{Time: time.Now(), Height: 10}) + + s.msgSrvr = keeper.NewMsgServerImpl(s.upgradeKeeper) + s.addrs = simtestutil.CreateIncrementalAccounts(1) +} + +func (s *KeeperTestSuite) TestReadUpgradeInfoFromDisk() { + // require no error when the upgrade info file does not exist + _, err := s.upgradeKeeper.ReadUpgradeInfoFromDisk() + s.Require().NoError(err) + + expected := types.Plan{ + Name: "test_upgrade", + Height: 100, + } + + // create an upgrade info file + s.Require().NoError(s.upgradeKeeper.DumpUpgradeInfoToDisk(101, expected)) + + ui, err := s.upgradeKeeper.ReadUpgradeInfoFromDisk() + s.Require().NoError(err) + expected.Height = 101 + s.Require().Equal(expected, ui) + + // create invalid upgrade plan (with empty name) + expected.Name = "" + s.Require().NoError(s.upgradeKeeper.DumpUpgradeInfoToDisk(101, expected)) + _, err = s.upgradeKeeper.ReadUpgradeInfoFromDisk() + s.Require().ErrorContains(err, "name cannot be empty: invalid request") +} + +func (s *KeeperTestSuite) TestScheduleUpgrade() { + cases := []struct { + name string + plan types.Plan + setup func() + expPass bool + }{ + { + name: "successful height schedule", + plan: types.Plan{ + Name: "all-good", + Info: "some text here", + Height: 123450000, + }, + setup: func() {}, + expPass: true, + }, + { + name: "successful overwrite", + plan: types.Plan{ + Name: "all-good", + Info: "some text here", + Height: 123450000, + }, + setup: func() { + s.Require().NoError(s.upgradeKeeper.ScheduleUpgrade(s.ctx, types.Plan{ + Name: "alt-good", + Info: "new text here", + Height: 543210000, + })) + }, + expPass: true, + }, + { + name: "unsuccessful schedule: invalid plan", + plan: types.Plan{ + Height: 123450000, + }, + setup: func() {}, + expPass: false, + }, + { + name: "unsuccessful height schedule: due date in past", + plan: types.Plan{ + Name: "all-good", + Info: "some text here", + Height: 1, + }, + setup: func() {}, + expPass: false, + }, + { + name: "unsuccessful schedule: schedule already executed", + plan: types.Plan{ + Name: "all-good", + Info: "some text here", + Height: 123450000, + }, + setup: func() { + s.upgradeKeeper.SetUpgradeHandler("all-good", func(ctx context.Context, plan types.Plan, vm module.VersionMap) (module.VersionMap, error) { + return vm, nil + }) + s.Require().NoError(s.upgradeKeeper.ApplyUpgrade(s.ctx, types.Plan{ + Name: "all-good", + Info: "some text here", + Height: 123450000, + })) + }, + expPass: false, + }, + } + + for _, tc := range cases { + s.Run(tc.name, func() { + // reset suite + s.SetupTest() + + // setup test case + tc.setup() + + err := s.upgradeKeeper.ScheduleUpgrade(s.ctx, tc.plan) + + if tc.expPass { + s.Require().NoError(err, "valid test case failed") + } else { + s.Require().Error(err, "invalid test case passed") + } + }) + } +} + +func (s *KeeperTestSuite) TestSetUpgradedClient() { + cs := []byte("IBC client state") + + cases := []struct { + name string + height int64 + setup func() + exists bool + }{ + { + name: "no upgraded client exists", + height: 10, + setup: func() {}, + exists: false, + }, + { + name: "success", + height: 10, + setup: func() { + s.Require().NoError(s.upgradeKeeper.SetUpgradedClient(s.ctx, 10, cs)) + }, + exists: true, + }, + } + + for _, tc := range cases { + // reset suite + s.SetupTest() + + // setup test case + tc.setup() + + gotCs, err := s.upgradeKeeper.GetUpgradedClient(s.ctx, tc.height) + + if tc.exists { + s.Require().Equal(cs, gotCs, "valid case: %s did not retrieve correct client state", tc.name) + s.Require().NoError(err, "valid case: %s did not retrieve client state", tc.name) + } else { + s.Require().Nil(gotCs, "invalid case: %s retrieved valid client state", tc.name) + s.Require().Error(err, "invalid case: %s retrieved valid client state", tc.name) + } + } +} + +func (s *KeeperTestSuite) TestIsSkipHeight() { + var skipOne int64 = 9 + ok := s.upgradeKeeper.IsSkipHeight(11) + s.Require().False(ok) + skip := map[int64]bool{skipOne: true} + storeService := runtime.NewKVStoreService(s.key) + upgradeKeeper := keeper.NewKeeper(skip, storeService, s.encCfg.Codec, s.T().TempDir(), nil, authtypes.NewModuleAddress(govtypes.ModuleName).String()) + upgradeKeeper.SetVersionSetter(s.baseApp) + s.Require().True(upgradeKeeper.IsSkipHeight(9)) + s.Require().False(upgradeKeeper.IsSkipHeight(10)) +} + +func (s *KeeperTestSuite) TestUpgradedConsensusState() { + cs := []byte("IBC consensus state") + s.Require().NoError(s.upgradeKeeper.SetUpgradedConsensusState(s.ctx, 10, cs)) + bz, err := s.upgradeKeeper.GetUpgradedConsensusState(s.ctx, 10) + s.Require().Equal(cs, bz) + s.Require().NoError(err) +} + +func (s *KeeperTestSuite) TestDowngradeVerified() { + s.upgradeKeeper.SetDowngradeVerified(true) + ok := s.upgradeKeeper.DowngradeVerified() + s.Require().True(ok) +} + +// Test that the protocol version successfully increments after an +// upgrade and is successfully set on BaseApp's appVersion. +func (s *KeeperTestSuite) TestIncrementProtocolVersion() { + oldProtocolVersion := s.baseApp.AppVersion() + res := s.upgradeKeeper.HasHandler("dummy") + s.Require().False(res) + dummyPlan := types.Plan{ + Name: "dummy", + Info: "some text here", + Height: 100, + } + + err := s.upgradeKeeper.ApplyUpgrade(s.ctx, dummyPlan) + s.Require().EqualError(err, "ApplyUpgrade should never be called without first checking HasHandler") + + s.upgradeKeeper.SetUpgradeHandler("dummy", func(_ context.Context, _ types.Plan, vm module.VersionMap) (module.VersionMap, error) { return vm, nil }) + s.Require().NoError(s.upgradeKeeper.ApplyUpgrade(s.ctx, dummyPlan)) + upgradedProtocolVersion := s.baseApp.AppVersion() + + s.Require().Equal(oldProtocolVersion+1, upgradedProtocolVersion) +} + +// Tests that the underlying state of x/upgrade is set correctly after +// an upgrade. +func (s *KeeperTestSuite) TestMigrations() { + initialVM := module.VersionMap{"bank": uint64(1)} + s.Require().NoError(s.upgradeKeeper.SetModuleVersionMap(s.ctx, initialVM)) + vmBefore, err := s.upgradeKeeper.GetModuleVersionMap(s.ctx) + s.Require().NoError(err) + + s.upgradeKeeper.SetUpgradeHandler("dummy", func(_ context.Context, _ types.Plan, vm module.VersionMap) (module.VersionMap, error) { + // simulate upgrading the bank module + vm["bank"]++ + return vm, nil + }) + dummyPlan := types.Plan{ + Name: "dummy", + Info: "some text here", + Height: 123450000, + } + + s.Require().NoError(s.upgradeKeeper.ApplyUpgrade(s.ctx, dummyPlan)) + vm, err := s.upgradeKeeper.GetModuleVersionMap(s.ctx) + s.Require().Equal(vmBefore["bank"]+1, vm["bank"]) + s.Require().NoError(err) +} + +func (s *KeeperTestSuite) TestLastCompletedUpgrade() { + keeper := s.upgradeKeeper + require := s.Require() + + s.T().Log("verify empty name if applied upgrades are empty") + name, height, err := keeper.GetLastCompletedUpgrade(s.ctx) + require.Equal("", name) + require.Equal(int64(0), height) + require.NoError(err) + + keeper.SetUpgradeHandler("test0", func(_ context.Context, _ types.Plan, vm module.VersionMap) (module.VersionMap, error) { + return vm, nil + }) + + s.Require().NoError(keeper.ApplyUpgrade(s.ctx, types.Plan{ + Name: "test0", + Height: 10, + })) + + s.T().Log("verify valid upgrade name and height") + name, height, err = keeper.GetLastCompletedUpgrade(s.ctx) + require.Equal("test0", name) + require.Equal(int64(10), height) + require.NoError(err) + + keeper.SetUpgradeHandler("test1", func(_ context.Context, _ types.Plan, vm module.VersionMap) (module.VersionMap, error) { + return vm, nil + }) + + newCtx := s.ctx.WithHeaderInfo(header.Info{Height: 15}) + s.Require().NoError(keeper.ApplyUpgrade(newCtx, types.Plan{ + Name: "test1", + Height: 15, + })) + + s.T().Log("verify valid upgrade name and height with multiple upgrades") + name, height, err = keeper.GetLastCompletedUpgrade(newCtx) + require.Equal("test1", name) + require.Equal(int64(15), height) + require.NoError(err) +} + +// This test ensures that `GetLastDoneUpgrade` always returns the last upgrade according to the block height +// it was executed at, rather than using an ordering based on upgrade names. +func (s *KeeperTestSuite) TestLastCompletedUpgradeOrdering() { + keeper := s.upgradeKeeper + require := s.Require() + + // apply first upgrade + keeper.SetUpgradeHandler("test-v0.9", func(_ context.Context, _ types.Plan, vm module.VersionMap) (module.VersionMap, error) { + return vm, nil + }) + + s.Require().NoError(keeper.ApplyUpgrade(s.ctx, types.Plan{ + Name: "test-v0.9", + Height: 10, + })) + + name, height, err := keeper.GetLastCompletedUpgrade(s.ctx) + require.Equal("test-v0.9", name) + require.Equal(int64(10), height) + require.NoError(err) + + // apply second upgrade + keeper.SetUpgradeHandler("test-v0.10", func(_ context.Context, _ types.Plan, vm module.VersionMap) (module.VersionMap, error) { + return vm, nil + }) + + newCtx := s.ctx.WithHeaderInfo(header.Info{Height: 15}) + err = keeper.ApplyUpgrade(newCtx, types.Plan{ + Name: "test-v0.10", + Height: 15, + }) + require.NoError(err) + + name, height, err = keeper.GetLastCompletedUpgrade(newCtx) + require.Equal("test-v0.10", name) + require.Equal(int64(15), height) + require.NoError(err) +} + +func TestKeeperTestSuite(t *testing.T) { + suite.Run(t, new(KeeperTestSuite)) +} diff --git a/vendor-shims/cosmossdk-x-upgrade/keeper/migrations.go b/vendor-shims/cosmossdk-x-upgrade/keeper/migrations.go new file mode 100644 index 00000000..53ef4933 --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/keeper/migrations.go @@ -0,0 +1,49 @@ +package keeper + +import ( + "encoding/binary" + + storetypes "cosmossdk.io/core/store" + "cosmossdk.io/store/prefix" + "cosmossdk.io/x/upgrade/types" + + "github.com/cosmos/cosmos-sdk/runtime" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +// Migrator is a struct for handling in-place store migrations. +type Migrator struct { + keeper *Keeper +} + +// NewMigrator returns a new Migrator. +func NewMigrator(keeper *Keeper) Migrator { + return Migrator{keeper: keeper} +} + +// Migrate1to2 migrates from version 1 to 2. +func (m Migrator) Migrate1to2(ctx sdk.Context) error { + return migrateDoneUpgradeKeys(ctx, m.keeper.storeService) +} + +func migrateDoneUpgradeKeys(ctx sdk.Context, storeService storetypes.KVStoreService) error { + store := storeService.OpenKVStore(ctx) + oldDoneStore := prefix.NewStore(runtime.KVStoreAdapter(store), []byte{types.DoneByte}) + oldDoneStoreIter := oldDoneStore.Iterator(nil, nil) + defer oldDoneStoreIter.Close() + + for ; oldDoneStoreIter.Valid(); oldDoneStoreIter.Next() { + oldKey := oldDoneStoreIter.Key() + upgradeName := string(oldKey) + upgradeHeight := int64(binary.BigEndian.Uint64(oldDoneStoreIter.Value())) + newKey := encodeDoneKey(upgradeName, upgradeHeight) + + err := store.Set(newKey, []byte{1}) + if err != nil { + return err + } + + oldDoneStore.Delete(oldKey) + } + return nil +} diff --git a/vendor-shims/cosmossdk-x-upgrade/keeper/migrations_test.go b/vendor-shims/cosmossdk-x-upgrade/keeper/migrations_test.go new file mode 100644 index 00000000..3f220ab8 --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/keeper/migrations_test.go @@ -0,0 +1,68 @@ +package keeper + +import ( + "encoding/binary" + "testing" + + "github.com/stretchr/testify/require" + + storetypes "cosmossdk.io/store/types" + "cosmossdk.io/x/upgrade/types" + + "github.com/cosmos/cosmos-sdk/runtime" + "github.com/cosmos/cosmos-sdk/testutil" +) + +type storedUpgrade struct { + name string + height int64 +} + +func encodeOldDoneKey(upgrade storedUpgrade) []byte { + return append([]byte{types.DoneByte}, []byte(upgrade.name)...) +} + +func TestMigrateDoneUpgradeKeys(t *testing.T) { + upgradeKey := storetypes.NewKVStoreKey("upgrade") + storeService := runtime.NewKVStoreService(upgradeKey) + ctx := testutil.DefaultContext(upgradeKey, storetypes.NewTransientStoreKey("transient_test")) + store := storeService.OpenKVStore(ctx) + + testCases := []struct { + name string + upgrades []storedUpgrade + }{ + { + name: "valid upgrades", + upgrades: []storedUpgrade{ + {name: "some-other-upgrade", height: 1}, + {name: "test02", height: 2}, + {name: "test01", height: 3}, + }, + }, + } + + for _, tc := range testCases { + for _, upgrade := range tc.upgrades { + bz := make([]byte, 8) + binary.BigEndian.PutUint64(bz, uint64(upgrade.height)) + oldKey := encodeOldDoneKey(upgrade) + require.NoError(t, store.Set(oldKey, bz)) + } + + err := migrateDoneUpgradeKeys(ctx, storeService) + require.NoError(t, err) + + for _, upgrade := range tc.upgrades { + newKey := encodeDoneKey(upgrade.name, upgrade.height) + oldKey := encodeOldDoneKey(upgrade) + v, err := store.Get(oldKey) + require.Nil(t, v) + require.NoError(t, err) + + nv, err := store.Get(newKey) + require.Equal(t, []byte{1}, nv) + require.NoError(t, err) + } + } +} diff --git a/vendor-shims/cosmossdk-x-upgrade/keeper/msg_server.go b/vendor-shims/cosmossdk-x-upgrade/keeper/msg_server.go new file mode 100644 index 00000000..b084011b --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/keeper/msg_server.go @@ -0,0 +1,56 @@ +package keeper + +import ( + "context" + + "cosmossdk.io/errors" + "cosmossdk.io/x/upgrade/types" + + sdk "github.com/cosmos/cosmos-sdk/types" +) + +type msgServer struct { + *Keeper +} + +// NewMsgServerImpl returns an implementation of the upgrade MsgServer interface +// for the provided Keeper. +func NewMsgServerImpl(k *Keeper) types.MsgServer { + return &msgServer{ + Keeper: k, + } +} + +var ( + _ types.MsgServer = msgServer{} + _, _ sdk.Msg = &types.MsgSoftwareUpgrade{}, &types.MsgCancelUpgrade{} +) + +// SoftwareUpgrade implements the Msg/SoftwareUpgrade Msg service. +func (k msgServer) SoftwareUpgrade(goCtx context.Context, msg *types.MsgSoftwareUpgrade) (*types.MsgSoftwareUpgradeResponse, error) { + if k.authority != msg.Authority { + return nil, errors.Wrapf(types.ErrInvalidSigner, "expected %s got %s", k.authority, msg.Authority) + } + + ctx := sdk.UnwrapSDKContext(goCtx) + err := k.ScheduleUpgrade(ctx, msg.Plan) + if err != nil { + return nil, err + } + + return &types.MsgSoftwareUpgradeResponse{}, nil +} + +// CancelUpgrade implements the Msg/CancelUpgrade Msg service. +func (k msgServer) CancelUpgrade(ctx context.Context, msg *types.MsgCancelUpgrade) (*types.MsgCancelUpgradeResponse, error) { + if k.authority != msg.Authority { + return nil, errors.Wrapf(types.ErrInvalidSigner, "expected %s got %s", k.authority, msg.Authority) + } + + err := k.ClearUpgradePlan(ctx) + if err != nil { + return nil, err + } + + return &types.MsgCancelUpgradeResponse{}, nil +} diff --git a/vendor-shims/cosmossdk-x-upgrade/keeper/msg_server_test.go b/vendor-shims/cosmossdk-x-upgrade/keeper/msg_server_test.go new file mode 100644 index 00000000..f3197be3 --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/keeper/msg_server_test.go @@ -0,0 +1,139 @@ +package keeper_test + +import ( + "cosmossdk.io/x/upgrade/types" + + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/address" +) + +func (s *KeeperTestSuite) TestSoftwareUpgrade() { + govAccAddr := sdk.AccAddress(address.Module("gov")).String() + + testCases := []struct { + name string + req *types.MsgSoftwareUpgrade + expectErr bool + errMsg string + }{ + { + "invalid authority address", + &types.MsgSoftwareUpgrade{ + Authority: "authority", + Plan: types.Plan{ + Name: "all-good", + Height: 123450000, + }, + }, + true, + "expected authority account as only signer for proposal message", + }, + { + "unauthorized authority address", + &types.MsgSoftwareUpgrade{ + Authority: s.addrs[0].String(), + Plan: types.Plan{ + Name: "all-good", + Info: "some text here", + Height: 123450000, + }, + }, + true, + "expected authority account as only signer for proposal message", + }, + { + "invalid plan", + &types.MsgSoftwareUpgrade{ + Authority: govAccAddr, + Plan: types.Plan{ + Height: 123450000, + }, + }, + true, + "name cannot be empty: invalid request", + }, + { + "successful upgrade scheduled", + &types.MsgSoftwareUpgrade{ + Authority: govAccAddr, + Plan: types.Plan{ + Name: "all-good", + Info: "some text here", + Height: 123450000, + }, + }, + false, + "", + }, + } + for _, tc := range testCases { + s.Run(tc.name, func() { + _, err := s.msgSrvr.SoftwareUpgrade(s.ctx, tc.req) + if tc.expectErr { + s.Require().Error(err) + s.Require().Contains(err.Error(), tc.errMsg) + } else { + s.Require().NoError(err) + plan, err := s.upgradeKeeper.GetUpgradePlan(s.ctx) + s.Require().NoError(err) + s.Require().Equal(tc.req.Plan, plan) + } + }) + } +} + +func (s *KeeperTestSuite) TestCancelUpgrade() { + govAccAddr := "cosmos10d07y265gmmuvt4z0w9aw880jnsr700j6zn9kn" // TODO + // govAccAddr := s.govKeeper.GetGovernanceAccount(s.ctx).GetAddress().String() + err := s.upgradeKeeper.ScheduleUpgrade(s.ctx, types.Plan{ + Name: "some name", + Info: "some info", + Height: 123450000, + }) + s.Require().NoError(err) + + testCases := []struct { + name string + req *types.MsgCancelUpgrade + expectErr bool + errMsg string + }{ + { + "invalid authority address", + &types.MsgCancelUpgrade{ + Authority: "authority", + }, + true, + "expected authority account as only signer for proposal message", + }, + { + "unauthorized authority address", + &types.MsgCancelUpgrade{ + Authority: s.addrs[0].String(), + }, + true, + "expected authority account as only signer for proposal message", + }, + { + "upgrade canceled successfully", + &types.MsgCancelUpgrade{ + Authority: govAccAddr, + }, + false, + "", + }, + } + for _, tc := range testCases { + s.Run(tc.name, func() { + _, err := s.msgSrvr.CancelUpgrade(s.ctx, tc.req) + if tc.expectErr { + s.Require().Error(err) + s.Require().Contains(err.Error(), tc.errMsg) + } else { + s.Require().NoError(err) + _, err := s.upgradeKeeper.GetUpgradePlan(s.ctx) + s.Require().ErrorIs(err, types.ErrNoUpgradePlanFound) + } + }) + } +} diff --git a/vendor-shims/cosmossdk-x-upgrade/module.go b/vendor-shims/cosmossdk-x-upgrade/module.go new file mode 100644 index 00000000..13bffd19 --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/module.go @@ -0,0 +1,238 @@ +package upgrade + +import ( + "context" + "encoding/json" + "fmt" + + gwruntime "github.com/grpc-ecosystem/grpc-gateway/runtime" + "github.com/spf13/cast" + "github.com/spf13/cobra" + "github.com/spf13/viper" + + modulev1 "cosmossdk.io/api/cosmos/upgrade/module/v1" + "cosmossdk.io/core/address" + "cosmossdk.io/core/appmodule" + "cosmossdk.io/core/store" + "cosmossdk.io/depinject" + "cosmossdk.io/x/upgrade/client/cli" + "cosmossdk.io/x/upgrade/keeper" + "cosmossdk.io/x/upgrade/types" + + "github.com/cosmos/cosmos-sdk/baseapp" + "github.com/cosmos/cosmos-sdk/client" + "github.com/cosmos/cosmos-sdk/client/flags" + "github.com/cosmos/cosmos-sdk/codec" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + "github.com/cosmos/cosmos-sdk/runtime" + "github.com/cosmos/cosmos-sdk/server" + servertypes "github.com/cosmos/cosmos-sdk/server/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" +) + +func init() { + types.RegisterLegacyAminoCodec(codec.NewLegacyAmino()) +} + +// ConsensusVersion defines the current x/upgrade module consensus version. +const ConsensusVersion uint64 = 2 + +var ( + _ module.AppModuleBasic = AppModule{} + _ module.HasGenesis = AppModule{} + _ module.HasServices = AppModule{} + + _ appmodule.AppModule = AppModule{} + _ appmodule.HasPreBlocker = AppModule{} +) + +// AppModuleBasic implements the sdk.AppModuleBasic interface +type AppModuleBasic struct { + ac address.Codec +} + +// Name returns the ModuleName +func (AppModuleBasic) Name() string { + return types.ModuleName +} + +// RegisterLegacyAminoCodec registers the upgrade types on the LegacyAmino codec +func (AppModuleBasic) RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { + types.RegisterLegacyAminoCodec(cdc) +} + +// RegisterGRPCGatewayRoutes registers the gRPC Gateway routes for the upgrade module. +func (AppModuleBasic) RegisterGRPCGatewayRoutes(clientCtx client.Context, mux *gwruntime.ServeMux) { + if err := types.RegisterQueryHandlerClient(context.Background(), mux, types.NewQueryClient(clientCtx)); err != nil { + panic(err) + } +} + +// GetTxCmd returns the CLI transaction commands for this module +func (ab AppModuleBasic) GetTxCmd() *cobra.Command { + return cli.GetTxCmd(ab.ac) +} + +// RegisterInterfaces registers interfaces and implementations of the upgrade module. +func (AppModuleBasic) RegisterInterfaces(registry codectypes.InterfaceRegistry) { + types.RegisterInterfaces(registry) +} + +// DefaultGenesis is an empty object +func (AppModuleBasic) DefaultGenesis(_ codec.JSONCodec) json.RawMessage { + return []byte("{}") +} + +// ValidateGenesis is always successful, as we ignore the value +func (AppModuleBasic) ValidateGenesis(_ codec.JSONCodec, config client.TxEncodingConfig, _ json.RawMessage) error { + return nil +} + +// AppModule implements the sdk.AppModule interface +type AppModule struct { + AppModuleBasic + keeper *keeper.Keeper +} + +// NewAppModule creates a new AppModule object +func NewAppModule(keeper *keeper.Keeper, ac address.Codec) AppModule { + return AppModule{ + AppModuleBasic: AppModuleBasic{ac: ac}, + keeper: keeper, + } +} + +// IsOnePerModuleType implements the depinject.OnePerModuleType interface. +func (am AppModule) IsOnePerModuleType() {} + +// IsAppModule implements the appmodule.AppModule interface. +func (am AppModule) IsAppModule() {} + +// RegisterServices registers module services. +func (am AppModule) RegisterServices(cfg module.Configurator) { + types.RegisterMsgServer(cfg.MsgServer(), keeper.NewMsgServerImpl(am.keeper)) + types.RegisterQueryServer(cfg.QueryServer(), am.keeper) + + m := keeper.NewMigrator(am.keeper) + err := cfg.RegisterMigration(types.ModuleName, 1, m.Migrate1to2) + if err != nil { + panic(fmt.Sprintf("failed to migrate x/%s from version 1 to 2: %v", types.ModuleName, err)) + } +} + +// InitGenesis is ignored, no sense in serializing future upgrades +func (am AppModule) InitGenesis(ctx sdk.Context, _ codec.JSONCodec, _ json.RawMessage) { + // set version map automatically if available + if versionMap := am.keeper.GetInitVersionMap(); versionMap != nil { + // chains can still use a custom init chainer for setting the version map + // this means that we need to combine the manually wired modules version map with app wiring enabled modules version map + moduleVM, err := am.keeper.GetModuleVersionMap(ctx) + if err != nil { + panic(err) + } + + for name, version := range moduleVM { + if _, ok := versionMap[name]; !ok { + versionMap[name] = version + } + } + + err = am.keeper.SetModuleVersionMap(ctx, versionMap) + if err != nil { + panic(err) + } + } +} + +// ExportGenesis is always empty, as InitGenesis does nothing either +func (am AppModule) ExportGenesis(_ sdk.Context, cdc codec.JSONCodec) json.RawMessage { + return am.DefaultGenesis(cdc) +} + +// ConsensusVersion implements AppModule/ConsensusVersion. +func (AppModule) ConsensusVersion() uint64 { return ConsensusVersion } + +// PreBlock calls the upgrade module hooks +// +// CONTRACT: this is called *before* all other modules' BeginBlock functions +func (am AppModule) PreBlock(ctx context.Context) (appmodule.ResponsePreBlock, error) { + return PreBlocker(ctx, am.keeper) +} + +// +// App Wiring Setup +// + +func init() { + appmodule.Register(&modulev1.Module{}, + appmodule.Provide(ProvideModule), + appmodule.Invoke(PopulateVersionMap), + ) +} + +type ModuleInputs struct { + depinject.In + + Config *modulev1.Module + StoreService store.KVStoreService + Cdc codec.Codec + AddressCodec address.Codec + + AppOpts servertypes.AppOptions `optional:"true"` + Viper *viper.Viper `optional:"true"` +} + +type ModuleOutputs struct { + depinject.Out + + UpgradeKeeper *keeper.Keeper + Module appmodule.AppModule + BaseAppOption runtime.BaseAppOption +} + +func ProvideModule(in ModuleInputs) ModuleOutputs { + var ( + homePath string + skipUpgradeHeights = make(map[int64]bool) + ) + + if in.Viper != nil { // viper takes precedence over app options + for _, h := range in.Viper.GetIntSlice(server.FlagUnsafeSkipUpgrades) { + skipUpgradeHeights[int64(h)] = true + } + + homePath = in.Viper.GetString(flags.FlagHome) + } else if in.AppOpts != nil { + for _, h := range cast.ToIntSlice(in.AppOpts.Get(server.FlagUnsafeSkipUpgrades)) { + skipUpgradeHeights[int64(h)] = true + } + + homePath = cast.ToString(in.AppOpts.Get(flags.FlagHome)) + } + + // default to governance authority if not provided + authority := authtypes.NewModuleAddress(govtypes.ModuleName) + if in.Config.Authority != "" { + authority = authtypes.NewModuleAddressOrBech32Address(in.Config.Authority) + } + + // set the governance module account as the authority for conducting upgrades + k := keeper.NewKeeper(skipUpgradeHeights, in.StoreService, in.Cdc, homePath, nil, authority.String()) + baseappOpt := func(app *baseapp.BaseApp) { + k.SetVersionSetter(app) + } + m := NewAppModule(k, in.AddressCodec) + + return ModuleOutputs{UpgradeKeeper: k, Module: m, BaseAppOption: baseappOpt} +} + +func PopulateVersionMap(upgradeKeeper *keeper.Keeper, modules map[string]appmodule.AppModule) { + if upgradeKeeper == nil { + return + } + + upgradeKeeper.SetInitVersionMap(module.NewManagerFromMap(modules).GetVersionMap()) +} diff --git a/vendor-shims/cosmossdk-x-upgrade/plan/downloader.go b/vendor-shims/cosmossdk-x-upgrade/plan/downloader.go new file mode 100644 index 00000000..199cc1b5 --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/plan/downloader.go @@ -0,0 +1,167 @@ +package plan + +import ( + "context" + "errors" + "fmt" + neturl "net/url" + "os" + "path/filepath" + "strings" + + "github.com/hashicorp/go-cleanhttp" + "github.com/hashicorp/go-getter" +) + +// DownloadUpgrade downloads the given url into the provided directory. +// If this returns nil, the download was successful, and {dstRoot}/bin/{daemonName} is a regular executable file. +// This is an opinionated directory structure that corresponds with Cosmovisor requirements. +// If the url is not an archive, it is downloaded and saved to {dstRoot}/bin/{daemonName}. +// If the url is an archive, it is downloaded and unpacked to {dstRoot}. +// +// If the archive does not contain a /bin/{daemonName} file, then this will attempt to move /{daemonName} to /bin/{daemonName}. +// If the archive does not contain either /bin/{daemonName} or /{daemonName}, an error is returned. +// +// If dstRoot already exists, some or all of its contents might be updated. +// NOTE: This functions does not check the provided url for validity. +func DownloadUpgrade(dstRoot, url, daemonName string) error { + target := filepath.Join(dstRoot, "bin", daemonName) + + // First try to download it as a single file. If there's no error, it's okay and we're done. + if err := getFile(url, target); err != nil { + // If it was a checksum error, no need to try as directory. + var checksumError *getter.ChecksumError + if errors.As(err, &checksumError) { + return err + } + // File download didn't work, try it as an archive. + if err = downloadUpgradeAsArchive(dstRoot, url, daemonName); err != nil { + // Out of options, send back the error. + return err + } + } + return EnsureBinary(target) +} + +// downloadUpgradeAsArchive tries to download the given url as an archive. +// The archive is unpacked and saved in dstDir. +// If the archive contains /{daemonName} and not /bin/{daemonName}, then /{daemonName} will be moved to /bin/{daemonName}. +// If this returns nil, the download was successful, and {dstDir}/bin/{daemonName} is a regular executable file. +func downloadUpgradeAsArchive(dstDir, url, daemonName string) error { + err := getter.Get(dstDir, url) + if err != nil { + return err + } + + // If bin/{daemonName} exists, we're done. + dstDirBinFile := filepath.Join(dstDir, "bin", daemonName) + err = EnsureBinary(dstDirBinFile) + if err == nil { + return nil + } + + // Otherwise, check for a root {daemonName} file and move it to the bin/ directory if found. + dstDirFile := filepath.Join(dstDir, daemonName) + err = EnsureBinary(dstDirFile) + if err == nil { + err = os.Rename(dstDirFile, dstDirBinFile) + if err != nil { + return fmt.Errorf("could not move %s to the bin directory: %w", daemonName, err) + } + return nil + } + + return fmt.Errorf("url \"%s\" result does not contain a bin/%s or %s file", url, daemonName, daemonName) +} + +// EnsureBinary checks that the given file exists as a regular file and is executable. +// An error is returned if: +// - The file does not exist. +// - The path exists, but is one of: Dir, Symlink, NamedPipe, Socket, Device, CharDevice, or Irregular. +// - The file exists, is not executable by all three of User, Group, and Other, and cannot be made executable. +func EnsureBinary(path string) error { + info, err := os.Stat(path) + if err != nil { + return err + } + if !info.Mode().IsRegular() { + _, f := filepath.Split(path) + return fmt.Errorf("%s is not a regular file", f) + } + // Make sure all executable bits are set. + oldMode := info.Mode().Perm() + newMode := oldMode | 0o111 // Set the three execute bits to on (a+x). + if oldMode != newMode { + return os.Chmod(path, newMode) + } + return nil +} + +// DownloadURL gets the contents of the given url. +// The provided url can contain a checksum parameter that matches the file being downloaded. +// If there isn't an error, the content returned by the url will be returned as a string. +// Returns an error if: +// - The url is not a URL or does not contain a checksum parameter (when required). +// - Downloading the URL fails. +// - The checksum does not match what is returned by the URL. +// - The URL does not return a regular file. +// - The downloaded file is empty or only whitespace. +func DownloadURL(url string) (string, error) { + tempDir, err := os.MkdirTemp("", "reference") + if err != nil { + return "", fmt.Errorf("could not create temp directory: %w", err) + } + defer os.RemoveAll(tempDir) + tempFile := filepath.Join(tempDir, "content") + + if err := getFile(url, tempFile); err != nil { + return "", fmt.Errorf("could not download url \"%s\": %w", url, err) + } + tempFileBz, rerr := os.ReadFile(tempFile) + if rerr != nil { + return "", fmt.Errorf("could not read downloaded temporary file: %w", rerr) + } + tempFileStr := strings.TrimSpace(string(tempFileBz)) + if len(tempFileStr) == 0 { + return "", fmt.Errorf("no content returned by \"%s\"", url) + } + return tempFileStr, nil +} + +// ValidateURL checks that the given string is a valid url and optionally contains a checksum query parameter. +func ValidateURL(urlStr string, mustChecksum bool) error { + url, err := neturl.Parse(urlStr) + if err != nil { + return err + } + + if mustChecksum && len(url.Query().Get("checksum")) == 0 { + return errors.New("missing checksum query parameter") + } + + return nil +} + +// getFile downloads the given url into the provided directory. +func getFile(url, dst string) error { + httpGetter := &getter.HttpGetter{ + Client: cleanhttp.DefaultClient(), + XTerraformGetDisabled: true, + } + + goGetterGetters := getter.Getters + goGetterGetters["http"] = httpGetter + goGetterGetters["https"] = httpGetter + + // https://github.com/hashicorp/go-getter#security-options + getterClient := &getter.Client{ + Ctx: context.Background(), + DisableSymlinks: true, + Src: url, + Dst: dst, + Pwd: dst, + Getters: goGetterGetters, + } + + return getterClient.Get() +} diff --git a/vendor-shims/cosmossdk-x-upgrade/plan/downloader_test.go b/vendor-shims/cosmossdk-x-upgrade/plan/downloader_test.go new file mode 100644 index 00000000..71ca7678 --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/plan/downloader_test.go @@ -0,0 +1,292 @@ +package plan + +import ( + "archive/zip" + "crypto/sha256" + "fmt" + "io" + "os" + "path/filepath" + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/stretchr/testify/suite" +) + +type DownloaderTestSuite struct { + suite.Suite + + // Home is a temporary directory for use in these tests. + // It will have a src/ for things to download. + Home string +} + +func (s *DownloaderTestSuite) SetupTest() { + s.Home = s.T().TempDir() + s.Assert().NoError(os.MkdirAll(filepath.Join(s.Home, "src"), 0o777), "creating src/ dir") + s.T().Logf("Home: [%s]", s.Home) +} + +func TestDownloaderTestSuite(t *testing.T) { + suite.Run(t, new(DownloaderTestSuite)) +} + +// TestFile represents a file that will be used for a test. +type TestFile struct { + // Name is the relative path and name of the file. + Name string + // Contents is the contents of the file. + Contents []byte +} + +func NewTestFile(name, contents string) *TestFile { + return &TestFile{ + Name: name, + Contents: []byte(contents), + } +} + +// SaveIn saves this TestFile in the given path. +// The full path to the file is returned. +func (f TestFile) SaveIn(path string) (string, error) { + name := filepath.Join(path, f.Name) + file, err := os.Create(name) + if err != nil { + return name, err + } + defer file.Close() + _, err = file.Write(f.Contents) + return name, err +} + +// TestZip represents a collection of TestFile objects to be zipped into an archive. +type TestZip []*TestFile + +func NewTestZip(testFiles ...*TestFile) TestZip { + tz := make([]*TestFile, len(testFiles)) + copy(tz, testFiles) + return tz +} + +// SaveAs saves this TestZip at the given path. +func (z TestZip) SaveAs(path string) error { + archive, err := os.Create(path) + if err != nil { + return err + } + defer archive.Close() + zipper := zip.NewWriter(archive) + for _, tf := range z { + zfw, zfwerr := zipper.Create(tf.Name) + if zfwerr != nil { + return zfwerr + } + _, err = zfw.Write(tf.Contents) + if err != nil { + return err + } + } + return zipper.Close() +} + +// saveSrcTestZip saves a TestZip in this test's Home/src directory with the given name. +// The full path to the saved archive is returned. +func (s *DownloaderTestSuite) saveSrcTestZip(name string, z TestZip) string { + fullName := filepath.Join(s.Home, "src", name) + s.Require().NoError(z.SaveAs(fullName), "saving test zip %s", name) + return fullName +} + +// saveSrcTestFile saves a TestFile in this test's Home/src directory. +// The full path to the saved file is returned. +func (s *DownloaderTestSuite) saveSrcTestFile(f *TestFile) string { + path := filepath.Join(s.Home, "src") + fullName, err := f.SaveIn(path) + s.Require().NoError(err, "saving test file %s", f.Name) + return fullName +} + +// requireFileExistsAndIsExecutable requires that the given file exists and is executable. +func requireFileExistsAndIsExecutable(t *testing.T, path string) { + t.Helper() + info, err := os.Stat(path) + require.NoError(t, err, "stat error") + perm := info.Mode().Perm() + // Checks if at least one executable bit is set (user, group, or other) + isExe := perm&0o111 != 0 + require.True(t, isExe, "is executable: permissions = %s", perm) +} + +// requireFileEquals requires that the contents of the file at the given path +// is equal to the contents of the given TestFile. +func requireFileEquals(t *testing.T, path string, tf *TestFile) { + t.Helper() + file, err := os.ReadFile(path) + require.NoError(t, err, "reading file") + require.Equal(t, string(tf.Contents), string(file), "file contents") +} + +// makeFileURL converts the given path to a URL with the correct checksum query parameter. +func makeFileURL(t *testing.T, path string) string { + t.Helper() + f, err := os.Open(path) + require.NoError(t, err, "opening file") + defer f.Close() + hasher := sha256.New() + _, err = io.Copy(hasher, f) + require.NoError(t, err, "copying file to hasher") + return fmt.Sprintf("file://%s?checksum=sha256:%x", path, hasher.Sum(nil)) +} + +func (s *DownloaderTestSuite) TestDownloadUpgrade() { + justAFile := NewTestFile("just-a-file", "#!/usr/bin\necho 'I am just a file'\n") + someFileName := "some-file" + someFileInBin := NewTestFile("bin"+someFileName, "#!/usr/bin\necho 'I am some file in bin'\n") + anotherFile := NewTestFile("another-file", "#!/usr/bin\necho 'I am just another file'\n") + justAFilePath := s.saveSrcTestFile(justAFile) + justAFileZip := s.saveSrcTestZip(justAFile.Name+".zip", NewTestZip(justAFile)) + someFileInBinZip := s.saveSrcTestZip(someFileInBin.Name+".zip", NewTestZip(someFileInBin)) + allFilesZip := s.saveSrcTestZip(anotherFile.Name+".zip", NewTestZip(justAFile, someFileInBin, anotherFile)) + getDstDir := func(testName string) string { + _, tName := filepath.Split(testName) + return s.Home + "/dst/" + tName + } + + s.T().Run("url does not exist", func(t *testing.T) { + dstRoot := getDstDir(t.Name()) + url := "file:///never/gonna/be/a/thing.zip?checksum=sha256:2c22e34510bd1d4ad2343cdc54f7165bccf30caef73f39af7dd1db2795a3da48" + err := DownloadUpgrade(dstRoot, url, "nothing") + require.Error(t, err) + assert.Contains(t, err.Error(), "no such file or directory") + }) + + s.T().Run("url has incorrect checksum", func(t *testing.T) { + dstRoot := getDstDir(t.Name()) + badChecksum := "2c22e34510bd1d4ad2343cdc54f7165bccf30caef73f39af7dd1db2795a3da48" + url := "file://" + justAFilePath + "?checksum=sha256:" + badChecksum + err := DownloadUpgrade(dstRoot, url, justAFile.Name) + require.Error(t, err) + assert.Contains(t, err.Error(), "Checksums did not match") + assert.Contains(t, err.Error(), "Expected: "+badChecksum) + }) + + s.T().Run("url returns single file", func(t *testing.T) { + dstRoot := getDstDir(t.Name()) + url := makeFileURL(t, justAFilePath) + err := DownloadUpgrade(dstRoot, url, justAFile.Name) + require.NoError(t, err) + expectedFile := filepath.Join(dstRoot, "bin", justAFile.Name) + requireFileExistsAndIsExecutable(t, expectedFile) + requireFileEquals(t, expectedFile, justAFile) + }) + + s.T().Run("url returns archive with file in bin", func(t *testing.T) { + dstRoot := getDstDir(t.Name()) + url := makeFileURL(t, someFileInBinZip) + err := DownloadUpgrade(dstRoot, url, someFileName) + require.NoError(t, err) + expectedFile := filepath.Join(dstRoot, "bin", someFileName) + requireFileExistsAndIsExecutable(t, expectedFile) + requireFileEquals(t, expectedFile, someFileInBin) + }) + + s.T().Run("url returns archive with just expected file", func(t *testing.T) { + dstRoot := getDstDir(t.Name()) + url := makeFileURL(t, justAFileZip) + err := DownloadUpgrade(dstRoot, url, justAFile.Name) + require.NoError(t, err) + expectedFile := filepath.Join(dstRoot, "bin", justAFile.Name) + requireFileExistsAndIsExecutable(t, expectedFile) + requireFileEquals(t, expectedFile, justAFile) + }) + + s.T().Run("url returns archive without expected file", func(t *testing.T) { + dstRoot := getDstDir(t.Name()) + url := makeFileURL(t, allFilesZip) + err := DownloadUpgrade(dstRoot, url, "not-expected") + require.Error(t, err) + require.Contains(t, err.Error(), "result does not contain a bin/not-expected or not-expected file") + }) +} + +func (s *DownloaderTestSuite) TestEnsureBinary() { + nonExeName := s.saveSrcTestFile(NewTestFile("non-exe.txt", "Not executable")) + s.Require().NoError(os.Chmod(nonExeName, 0o600), "chmod error nonExeName") + isExeName := s.saveSrcTestFile(NewTestFile("is-exe.sh", "#!/bin/bash\necho 'executing'\n")) + s.Require().NoError(os.Chmod(isExeName, 0o777), "chmod error isExeName") + + s.T().Run("file does not exist", func(t *testing.T) { + name := filepath.Join(s.Home, "does-not-exist.txt") + actual := EnsureBinary(name) + require.Error(t, actual) + }) + + s.T().Run("file is a directory", func(t *testing.T) { + name := filepath.Join(s.Home, "src") + actual := EnsureBinary(name) + require.EqualError(t, actual, fmt.Sprintf("%s is not a regular file", "src")) + }) + + s.T().Run("file exists and becomes executable", func(t *testing.T) { + name := nonExeName + actual := EnsureBinary(name) + require.NoError(t, actual, "EnsureBinary error") + requireFileExistsAndIsExecutable(t, name) + }) + + s.T().Run("file is already executable", func(t *testing.T) { + name := isExeName + actual := EnsureBinary(name) + require.NoError(t, actual, "EnsureBinary error") + requireFileExistsAndIsExecutable(t, name) + }) +} + +func (s *DownloaderTestSuite) TestDownloadURL() { + planContents := `{"binaries":{"xxx/yyy":"url"}}` + planFile := NewTestFile("plan-info.json", planContents) + planPath := s.saveSrcTestFile(planFile) + planChecksum := fmt.Sprintf("%x", sha256.Sum256(planFile.Contents)) + emptyFile := NewTestFile("empty-plan-info.json", "") + emptyPlanPath := s.saveSrcTestFile(emptyFile) + emptyChecksum := fmt.Sprintf("%x", sha256.Sum256(emptyFile.Contents)) + + s.T().Run("url does not exist", func(t *testing.T) { + url := "file:///never-gonna-be-a-thing?checksum=sha256:2c22e34510bd1d4ad2343cdc54f7165bccf30caef73f39af7dd1db2795a3da48" + _, err := DownloadURL(url) + require.Error(t, err) + assert.Contains(t, err.Error(), "could not download url") + }) + + s.T().Run("without checksum", func(t *testing.T) { + url := "file://" + planPath + actual, err := DownloadURL(url) + require.NoError(t, err) + require.Equal(t, planContents, actual) + }) + + s.T().Run("with correct checksum", func(t *testing.T) { + url := "file://" + planPath + "?checksum=sha256:" + planChecksum + actual, err := DownloadURL(url) + require.NoError(t, err) + require.Equal(t, planContents, actual) + }) + + s.T().Run("with incorrect checksum", func(t *testing.T) { + badChecksum := "2c22e34510bd1d4ad2343cdc54f7165bccf30caef73f39af7dd1db2795a3da48" + url := "file://" + planPath + "?checksum=sha256:" + badChecksum + _, err := DownloadURL(url) + require.Error(t, err) + assert.Contains(t, err.Error(), "Checksums did not match") + assert.Contains(t, err.Error(), "Expected: "+badChecksum) + assert.Contains(t, err.Error(), "Got: "+planChecksum) + }) + + s.T().Run("plan is empty", func(t *testing.T) { + url := "file://" + emptyPlanPath + "?checksum=sha256:" + emptyChecksum + _, err := DownloadURL(url) + require.Error(t, err) + assert.Contains(t, err.Error(), "no content returned") + }) +} diff --git a/vendor-shims/cosmossdk-x-upgrade/plan/info.go b/vendor-shims/cosmossdk-x-upgrade/plan/info.go new file mode 100644 index 00000000..ae3cfe1a --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/plan/info.go @@ -0,0 +1,143 @@ +package plan + +import ( + "encoding/json" + "errors" + "fmt" + neturl "net/url" + "os" + "path/filepath" + "regexp" + "strings" + + "cosmossdk.io/x/upgrade/internal/conv" +) + +// Info is the special structure that the Plan.Info string can be (as json). +type Info struct { + parseConfig ParseConfig `json:"-"` + + Binaries BinaryDownloadURLMap `json:"binaries"` +} + +// BinaryDownloadURLMap is a map of os/architecture stings to a URL where the binary can be downloaded. +type BinaryDownloadURLMap map[string]string + +// ParseConfig is used to configure the parsing of a Plan.Info string. +type ParseConfig struct { + // EnforceChecksum, if true, will cause all downloaded files to be checked against their checksums. + // When false, checksums are not enforced to be present in the url. + EnforceChecksum bool +} + +// ParseOption is used to configure the parsing of a Plan.Info string. +type ParseOption func(*ParseConfig) + +// ParseOptionEnforceChecksum returns a ParseOption that sets the EnforceChecksum field of the ParseConfig. +func ParseOptionEnforceChecksum(enforce bool) ParseOption { + return func(c *ParseConfig) { + c.EnforceChecksum = enforce + } +} + +// ParseInfo parses an info string into a map of os/arch strings to URL string. +// If the infoStr is a url, an GET request will be made to it, and its response will be parsed instead. +func ParseInfo(infoStr string, opts ...ParseOption) (*Info, error) { + parseConfig := &ParseConfig{} + for _, opt := range opts { + opt(parseConfig) + } + + infoStr = strings.TrimSpace(infoStr) + if len(infoStr) == 0 { + return nil, errors.New("plan info must not be blank") + } + + // If it's a url, download it and treat the result as the real info. + if _, err := neturl.ParseRequestURI(infoStr); err == nil { + if err := ValidateURL(infoStr, parseConfig.EnforceChecksum); err != nil { + return nil, err + } + + infoStr, err = DownloadURL(infoStr) + if err != nil { + return nil, err + } + } + + // Now, try to parse it into the expected structure. + var planInfo Info + if err := json.Unmarshal(conv.UnsafeStrToBytes(infoStr), &planInfo); err != nil { + return nil, fmt.Errorf("could not parse plan info: %w", err) + } + + planInfo.parseConfig = *parseConfig + + return &planInfo, nil +} + +// ValidateFull does all possible validation of this Info. +// The provided daemonName is the name of the executable file expected in all downloaded directories. +// It checks that: +// - Binaries.ValidateBasic() doesn't return an error +// - Binaries.CheckURLs(daemonName) doesn't return an error. +// +// Warning: This is an expensive process. See BinaryDownloadURLMap.CheckURLs for more info. +func (m Info) ValidateFull(daemonName string) error { + if err := m.Binaries.ValidateBasic(m.parseConfig.EnforceChecksum); err != nil { + return err + } + if err := m.Binaries.CheckURLs(daemonName, m.parseConfig.EnforceChecksum); err != nil { + return err + } + return nil +} + +// ValidateBasic does stateless validation of this BinaryDownloadURLMap. +// It validates that: +// - This has at least one entry. +// - All entry keys have the format "os/arch" or are "any". +// - All entry values are valid URLs. +// - When `enforceChecksum` is true all URLs must contain a checksum query parameter. +func (m BinaryDownloadURLMap) ValidateBasic(enforceChecksum bool) error { + // Make sure there's at least one. + if len(m) == 0 { + return errors.New("no \"binaries\" entries found") + } + + osArchRx := regexp.MustCompile(`[a-zA-Z0-9]+/[a-zA-Z0-9]+`) + for key, val := range m { + if key != "any" && !osArchRx.MatchString(key) { + return fmt.Errorf("invalid os/arch format in key \"%s\"", key) + } + + if err := ValidateURL(val, enforceChecksum); err != nil { + return fmt.Errorf("invalid url \"%s\" in binaries[%s]: %w", val, key, err) + } + } + + return nil +} + +// CheckURLs checks that all entries have valid URLs that return expected data. +// The provided daemonName is the name of the executable file expected in all downloaded directories. +// Warning: This is an expensive process. +// It will make an HTTP GET request to each URL and download the response. +func (m BinaryDownloadURLMap) CheckURLs(daemonName string, enforceChecksum bool) error { + tempDir, err := os.MkdirTemp("", "os-arch-downloads") + if err != nil { + return fmt.Errorf("could not create temp directory: %w", err) + } + defer os.RemoveAll(tempDir) + for osArch, url := range m { + dstRoot := filepath.Join(tempDir, strings.ReplaceAll(osArch, "/", "-")) + if err := ValidateURL(url, enforceChecksum); err != nil { + return fmt.Errorf("error validating url for os/arch %s: %w", osArch, err) + } + + if err = DownloadUpgrade(dstRoot, url, daemonName); err != nil { + return fmt.Errorf("error downloading binary for os/arch %s: %w", osArch, err) + } + } + return nil +} diff --git a/vendor-shims/cosmossdk-x-upgrade/plan/info_test.go b/vendor-shims/cosmossdk-x-upgrade/plan/info_test.go new file mode 100644 index 00000000..047cd49d --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/plan/info_test.go @@ -0,0 +1,346 @@ +package plan + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + "github.com/stretchr/testify/suite" +) + +type InfoTestSuite struct { + suite.Suite + + // Home is a temporary directory for use in these tests. + Home string +} + +func (s *InfoTestSuite) SetupTest() { + s.Home = s.T().TempDir() + s.T().Logf("Home: [%s]", s.Home) +} + +func TestInfoTestSuite(t *testing.T) { + suite.Run(t, new(InfoTestSuite)) +} + +// saveSrcTestFile saves a TestFile in this test's Home/src directory. +// The full path to the saved file is returned. +func (s *InfoTestSuite) saveTestFile(f *TestFile) string { + fullName, err := f.SaveIn(s.Home) + s.Require().NoError(err, "saving test file %s", f.Name) + return fullName +} + +func (s *InfoTestSuite) TestParseInfo() { + goodJSON := `{"binaries":{"os1/arch1":"url1","os2/arch2":"url2"}}` + binariesWrongJSON := `{"binaries":["foo","bar"]}` + binariesWrongValueJSON := `{"binaries":{"os1/arch1":1,"os2/arch2":2}}` + goodJSONPath := s.saveTestFile(NewTestFile("good.json", goodJSON)) + binariesWrongJSONPath := s.saveTestFile(NewTestFile("binaries-wrong.json", binariesWrongJSON)) + binariesWrongValueJSONPath := s.saveTestFile(NewTestFile("binaries-wrong-value.json", binariesWrongValueJSON)) + goodJSONAsInfo := &Info{ + Binaries: BinaryDownloadURLMap{ + "os1/arch1": "url1", + "os2/arch2": "url2", + }, + } + makeInfoStrFuncString := func(val string) func(t *testing.T) string { + return func(t *testing.T) string { + t.Helper() + return val + } + } + makeInfoStrFuncURL := func(file string) func(t *testing.T) string { + return func(t *testing.T) string { + t.Helper() + return makeFileURL(t, file) + } + } + + tests := []struct { + name string + infoStrMaker func(t *testing.T) string + expectedInfo *Info + expectedInError []string + }{ + { + name: "json good", + infoStrMaker: makeInfoStrFuncString(goodJSON), + expectedInfo: goodJSONAsInfo, + expectedInError: nil, + }, + { + name: "blank string", + infoStrMaker: makeInfoStrFuncString(" "), + expectedInfo: nil, + expectedInError: []string{"plan info must not be blank"}, + }, + { + name: "empty JSON", + infoStrMaker: makeInfoStrFuncString("{}"), + expectedInfo: &Info{}, + expectedInError: nil, + }, + { + name: "json binaries is wrong data type", + infoStrMaker: makeInfoStrFuncString(binariesWrongJSON), + expectedInfo: nil, + expectedInError: []string{"could not parse plan info", "cannot unmarshal array into Go struct field Info.binaries"}, + }, + { + name: "json wrong data type in binaries value", + infoStrMaker: makeInfoStrFuncString(binariesWrongValueJSON), + expectedInfo: nil, + expectedInError: []string{"could not parse plan info", "cannot unmarshal number into Go struct field Info.binaries"}, + }, + { + name: "url does not exist", + infoStrMaker: makeInfoStrFuncString("file:///this/file/does/not/exist?checksum=sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"), + expectedInfo: nil, + expectedInError: []string{"could not download url", "file:///this/file/does/not/exist"}, + }, + { + name: "url good", + infoStrMaker: makeInfoStrFuncURL(goodJSONPath), + expectedInfo: goodJSONAsInfo, + expectedInError: nil, + }, + { + name: "url binaries is wrong data type", + infoStrMaker: makeInfoStrFuncURL(binariesWrongJSONPath), + expectedInfo: nil, + expectedInError: []string{"could not parse plan info", "cannot unmarshal array into Go struct field Info.binaries"}, + }, + { + name: "url wrong data type in binaries value", + infoStrMaker: makeInfoStrFuncURL(binariesWrongValueJSONPath), + expectedInfo: nil, + expectedInError: []string{"could not parse plan info", "cannot unmarshal number into Go struct field Info.binaries"}, + }, + } + + for _, tc := range tests { + s.T().Run(tc.name, func(t *testing.T) { + infoStr := tc.infoStrMaker(t) + actualInfo, actualErr := ParseInfo(infoStr) + if len(tc.expectedInError) > 0 { + require.Error(t, actualErr) + for _, expectedErr := range tc.expectedInError { + assert.Contains(t, actualErr.Error(), expectedErr) + } + } else { + require.NoError(t, actualErr) + } + assert.Equal(t, tc.expectedInfo, actualInfo) + }) + } +} + +func (s *InfoTestSuite) TestInfoValidateFull() { + darwinAMD64File := NewTestFile("darwin_amd64", "#!/usr/bin\necho 'darwin/amd64'\n") + linux386File := NewTestFile("linux_386", "#!/usr/bin\necho 'darwin/amd64'\n") + darwinAMD64Path := s.saveTestFile(darwinAMD64File) + linux386Path := s.saveTestFile(linux386File) + darwinAMD64URL := makeFileURL(s.T(), darwinAMD64Path) + linux386URL := makeFileURL(s.T(), linux386Path) + + tests := []struct { + name string + planInfo *Info + errs []string + }{ + // Positive test case + { + name: "two good entries", + planInfo: &Info{ + Binaries: BinaryDownloadURLMap{ + "darwin/amd64": darwinAMD64URL, + "linux/386": linux386URL, + }, + }, + errs: nil, + }, + // a failure from BinaryDownloadURLMap.ValidateBasic + { + name: "empty binaries", + planInfo: &Info{Binaries: BinaryDownloadURLMap{}}, + errs: []string{"no \"binaries\" entries found"}, + }, + // a failure from BinaryDownloadURLMap.CheckURLS + { + name: "url does not exist", + planInfo: &Info{ + Binaries: BinaryDownloadURLMap{ + "darwin/arm64": "file:///no/such/file/exists/hopefully.zip?checksum=sha256:b5a2c96250612366ea272ffac6d9744aaf4b45aacd96aa7cfcb931ee3b558259", + }, + }, + errs: []string{"error downloading binary", "darwin/arm64", "no such file or directory"}, + }, + } + + for _, tc := range tests { + s.T().Run(tc.name, func(t *testing.T) { + actualErr := tc.planInfo.ValidateFull("daemon") + if len(tc.errs) > 0 { + require.Error(t, actualErr) + for _, expectedErr := range tc.errs { + assert.Contains(t, actualErr.Error(), expectedErr) + } + } else { + require.NoError(t, actualErr) + } + }) + } +} + +func (s *InfoTestSuite) TestBinaryDownloadURLMapValidateBasic() { + addDummyChecksum := func(url string) string { + return url + "?checksum=sha256:b5a2c96250612366ea272ffac6d9744aaf4b45aacd96aa7cfcb931ee3b558259" + } + tests := []struct { + name string + urlMap BinaryDownloadURLMap + parseConfig ParseConfig + errs []string + }{ + { + name: "empty map", + urlMap: BinaryDownloadURLMap{}, + errs: []string{"no \"binaries\" entries found"}, + }, + { + name: "key with empty string", + urlMap: BinaryDownloadURLMap{ + "": addDummyChecksum("https://v1.cosmos.network/sdk"), + }, + errs: []string{"invalid os/arch", `""`}, + }, + { + name: "invalid key format", + urlMap: BinaryDownloadURLMap{ + "badkey": addDummyChecksum("https://v1.cosmos.network/sdk"), + }, + errs: []string{"invalid os/arch", "badkey"}, + }, + { + name: "any key is valid", + urlMap: BinaryDownloadURLMap{ + "any": addDummyChecksum("https://v1.cosmos.network/sdk"), + }, + errs: nil, + }, + { + name: "os arch key is valid", + urlMap: BinaryDownloadURLMap{ + "darwin/amd64": addDummyChecksum("https://v1.cosmos.network/sdk"), + }, + errs: nil, + }, + { + name: "not a url", + urlMap: BinaryDownloadURLMap{ + "isa/url": addDummyChecksum("https://v1.cosmos.network/sdk"), + "nota/url": addDummyChecksum("https://v1.cosmos.network:not-a-port/sdk"), + }, + errs: []string{"invalid url", "nota/url", "invalid port"}, + }, + { + name: "url without checksum", + urlMap: BinaryDownloadURLMap{ + "darwin/amd64": "https://v1.cosmos.network/sdk", + }, + parseConfig: ParseConfig{EnforceChecksum: false}, + errs: nil, + }, + { + name: "multiple valid entries but one bad url", + urlMap: BinaryDownloadURLMap{ + "any": addDummyChecksum("https://v1.cosmos.network/sdk"), + "darwin/amd64": addDummyChecksum("https://v1.cosmos.network/sdk"), + "darwin/arm64": addDummyChecksum("https://v1.cosmos.network/sdk"), + "windows/bad": addDummyChecksum("https://v1.cosmos.network:not-a-port/sdk"), + "linux/386": addDummyChecksum("https://v1.cosmos.network/sdk"), + }, + errs: []string{"invalid url", "windows/bad", "invalid port"}, + }, + { + name: "multiple valid entries but one bad key", + urlMap: BinaryDownloadURLMap{ + "any": addDummyChecksum("https://v1.cosmos.network/sdk"), + "darwin/amd64": addDummyChecksum("https://v1.cosmos.network/sdk"), + "badkey": addDummyChecksum("https://v1.cosmos.network/sdk"), + "darwin/arm64": addDummyChecksum("https://v1.cosmos.network/sdk"), + "linux/386": addDummyChecksum("https://v1.cosmos.network/sdk"), + }, + errs: []string{"invalid os/arch", "badkey"}, + }, + } + + for _, tc := range tests { + s.T().Run(tc.name, func(t *testing.T) { + actualErr := tc.urlMap.ValidateBasic(tc.parseConfig.EnforceChecksum) + if len(tc.errs) > 0 { + require.Error(t, actualErr) + for _, expectedErr := range tc.errs { + assert.Contains(t, actualErr.Error(), expectedErr) + } + } else { + require.NoError(t, actualErr) + } + }) + } +} + +func (s *InfoTestSuite) TestBinaryDownloadURLMapCheckURLs() { + darwinAMD64File := NewTestFile("darwin_amd64", "#!/usr/bin\necho 'darwin/amd64'\n") + linux386File := NewTestFile("linux_386", "#!/usr/bin\necho 'darwin/amd64'\n") + darwinAMD64Path := s.saveTestFile(darwinAMD64File) + linux386Path := s.saveTestFile(linux386File) + darwinAMD64URL := makeFileURL(s.T(), darwinAMD64Path) + linux386URL := makeFileURL(s.T(), linux386Path) + + tests := []struct { + name string + urlMap BinaryDownloadURLMap + parseConfig ParseConfig + errs []string + }{ + { + name: "two good entries", + urlMap: BinaryDownloadURLMap{ + "darwin/amd64": darwinAMD64URL, + "linux/386": linux386URL, + }, + errs: nil, + }, + { + name: "url does not exist", + urlMap: BinaryDownloadURLMap{ + "darwin/arm64": "file:///no/such/file/exists/hopefully.zip?checksum=sha256:b5a2c96250612366ea272ffac6d9744aaf4b45aacd96aa7cfcb931ee3b558259", + }, + errs: []string{"error downloading binary", "darwin/arm64", "no such file or directory"}, + }, + { + name: "bad checksum", + urlMap: BinaryDownloadURLMap{ + "darwin/amd64": "file://" + darwinAMD64Path + "?checksum=sha256:b5a2c96250612366ea272ffac6d9744aaf4b45aacd96aa7cfcb931ee3b558259", + }, + errs: []string{"error downloading binary", "darwin/amd64", "Checksums did not match", "b5a2c96250612366ea272ffac6d9744aaf4b45aacd96aa7cfcb931ee3b558259"}, + }, + } + + for _, tc := range tests { + s.T().Run(tc.name, func(t *testing.T) { + actualErr := tc.urlMap.CheckURLs("daemon", tc.parseConfig.EnforceChecksum) + if len(tc.errs) > 0 { + require.Error(t, actualErr) + for _, expectedErr := range tc.errs { + assert.Contains(t, actualErr.Error(), expectedErr) + } + } else { + require.NoError(t, actualErr) + } + }) + } +} diff --git a/vendor-shims/cosmossdk-x-upgrade/types/codec.go b/vendor-shims/cosmossdk-x-upgrade/types/codec.go new file mode 100644 index 00000000..43c9b04c --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/types/codec.go @@ -0,0 +1,35 @@ +package types + +import ( + "github.com/cosmos/cosmos-sdk/codec" + "github.com/cosmos/cosmos-sdk/codec/legacy" + "github.com/cosmos/cosmos-sdk/codec/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/msgservice" + govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" +) + +// RegisterLegacyAminoCodec registers concrete types on the LegacyAmino codec +func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { + cdc.RegisterConcrete(Plan{}, "cosmos-sdk/Plan", nil) + cdc.RegisterConcrete(&SoftwareUpgradeProposal{}, "cosmos-sdk/SoftwareUpgradeProposal", nil) + cdc.RegisterConcrete(&CancelSoftwareUpgradeProposal{}, "cosmos-sdk/CancelSoftwareUpgradeProposal", nil) + legacy.RegisterAminoMsg(cdc, &MsgSoftwareUpgrade{}, "cosmos-sdk/MsgSoftwareUpgrade") + legacy.RegisterAminoMsg(cdc, &MsgCancelUpgrade{}, "cosmos-sdk/MsgCancelUpgrade") +} + +// RegisterInterfaces registers the interfaces types with the Interface Registry. +func RegisterInterfaces(registry types.InterfaceRegistry) { + registry.RegisterImplementations( + (*govtypes.Content)(nil), + &SoftwareUpgradeProposal{}, + &CancelSoftwareUpgradeProposal{}, + ) + + registry.RegisterImplementations((*sdk.Msg)(nil), + &MsgSoftwareUpgrade{}, + &MsgCancelUpgrade{}, + ) + + msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) +} diff --git a/vendor-shims/cosmossdk-x-upgrade/types/errors.go b/vendor-shims/cosmossdk-x-upgrade/types/errors.go new file mode 100644 index 00000000..5b80e2fa --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/types/errors.go @@ -0,0 +1,19 @@ +package types + +import ( + "cosmossdk.io/errors" +) + +// x/authz module sentinel errors +var ( + // ErrNoModuleVersionFound error if there is no version found in the module-version map + ErrNoModuleVersionFound = errors.Register(ModuleName, 2, "module version not found") + // ErrNoUpgradePlanFound error if there is no scheduled upgrade plan found + ErrNoUpgradePlanFound = errors.Register(ModuleName, 3, "upgrade plan not found") + // ErrNoUpgradedClientFound error if there is no upgraded client for the next version + ErrNoUpgradedClientFound = errors.Register(ModuleName, 4, "upgraded client not found") + // ErrNoUpgradedConsensusStateFound error if there is no upgraded consensus state for the next version + ErrNoUpgradedConsensusStateFound = errors.Register(ModuleName, 5, "upgraded consensus state not found") + // ErrInvalidSigner error if the authority is not the signer for a proposal message + ErrInvalidSigner = errors.Register(ModuleName, 6, "expected authority account as only signer for proposal message") +) diff --git a/vendor-shims/cosmossdk-x-upgrade/types/handler.go b/vendor-shims/cosmossdk-x-upgrade/types/handler.go new file mode 100644 index 00000000..80d57da4 --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/types/handler.go @@ -0,0 +1,27 @@ +package types + +import ( + context "context" + + "github.com/cosmos/cosmos-sdk/types/module" +) + +// UpgradeHandler specifies the type of function that is called when an upgrade +// is applied. +// +// `fromVM` is a VersionMap of moduleName to fromVersion (unit64), where +// fromVersion denotes the version from which we should migrate the module, the +// target version being the module's latest version in the return VersionMap, +// let's call it `toVM`. +// +// `fromVM` is retrieved from x/upgrade's store, whereas `toVM` is chosen +// arbitrarily by the app developer (and persisted to x/upgrade's store right +// after the upgrade handler runs). In general, `toVM` should map all modules +// to their latest ConsensusVersion so that x/upgrade can track each module's +// latest ConsensusVersion; `fromVM` can be left as-is, but can also be +// modified inside the upgrade handler, e.g. to skip running InitGenesis or +// migrations for certain modules when calling the `module.Manager#RunMigrations` +// function. +// +// Please also refer to docs/core/upgrade.md for more information. +type UpgradeHandler func(ctx context.Context, plan Plan, fromVM module.VersionMap) (module.VersionMap, error) diff --git a/vendor-shims/cosmossdk-x-upgrade/types/keys.go b/vendor-shims/cosmossdk-x-upgrade/types/keys.go new file mode 100644 index 00000000..bf11e651 --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/types/keys.go @@ -0,0 +1,57 @@ +package types + +import "fmt" + +const ( + // ModuleName is the name of this module + ModuleName = "upgrade" + + // RouterKey is used to route governance proposals + RouterKey = ModuleName + + // StoreKey is the prefix under which we store this module's data + StoreKey = ModuleName +) + +const ( + // PlanByte specifies the Byte under which a pending upgrade plan is stored in the store + PlanByte = 0x0 + + // DoneByte is a prefix to look up completed upgrade plan by name + DoneByte = 0x1 + + // VersionMapByte is a prefix to look up module names (key) and versions (value) + VersionMapByte = 0x2 + + // ProtocolVersionByte is a prefix to look up Protocol Version + ProtocolVersionByte = 0x3 + + // KeyUpgradedIBCState is the key under which upgraded ibc state is stored in the upgrade store + KeyUpgradedIBCState = "upgradedIBCState" + + // KeyUpgradedClient is the sub-key under which upgraded client state will be stored + KeyUpgradedClient = "upgradedClient" + + // KeyUpgradedConsState is the sub-key under which upgraded consensus state will be stored + KeyUpgradedConsState = "upgradedConsState" +) + +// PlanKey is the key under which the current plan is saved +// We store PlanByte as a const to keep it immutable (unlike a []byte) +func PlanKey() []byte { + return []byte{PlanByte} +} + +// UpgradedClientKey is the key under which the upgraded client state is saved +// Connecting IBC chains can verify against the upgraded client in this path before +// upgrading their clients +func UpgradedClientKey(height int64) []byte { + return []byte(fmt.Sprintf("%s/%d/%s", KeyUpgradedIBCState, height, KeyUpgradedClient)) +} + +// UpgradedConsStateKey is the key under which the upgraded consensus state is saved +// Connecting IBC chains can verify against the upgraded consensus state in this path before +// upgrading their clients. +func UpgradedConsStateKey(height int64) []byte { + return []byte(fmt.Sprintf("%s/%d/%s", KeyUpgradedIBCState, height, KeyUpgradedConsState)) +} diff --git a/vendor-shims/cosmossdk-x-upgrade/types/plan.go b/vendor-shims/cosmossdk-x-upgrade/types/plan.go new file mode 100644 index 00000000..8b92fe00 --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/types/plan.go @@ -0,0 +1,40 @@ +package types + +import ( + "fmt" + + errorsmod "cosmossdk.io/errors" + + sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" +) + +// UpgradeInfoFileName file to store upgrade information +const UpgradeInfoFilename = "upgrade-info.json" + +// ValidateBasic does basic validation of a Plan +func (p Plan) ValidateBasic() error { + if !p.Time.IsZero() { + return sdkerrors.ErrInvalidRequest.Wrap("time-based upgrades have been deprecated in the SDK") + } + if p.UpgradedClientState != nil { + return sdkerrors.ErrInvalidRequest.Wrap("upgrade logic for IBC has been moved to the IBC module") + } + if len(p.Name) == 0 { + return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "name cannot be empty") + } + if p.Height <= 0 { + return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "height must be greater than 0") + } + + return nil +} + +// ShouldExecute returns true if the Plan is ready to execute given the current block height +func (p Plan) ShouldExecute(blockHeight int64) bool { + return p.Height > 0 && p.Height <= blockHeight +} + +// DueAt is a string representation of when this plan is due to be executed +func (p Plan) DueAt() string { + return fmt.Sprintf("height: %d", p.Height) +} diff --git a/vendor-shims/cosmossdk-x-upgrade/types/plan_test.go b/vendor-shims/cosmossdk-x-upgrade/types/plan_test.go new file mode 100644 index 00000000..668528cf --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/types/plan_test.go @@ -0,0 +1,148 @@ +package types_test + +import ( + "testing" + "time" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "cosmossdk.io/x/upgrade/types" + + codectypes "github.com/cosmos/cosmos-sdk/codec/types" +) + +func mustParseTime(s string) time.Time { + t, err := time.Parse(time.RFC3339, s) + if err != nil { + panic(err) + } + return t +} + +func TestPlanString(t *testing.T) { + cases := map[string]struct { + p types.Plan + expect string + }{ + "with height": { + p: types.Plan{ + Name: "by height", + Info: "https://foo.bar/baz", + Height: 7890, + }, + expect: "name:\"by height\" time: height:7890 info:\"https://foo.bar/baz\" ", + }, + "neither": { + p: types.Plan{ + Name: "almost-empty", + }, + expect: "name:\"almost-empty\" time: ", + }, + } + + for name, tc := range cases { + t.Run(name, func(t *testing.T) { + s := tc.p.String() + require.Equal(t, tc.expect, s) + }) + } +} + +func TestPlanValid(t *testing.T) { + cases := map[string]struct { + p types.Plan + valid bool + }{ + "proper by height": { + p: types.Plan{ + Name: "all-good", + Height: 123450000, + }, + valid: true, + }, + "no name": { + p: types.Plan{ + Height: 123450000, + }, + }, + "time-base upgrade": { + p: types.Plan{ + Time: time.Now(), + }, + }, + "IBC upgrade": { + p: types.Plan{ + Height: 123450000, + UpgradedClientState: &codectypes.Any{}, + }, + }, + "no due at": { + p: types.Plan{ + Name: "missing", + Info: "important", + }, + }, + "negative height": { + p: types.Plan{ + Name: "minus", + Height: -12345, + }, + }, + } + + for name, tc := range cases { + t.Run(name, func(t *testing.T) { + err := tc.p.ValidateBasic() + if tc.valid { + assert.NoError(t, err) + } else { + assert.Error(t, err) + } + }) + } +} + +func TestShouldExecute(t *testing.T) { + cases := map[string]struct { + p types.Plan + ctxTime time.Time + ctxHeight int64 + expected bool + }{ + "past height": { + p: types.Plan{ + Name: "do-good", + Height: 1234, + }, + ctxTime: mustParseTime("2019-07-08T11:32:00Z"), + ctxHeight: 1000, + expected: false, + }, + "on height": { + p: types.Plan{ + Name: "do-good", + Height: 1234, + }, + ctxTime: mustParseTime("2019-07-08T11:32:00Z"), + ctxHeight: 1234, + expected: true, + }, + "future height": { + p: types.Plan{ + Name: "do-good", + Height: 1234, + }, + ctxTime: mustParseTime("2019-07-08T11:32:00Z"), + ctxHeight: 1235, + expected: true, + }, + } + + for name, tc := range cases { + t.Run(name, func(t *testing.T) { + should := tc.p.ShouldExecute(tc.ctxHeight) + assert.Equal(t, tc.expected, should) + }) + } +} diff --git a/vendor-shims/cosmossdk-x-upgrade/types/proposal.go b/vendor-shims/cosmossdk-x-upgrade/types/proposal.go new file mode 100644 index 00000000..ebac9a18 --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/types/proposal.go @@ -0,0 +1,74 @@ +package types + +import ( + gov "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" +) + +const ( + ProposalTypeSoftwareUpgrade string = "SoftwareUpgrade" + ProposalTypeCancelSoftwareUpgrade string = "CancelSoftwareUpgrade" +) + +// NewSoftwareUpgradeProposal creates a new SoftwareUpgradeProposal instance. +// Deprecated: this proposal is considered legacy and is deprecated in favor of +// Msg-based gov proposals. See MsgSoftwareUpgrade. +func NewSoftwareUpgradeProposal(title, description string, plan Plan) gov.Content { + return &SoftwareUpgradeProposal{title, description, plan} +} + +// Implements Proposal Interface +var _ gov.Content = &SoftwareUpgradeProposal{} + +func init() { + gov.RegisterProposalType(ProposalTypeSoftwareUpgrade) + gov.RegisterProposalType(ProposalTypeCancelSoftwareUpgrade) +} + +// GetTitle gets the proposal's title +func (sup *SoftwareUpgradeProposal) GetTitle() string { return sup.Title } + +// GetDescription gets the proposal's description +func (sup *SoftwareUpgradeProposal) GetDescription() string { return sup.Description } + +// ProposalRoute gets the proposal's router key +func (sup *SoftwareUpgradeProposal) ProposalRoute() string { return RouterKey } + +// ProposalType is "SoftwareUpgrade" +func (sup *SoftwareUpgradeProposal) ProposalType() string { return ProposalTypeSoftwareUpgrade } + +// ValidateBasic validates the proposal +func (sup *SoftwareUpgradeProposal) ValidateBasic() error { + if err := sup.Plan.ValidateBasic(); err != nil { + return err + } + return gov.ValidateAbstract(sup) +} + +// NewCancelSoftwareUpgradeProposal creates a new CancelSoftwareUpgradeProposal +// instance. Deprecated: this proposal is considered legacy and is deprecated in +// favor of Msg-based gov proposals. See MsgCancelUpgrade. +func NewCancelSoftwareUpgradeProposal(title, description string) gov.Content { + return &CancelSoftwareUpgradeProposal{title, description} +} + +// Implements Proposal Interface +var _ gov.Content = &CancelSoftwareUpgradeProposal{} + +// GetTitle gets the proposal's title +func (csup *CancelSoftwareUpgradeProposal) GetTitle() string { return csup.Title } + +// GetDescription gets the proposal's description +func (csup *CancelSoftwareUpgradeProposal) GetDescription() string { return csup.Description } + +// ProposalRoute gets the proposal's router key +func (csup *CancelSoftwareUpgradeProposal) ProposalRoute() string { return RouterKey } + +// ProposalType is "CancelSoftwareUpgrade" +func (csup *CancelSoftwareUpgradeProposal) ProposalType() string { + return ProposalTypeCancelSoftwareUpgrade +} + +// ValidateBasic validates the proposal +func (csup *CancelSoftwareUpgradeProposal) ValidateBasic() error { + return gov.ValidateAbstract(csup) +} diff --git a/vendor-shims/cosmossdk-x-upgrade/types/proposal_test.go b/vendor-shims/cosmossdk-x-upgrade/types/proposal_test.go new file mode 100644 index 00000000..6989663a --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/types/proposal_test.go @@ -0,0 +1,103 @@ +package types_test + +import ( + "testing" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" + + "cosmossdk.io/x/upgrade/types" + + "github.com/cosmos/cosmos-sdk/codec" + codectypes "github.com/cosmos/cosmos-sdk/codec/types" + gov "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1" +) + +type ProposalWrapper struct { + Prop gov.Content +} + +func TestContentAccessors(t *testing.T) { + cases := map[string]struct { + p gov.Content + title string + desc string + typ string + str string + }{ + "upgrade": { + p: types.NewSoftwareUpgradeProposal("Title", "desc", types.Plan{ + Name: "due_height", + Info: "https://foo.bar", + Height: 99999999999, + }), + title: "Title", + desc: "desc", + typ: "SoftwareUpgrade", + str: "title:\"Title\" description:\"desc\" plan: height:99999999999 info:\"https://foo.bar\" > ", + }, + "cancel": { + p: types.NewCancelSoftwareUpgradeProposal("Cancel", "bad idea"), + title: "Cancel", + desc: "bad idea", + typ: "CancelSoftwareUpgrade", + str: "title:\"Cancel\" description:\"bad idea\" ", + }, + } + + cdc := codec.NewLegacyAmino() + gov.RegisterLegacyAminoCodec(cdc) + types.RegisterLegacyAminoCodec(cdc) + + for name, tc := range cases { + t.Run(name, func(t *testing.T) { + assert.Equal(t, tc.title, tc.p.GetTitle()) + assert.Equal(t, tc.desc, tc.p.GetDescription()) + assert.Equal(t, tc.typ, tc.p.ProposalType()) + assert.Equal(t, "upgrade", tc.p.ProposalRoute()) + assert.Equal(t, tc.str, tc.p.String()) + + // try to encode and decode type to ensure codec works + wrap := ProposalWrapper{tc.p} + bz, err := cdc.Marshal(&wrap) + require.NoError(t, err) + unwrap := ProposalWrapper{} + err = cdc.Unmarshal(bz, &unwrap) + require.NoError(t, err) + + // all methods should look the same + assert.Equal(t, tc.title, unwrap.Prop.GetTitle()) + assert.Equal(t, tc.desc, unwrap.Prop.GetDescription()) + assert.Equal(t, tc.typ, unwrap.Prop.ProposalType()) + assert.Equal(t, "upgrade", unwrap.Prop.ProposalRoute()) + assert.Equal(t, tc.str, unwrap.Prop.String()) + }) + } +} + +// tests a software update proposal can be marshaled and unmarshaled +func TestMarshalSoftwareUpdateProposal(t *testing.T) { + // create proposal + plan := types.Plan{ + Name: "upgrade", + Height: 1000, + } + content := types.NewSoftwareUpgradeProposal("title", "description", plan) + sup, ok := content.(*types.SoftwareUpgradeProposal) + require.True(t, ok) + + // create codec + ir := codectypes.NewInterfaceRegistry() + types.RegisterInterfaces(ir) + gov.RegisterInterfaces(ir) + cdc := codec.NewProtoCodec(ir) + + // marshal message + bz, err := cdc.MarshalJSON(sup) + require.NoError(t, err) + + // unmarshal proposal + newSup := &types.SoftwareUpgradeProposal{} + err = cdc.UnmarshalJSON(bz, newSup) + require.NoError(t, err) +} diff --git a/vendor-shims/cosmossdk-x-upgrade/types/querier.go b/vendor-shims/cosmossdk-x-upgrade/types/querier.go new file mode 100644 index 00000000..d636c6aa --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/types/querier.go @@ -0,0 +1,7 @@ +package types + +// query endpoints supported by the upgrade Querier +const ( + QueryCurrent = "current" + QueryApplied = "applied" +) diff --git a/vendor-shims/cosmossdk-x-upgrade/types/query.pb.go b/vendor-shims/cosmossdk-x-upgrade/types/query.pb.go new file mode 100644 index 00000000..40ba87e2 --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/types/query.pb.go @@ -0,0 +1,2051 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: cosmos/upgrade/v1beta1/query.proto + +package types + +import ( + context "context" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + 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 + +// QueryCurrentPlanRequest is the request type for the Query/CurrentPlan RPC +// method. +type QueryCurrentPlanRequest struct { +} + +func (m *QueryCurrentPlanRequest) Reset() { *m = QueryCurrentPlanRequest{} } +func (m *QueryCurrentPlanRequest) String() string { return proto.CompactTextString(m) } +func (*QueryCurrentPlanRequest) ProtoMessage() {} +func (*QueryCurrentPlanRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_4a334d07ad8374f0, []int{0} +} +func (m *QueryCurrentPlanRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryCurrentPlanRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryCurrentPlanRequest.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 *QueryCurrentPlanRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryCurrentPlanRequest.Merge(m, src) +} +func (m *QueryCurrentPlanRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryCurrentPlanRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryCurrentPlanRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryCurrentPlanRequest proto.InternalMessageInfo + +// QueryCurrentPlanResponse is the response type for the Query/CurrentPlan RPC +// method. +type QueryCurrentPlanResponse struct { + // plan is the current upgrade plan. + Plan *Plan `protobuf:"bytes,1,opt,name=plan,proto3" json:"plan,omitempty"` +} + +func (m *QueryCurrentPlanResponse) Reset() { *m = QueryCurrentPlanResponse{} } +func (m *QueryCurrentPlanResponse) String() string { return proto.CompactTextString(m) } +func (*QueryCurrentPlanResponse) ProtoMessage() {} +func (*QueryCurrentPlanResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_4a334d07ad8374f0, []int{1} +} +func (m *QueryCurrentPlanResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryCurrentPlanResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryCurrentPlanResponse.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 *QueryCurrentPlanResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryCurrentPlanResponse.Merge(m, src) +} +func (m *QueryCurrentPlanResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryCurrentPlanResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryCurrentPlanResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryCurrentPlanResponse proto.InternalMessageInfo + +func (m *QueryCurrentPlanResponse) GetPlan() *Plan { + if m != nil { + return m.Plan + } + return nil +} + +// QueryCurrentPlanRequest is the request type for the Query/AppliedPlan RPC +// method. +type QueryAppliedPlanRequest struct { + // name is the name of the applied plan to query for. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` +} + +func (m *QueryAppliedPlanRequest) Reset() { *m = QueryAppliedPlanRequest{} } +func (m *QueryAppliedPlanRequest) String() string { return proto.CompactTextString(m) } +func (*QueryAppliedPlanRequest) ProtoMessage() {} +func (*QueryAppliedPlanRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_4a334d07ad8374f0, []int{2} +} +func (m *QueryAppliedPlanRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryAppliedPlanRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryAppliedPlanRequest.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 *QueryAppliedPlanRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAppliedPlanRequest.Merge(m, src) +} +func (m *QueryAppliedPlanRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryAppliedPlanRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAppliedPlanRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryAppliedPlanRequest proto.InternalMessageInfo + +func (m *QueryAppliedPlanRequest) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +// QueryAppliedPlanResponse is the response type for the Query/AppliedPlan RPC +// method. +type QueryAppliedPlanResponse struct { + // height is the block height at which the plan was applied. + Height int64 `protobuf:"varint,1,opt,name=height,proto3" json:"height,omitempty"` +} + +func (m *QueryAppliedPlanResponse) Reset() { *m = QueryAppliedPlanResponse{} } +func (m *QueryAppliedPlanResponse) String() string { return proto.CompactTextString(m) } +func (*QueryAppliedPlanResponse) ProtoMessage() {} +func (*QueryAppliedPlanResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_4a334d07ad8374f0, []int{3} +} +func (m *QueryAppliedPlanResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryAppliedPlanResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryAppliedPlanResponse.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 *QueryAppliedPlanResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAppliedPlanResponse.Merge(m, src) +} +func (m *QueryAppliedPlanResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryAppliedPlanResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAppliedPlanResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryAppliedPlanResponse proto.InternalMessageInfo + +func (m *QueryAppliedPlanResponse) GetHeight() int64 { + if m != nil { + return m.Height + } + return 0 +} + +// QueryUpgradedConsensusStateRequest is the request type for the Query/UpgradedConsensusState +// RPC method. +// +// Deprecated: Do not use. +type QueryUpgradedConsensusStateRequest struct { + // last height of the current chain must be sent in request + // as this is the height under which next consensus state is stored + LastHeight int64 `protobuf:"varint,1,opt,name=last_height,json=lastHeight,proto3" json:"last_height,omitempty"` +} + +func (m *QueryUpgradedConsensusStateRequest) Reset() { *m = QueryUpgradedConsensusStateRequest{} } +func (m *QueryUpgradedConsensusStateRequest) String() string { return proto.CompactTextString(m) } +func (*QueryUpgradedConsensusStateRequest) ProtoMessage() {} +func (*QueryUpgradedConsensusStateRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_4a334d07ad8374f0, []int{4} +} +func (m *QueryUpgradedConsensusStateRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryUpgradedConsensusStateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryUpgradedConsensusStateRequest.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 *QueryUpgradedConsensusStateRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryUpgradedConsensusStateRequest.Merge(m, src) +} +func (m *QueryUpgradedConsensusStateRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryUpgradedConsensusStateRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryUpgradedConsensusStateRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryUpgradedConsensusStateRequest proto.InternalMessageInfo + +func (m *QueryUpgradedConsensusStateRequest) GetLastHeight() int64 { + if m != nil { + return m.LastHeight + } + return 0 +} + +// QueryUpgradedConsensusStateResponse is the response type for the Query/UpgradedConsensusState +// RPC method. +// +// Deprecated: Do not use. +type QueryUpgradedConsensusStateResponse struct { + UpgradedConsensusState []byte `protobuf:"bytes,2,opt,name=upgraded_consensus_state,json=upgradedConsensusState,proto3" json:"upgraded_consensus_state,omitempty"` +} + +func (m *QueryUpgradedConsensusStateResponse) Reset() { *m = QueryUpgradedConsensusStateResponse{} } +func (m *QueryUpgradedConsensusStateResponse) String() string { return proto.CompactTextString(m) } +func (*QueryUpgradedConsensusStateResponse) ProtoMessage() {} +func (*QueryUpgradedConsensusStateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_4a334d07ad8374f0, []int{5} +} +func (m *QueryUpgradedConsensusStateResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryUpgradedConsensusStateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryUpgradedConsensusStateResponse.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 *QueryUpgradedConsensusStateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryUpgradedConsensusStateResponse.Merge(m, src) +} +func (m *QueryUpgradedConsensusStateResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryUpgradedConsensusStateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryUpgradedConsensusStateResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryUpgradedConsensusStateResponse proto.InternalMessageInfo + +func (m *QueryUpgradedConsensusStateResponse) GetUpgradedConsensusState() []byte { + if m != nil { + return m.UpgradedConsensusState + } + return nil +} + +// QueryModuleVersionsRequest is the request type for the Query/ModuleVersions +// RPC method. +type QueryModuleVersionsRequest struct { + // module_name is a field to query a specific module + // consensus version from state. Leaving this empty will + // fetch the full list of module versions from state + ModuleName string `protobuf:"bytes,1,opt,name=module_name,json=moduleName,proto3" json:"module_name,omitempty"` +} + +func (m *QueryModuleVersionsRequest) Reset() { *m = QueryModuleVersionsRequest{} } +func (m *QueryModuleVersionsRequest) String() string { return proto.CompactTextString(m) } +func (*QueryModuleVersionsRequest) ProtoMessage() {} +func (*QueryModuleVersionsRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_4a334d07ad8374f0, []int{6} +} +func (m *QueryModuleVersionsRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryModuleVersionsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryModuleVersionsRequest.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 *QueryModuleVersionsRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryModuleVersionsRequest.Merge(m, src) +} +func (m *QueryModuleVersionsRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryModuleVersionsRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryModuleVersionsRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryModuleVersionsRequest proto.InternalMessageInfo + +func (m *QueryModuleVersionsRequest) GetModuleName() string { + if m != nil { + return m.ModuleName + } + return "" +} + +// QueryModuleVersionsResponse is the response type for the Query/ModuleVersions +// RPC method. +type QueryModuleVersionsResponse struct { + // module_versions is a list of module names with their consensus versions. + ModuleVersions []*ModuleVersion `protobuf:"bytes,1,rep,name=module_versions,json=moduleVersions,proto3" json:"module_versions,omitempty"` +} + +func (m *QueryModuleVersionsResponse) Reset() { *m = QueryModuleVersionsResponse{} } +func (m *QueryModuleVersionsResponse) String() string { return proto.CompactTextString(m) } +func (*QueryModuleVersionsResponse) ProtoMessage() {} +func (*QueryModuleVersionsResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_4a334d07ad8374f0, []int{7} +} +func (m *QueryModuleVersionsResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryModuleVersionsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryModuleVersionsResponse.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 *QueryModuleVersionsResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryModuleVersionsResponse.Merge(m, src) +} +func (m *QueryModuleVersionsResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryModuleVersionsResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryModuleVersionsResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryModuleVersionsResponse proto.InternalMessageInfo + +func (m *QueryModuleVersionsResponse) GetModuleVersions() []*ModuleVersion { + if m != nil { + return m.ModuleVersions + } + return nil +} + +// QueryAuthorityRequest is the request type for Query/Authority +type QueryAuthorityRequest struct { +} + +func (m *QueryAuthorityRequest) Reset() { *m = QueryAuthorityRequest{} } +func (m *QueryAuthorityRequest) String() string { return proto.CompactTextString(m) } +func (*QueryAuthorityRequest) ProtoMessage() {} +func (*QueryAuthorityRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_4a334d07ad8374f0, []int{8} +} +func (m *QueryAuthorityRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryAuthorityRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryAuthorityRequest.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 *QueryAuthorityRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAuthorityRequest.Merge(m, src) +} +func (m *QueryAuthorityRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryAuthorityRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAuthorityRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryAuthorityRequest proto.InternalMessageInfo + +// QueryAuthorityResponse is the response type for Query/Authority +type QueryAuthorityResponse struct { + Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` +} + +func (m *QueryAuthorityResponse) Reset() { *m = QueryAuthorityResponse{} } +func (m *QueryAuthorityResponse) String() string { return proto.CompactTextString(m) } +func (*QueryAuthorityResponse) ProtoMessage() {} +func (*QueryAuthorityResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_4a334d07ad8374f0, []int{9} +} +func (m *QueryAuthorityResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryAuthorityResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryAuthorityResponse.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 *QueryAuthorityResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAuthorityResponse.Merge(m, src) +} +func (m *QueryAuthorityResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryAuthorityResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAuthorityResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryAuthorityResponse proto.InternalMessageInfo + +func (m *QueryAuthorityResponse) GetAddress() string { + if m != nil { + return m.Address + } + return "" +} + +func init() { + proto.RegisterType((*QueryCurrentPlanRequest)(nil), "cosmos.upgrade.v1beta1.QueryCurrentPlanRequest") + proto.RegisterType((*QueryCurrentPlanResponse)(nil), "cosmos.upgrade.v1beta1.QueryCurrentPlanResponse") + proto.RegisterType((*QueryAppliedPlanRequest)(nil), "cosmos.upgrade.v1beta1.QueryAppliedPlanRequest") + proto.RegisterType((*QueryAppliedPlanResponse)(nil), "cosmos.upgrade.v1beta1.QueryAppliedPlanResponse") + proto.RegisterType((*QueryUpgradedConsensusStateRequest)(nil), "cosmos.upgrade.v1beta1.QueryUpgradedConsensusStateRequest") + proto.RegisterType((*QueryUpgradedConsensusStateResponse)(nil), "cosmos.upgrade.v1beta1.QueryUpgradedConsensusStateResponse") + proto.RegisterType((*QueryModuleVersionsRequest)(nil), "cosmos.upgrade.v1beta1.QueryModuleVersionsRequest") + proto.RegisterType((*QueryModuleVersionsResponse)(nil), "cosmos.upgrade.v1beta1.QueryModuleVersionsResponse") + proto.RegisterType((*QueryAuthorityRequest)(nil), "cosmos.upgrade.v1beta1.QueryAuthorityRequest") + proto.RegisterType((*QueryAuthorityResponse)(nil), "cosmos.upgrade.v1beta1.QueryAuthorityResponse") +} + +func init() { + proto.RegisterFile("cosmos/upgrade/v1beta1/query.proto", fileDescriptor_4a334d07ad8374f0) +} + +var fileDescriptor_4a334d07ad8374f0 = []byte{ + // 685 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x55, 0xcf, 0x4f, 0x13, 0x4f, + 0x1c, 0x65, 0x0a, 0x5f, 0xf8, 0xf2, 0xa9, 0x01, 0x33, 0xc4, 0xba, 0xac, 0xa4, 0xd6, 0x01, 0x15, + 0x23, 0xdd, 0x85, 0xd6, 0x70, 0x40, 0x63, 0x14, 0x0e, 0x8a, 0x11, 0xa2, 0x35, 0x7a, 0xf0, 0xd2, + 0x0c, 0xec, 0xa4, 0x34, 0xb4, 0xbb, 0xcb, 0xce, 0x2c, 0x91, 0x10, 0x3c, 0x70, 0xf2, 0x68, 0xe2, + 0xcd, 0x83, 0x37, 0x13, 0xff, 0x00, 0xaf, 0xde, 0x8d, 0x27, 0xa2, 0x17, 0x63, 0x3c, 0x18, 0xf0, + 0x0f, 0x31, 0x3b, 0x33, 0x25, 0xfd, 0xb1, 0xbb, 0xa0, 0xb7, 0xce, 0xce, 0x7b, 0xef, 0xf3, 0xde, + 0xce, 0xbc, 0x2d, 0x90, 0x75, 0x8f, 0x37, 0x3d, 0x6e, 0x87, 0x7e, 0x2d, 0xa0, 0x0e, 0xb3, 0xb7, + 0xe7, 0xd6, 0x98, 0xa0, 0x73, 0xf6, 0x56, 0xc8, 0x82, 0x1d, 0xcb, 0x0f, 0x3c, 0xe1, 0xe1, 0x9c, + 0xc2, 0x58, 0x1a, 0x63, 0x69, 0x8c, 0x39, 0x51, 0xf3, 0xbc, 0x5a, 0x83, 0xd9, 0xd4, 0xaf, 0xdb, + 0xd4, 0x75, 0x3d, 0x41, 0x45, 0xdd, 0x73, 0xb9, 0x62, 0x99, 0x53, 0x09, 0xca, 0x2d, 0x15, 0x85, + 0x1a, 0x57, 0xa8, 0xaa, 0x5c, 0xd9, 0x7a, 0x90, 0x5c, 0x90, 0x71, 0x38, 0xff, 0x38, 0x72, 0xb1, + 0x14, 0x06, 0x01, 0x73, 0xc5, 0xa3, 0x06, 0x75, 0x2b, 0x6c, 0x2b, 0x64, 0x5c, 0x90, 0x87, 0x60, + 0xf4, 0x6e, 0x71, 0xdf, 0x73, 0x39, 0xc3, 0xb3, 0x30, 0xe0, 0x37, 0xa8, 0x6b, 0xa0, 0x02, 0x9a, + 0xce, 0x96, 0x26, 0xac, 0x78, 0xf3, 0x96, 0xe4, 0x48, 0x24, 0x29, 0xea, 0x41, 0x77, 0x7d, 0xbf, + 0x51, 0x67, 0x4e, 0xdb, 0x20, 0x8c, 0x61, 0xc0, 0xa5, 0x4d, 0x26, 0xc5, 0x86, 0x2b, 0xf2, 0x37, + 0x29, 0xe9, 0xe1, 0x1d, 0x70, 0x3d, 0x3c, 0x07, 0x83, 0x1b, 0xac, 0x5e, 0xdb, 0x10, 0x92, 0xd1, + 0x5f, 0xd1, 0x2b, 0xb2, 0x0c, 0x44, 0x72, 0x9e, 0x2a, 0x17, 0xce, 0x52, 0x84, 0x76, 0x79, 0xc8, + 0x9f, 0x08, 0x2a, 0x58, 0x6b, 0xda, 0x45, 0xc8, 0x36, 0x28, 0x17, 0xd5, 0x0e, 0x09, 0x88, 0x1e, + 0xdd, 0x97, 0x4f, 0x16, 0x32, 0x06, 0x22, 0x2f, 0x61, 0x32, 0x55, 0x4a, 0x3b, 0x59, 0x01, 0x43, + 0x47, 0x76, 0xaa, 0xeb, 0x2d, 0x48, 0x95, 0x47, 0x18, 0x23, 0x53, 0x40, 0xd3, 0x67, 0x16, 0xc7, + 0x7e, 0x7c, 0x2c, 0x8e, 0xaa, 0xb7, 0x53, 0xe4, 0xce, 0x66, 0x61, 0xd6, 0xba, 0x51, 0xae, 0xe4, + 0xc2, 0x58, 0xd9, 0x68, 0xf2, 0x83, 0x81, 0xff, 0xd1, 0xd9, 0x0c, 0xa9, 0x80, 0x29, 0xe7, 0xaf, + 0x78, 0x4e, 0xd8, 0x60, 0xcf, 0x58, 0xc0, 0xa3, 0x43, 0x6f, 0x8b, 0xd0, 0x94, 0x1b, 0xd5, 0xb6, + 0xf7, 0x06, 0xea, 0xd1, 0x2a, 0x6d, 0xb2, 0x85, 0xb1, 0xaf, 0xbd, 0x53, 0xc9, 0x3e, 0x82, 0x0b, + 0xb1, 0xa2, 0x3a, 0xcc, 0x2a, 0x8c, 0x6a, 0xd5, 0x6d, 0xbd, 0x65, 0xa0, 0x42, 0xff, 0x74, 0xb6, + 0x74, 0x39, 0xe9, 0x78, 0x3b, 0x84, 0x2a, 0x23, 0xcd, 0x0e, 0xdd, 0x78, 0x13, 0x33, 0x70, 0x4e, + 0x9d, 0x6b, 0x28, 0x36, 0xbc, 0xa0, 0x2e, 0x76, 0x74, 0xa6, 0x38, 0xf4, 0x3c, 0xb9, 0x07, 0xb9, + 0x6e, 0xb4, 0x36, 0x6b, 0xc0, 0x10, 0x75, 0x9c, 0x80, 0x71, 0xae, 0xe3, 0xb7, 0x96, 0xb1, 0x42, + 0xa5, 0xb7, 0x43, 0xf0, 0x9f, 0x54, 0xc2, 0xef, 0x10, 0x64, 0xdb, 0x6e, 0x34, 0xb6, 0x93, 0xc2, + 0x25, 0xd4, 0xc2, 0x9c, 0x3d, 0x3d, 0x41, 0x79, 0x25, 0x33, 0xfb, 0xdf, 0x7e, 0xbf, 0xc9, 0x5c, + 0xc1, 0x53, 0x76, 0x42, 0x5b, 0xd7, 0x15, 0xa9, 0x1a, 0x15, 0x05, 0xbf, 0x47, 0x90, 0x6d, 0xbb, + 0xf5, 0x27, 0x18, 0xec, 0xad, 0xd3, 0x09, 0x06, 0x63, 0x0a, 0x45, 0xca, 0xd2, 0x60, 0x11, 0x5f, + 0x4f, 0x32, 0x48, 0x15, 0x49, 0x1a, 0xb4, 0x77, 0xa3, 0x4b, 0xb7, 0x87, 0x7f, 0x22, 0xc8, 0xc5, + 0xd7, 0x03, 0x2f, 0xa4, 0x3a, 0x48, 0xad, 0xa7, 0x79, 0xf3, 0x9f, 0xb8, 0x3a, 0xc8, 0xb2, 0x0c, + 0x72, 0x07, 0xdf, 0xb6, 0xd3, 0xbf, 0x8b, 0x3d, 0x6d, 0xb5, 0x77, 0xdb, 0xbe, 0x09, 0x7b, 0xaf, + 0x32, 0x08, 0x7f, 0x42, 0x30, 0xd2, 0x59, 0x14, 0x5c, 0x4a, 0xb5, 0x16, 0x5b, 0x55, 0xb3, 0xfc, + 0x57, 0x1c, 0x1d, 0x63, 0xf1, 0x4b, 0x6f, 0x73, 0x64, 0xb2, 0x6b, 0xf8, 0x6a, 0x52, 0xb2, 0xae, + 0xea, 0xe2, 0x0f, 0x08, 0x86, 0x8f, 0x6b, 0x83, 0x8b, 0xe9, 0x77, 0xa2, 0xab, 0x8c, 0xa6, 0x75, + 0x5a, 0xb8, 0x36, 0x7c, 0xab, 0xd7, 0xf0, 0xbc, 0x34, 0x3c, 0x89, 0x2f, 0x25, 0xde, 0xa9, 0x96, + 0xca, 0xe2, 0xfc, 0xe7, 0xc3, 0x3c, 0x3a, 0x38, 0xcc, 0xa3, 0x5f, 0x87, 0x79, 0xf4, 0xfa, 0x28, + 0xdf, 0x77, 0x70, 0x94, 0xef, 0xfb, 0x7e, 0x94, 0xef, 0x7b, 0x3e, 0xa1, 0xb8, 0xdc, 0xd9, 0xb4, + 0xea, 0x9e, 0xfd, 0xe2, 0x58, 0x43, 0xec, 0xf8, 0x8c, 0xaf, 0x0d, 0xca, 0xbf, 0xb0, 0xf2, 0x9f, + 0x00, 0x00, 0x00, 0xff, 0xff, 0x04, 0x0d, 0x4f, 0xe3, 0x5f, 0x07, 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 { + // CurrentPlan queries the current upgrade plan. + CurrentPlan(ctx context.Context, in *QueryCurrentPlanRequest, opts ...grpc.CallOption) (*QueryCurrentPlanResponse, error) + // AppliedPlan queries a previously applied upgrade plan by its name. + AppliedPlan(ctx context.Context, in *QueryAppliedPlanRequest, opts ...grpc.CallOption) (*QueryAppliedPlanResponse, error) + // UpgradedConsensusState queries the consensus state that will serve + // as a trusted kernel for the next version of this chain. It will only be + // stored at the last height of this chain. + // UpgradedConsensusState RPC not supported with legacy querier + // This rpc is deprecated now that IBC has its own replacement + // (https://github.com/cosmos/ibc-go/blob/2c880a22e9f9cc75f62b527ca94aa75ce1106001/proto/ibc/core/client/v1/query.proto#L54) + UpgradedConsensusState(ctx context.Context, in *QueryUpgradedConsensusStateRequest, opts ...grpc.CallOption) (*QueryUpgradedConsensusStateResponse, error) + // ModuleVersions queries the list of module versions from state. + ModuleVersions(ctx context.Context, in *QueryModuleVersionsRequest, opts ...grpc.CallOption) (*QueryModuleVersionsResponse, error) + // Returns the account with authority to conduct upgrades + Authority(ctx context.Context, in *QueryAuthorityRequest, opts ...grpc.CallOption) (*QueryAuthorityResponse, error) +} + +type queryClient struct { + cc grpc1.ClientConn +} + +func NewQueryClient(cc grpc1.ClientConn) QueryClient { + return &queryClient{cc} +} + +func (c *queryClient) CurrentPlan(ctx context.Context, in *QueryCurrentPlanRequest, opts ...grpc.CallOption) (*QueryCurrentPlanResponse, error) { + out := new(QueryCurrentPlanResponse) + err := c.cc.Invoke(ctx, "/cosmos.upgrade.v1beta1.Query/CurrentPlan", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) AppliedPlan(ctx context.Context, in *QueryAppliedPlanRequest, opts ...grpc.CallOption) (*QueryAppliedPlanResponse, error) { + out := new(QueryAppliedPlanResponse) + err := c.cc.Invoke(ctx, "/cosmos.upgrade.v1beta1.Query/AppliedPlan", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// Deprecated: Do not use. +func (c *queryClient) UpgradedConsensusState(ctx context.Context, in *QueryUpgradedConsensusStateRequest, opts ...grpc.CallOption) (*QueryUpgradedConsensusStateResponse, error) { + out := new(QueryUpgradedConsensusStateResponse) + err := c.cc.Invoke(ctx, "/cosmos.upgrade.v1beta1.Query/UpgradedConsensusState", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) ModuleVersions(ctx context.Context, in *QueryModuleVersionsRequest, opts ...grpc.CallOption) (*QueryModuleVersionsResponse, error) { + out := new(QueryModuleVersionsResponse) + err := c.cc.Invoke(ctx, "/cosmos.upgrade.v1beta1.Query/ModuleVersions", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *queryClient) Authority(ctx context.Context, in *QueryAuthorityRequest, opts ...grpc.CallOption) (*QueryAuthorityResponse, error) { + out := new(QueryAuthorityResponse) + err := c.cc.Invoke(ctx, "/cosmos.upgrade.v1beta1.Query/Authority", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// QueryServer is the server API for Query service. +type QueryServer interface { + // CurrentPlan queries the current upgrade plan. + CurrentPlan(context.Context, *QueryCurrentPlanRequest) (*QueryCurrentPlanResponse, error) + // AppliedPlan queries a previously applied upgrade plan by its name. + AppliedPlan(context.Context, *QueryAppliedPlanRequest) (*QueryAppliedPlanResponse, error) + // UpgradedConsensusState queries the consensus state that will serve + // as a trusted kernel for the next version of this chain. It will only be + // stored at the last height of this chain. + // UpgradedConsensusState RPC not supported with legacy querier + // This rpc is deprecated now that IBC has its own replacement + // (https://github.com/cosmos/ibc-go/blob/2c880a22e9f9cc75f62b527ca94aa75ce1106001/proto/ibc/core/client/v1/query.proto#L54) + UpgradedConsensusState(context.Context, *QueryUpgradedConsensusStateRequest) (*QueryUpgradedConsensusStateResponse, error) + // ModuleVersions queries the list of module versions from state. + ModuleVersions(context.Context, *QueryModuleVersionsRequest) (*QueryModuleVersionsResponse, error) + // Returns the account with authority to conduct upgrades + Authority(context.Context, *QueryAuthorityRequest) (*QueryAuthorityResponse, error) +} + +// UnimplementedQueryServer can be embedded to have forward compatible implementations. +type UnimplementedQueryServer struct { +} + +func (*UnimplementedQueryServer) CurrentPlan(ctx context.Context, req *QueryCurrentPlanRequest) (*QueryCurrentPlanResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CurrentPlan not implemented") +} +func (*UnimplementedQueryServer) AppliedPlan(ctx context.Context, req *QueryAppliedPlanRequest) (*QueryAppliedPlanResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AppliedPlan not implemented") +} +func (*UnimplementedQueryServer) UpgradedConsensusState(ctx context.Context, req *QueryUpgradedConsensusStateRequest) (*QueryUpgradedConsensusStateResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpgradedConsensusState not implemented") +} +func (*UnimplementedQueryServer) ModuleVersions(ctx context.Context, req *QueryModuleVersionsRequest) (*QueryModuleVersionsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ModuleVersions not implemented") +} +func (*UnimplementedQueryServer) Authority(ctx context.Context, req *QueryAuthorityRequest) (*QueryAuthorityResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Authority not implemented") +} + +func RegisterQueryServer(s grpc1.Server, srv QueryServer) { + s.RegisterService(&_Query_serviceDesc, srv) +} + +func _Query_CurrentPlan_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryCurrentPlanRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).CurrentPlan(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.upgrade.v1beta1.Query/CurrentPlan", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).CurrentPlan(ctx, req.(*QueryCurrentPlanRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_AppliedPlan_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryAppliedPlanRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).AppliedPlan(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.upgrade.v1beta1.Query/AppliedPlan", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).AppliedPlan(ctx, req.(*QueryAppliedPlanRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_UpgradedConsensusState_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryUpgradedConsensusStateRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).UpgradedConsensusState(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.upgrade.v1beta1.Query/UpgradedConsensusState", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).UpgradedConsensusState(ctx, req.(*QueryUpgradedConsensusStateRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_ModuleVersions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryModuleVersionsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).ModuleVersions(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.upgrade.v1beta1.Query/ModuleVersions", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).ModuleVersions(ctx, req.(*QueryModuleVersionsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _Query_Authority_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryAuthorityRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).Authority(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.upgrade.v1beta1.Query/Authority", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).Authority(ctx, req.(*QueryAuthorityRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var Query_serviceDesc = _Query_serviceDesc +var _Query_serviceDesc = grpc.ServiceDesc{ + ServiceName: "cosmos.upgrade.v1beta1.Query", + HandlerType: (*QueryServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "CurrentPlan", + Handler: _Query_CurrentPlan_Handler, + }, + { + MethodName: "AppliedPlan", + Handler: _Query_AppliedPlan_Handler, + }, + { + MethodName: "UpgradedConsensusState", + Handler: _Query_UpgradedConsensusState_Handler, + }, + { + MethodName: "ModuleVersions", + Handler: _Query_ModuleVersions_Handler, + }, + { + MethodName: "Authority", + Handler: _Query_Authority_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "cosmos/upgrade/v1beta1/query.proto", +} + +func (m *QueryCurrentPlanRequest) 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 *QueryCurrentPlanRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryCurrentPlanRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *QueryCurrentPlanResponse) 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 *QueryCurrentPlanResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryCurrentPlanResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Plan != nil { + { + size, err := m.Plan.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 *QueryAppliedPlanRequest) 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 *QueryAppliedPlanRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryAppliedPlanRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Name) > 0 { + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryAppliedPlanResponse) 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 *QueryAppliedPlanResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryAppliedPlanResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Height != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.Height)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *QueryUpgradedConsensusStateRequest) 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 *QueryUpgradedConsensusStateRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryUpgradedConsensusStateRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.LastHeight != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.LastHeight)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *QueryUpgradedConsensusStateResponse) 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 *QueryUpgradedConsensusStateResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryUpgradedConsensusStateResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.UpgradedConsensusState) > 0 { + i -= len(m.UpgradedConsensusState) + copy(dAtA[i:], m.UpgradedConsensusState) + i = encodeVarintQuery(dAtA, i, uint64(len(m.UpgradedConsensusState))) + i-- + dAtA[i] = 0x12 + } + return len(dAtA) - i, nil +} + +func (m *QueryModuleVersionsRequest) 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 *QueryModuleVersionsRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryModuleVersionsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ModuleName) > 0 { + i -= len(m.ModuleName) + copy(dAtA[i:], m.ModuleName) + i = encodeVarintQuery(dAtA, i, uint64(len(m.ModuleName))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *QueryModuleVersionsResponse) 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 *QueryModuleVersionsResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryModuleVersionsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.ModuleVersions) > 0 { + for iNdEx := len(m.ModuleVersions) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.ModuleVersions[iNdEx].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 *QueryAuthorityRequest) 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 *QueryAuthorityRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryAuthorityRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *QueryAuthorityResponse) 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 *QueryAuthorityResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryAuthorityResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Address) > 0 { + i -= len(m.Address) + copy(dAtA[i:], m.Address) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Address))) + i-- + dAtA[i] = 0xa + } + 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 *QueryCurrentPlanRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *QueryCurrentPlanResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Plan != nil { + l = m.Plan.Size() + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryAppliedPlanRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Name) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryAppliedPlanResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Height != 0 { + n += 1 + sovQuery(uint64(m.Height)) + } + return n +} + +func (m *QueryUpgradedConsensusStateRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.LastHeight != 0 { + n += 1 + sovQuery(uint64(m.LastHeight)) + } + return n +} + +func (m *QueryUpgradedConsensusStateResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.UpgradedConsensusState) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryModuleVersionsRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ModuleName) + if l > 0 { + n += 1 + l + sovQuery(uint64(l)) + } + return n +} + +func (m *QueryModuleVersionsResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.ModuleVersions) > 0 { + for _, e := range m.ModuleVersions { + l = e.Size() + n += 1 + l + sovQuery(uint64(l)) + } + } + return n +} + +func (m *QueryAuthorityRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *QueryAuthorityResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Address) + 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 *QueryCurrentPlanRequest) 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: QueryCurrentPlanRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryCurrentPlanRequest: 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 *QueryCurrentPlanResponse) 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: QueryCurrentPlanResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryCurrentPlanResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Plan", 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.Plan == nil { + m.Plan = &Plan{} + } + if err := m.Plan.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 *QueryAppliedPlanRequest) 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: QueryAppliedPlanRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryAppliedPlanRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", 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.Name = 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 *QueryAppliedPlanResponse) 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: QueryAppliedPlanResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryAppliedPlanResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Height", wireType) + } + m.Height = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Height |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + 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 *QueryUpgradedConsensusStateRequest) 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: QueryUpgradedConsensusStateRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryUpgradedConsensusStateRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field LastHeight", wireType) + } + m.LastHeight = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.LastHeight |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + 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 *QueryUpgradedConsensusStateResponse) 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: QueryUpgradedConsensusStateResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryUpgradedConsensusStateResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UpgradedConsensusState", wireType) + } + var byteLen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + byteLen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if byteLen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + byteLen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UpgradedConsensusState = append(m.UpgradedConsensusState[:0], dAtA[iNdEx:postIndex]...) + if m.UpgradedConsensusState == nil { + m.UpgradedConsensusState = []byte{} + } + 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 *QueryModuleVersionsRequest) 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: QueryModuleVersionsRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryModuleVersionsRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ModuleName", 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.ModuleName = 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 *QueryModuleVersionsResponse) 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: QueryModuleVersionsResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryModuleVersionsResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ModuleVersions", 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 + } + m.ModuleVersions = append(m.ModuleVersions, &ModuleVersion{}) + if err := m.ModuleVersions[len(m.ModuleVersions)-1].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 *QueryAuthorityRequest) 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: QueryAuthorityRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryAuthorityRequest: 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 *QueryAuthorityResponse) 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: QueryAuthorityResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryAuthorityResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Address", 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.Address = 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/vendor-shims/cosmossdk-x-upgrade/types/query.pb.gw.go b/vendor-shims/cosmossdk-x-upgrade/types/query.pb.gw.go new file mode 100644 index 00000000..036a84c1 --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/types/query.pb.gw.go @@ -0,0 +1,503 @@ +// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT. +// source: cosmos/upgrade/v1beta1/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_CurrentPlan_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryCurrentPlanRequest + var metadata runtime.ServerMetadata + + msg, err := client.CurrentPlan(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_CurrentPlan_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryCurrentPlanRequest + var metadata runtime.ServerMetadata + + msg, err := server.CurrentPlan(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Query_AppliedPlan_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAppliedPlanRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } + + protoReq.Name, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } + + msg, err := client.AppliedPlan(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_AppliedPlan_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAppliedPlanRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["name"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "name") + } + + protoReq.Name, err = runtime.String(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "name", err) + } + + msg, err := server.AppliedPlan(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Query_UpgradedConsensusState_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryUpgradedConsensusStateRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["last_height"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "last_height") + } + + protoReq.LastHeight, err = runtime.Int64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "last_height", err) + } + + msg, err := client.UpgradedConsensusState(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_UpgradedConsensusState_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryUpgradedConsensusStateRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["last_height"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "last_height") + } + + protoReq.LastHeight, err = runtime.Int64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "last_height", err) + } + + msg, err := server.UpgradedConsensusState(ctx, &protoReq) + return msg, metadata, err + +} + +var ( + filter_Query_ModuleVersions_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + +func request_Query_ModuleVersions_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryModuleVersionsRequest + 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_ModuleVersions_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := client.ModuleVersions(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_ModuleVersions_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryModuleVersionsRequest + 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_ModuleVersions_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + + msg, err := server.ModuleVersions(ctx, &protoReq) + return msg, metadata, err + +} + +func request_Query_Authority_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAuthorityRequest + var metadata runtime.ServerMetadata + + msg, err := client.Authority(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_Authority_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAuthorityRequest + var metadata runtime.ServerMetadata + + msg, err := server.Authority(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_CurrentPlan_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_CurrentPlan_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_CurrentPlan_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_AppliedPlan_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_AppliedPlan_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_AppliedPlan_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_UpgradedConsensusState_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_UpgradedConsensusState_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_UpgradedConsensusState_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_ModuleVersions_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_ModuleVersions_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_ModuleVersions_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_Authority_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_Authority_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_Authority_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_CurrentPlan_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_CurrentPlan_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_CurrentPlan_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_AppliedPlan_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_AppliedPlan_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_AppliedPlan_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_UpgradedConsensusState_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_UpgradedConsensusState_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_UpgradedConsensusState_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_ModuleVersions_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_ModuleVersions_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_ModuleVersions_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + mux.Handle("GET", pattern_Query_Authority_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_Authority_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_Authority_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + + return nil +} + +var ( + pattern_Query_CurrentPlan_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "upgrade", "v1beta1", "current_plan"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_AppliedPlan_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "upgrade", "v1beta1", "applied_plan", "name"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_UpgradedConsensusState_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"cosmos", "upgrade", "v1beta1", "upgraded_consensus_state", "last_height"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_ModuleVersions_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "upgrade", "v1beta1", "module_versions"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_Authority_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"cosmos", "upgrade", "v1beta1", "authority"}, "", runtime.AssumeColonVerbOpt(false))) +) + +var ( + forward_Query_CurrentPlan_0 = runtime.ForwardResponseMessage + + forward_Query_AppliedPlan_0 = runtime.ForwardResponseMessage + + forward_Query_UpgradedConsensusState_0 = runtime.ForwardResponseMessage + + forward_Query_ModuleVersions_0 = runtime.ForwardResponseMessage + + forward_Query_Authority_0 = runtime.ForwardResponseMessage +) diff --git a/vendor-shims/cosmossdk-x-upgrade/types/tx.pb.go b/vendor-shims/cosmossdk-x-upgrade/types/tx.pb.go new file mode 100644 index 00000000..5e3f998e --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/types/tx.pb.go @@ -0,0 +1,931 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: cosmos/upgrade/v1beta1/tx.proto + +package types + +import ( + context "context" + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + _ "github.com/cosmos/cosmos-sdk/types/msgservice" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + _ "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 + +// MsgSoftwareUpgrade is the Msg/SoftwareUpgrade request type. +type MsgSoftwareUpgrade struct { + // authority is the address that controls the module (defaults to x/gov unless overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` + // plan is the upgrade plan. + Plan Plan `protobuf:"bytes,2,opt,name=plan,proto3" json:"plan"` +} + +func (m *MsgSoftwareUpgrade) Reset() { *m = MsgSoftwareUpgrade{} } +func (m *MsgSoftwareUpgrade) String() string { return proto.CompactTextString(m) } +func (*MsgSoftwareUpgrade) ProtoMessage() {} +func (*MsgSoftwareUpgrade) Descriptor() ([]byte, []int) { + return fileDescriptor_2852c16e3ab79fef, []int{0} +} +func (m *MsgSoftwareUpgrade) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSoftwareUpgrade) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSoftwareUpgrade.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 *MsgSoftwareUpgrade) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSoftwareUpgrade.Merge(m, src) +} +func (m *MsgSoftwareUpgrade) XXX_Size() int { + return m.Size() +} +func (m *MsgSoftwareUpgrade) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSoftwareUpgrade.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSoftwareUpgrade proto.InternalMessageInfo + +func (m *MsgSoftwareUpgrade) GetAuthority() string { + if m != nil { + return m.Authority + } + return "" +} + +func (m *MsgSoftwareUpgrade) GetPlan() Plan { + if m != nil { + return m.Plan + } + return Plan{} +} + +// MsgSoftwareUpgradeResponse is the Msg/SoftwareUpgrade response type. +type MsgSoftwareUpgradeResponse struct { +} + +func (m *MsgSoftwareUpgradeResponse) Reset() { *m = MsgSoftwareUpgradeResponse{} } +func (m *MsgSoftwareUpgradeResponse) String() string { return proto.CompactTextString(m) } +func (*MsgSoftwareUpgradeResponse) ProtoMessage() {} +func (*MsgSoftwareUpgradeResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_2852c16e3ab79fef, []int{1} +} +func (m *MsgSoftwareUpgradeResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgSoftwareUpgradeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgSoftwareUpgradeResponse.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 *MsgSoftwareUpgradeResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgSoftwareUpgradeResponse.Merge(m, src) +} +func (m *MsgSoftwareUpgradeResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgSoftwareUpgradeResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgSoftwareUpgradeResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgSoftwareUpgradeResponse proto.InternalMessageInfo + +// MsgCancelUpgrade is the Msg/CancelUpgrade request type. +type MsgCancelUpgrade struct { + // authority is the address that controls the module (defaults to x/gov unless overwritten). + Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` +} + +func (m *MsgCancelUpgrade) Reset() { *m = MsgCancelUpgrade{} } +func (m *MsgCancelUpgrade) String() string { return proto.CompactTextString(m) } +func (*MsgCancelUpgrade) ProtoMessage() {} +func (*MsgCancelUpgrade) Descriptor() ([]byte, []int) { + return fileDescriptor_2852c16e3ab79fef, []int{2} +} +func (m *MsgCancelUpgrade) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgCancelUpgrade) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgCancelUpgrade.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 *MsgCancelUpgrade) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgCancelUpgrade.Merge(m, src) +} +func (m *MsgCancelUpgrade) XXX_Size() int { + return m.Size() +} +func (m *MsgCancelUpgrade) XXX_DiscardUnknown() { + xxx_messageInfo_MsgCancelUpgrade.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgCancelUpgrade proto.InternalMessageInfo + +func (m *MsgCancelUpgrade) GetAuthority() string { + if m != nil { + return m.Authority + } + return "" +} + +// MsgCancelUpgradeResponse is the Msg/CancelUpgrade response type. +type MsgCancelUpgradeResponse struct { +} + +func (m *MsgCancelUpgradeResponse) Reset() { *m = MsgCancelUpgradeResponse{} } +func (m *MsgCancelUpgradeResponse) String() string { return proto.CompactTextString(m) } +func (*MsgCancelUpgradeResponse) ProtoMessage() {} +func (*MsgCancelUpgradeResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_2852c16e3ab79fef, []int{3} +} +func (m *MsgCancelUpgradeResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgCancelUpgradeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgCancelUpgradeResponse.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 *MsgCancelUpgradeResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgCancelUpgradeResponse.Merge(m, src) +} +func (m *MsgCancelUpgradeResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgCancelUpgradeResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgCancelUpgradeResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgCancelUpgradeResponse proto.InternalMessageInfo + +func init() { + proto.RegisterType((*MsgSoftwareUpgrade)(nil), "cosmos.upgrade.v1beta1.MsgSoftwareUpgrade") + proto.RegisterType((*MsgSoftwareUpgradeResponse)(nil), "cosmos.upgrade.v1beta1.MsgSoftwareUpgradeResponse") + proto.RegisterType((*MsgCancelUpgrade)(nil), "cosmos.upgrade.v1beta1.MsgCancelUpgrade") + proto.RegisterType((*MsgCancelUpgradeResponse)(nil), "cosmos.upgrade.v1beta1.MsgCancelUpgradeResponse") +} + +func init() { proto.RegisterFile("cosmos/upgrade/v1beta1/tx.proto", fileDescriptor_2852c16e3ab79fef) } + +var fileDescriptor_2852c16e3ab79fef = []byte{ + // 423 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4f, 0xce, 0x2f, 0xce, + 0xcd, 0x2f, 0xd6, 0x2f, 0x2d, 0x48, 0x2f, 0x4a, 0x4c, 0x49, 0xd5, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, + 0x49, 0x34, 0xd4, 0x2f, 0xa9, 0xd0, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x83, 0x28, 0xd0, + 0x83, 0x2a, 0xd0, 0x83, 0x2a, 0x90, 0x12, 0x49, 0xcf, 0x4f, 0xcf, 0x07, 0x2b, 0xd1, 0x07, 0xb1, + 0x20, 0xaa, 0xa5, 0x24, 0x21, 0xaa, 0xe3, 0x21, 0x12, 0x50, 0xad, 0x10, 0x29, 0x15, 0x1c, 0x36, + 0xc1, 0x0c, 0x86, 0xa8, 0x12, 0x87, 0xaa, 0xca, 0x2d, 0x4e, 0xd7, 0x2f, 0x33, 0x04, 0x51, 0x50, + 0x09, 0xc1, 0xc4, 0xdc, 0xcc, 0xbc, 0x7c, 0x7d, 0x30, 0x09, 0x11, 0x52, 0x3a, 0xc7, 0xc8, 0x25, + 0xe4, 0x5b, 0x9c, 0x1e, 0x9c, 0x9f, 0x56, 0x52, 0x9e, 0x58, 0x94, 0x1a, 0x0a, 0x31, 0x48, 0xc8, + 0x8c, 0x8b, 0x33, 0xb1, 0xb4, 0x24, 0x23, 0xbf, 0x28, 0xb3, 0xa4, 0x52, 0x82, 0x51, 0x81, 0x51, + 0x83, 0xd3, 0x49, 0xe2, 0xd2, 0x16, 0x5d, 0x11, 0xa8, 0x6b, 0x1c, 0x53, 0x52, 0x8a, 0x52, 0x8b, + 0x8b, 0x83, 0x4b, 0x8a, 0x32, 0xf3, 0xd2, 0x83, 0x10, 0x4a, 0x85, 0xac, 0xb9, 0x58, 0x0a, 0x72, + 0x12, 0xf3, 0x24, 0x98, 0x14, 0x18, 0x35, 0xb8, 0x8d, 0x64, 0xf4, 0xb0, 0x7b, 0x5c, 0x2f, 0x20, + 0x27, 0x31, 0xcf, 0x89, 0xf3, 0xc4, 0x3d, 0x79, 0x86, 0x15, 0xcf, 0x37, 0x68, 0x31, 0x06, 0x81, + 0x35, 0x59, 0x39, 0x5f, 0xda, 0xa2, 0xcb, 0x0f, 0xd1, 0xa1, 0x5b, 0x9c, 0x92, 0xad, 0x60, 0xa0, + 0x67, 0x62, 0xd6, 0xf4, 0x7c, 0x83, 0x16, 0xc2, 0xfc, 0xae, 0xe7, 0x1b, 0xb4, 0x64, 0x11, 0x2a, + 0xf4, 0x31, 0x5d, 0xae, 0x64, 0xc8, 0x25, 0x85, 0x29, 0x1a, 0x94, 0x5a, 0x5c, 0x90, 0x9f, 0x57, + 0x9c, 0x6a, 0x25, 0x8c, 0xc5, 0x0a, 0xa5, 0x5e, 0x46, 0x2e, 0x01, 0xdf, 0xe2, 0x74, 0xe7, 0xc4, + 0xbc, 0xe4, 0xd4, 0x1c, 0x0a, 0x43, 0xc0, 0xca, 0x91, 0x28, 0x4f, 0x48, 0xa3, 0x7a, 0x02, 0xc5, + 0x6a, 0x25, 0x7d, 0x2e, 0x09, 0x74, 0x31, 0xbc, 0x1e, 0x30, 0x9a, 0xc1, 0xc4, 0xc5, 0xec, 0x5b, + 0x9c, 0x2e, 0xd4, 0xc6, 0xc8, 0xc5, 0x8f, 0x1e, 0x93, 0x5a, 0xb8, 0xe2, 0x00, 0x33, 0x94, 0xa4, + 0x8c, 0x88, 0x57, 0x0b, 0x73, 0x90, 0x92, 0xf0, 0x29, 0x4c, 0x07, 0x09, 0x35, 0x30, 0x72, 0xf1, + 0xa2, 0x06, 0xa7, 0x06, 0x1e, 0xa3, 0x51, 0x54, 0x4a, 0x19, 0x10, 0xab, 0x12, 0xaf, 0x13, 0xa4, + 0x58, 0x1b, 0x40, 0x29, 0xcb, 0xc9, 0xec, 0xc4, 0x23, 0x39, 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, + 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, + 0xa2, 0x64, 0x20, 0x3a, 0x8a, 0x53, 0xb2, 0xf5, 0x32, 0xf3, 0xf5, 0x2b, 0xe0, 0x79, 0xaa, 0xa4, + 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, 0x9c, 0x3d, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x63, + 0xb7, 0xaa, 0xa0, 0xdc, 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 { + // SoftwareUpgrade is a governance operation for initiating a software upgrade. + SoftwareUpgrade(ctx context.Context, in *MsgSoftwareUpgrade, opts ...grpc.CallOption) (*MsgSoftwareUpgradeResponse, error) + // CancelUpgrade is a governance operation for cancelling a previously + // approved software upgrade. + CancelUpgrade(ctx context.Context, in *MsgCancelUpgrade, opts ...grpc.CallOption) (*MsgCancelUpgradeResponse, error) +} + +type msgClient struct { + cc grpc1.ClientConn +} + +func NewMsgClient(cc grpc1.ClientConn) MsgClient { + return &msgClient{cc} +} + +func (c *msgClient) SoftwareUpgrade(ctx context.Context, in *MsgSoftwareUpgrade, opts ...grpc.CallOption) (*MsgSoftwareUpgradeResponse, error) { + out := new(MsgSoftwareUpgradeResponse) + err := c.cc.Invoke(ctx, "/cosmos.upgrade.v1beta1.Msg/SoftwareUpgrade", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *msgClient) CancelUpgrade(ctx context.Context, in *MsgCancelUpgrade, opts ...grpc.CallOption) (*MsgCancelUpgradeResponse, error) { + out := new(MsgCancelUpgradeResponse) + err := c.cc.Invoke(ctx, "/cosmos.upgrade.v1beta1.Msg/CancelUpgrade", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// MsgServer is the server API for Msg service. +type MsgServer interface { + // SoftwareUpgrade is a governance operation for initiating a software upgrade. + SoftwareUpgrade(context.Context, *MsgSoftwareUpgrade) (*MsgSoftwareUpgradeResponse, error) + // CancelUpgrade is a governance operation for cancelling a previously + // approved software upgrade. + CancelUpgrade(context.Context, *MsgCancelUpgrade) (*MsgCancelUpgradeResponse, error) +} + +// UnimplementedMsgServer can be embedded to have forward compatible implementations. +type UnimplementedMsgServer struct { +} + +func (*UnimplementedMsgServer) SoftwareUpgrade(ctx context.Context, req *MsgSoftwareUpgrade) (*MsgSoftwareUpgradeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SoftwareUpgrade not implemented") +} +func (*UnimplementedMsgServer) CancelUpgrade(ctx context.Context, req *MsgCancelUpgrade) (*MsgCancelUpgradeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CancelUpgrade not implemented") +} + +func RegisterMsgServer(s grpc1.Server, srv MsgServer) { + s.RegisterService(&_Msg_serviceDesc, srv) +} + +func _Msg_SoftwareUpgrade_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgSoftwareUpgrade) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).SoftwareUpgrade(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.upgrade.v1beta1.Msg/SoftwareUpgrade", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).SoftwareUpgrade(ctx, req.(*MsgSoftwareUpgrade)) + } + return interceptor(ctx, in, info, handler) +} + +func _Msg_CancelUpgrade_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgCancelUpgrade) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).CancelUpgrade(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cosmos.upgrade.v1beta1.Msg/CancelUpgrade", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).CancelUpgrade(ctx, req.(*MsgCancelUpgrade)) + } + return interceptor(ctx, in, info, handler) +} + +var Msg_serviceDesc = _Msg_serviceDesc +var _Msg_serviceDesc = grpc.ServiceDesc{ + ServiceName: "cosmos.upgrade.v1beta1.Msg", + HandlerType: (*MsgServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "SoftwareUpgrade", + Handler: _Msg_SoftwareUpgrade_Handler, + }, + { + MethodName: "CancelUpgrade", + Handler: _Msg_CancelUpgrade_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "cosmos/upgrade/v1beta1/tx.proto", +} + +func (m *MsgSoftwareUpgrade) 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 *MsgSoftwareUpgrade) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSoftwareUpgrade) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Plan.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 *MsgSoftwareUpgradeResponse) 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 *MsgSoftwareUpgradeResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgSoftwareUpgradeResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + +func (m *MsgCancelUpgrade) 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 *MsgCancelUpgrade) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgCancelUpgrade) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + 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 *MsgCancelUpgradeResponse) 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 *MsgCancelUpgradeResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgCancelUpgradeResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + 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 *MsgSoftwareUpgrade) 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.Plan.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgSoftwareUpgradeResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgCancelUpgrade) 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)) + } + return n +} + +func (m *MsgCancelUpgradeResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + 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 *MsgSoftwareUpgrade) 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: MsgSoftwareUpgrade: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSoftwareUpgrade: 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 Plan", 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.Plan.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 *MsgSoftwareUpgradeResponse) 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: MsgSoftwareUpgradeResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgSoftwareUpgradeResponse: 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 *MsgCancelUpgrade) 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: MsgCancelUpgrade: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCancelUpgrade: 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 + 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 *MsgCancelUpgradeResponse) 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: MsgCancelUpgradeResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgCancelUpgradeResponse: 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 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/vendor-shims/cosmossdk-x-upgrade/types/upgrade.pb.go b/vendor-shims/cosmossdk-x-upgrade/types/upgrade.pb.go new file mode 100644 index 00000000..31238819 --- /dev/null +++ b/vendor-shims/cosmossdk-x-upgrade/types/upgrade.pb.go @@ -0,0 +1,1318 @@ +// Code generated by protoc-gen-gogo. DO NOT EDIT. +// source: cosmos/upgrade/v1beta1/upgrade.proto + +package types + +import ( + fmt "fmt" + _ "github.com/cosmos/cosmos-proto" + _ "github.com/cosmos/cosmos-sdk/types/tx/amino" + _ "github.com/cosmos/gogoproto/gogoproto" + proto "github.com/cosmos/gogoproto/proto" + github_com_cosmos_gogoproto_types "github.com/cosmos/gogoproto/types" + any "github.com/cosmos/gogoproto/types/any" + _ "google.golang.org/protobuf/types/known/timestamppb" + io "io" + math "math" + math_bits "math/bits" + time "time" +) + +// Reference imports to suppress errors if they are not otherwise used. +var _ = proto.Marshal +var _ = fmt.Errorf +var _ = math.Inf +var _ = time.Kitchen + +// 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 + +// Plan specifies information about a planned upgrade and when it should occur. +type Plan struct { + // Sets the name for the upgrade. This name will be used by the upgraded + // version of the software to apply any special "on-upgrade" commands during + // the first BeginBlock method after the upgrade is applied. It is also used + // to detect whether a software version can handle a given upgrade. If no + // upgrade handler with this name has been set in the software, it will be + // assumed that the software is out-of-date when the upgrade Time or Height is + // reached and the software will exit. + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Deprecated: Time based upgrades have been deprecated. Time based upgrade logic + // has been removed from the SDK. + // If this field is not empty, an error will be thrown. + Time time.Time `protobuf:"bytes,2,opt,name=time,proto3,stdtime" json:"time"` // Deprecated: Do not use. + // The height at which the upgrade must be performed. + Height int64 `protobuf:"varint,3,opt,name=height,proto3" json:"height,omitempty"` + // Any application specific upgrade info to be included on-chain + // such as a git commit that validators could automatically upgrade to + Info string `protobuf:"bytes,4,opt,name=info,proto3" json:"info,omitempty"` + // Deprecated: UpgradedClientState field has been deprecated. IBC upgrade logic has been + // moved to the IBC module in the sub module 02-client. + // If this field is not empty, an error will be thrown. + UpgradedClientState *any.Any `protobuf:"bytes,5,opt,name=upgraded_client_state,json=upgradedClientState,proto3" json:"upgraded_client_state,omitempty"` // Deprecated: Do not use. +} + +func (m *Plan) Reset() { *m = Plan{} } +func (m *Plan) String() string { return proto.CompactTextString(m) } +func (*Plan) ProtoMessage() {} +func (*Plan) Descriptor() ([]byte, []int) { + return fileDescriptor_ccf2a7d4d7b48dca, []int{0} +} +func (m *Plan) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *Plan) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_Plan.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 *Plan) XXX_Merge(src proto.Message) { + xxx_messageInfo_Plan.Merge(m, src) +} +func (m *Plan) XXX_Size() int { + return m.Size() +} +func (m *Plan) XXX_DiscardUnknown() { + xxx_messageInfo_Plan.DiscardUnknown(m) +} + +var xxx_messageInfo_Plan proto.InternalMessageInfo + +// SoftwareUpgradeProposal is a gov Content type for initiating a software +// upgrade. +// Deprecated: This legacy proposal is deprecated in favor of Msg-based gov +// proposals, see MsgSoftwareUpgrade. +// +// Deprecated: Do not use. +type SoftwareUpgradeProposal struct { + // title of the proposal + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` + // description of the proposal + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` + // plan of the proposal + Plan Plan `protobuf:"bytes,3,opt,name=plan,proto3" json:"plan"` +} + +func (m *SoftwareUpgradeProposal) Reset() { *m = SoftwareUpgradeProposal{} } +func (m *SoftwareUpgradeProposal) String() string { return proto.CompactTextString(m) } +func (*SoftwareUpgradeProposal) ProtoMessage() {} +func (*SoftwareUpgradeProposal) Descriptor() ([]byte, []int) { + return fileDescriptor_ccf2a7d4d7b48dca, []int{1} +} +func (m *SoftwareUpgradeProposal) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *SoftwareUpgradeProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_SoftwareUpgradeProposal.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 *SoftwareUpgradeProposal) XXX_Merge(src proto.Message) { + xxx_messageInfo_SoftwareUpgradeProposal.Merge(m, src) +} +func (m *SoftwareUpgradeProposal) XXX_Size() int { + return m.Size() +} +func (m *SoftwareUpgradeProposal) XXX_DiscardUnknown() { + xxx_messageInfo_SoftwareUpgradeProposal.DiscardUnknown(m) +} + +var xxx_messageInfo_SoftwareUpgradeProposal proto.InternalMessageInfo + +// CancelSoftwareUpgradeProposal is a gov Content type for cancelling a software +// upgrade. +// Deprecated: This legacy proposal is deprecated in favor of Msg-based gov +// proposals, see MsgCancelUpgrade. +// +// Deprecated: Do not use. +type CancelSoftwareUpgradeProposal struct { + // title of the proposal + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty"` + // description of the proposal + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` +} + +func (m *CancelSoftwareUpgradeProposal) Reset() { *m = CancelSoftwareUpgradeProposal{} } +func (m *CancelSoftwareUpgradeProposal) String() string { return proto.CompactTextString(m) } +func (*CancelSoftwareUpgradeProposal) ProtoMessage() {} +func (*CancelSoftwareUpgradeProposal) Descriptor() ([]byte, []int) { + return fileDescriptor_ccf2a7d4d7b48dca, []int{2} +} +func (m *CancelSoftwareUpgradeProposal) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *CancelSoftwareUpgradeProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_CancelSoftwareUpgradeProposal.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 *CancelSoftwareUpgradeProposal) XXX_Merge(src proto.Message) { + xxx_messageInfo_CancelSoftwareUpgradeProposal.Merge(m, src) +} +func (m *CancelSoftwareUpgradeProposal) XXX_Size() int { + return m.Size() +} +func (m *CancelSoftwareUpgradeProposal) XXX_DiscardUnknown() { + xxx_messageInfo_CancelSoftwareUpgradeProposal.DiscardUnknown(m) +} + +var xxx_messageInfo_CancelSoftwareUpgradeProposal proto.InternalMessageInfo + +// ModuleVersion specifies a module and its consensus version. +type ModuleVersion struct { + // name of the app module + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // consensus version of the app module + Version uint64 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"` +} + +func (m *ModuleVersion) Reset() { *m = ModuleVersion{} } +func (m *ModuleVersion) String() string { return proto.CompactTextString(m) } +func (*ModuleVersion) ProtoMessage() {} +func (*ModuleVersion) Descriptor() ([]byte, []int) { + return fileDescriptor_ccf2a7d4d7b48dca, []int{3} +} +func (m *ModuleVersion) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *ModuleVersion) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_ModuleVersion.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 *ModuleVersion) XXX_Merge(src proto.Message) { + xxx_messageInfo_ModuleVersion.Merge(m, src) +} +func (m *ModuleVersion) XXX_Size() int { + return m.Size() +} +func (m *ModuleVersion) XXX_DiscardUnknown() { + xxx_messageInfo_ModuleVersion.DiscardUnknown(m) +} + +var xxx_messageInfo_ModuleVersion proto.InternalMessageInfo + +func init() { + proto.RegisterType((*Plan)(nil), "cosmos.upgrade.v1beta1.Plan") + proto.RegisterType((*SoftwareUpgradeProposal)(nil), "cosmos.upgrade.v1beta1.SoftwareUpgradeProposal") + proto.RegisterType((*CancelSoftwareUpgradeProposal)(nil), "cosmos.upgrade.v1beta1.CancelSoftwareUpgradeProposal") + proto.RegisterType((*ModuleVersion)(nil), "cosmos.upgrade.v1beta1.ModuleVersion") +} + +func init() { + proto.RegisterFile("cosmos/upgrade/v1beta1/upgrade.proto", fileDescriptor_ccf2a7d4d7b48dca) +} + +var fileDescriptor_ccf2a7d4d7b48dca = []byte{ + // 532 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x53, 0xbf, 0x6e, 0xd3, 0x40, + 0x18, 0xcf, 0xb5, 0x6e, 0x51, 0x2e, 0x42, 0x15, 0x26, 0xb4, 0xd7, 0xa8, 0x38, 0x96, 0xc5, 0x10, + 0x55, 0x8a, 0x4d, 0x5b, 0x26, 0x33, 0x20, 0x92, 0x11, 0x90, 0x8a, 0x0b, 0x1d, 0x58, 0xa2, 0x4b, + 0x7c, 0x71, 0xad, 0xda, 0x77, 0x96, 0xef, 0x12, 0xc8, 0x2b, 0x30, 0xf5, 0x11, 0x18, 0x11, 0x53, + 0x87, 0x3e, 0x44, 0xc4, 0x54, 0x31, 0x21, 0x21, 0xf1, 0x27, 0x19, 0xca, 0xc6, 0x2b, 0xa0, 0xbb, + 0xb3, 0xab, 0x08, 0x0a, 0x62, 0x60, 0x89, 0xbe, 0xef, 0xbb, 0xef, 0x97, 0xdf, 0x9f, 0x3b, 0xc3, + 0x3b, 0x03, 0xc6, 0x53, 0xc6, 0xbd, 0x51, 0x16, 0xe5, 0x38, 0x24, 0xde, 0x78, 0xa7, 0x4f, 0x04, + 0xde, 0x29, 0x7b, 0x37, 0xcb, 0x99, 0x60, 0xe6, 0xba, 0xde, 0x72, 0xcb, 0x69, 0xb1, 0xd5, 0xd8, + 0x8c, 0x18, 0x8b, 0x12, 0xe2, 0xa9, 0xad, 0xfe, 0x68, 0xe8, 0x61, 0x3a, 0xd1, 0x90, 0x46, 0x3d, + 0x62, 0x11, 0x53, 0xa5, 0x27, 0xab, 0x62, 0xda, 0xfc, 0x15, 0x20, 0xe2, 0x94, 0x70, 0x81, 0xd3, + 0xac, 0x58, 0xd8, 0xd4, 0x4c, 0x3d, 0x8d, 0x2c, 0x68, 0xf5, 0xd1, 0x0d, 0x9c, 0xc6, 0x94, 0x79, + 0xea, 0x57, 0x8f, 0x9c, 0x1f, 0x00, 0x1a, 0xfb, 0x09, 0xa6, 0xa6, 0x09, 0x0d, 0x8a, 0x53, 0x82, + 0x80, 0x0d, 0x5a, 0xd5, 0x40, 0xd5, 0xe6, 0x03, 0x68, 0xc8, 0x7f, 0x47, 0x4b, 0x36, 0x68, 0xd5, + 0x76, 0x1b, 0xae, 0xa6, 0x76, 0x4b, 0x6a, 0xf7, 0x59, 0x49, 0xdd, 0x59, 0x9b, 0x7e, 0x6e, 0x56, + 0x4e, 0xbe, 0x34, 0xc1, 0xdb, 0x8b, 0xd3, 0x6d, 0x80, 0x40, 0xa0, 0x80, 0xe6, 0x3a, 0x5c, 0x3d, + 0x22, 0x71, 0x74, 0x24, 0xd0, 0xb2, 0x0d, 0x5a, 0xcb, 0x41, 0xd1, 0x49, 0xb2, 0x98, 0x0e, 0x19, + 0x32, 0x34, 0x99, 0xac, 0xcd, 0xc7, 0xf0, 0x56, 0x11, 0x4e, 0xd8, 0x1b, 0x24, 0x31, 0xa1, 0xa2, + 0xc7, 0x05, 0x16, 0x04, 0xad, 0x28, 0xf6, 0xfa, 0x6f, 0xec, 0x0f, 0xe9, 0xa4, 0xb3, 0x84, 0x40, + 0x70, 0xb3, 0x84, 0x75, 0x15, 0xea, 0x40, 0x82, 0x7c, 0xf4, 0xfd, 0x4d, 0x13, 0xbc, 0xbe, 0x38, + 0xdd, 0x5e, 0xd3, 0x09, 0xb4, 0x79, 0x78, 0xec, 0x49, 0xa3, 0xce, 0x27, 0x00, 0x37, 0x0e, 0xd8, + 0x50, 0xbc, 0xc4, 0x39, 0x79, 0xae, 0x91, 0xfb, 0x39, 0xcb, 0x18, 0xc7, 0x89, 0x59, 0x87, 0x2b, + 0x22, 0x16, 0x49, 0x99, 0x82, 0x6e, 0x4c, 0x1b, 0xd6, 0x42, 0xc2, 0x07, 0x79, 0x9c, 0x89, 0x98, + 0x51, 0x95, 0x46, 0x35, 0x58, 0x1c, 0x99, 0xf7, 0xa1, 0x91, 0x25, 0x98, 0x2a, 0x97, 0xb5, 0xdd, + 0x2d, 0xf7, 0xea, 0xcb, 0x76, 0x25, 0x7f, 0xa7, 0x2a, 0xa3, 0x52, 0x31, 0x05, 0x0a, 0xe4, 0x3f, + 0x92, 0x52, 0xdf, 0x9f, 0xb5, 0x1b, 0x05, 0x2a, 0x62, 0xe3, 0x4b, 0x44, 0x97, 0x51, 0x41, 0xa8, + 0x90, 0x46, 0x9c, 0x05, 0x23, 0x7f, 0xd0, 0x8f, 0x80, 0xf3, 0x0e, 0xc0, 0xdb, 0x5d, 0x4c, 0x07, + 0x24, 0xf9, 0xcf, 0x1e, 0xfd, 0xa7, 0xff, 0x26, 0xb3, 0xb5, 0x20, 0xf3, 0xaf, 0x42, 0x10, 0x70, + 0x0e, 0xe1, 0xf5, 0x27, 0x2c, 0x1c, 0x25, 0xe4, 0x90, 0xe4, 0x5c, 0xe6, 0x78, 0xd5, 0x23, 0x44, + 0xf0, 0xda, 0x58, 0x1f, 0x2b, 0x55, 0x46, 0x50, 0xb6, 0xfe, 0x86, 0x54, 0xf4, 0xe1, 0xac, 0xbd, + 0x70, 0xc5, 0xf6, 0x5d, 0xf7, 0xde, 0x5e, 0xc7, 0x9f, 0x7e, 0xb3, 0x2a, 0xd3, 0x99, 0x05, 0xce, + 0x67, 0x16, 0xf8, 0x3a, 0xb3, 0xc0, 0xc9, 0xdc, 0xaa, 0x9c, 0xcf, 0xad, 0xca, 0xc7, 0xb9, 0x55, + 0x79, 0xb1, 0xa5, 0xd7, 0x79, 0x78, 0xec, 0xc6, 0xcc, 0x7b, 0x75, 0xf9, 0xe1, 0x8a, 0x49, 0x46, + 0x78, 0x7f, 0x55, 0xbd, 0xaf, 0xbd, 0x9f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x9b, 0x6a, 0x37, 0x42, + 0xd7, 0x03, 0x00, 0x00, +} + +func (this *Plan) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*Plan) + if !ok { + that2, ok := that.(Plan) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.Name != that1.Name { + return false + } + if !this.Time.Equal(that1.Time) { + return false + } + if this.Height != that1.Height { + return false + } + if this.Info != that1.Info { + return false + } + if !this.UpgradedClientState.Equal(that1.UpgradedClientState) { + return false + } + return true +} +func (this *SoftwareUpgradeProposal) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*SoftwareUpgradeProposal) + if !ok { + that2, ok := that.(SoftwareUpgradeProposal) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.Title != that1.Title { + return false + } + if this.Description != that1.Description { + return false + } + if !this.Plan.Equal(&that1.Plan) { + return false + } + return true +} +func (this *CancelSoftwareUpgradeProposal) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*CancelSoftwareUpgradeProposal) + if !ok { + that2, ok := that.(CancelSoftwareUpgradeProposal) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.Title != that1.Title { + return false + } + if this.Description != that1.Description { + return false + } + return true +} +func (this *ModuleVersion) Equal(that interface{}) bool { + if that == nil { + return this == nil + } + + that1, ok := that.(*ModuleVersion) + if !ok { + that2, ok := that.(ModuleVersion) + if ok { + that1 = &that2 + } else { + return false + } + } + if that1 == nil { + return this == nil + } else if this == nil { + return false + } + if this.Name != that1.Name { + return false + } + if this.Version != that1.Version { + return false + } + return true +} +func (m *Plan) 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 *Plan) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *Plan) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.UpgradedClientState != nil { + { + size, err := m.UpgradedClientState.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintUpgrade(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + if len(m.Info) > 0 { + i -= len(m.Info) + copy(dAtA[i:], m.Info) + i = encodeVarintUpgrade(dAtA, i, uint64(len(m.Info))) + i-- + dAtA[i] = 0x22 + } + if m.Height != 0 { + i = encodeVarintUpgrade(dAtA, i, uint64(m.Height)) + i-- + dAtA[i] = 0x18 + } + n2, err2 := github_com_cosmos_gogoproto_types.StdTimeMarshalTo(m.Time, dAtA[i-github_com_cosmos_gogoproto_types.SizeOfStdTime(m.Time):]) + if err2 != nil { + return 0, err2 + } + i -= n2 + i = encodeVarintUpgrade(dAtA, i, uint64(n2)) + i-- + dAtA[i] = 0x12 + if len(m.Name) > 0 { + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintUpgrade(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *SoftwareUpgradeProposal) 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 *SoftwareUpgradeProposal) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *SoftwareUpgradeProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.Plan.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintUpgrade(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintUpgrade(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x12 + } + if len(m.Title) > 0 { + i -= len(m.Title) + copy(dAtA[i:], m.Title) + i = encodeVarintUpgrade(dAtA, i, uint64(len(m.Title))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *CancelSoftwareUpgradeProposal) 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 *CancelSoftwareUpgradeProposal) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *CancelSoftwareUpgradeProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.Description) > 0 { + i -= len(m.Description) + copy(dAtA[i:], m.Description) + i = encodeVarintUpgrade(dAtA, i, uint64(len(m.Description))) + i-- + dAtA[i] = 0x12 + } + if len(m.Title) > 0 { + i -= len(m.Title) + copy(dAtA[i:], m.Title) + i = encodeVarintUpgrade(dAtA, i, uint64(len(m.Title))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *ModuleVersion) 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 *ModuleVersion) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *ModuleVersion) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Version != 0 { + i = encodeVarintUpgrade(dAtA, i, uint64(m.Version)) + i-- + dAtA[i] = 0x10 + } + if len(m.Name) > 0 { + i -= len(m.Name) + copy(dAtA[i:], m.Name) + i = encodeVarintUpgrade(dAtA, i, uint64(len(m.Name))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func encodeVarintUpgrade(dAtA []byte, offset int, v uint64) int { + offset -= sovUpgrade(v) + base := offset + for v >= 1<<7 { + dAtA[offset] = uint8(v&0x7f | 0x80) + v >>= 7 + offset++ + } + dAtA[offset] = uint8(v) + return base +} +func (m *Plan) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Name) + if l > 0 { + n += 1 + l + sovUpgrade(uint64(l)) + } + l = github_com_cosmos_gogoproto_types.SizeOfStdTime(m.Time) + n += 1 + l + sovUpgrade(uint64(l)) + if m.Height != 0 { + n += 1 + sovUpgrade(uint64(m.Height)) + } + l = len(m.Info) + if l > 0 { + n += 1 + l + sovUpgrade(uint64(l)) + } + if m.UpgradedClientState != nil { + l = m.UpgradedClientState.Size() + n += 1 + l + sovUpgrade(uint64(l)) + } + return n +} + +func (m *SoftwareUpgradeProposal) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Title) + if l > 0 { + n += 1 + l + sovUpgrade(uint64(l)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovUpgrade(uint64(l)) + } + l = m.Plan.Size() + n += 1 + l + sovUpgrade(uint64(l)) + return n +} + +func (m *CancelSoftwareUpgradeProposal) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Title) + if l > 0 { + n += 1 + l + sovUpgrade(uint64(l)) + } + l = len(m.Description) + if l > 0 { + n += 1 + l + sovUpgrade(uint64(l)) + } + return n +} + +func (m *ModuleVersion) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Name) + if l > 0 { + n += 1 + l + sovUpgrade(uint64(l)) + } + if m.Version != 0 { + n += 1 + sovUpgrade(uint64(m.Version)) + } + return n +} + +func sovUpgrade(x uint64) (n int) { + return (math_bits.Len64(x|1) + 6) / 7 +} +func sozUpgrade(x uint64) (n int) { + return sovUpgrade(uint64((x << 1) ^ uint64((int64(x) >> 63)))) +} +func (m *Plan) 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 ErrIntOverflowUpgrade + } + 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: Plan: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Plan: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowUpgrade + } + 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 ErrInvalidLengthUpgrade + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthUpgrade + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Time", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowUpgrade + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthUpgrade + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthUpgrade + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := github_com_cosmos_gogoproto_types.StdTimeUnmarshal(&m.Time, dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Height", wireType) + } + m.Height = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowUpgrade + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Height |= int64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Info", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowUpgrade + } + 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 ErrInvalidLengthUpgrade + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthUpgrade + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Info = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UpgradedClientState", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowUpgrade + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthUpgrade + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthUpgrade + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.UpgradedClientState == nil { + m.UpgradedClientState = &any.Any{} + } + if err := m.UpgradedClientState.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipUpgrade(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthUpgrade + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *SoftwareUpgradeProposal) 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 ErrIntOverflowUpgrade + } + 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: SoftwareUpgradeProposal: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: SoftwareUpgradeProposal: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowUpgrade + } + 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 ErrInvalidLengthUpgrade + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthUpgrade + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Title = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowUpgrade + } + 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 ErrInvalidLengthUpgrade + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthUpgrade + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Plan", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowUpgrade + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthUpgrade + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthUpgrade + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Plan.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipUpgrade(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthUpgrade + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *CancelSoftwareUpgradeProposal) 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 ErrIntOverflowUpgrade + } + 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: CancelSoftwareUpgradeProposal: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: CancelSoftwareUpgradeProposal: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowUpgrade + } + 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 ErrInvalidLengthUpgrade + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthUpgrade + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Title = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowUpgrade + } + 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 ErrInvalidLengthUpgrade + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthUpgrade + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Description = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipUpgrade(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthUpgrade + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ModuleVersion) 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 ErrIntOverflowUpgrade + } + 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: ModuleVersion: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ModuleVersion: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowUpgrade + } + 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 ErrInvalidLengthUpgrade + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthUpgrade + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + 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 ErrIntOverflowUpgrade + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Version |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipUpgrade(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthUpgrade + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func skipUpgrade(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, ErrIntOverflowUpgrade + } + 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, ErrIntOverflowUpgrade + } + 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, ErrIntOverflowUpgrade + } + 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, ErrInvalidLengthUpgrade + } + iNdEx += length + case 3: + depth++ + case 4: + if depth == 0 { + return 0, ErrUnexpectedEndOfGroupUpgrade + } + depth-- + case 5: + iNdEx += 4 + default: + return 0, fmt.Errorf("proto: illegal wireType %d", wireType) + } + if iNdEx < 0 { + return 0, ErrInvalidLengthUpgrade + } + if depth == 0 { + return iNdEx, nil + } + } + return 0, io.ErrUnexpectedEOF +} + +var ( + ErrInvalidLengthUpgrade = fmt.Errorf("proto: negative length found during unmarshaling") + ErrIntOverflowUpgrade = fmt.Errorf("proto: integer overflow") + ErrUnexpectedEndOfGroupUpgrade = fmt.Errorf("proto: unexpected end of group") +) diff --git a/x/custom-hooks/ai_test/testutil/suite.go b/x/custom-hooks/ai_test/testutil/suite.go index 6945eb27..a981021a 100644 --- a/x/custom-hooks/ai_test/testutil/suite.go +++ b/x/custom-hooks/ai_test/testutil/suite.go @@ -3,8 +3,8 @@ package testutil import ( "testing" - channeltypes "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" - ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported" + channeltypes "github.com/cosmos/ibc-go/v11/modules/core/04-channel/types" + ibcexported "github.com/cosmos/ibc-go/v11/modules/core/exported" "github.com/stretchr/testify/suite" "github.com/bitbadges/bitbadgeschain/third_party/apptesting" diff --git a/x/custom-hooks/extract_denom_test.go b/x/custom-hooks/extract_denom_test.go index 1f2174ea..81877efb 100644 --- a/x/custom-hooks/extract_denom_test.go +++ b/x/custom-hooks/extract_denom_test.go @@ -3,9 +3,9 @@ package customhooks import ( "testing" - transfertypes "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types" - clienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" - channeltypes "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" + transfertypes "github.com/cosmos/ibc-go/v11/modules/apps/transfer/types" + clienttypes "github.com/cosmos/ibc-go/v11/modules/core/02-client/types" + channeltypes "github.com/cosmos/ibc-go/v11/modules/core/04-channel/types" "github.com/stretchr/testify/require" ) diff --git a/x/custom-hooks/hooks.go b/x/custom-hooks/hooks.go index e916ea2c..21f115e9 100644 --- a/x/custom-hooks/hooks.go +++ b/x/custom-hooks/hooks.go @@ -5,9 +5,9 @@ import ( "fmt" sdk "github.com/cosmos/cosmos-sdk/types" - transfertypes "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types" - channeltypes "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" - ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported" + transfertypes "github.com/cosmos/ibc-go/v11/modules/apps/transfer/types" + channeltypes "github.com/cosmos/ibc-go/v11/modules/core/04-channel/types" + ibcexported "github.com/cosmos/ibc-go/v11/modules/core/exported" sdkmath "cosmossdk.io/math" "github.com/bitbadges/bitbadgeschain/third_party/osmomath" diff --git a/x/custom-hooks/hooks_test.go b/x/custom-hooks/hooks_test.go index cf9754db..cc067424 100644 --- a/x/custom-hooks/hooks_test.go +++ b/x/custom-hooks/hooks_test.go @@ -4,10 +4,10 @@ import ( "testing" sdk "github.com/cosmos/cosmos-sdk/types" - transfertypes "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types" - clienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" - channeltypes "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" - ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported" + transfertypes "github.com/cosmos/ibc-go/v11/modules/apps/transfer/types" + clienttypes "github.com/cosmos/ibc-go/v11/modules/core/02-client/types" + channeltypes "github.com/cosmos/ibc-go/v11/modules/core/04-channel/types" + ibcexported "github.com/cosmos/ibc-go/v11/modules/core/exported" "github.com/stretchr/testify/suite" "github.com/bitbadges/bitbadgeschain/third_party/apptesting" diff --git a/x/custom-hooks/keeper/keeper.go b/x/custom-hooks/keeper/keeper.go index 28eba32c..4df2f5e3 100644 --- a/x/custom-hooks/keeper/keeper.go +++ b/x/custom-hooks/keeper/keeper.go @@ -6,14 +6,14 @@ import ( "strconv" "strings" - "cosmossdk.io/log" + "cosmossdk.io/log/v2" sdkmath "cosmossdk.io/math" "github.com/bitbadges/bitbadgeschain/third_party/osmomath" sdk "github.com/cosmos/cosmos-sdk/types" - transfertypes "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types" - clienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" - channeltypes "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" - ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported" + transfertypes "github.com/cosmos/ibc-go/v11/modules/apps/transfer/types" + clienttypes "github.com/cosmos/ibc-go/v11/modules/core/02-client/types" + channeltypes "github.com/cosmos/ibc-go/v11/modules/core/04-channel/types" + ibcexported "github.com/cosmos/ibc-go/v11/modules/core/exported" tokenizationtypes "github.com/bitbadges/bitbadgeschain/x/tokenization/types" "github.com/bitbadges/bitbadgeschain/x/custom-hooks/types" diff --git a/x/custom-hooks/keeper/keeper_test.go b/x/custom-hooks/keeper/keeper_test.go index cb590e13..fad2d1b3 100644 --- a/x/custom-hooks/keeper/keeper_test.go +++ b/x/custom-hooks/keeper/keeper_test.go @@ -7,8 +7,8 @@ import ( "github.com/cometbft/cometbft/crypto/ed25519" sdk "github.com/cosmos/cosmos-sdk/types" - channeltypes "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" - ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported" + channeltypes "github.com/cosmos/ibc-go/v11/modules/core/04-channel/types" + ibcexported "github.com/cosmos/ibc-go/v11/modules/core/exported" "github.com/stretchr/testify/suite" "github.com/bitbadges/bitbadgeschain/third_party/apptesting" diff --git a/x/custom-hooks/keeper/transfer_tokens.go b/x/custom-hooks/keeper/transfer_tokens.go index 616bef4f..9751eb4b 100644 --- a/x/custom-hooks/keeper/transfer_tokens.go +++ b/x/custom-hooks/keeper/transfer_tokens.go @@ -6,7 +6,7 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported" + ibcexported "github.com/cosmos/ibc-go/v11/modules/core/exported" "github.com/bitbadges/bitbadgeschain/x/custom-hooks/types" tokenizationtypes "github.com/bitbadges/bitbadgeschain/x/tokenization/types" diff --git a/x/custom-hooks/types/keys.go b/x/custom-hooks/types/keys.go index 90d359e6..bc5bfe9c 100644 --- a/x/custom-hooks/types/keys.go +++ b/x/custom-hooks/types/keys.go @@ -1,7 +1,7 @@ package types import ( - storetypes "cosmossdk.io/store/types" + storetypes "github.com/cosmos/cosmos-sdk/store/v2/types" ) const ( diff --git a/x/custom-hooks/types/types.go b/x/custom-hooks/types/types.go index bb808449..6865178c 100644 --- a/x/custom-hooks/types/types.go +++ b/x/custom-hooks/types/types.go @@ -8,8 +8,8 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" - channeltypes "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" - ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported" + channeltypes "github.com/cosmos/ibc-go/v11/modules/core/04-channel/types" + ibcexported "github.com/cosmos/ibc-go/v11/modules/core/exported" ) // SetDeterministicError sets a deterministic error message in the transient store. diff --git a/x/gamm/keeper/grpc_query.go b/x/gamm/keeper/grpc_query.go index 76473b6c..3221592f 100644 --- a/x/gamm/keeper/grpc_query.go +++ b/x/gamm/keeper/grpc_query.go @@ -8,7 +8,7 @@ import ( "google.golang.org/grpc/status" errorsmod "cosmossdk.io/errors" - "cosmossdk.io/store/prefix" + "github.com/cosmos/cosmos-sdk/store/v2/prefix" codectypes "github.com/cosmos/cosmos-sdk/codec/types" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" diff --git a/x/gamm/keeper/ibc_escrow_test.go b/x/gamm/keeper/ibc_escrow_test.go index 8d3c74b5..7ffde4be 100644 --- a/x/gamm/keeper/ibc_escrow_test.go +++ b/x/gamm/keeper/ibc_escrow_test.go @@ -4,9 +4,9 @@ import ( "context" sdk "github.com/cosmos/cosmos-sdk/types" - transfertypes "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types" - channeltypes "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" - clienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" + transfertypes "github.com/cosmos/ibc-go/v11/modules/apps/transfer/types" + channeltypes "github.com/cosmos/ibc-go/v11/modules/core/04-channel/types" + clienttypes "github.com/cosmos/ibc-go/v11/modules/core/02-client/types" "github.com/bitbadges/bitbadgeschain/third_party/osmomath" "github.com/bitbadges/bitbadgeschain/x/gamm/keeper" diff --git a/x/gamm/keeper/keeper.go b/x/gamm/keeper/keeper.go index 2aa3dc5f..a25e45ee 100644 --- a/x/gamm/keeper/keeper.go +++ b/x/gamm/keeper/keeper.go @@ -5,13 +5,13 @@ import ( "github.com/bitbadges/bitbadgeschain/x/gamm/types" - storetypes "cosmossdk.io/store/types" + storetypes "github.com/cosmos/cosmos-sdk/store/v2/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" - transfertypes "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types" - clienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" + transfertypes "github.com/cosmos/ibc-go/v11/modules/apps/transfer/types" + clienttypes "github.com/cosmos/ibc-go/v11/modules/core/02-client/types" sdkmath "cosmossdk.io/math" poolmanagertypes "github.com/bitbadges/bitbadgeschain/x/poolmanager/types" diff --git a/x/gamm/keeper/pool.go b/x/gamm/keeper/pool.go index be640b48..dbe8e110 100644 --- a/x/gamm/keeper/pool.go +++ b/x/gamm/keeper/pool.go @@ -6,7 +6,7 @@ import ( gogotypes "github.com/cosmos/gogoproto/types" errorsmod "cosmossdk.io/errors" - storetypes "cosmossdk.io/store/types" + storetypes "github.com/cosmos/cosmos-sdk/store/v2/types" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" diff --git a/x/gamm/keeper/swap_test.go b/x/gamm/keeper/swap_test.go index 56a32e90..db921a30 100644 --- a/x/gamm/keeper/swap_test.go +++ b/x/gamm/keeper/swap_test.go @@ -3,7 +3,7 @@ package keeper_test import ( "time" - storetypes "cosmossdk.io/store/types" + storetypes "github.com/cosmos/cosmos-sdk/store/v2/types" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/stretchr/testify/suite" diff --git a/x/gamm/keeper/total_liquidity.go b/x/gamm/keeper/total_liquidity.go index 2aa4423f..5f3d1112 100644 --- a/x/gamm/keeper/total_liquidity.go +++ b/x/gamm/keeper/total_liquidity.go @@ -1,7 +1,7 @@ package keeper import ( - "cosmossdk.io/store/prefix" + "github.com/cosmos/cosmos-sdk/store/v2/prefix" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/bitbadges/bitbadgeschain/third_party/osmomath" diff --git a/x/gamm/poolmodels/internal/test_helpers/test_helpers.go b/x/gamm/poolmodels/internal/test_helpers/test_helpers.go index 71347be6..8c747019 100644 --- a/x/gamm/poolmodels/internal/test_helpers/test_helpers.go +++ b/x/gamm/poolmodels/internal/test_helpers/test_helpers.go @@ -4,9 +4,8 @@ import ( "math/rand" "testing" - "cosmossdk.io/log" - "cosmossdk.io/store/metrics" - "cosmossdk.io/store/rootmulti" + "cosmossdk.io/log/v2" + "github.com/cosmos/cosmos-sdk/store/v2/rootmulti" tmtypes "github.com/cometbft/cometbft/proto/tendermint/types" dbm "github.com/cosmos/cosmos-db" sdk "github.com/cosmos/cosmos-sdk/types" @@ -26,7 +25,7 @@ type CfmmCommonTestSuite struct { func (suite *CfmmCommonTestSuite) CreateTestContext() sdk.Context { logger := log.NewNopLogger() - ms := rootmulti.NewStore(dbm.NewMemDB(), logger, metrics.NewNoOpMetrics()) + ms := rootmulti.NewStore(dbm.NewMemDB(), logger) return sdk.NewContext(ms, tmtypes.Header{}, false, logger) } diff --git a/x/gamm/precompile/precompile.go b/x/gamm/precompile/precompile.go index 6c54994e..78d6856c 100644 --- a/x/gamm/precompile/precompile.go +++ b/x/gamm/precompile/precompile.go @@ -35,7 +35,7 @@ import ( "github.com/cosmos/gogoproto/proto" - storetypes "cosmossdk.io/store/types" + storetypes "github.com/cosmos/cosmos-sdk/store/v2/types" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/gamm/types/expected_keepers.go b/x/gamm/types/expected_keepers.go index 1f2018a9..8abbee7a 100644 --- a/x/gamm/types/expected_keepers.go +++ b/x/gamm/types/expected_keepers.go @@ -5,8 +5,8 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" - clienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" - channeltypes "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" + clienttypes "github.com/cosmos/ibc-go/v11/modules/core/02-client/types" + channeltypes "github.com/cosmos/ibc-go/v11/modules/core/04-channel/types" "github.com/bitbadges/bitbadgeschain/third_party/osmomath" poolmanagertypes "github.com/bitbadges/bitbadgeschain/x/poolmanager/types" diff --git a/x/gamm/types/ibc_denom.go b/x/gamm/types/ibc_denom.go index a522aac8..a0303088 100644 --- a/x/gamm/types/ibc_denom.go +++ b/x/gamm/types/ibc_denom.go @@ -6,7 +6,7 @@ import ( "strings" sdk "github.com/cosmos/cosmos-sdk/types" - transfertypes "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types" + transfertypes "github.com/cosmos/ibc-go/v11/modules/apps/transfer/types" ) // TransferKeeper is the interface we need from the IBC transfer keeper. diff --git a/x/gamm/types/ibc_denom_test.go b/x/gamm/types/ibc_denom_test.go index 045e39ac..3d9ea0db 100644 --- a/x/gamm/types/ibc_denom_test.go +++ b/x/gamm/types/ibc_denom_test.go @@ -7,7 +7,7 @@ import ( "testing" sdk "github.com/cosmos/cosmos-sdk/types" - transfertypes "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types" + transfertypes "github.com/cosmos/ibc-go/v11/modules/apps/transfer/types" "github.com/stretchr/testify/require" ) diff --git a/x/ibc-hooks/ai_test/testutil/generators.go b/x/ibc-hooks/ai_test/testutil/generators.go index a09108ba..bb0e5132 100644 --- a/x/ibc-hooks/ai_test/testutil/generators.go +++ b/x/ibc-hooks/ai_test/testutil/generators.go @@ -4,9 +4,9 @@ import ( "fmt" capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" - clienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" - channeltypes "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" - ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported" + clienttypes "github.com/cosmos/ibc-go/v11/modules/core/02-client/types" + channeltypes "github.com/cosmos/ibc-go/v11/modules/core/04-channel/types" + ibcexported "github.com/cosmos/ibc-go/v11/modules/core/exported" ) // GenerateTestPacket generates a test packet for testing diff --git a/x/ibc-hooks/ai_test/testutil/suite.go b/x/ibc-hooks/ai_test/testutil/suite.go index ef8fac36..4feb84e6 100644 --- a/x/ibc-hooks/ai_test/testutil/suite.go +++ b/x/ibc-hooks/ai_test/testutil/suite.go @@ -4,10 +4,10 @@ import ( "testing" sdk "github.com/cosmos/cosmos-sdk/types" - clienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" - channeltypes "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" - porttypes "github.com/cosmos/ibc-go/v10/modules/core/05-port/types" - ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported" + clienttypes "github.com/cosmos/ibc-go/v11/modules/core/02-client/types" + channeltypes "github.com/cosmos/ibc-go/v11/modules/core/04-channel/types" + porttypes "github.com/cosmos/ibc-go/v11/modules/core/05-port/types" + ibcexported "github.com/cosmos/ibc-go/v11/modules/core/exported" "github.com/stretchr/testify/suite" "github.com/bitbadges/bitbadgeschain/app/params" @@ -112,6 +112,9 @@ func (m *MockIBCModule) OnTimeoutPacket(ctx sdk.Context, packetID string, packet return nil } +// IBC v11: IBCModule now requires SetICS4Wrapper. Mock is a no-op. +func (m *MockIBCModule) SetICS4Wrapper(wrapper porttypes.ICS4Wrapper) {} + // MockICS4Wrapper is a mock implementation of ICS4Wrapper for testing type MockICS4Wrapper struct { SendPacketCalled bool diff --git a/x/ibc-hooks/ai_test/unit/hooks/on_recv_packet_test.go b/x/ibc-hooks/ai_test/unit/hooks/on_recv_packet_test.go index d5259521..2ad93d2b 100644 --- a/x/ibc-hooks/ai_test/unit/hooks/on_recv_packet_test.go +++ b/x/ibc-hooks/ai_test/unit/hooks/on_recv_packet_test.go @@ -5,8 +5,8 @@ import ( "testing" sdk "github.com/cosmos/cosmos-sdk/types" - channeltypes "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" - ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported" + channeltypes "github.com/cosmos/ibc-go/v11/modules/core/04-channel/types" + ibcexported "github.com/cosmos/ibc-go/v11/modules/core/exported" "github.com/stretchr/testify/suite" "github.com/bitbadges/bitbadgeschain/x/ibc-hooks/ai_test/testutil" diff --git a/x/ibc-hooks/ai_test/unit/middleware/send_packet_test.go b/x/ibc-hooks/ai_test/unit/middleware/send_packet_test.go index b5e77fa3..cd27a3b1 100644 --- a/x/ibc-hooks/ai_test/unit/middleware/send_packet_test.go +++ b/x/ibc-hooks/ai_test/unit/middleware/send_packet_test.go @@ -5,7 +5,7 @@ import ( "testing" sdk "github.com/cosmos/cosmos-sdk/types" - clienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" + clienttypes "github.com/cosmos/ibc-go/v11/modules/core/02-client/types" "github.com/stretchr/testify/suite" "github.com/bitbadges/bitbadgeschain/x/ibc-hooks/ai_test/testutil" diff --git a/x/ibc-hooks/hooks.go b/x/ibc-hooks/hooks.go index 3d68d52e..b36a22bf 100644 --- a/x/ibc-hooks/hooks.go +++ b/x/ibc-hooks/hooks.go @@ -5,9 +5,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" // ibc-go - clienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" - channeltypes "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" - ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported" + clienttypes "github.com/cosmos/ibc-go/v11/modules/core/02-client/types" + channeltypes "github.com/cosmos/ibc-go/v11/modules/core/04-channel/types" + ibcexported "github.com/cosmos/ibc-go/v11/modules/core/exported" ) type Hooks interface{} diff --git a/x/ibc-hooks/ibc_module.go b/x/ibc-hooks/ibc_module.go index 7c5de153..2dbba00b 100644 --- a/x/ibc-hooks/ibc_module.go +++ b/x/ibc-hooks/ibc_module.go @@ -5,10 +5,10 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" // ibc-go - clienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" - channeltypes "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" - porttypes "github.com/cosmos/ibc-go/v10/modules/core/05-port/types" - ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported" + clienttypes "github.com/cosmos/ibc-go/v11/modules/core/02-client/types" + channeltypes "github.com/cosmos/ibc-go/v11/modules/core/04-channel/types" + porttypes "github.com/cosmos/ibc-go/v11/modules/core/05-port/types" + ibcexported "github.com/cosmos/ibc-go/v11/modules/core/exported" ) var _ porttypes.Middleware = &IBCMiddleware{} @@ -266,3 +266,18 @@ func (im IBCMiddleware) WriteAcknowledgement( func (im IBCMiddleware) GetAppVersion(ctx sdk.Context, portID, channelID string) (string, bool) { return im.ICS4Middleware.GetAppVersion(ctx, portID, channelID) } + +// SetICS4Wrapper satisfies porttypes.Middleware (ibc-go v11). Called by the +// IBC stack wiring to inject the ICS4Wrapper sitting above this middleware. +// We forward the assignment to the inner ICS4Middleware, whose `channel` +// field is the outgoing ICS4Wrapper used by SendPacket/WriteAcknowledgement. +func (im *IBCMiddleware) SetICS4Wrapper(wrapper porttypes.ICS4Wrapper) { + im.ICS4Middleware.channel = wrapper +} + +// SetUnderlyingApplication satisfies porttypes.Middleware (ibc-go v11). Called +// by the IBC stack wiring to inject the IBCModule sitting below this +// middleware in the application stack. +func (im *IBCMiddleware) SetUnderlyingApplication(app porttypes.IBCModule) { + im.App = app +} diff --git a/x/ibc-hooks/ics4_middleware.go b/x/ibc-hooks/ics4_middleware.go index 2fe842b5..e91669e9 100644 --- a/x/ibc-hooks/ics4_middleware.go +++ b/x/ibc-hooks/ics4_middleware.go @@ -5,9 +5,9 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" // ibc-go - clienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" - porttypes "github.com/cosmos/ibc-go/v10/modules/core/05-port/types" - ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported" + clienttypes "github.com/cosmos/ibc-go/v11/modules/core/02-client/types" + porttypes "github.com/cosmos/ibc-go/v11/modules/core/05-port/types" + ibcexported "github.com/cosmos/ibc-go/v11/modules/core/exported" ) var _ porttypes.ICS4Wrapper = &ICS4Middleware{} diff --git a/x/ibc-hooks/types/expected_keepers.go b/x/ibc-hooks/types/expected_keepers.go index 9541e85f..b40d7f62 100644 --- a/x/ibc-hooks/types/expected_keepers.go +++ b/x/ibc-hooks/types/expected_keepers.go @@ -3,8 +3,8 @@ package types import ( sdk "github.com/cosmos/cosmos-sdk/types" capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" - channeltypes "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" - "github.com/cosmos/ibc-go/v10/modules/core/exported" + channeltypes "github.com/cosmos/ibc-go/v11/modules/core/04-channel/types" + "github.com/cosmos/ibc-go/v11/modules/core/exported" ) type ChannelKeeper interface { diff --git a/x/ibc-rate-limit/hooks/hooks.go b/x/ibc-rate-limit/hooks/hooks.go index bc2769b8..9128a0bd 100644 --- a/x/ibc-rate-limit/hooks/hooks.go +++ b/x/ibc-rate-limit/hooks/hooks.go @@ -6,10 +6,10 @@ import ( sdkmath "cosmossdk.io/math" sdk "github.com/cosmos/cosmos-sdk/types" - transfertypes "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types" - clienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" - channeltypes "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" - ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported" + transfertypes "github.com/cosmos/ibc-go/v11/modules/apps/transfer/types" + clienttypes "github.com/cosmos/ibc-go/v11/modules/core/02-client/types" + channeltypes "github.com/cosmos/ibc-go/v11/modules/core/04-channel/types" + ibcexported "github.com/cosmos/ibc-go/v11/modules/core/exported" ibchooks "github.com/bitbadges/bitbadgeschain/x/ibc-hooks" "github.com/bitbadges/bitbadgeschain/x/ibc-rate-limit/keeper" diff --git a/x/ibc-rate-limit/hooks/refund_test.go b/x/ibc-rate-limit/hooks/refund_test.go index 2ff5f65c..3f335a3b 100644 --- a/x/ibc-rate-limit/hooks/refund_test.go +++ b/x/ibc-rate-limit/hooks/refund_test.go @@ -6,19 +6,18 @@ import ( "testing" "cosmossdk.io/log" - "cosmossdk.io/store" - "cosmossdk.io/store/metrics" - storetypes "cosmossdk.io/store/types" + "github.com/cosmos/cosmos-sdk/store/v2" + storetypes "github.com/cosmos/cosmos-sdk/store/v2/types" sdkmath "cosmossdk.io/math" cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" dbm "github.com/cosmos/cosmos-db" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" sdk "github.com/cosmos/cosmos-sdk/types" - transfertypes "github.com/cosmos/ibc-go/v10/modules/apps/transfer/types" - clienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" - channeltypes "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" - ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported" + transfertypes "github.com/cosmos/ibc-go/v11/modules/apps/transfer/types" + clienttypes "github.com/cosmos/ibc-go/v11/modules/core/02-client/types" + channeltypes "github.com/cosmos/ibc-go/v11/modules/core/04-channel/types" + ibcexported "github.com/cosmos/ibc-go/v11/modules/core/exported" "github.com/stretchr/testify/require" ibchooks "github.com/bitbadges/bitbadgeschain/x/ibc-hooks" @@ -53,7 +52,7 @@ func newTestKeeper(t *testing.T) (keeper.Keeper, sdk.Context) { storeKey := storetypes.NewKVStoreKey(ratelimittypes.StoreKey) db := dbm.NewMemDB() - stateStore := store.NewCommitMultiStore(db, log.NewNopLogger(), metrics.NewNoOpMetrics()) + stateStore := store.NewCommitMultiStore(db, log.NewNopLogger()) stateStore.MountStoreWithDB(storeKey, storetypes.StoreTypeIAVL, db) require.NoError(t, stateStore.LoadLatestVersion()) diff --git a/x/ibc-rate-limit/keeper/keeper.go b/x/ibc-rate-limit/keeper/keeper.go index 001539b8..117dcb4e 100644 --- a/x/ibc-rate-limit/keeper/keeper.go +++ b/x/ibc-rate-limit/keeper/keeper.go @@ -3,12 +3,12 @@ package keeper import ( "fmt" - "cosmossdk.io/log" + "cosmossdk.io/log/v2" sdkmath "cosmossdk.io/math" - storetypes "cosmossdk.io/store/types" + storetypes "github.com/cosmos/cosmos-sdk/store/v2/types" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" - ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported" + ibcexported "github.com/cosmos/ibc-go/v11/modules/core/exported" "github.com/bitbadges/bitbadgeschain/x/ibc-rate-limit/types" ) diff --git a/x/ibc-rate-limit/keeper/keeper_test.go b/x/ibc-rate-limit/keeper/keeper_test.go index a0055191..20151edc 100644 --- a/x/ibc-rate-limit/keeper/keeper_test.go +++ b/x/ibc-rate-limit/keeper/keeper_test.go @@ -4,17 +4,16 @@ import ( "testing" sdkmath "cosmossdk.io/math" - channeltypes "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" - ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported" + channeltypes "github.com/cosmos/ibc-go/v11/modules/core/04-channel/types" + ibcexported "github.com/cosmos/ibc-go/v11/modules/core/exported" "github.com/stretchr/testify/require" "github.com/stretchr/testify/suite" "context" - "cosmossdk.io/log" - "cosmossdk.io/store" - "cosmossdk.io/store/metrics" - storetypes "cosmossdk.io/store/types" + "cosmossdk.io/log/v2" + "github.com/cosmos/cosmos-sdk/store/v2" + storetypes "github.com/cosmos/cosmos-sdk/store/v2/types" cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" dbm "github.com/cosmos/cosmos-db" "github.com/cosmos/cosmos-sdk/codec" @@ -45,7 +44,7 @@ func (suite *KeeperTestSuite) SetupTest() { // Setup database db := dbm.NewMemDB() - stateStore := store.NewCommitMultiStore(db, log.NewNopLogger(), metrics.NewNoOpMetrics()) + stateStore := store.NewCommitMultiStore(db, log.NewNopLogger()) stateStore.MountStoreWithDB(storeKey, storetypes.StoreTypeIAVL, db) stateStore.MountStoreWithDB(memStoreKey, storetypes.StoreTypeMemory, nil) require.NoError(suite.T(), stateStore.LoadLatestVersion()) diff --git a/x/ibc-rate-limit/types/types.go b/x/ibc-rate-limit/types/types.go index f47cfb74..9f2012a8 100644 --- a/x/ibc-rate-limit/types/types.go +++ b/x/ibc-rate-limit/types/types.go @@ -3,8 +3,8 @@ package types import ( "fmt" - channeltypes "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" - ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported" + channeltypes "github.com/cosmos/ibc-go/v11/modules/core/04-channel/types" + ibcexported "github.com/cosmos/ibc-go/v11/modules/core/exported" ) // DefaultGenesis returns the default genesis state diff --git a/x/managersplitter/keeper/keeper.go b/x/managersplitter/keeper/keeper.go index e59145ab..7c510ed9 100644 --- a/x/managersplitter/keeper/keeper.go +++ b/x/managersplitter/keeper/keeper.go @@ -8,7 +8,7 @@ import ( tokenizationkeeper "github.com/bitbadges/bitbadgeschain/x/tokenization/keeper" "cosmossdk.io/core/store" - "cosmossdk.io/log" + "cosmossdk.io/log/v2" "github.com/cosmos/cosmos-sdk/codec" ) diff --git a/x/managersplitter/keeper/store.go b/x/managersplitter/keeper/store.go index c814be1d..574fd84e 100644 --- a/x/managersplitter/keeper/store.go +++ b/x/managersplitter/keeper/store.go @@ -7,8 +7,8 @@ import ( sdkerrors "cosmossdk.io/errors" sdkmath "cosmossdk.io/math" - "cosmossdk.io/store/prefix" - storetypes "cosmossdk.io/store/types" + "github.com/cosmos/cosmos-sdk/store/v2/prefix" + storetypes "github.com/cosmos/cosmos-sdk/store/v2/types" "github.com/cosmos/cosmos-sdk/runtime" sdk "github.com/cosmos/cosmos-sdk/types" ) diff --git a/x/managersplitter/module/module.go b/x/managersplitter/module/module.go index d88d535d..d96271e7 100644 --- a/x/managersplitter/module/module.go +++ b/x/managersplitter/module/module.go @@ -8,7 +8,7 @@ import ( "cosmossdk.io/core/appmodule" "cosmossdk.io/core/store" "cosmossdk.io/depinject" - "cosmossdk.io/log" + "cosmossdk.io/log/v2" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" cdctypes "github.com/cosmos/cosmos-sdk/codec/types" diff --git a/x/poolmanager/keeper.go b/x/poolmanager/keeper.go index 94990e05..cc884ddd 100644 --- a/x/poolmanager/keeper.go +++ b/x/poolmanager/keeper.go @@ -12,7 +12,7 @@ import ( gammkeeper "github.com/bitbadges/bitbadgeschain/x/gamm/keeper" "github.com/bitbadges/bitbadgeschain/x/poolmanager/types" - storetypes "cosmossdk.io/store/types" + storetypes "github.com/cosmos/cosmos-sdk/store/v2/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" ) diff --git a/x/poolmanager/store.go b/x/poolmanager/store.go index 74bf1e36..553142c7 100644 --- a/x/poolmanager/store.go +++ b/x/poolmanager/store.go @@ -8,7 +8,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/gogoproto/proto" - storetypes "cosmossdk.io/store/types" + storetypes "github.com/cosmos/cosmos-sdk/store/v2/types" "github.com/bitbadges/bitbadgeschain/third_party/osmomath" "github.com/bitbadges/bitbadgeschain/third_party/osmoutils" diff --git a/x/poolmanager/taker_fee.go b/x/poolmanager/taker_fee.go index 85598bb5..8d88eb38 100644 --- a/x/poolmanager/taker_fee.go +++ b/x/poolmanager/taker_fee.go @@ -9,7 +9,7 @@ import ( "github.com/bitbadges/bitbadgeschain/third_party/osmomath" - storetypes "cosmossdk.io/store/types" + storetypes "github.com/cosmos/cosmos-sdk/store/v2/types" "github.com/bitbadges/bitbadgeschain/third_party/osmoutils" "github.com/bitbadges/bitbadgeschain/x/poolmanager/types" diff --git a/x/sendmanager/ai_test/testutil/suite.go b/x/sendmanager/ai_test/testutil/suite.go index d1ce6d87..ed7673e9 100644 --- a/x/sendmanager/ai_test/testutil/suite.go +++ b/x/sendmanager/ai_test/testutil/suite.go @@ -6,7 +6,7 @@ import ( "testing" "cosmossdk.io/core/address" - storetypes "cosmossdk.io/store/types" + storetypes "github.com/cosmos/cosmos-sdk/store/v2/types" addresscodec "github.com/cosmos/cosmos-sdk/codec/address" "github.com/cosmos/cosmos-sdk/runtime" "github.com/cosmos/cosmos-sdk/testutil" diff --git a/x/sendmanager/keeper/keeper.go b/x/sendmanager/keeper/keeper.go index 9f196d73..0e5e9606 100644 --- a/x/sendmanager/keeper/keeper.go +++ b/x/sendmanager/keeper/keeper.go @@ -8,7 +8,7 @@ import ( "cosmossdk.io/core/store" sdkerrors "cosmossdk.io/errors" - "cosmossdk.io/log" + "cosmossdk.io/log/v2" sdkmath "cosmossdk.io/math" "github.com/cosmos/cosmos-sdk/codec" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/sendmanager/keeper/keeper_test.go b/x/sendmanager/keeper/keeper_test.go index 96793e42..5fe68dda 100644 --- a/x/sendmanager/keeper/keeper_test.go +++ b/x/sendmanager/keeper/keeper_test.go @@ -5,7 +5,7 @@ import ( "testing" "cosmossdk.io/core/address" - storetypes "cosmossdk.io/store/types" + storetypes "github.com/cosmos/cosmos-sdk/store/v2/types" addresscodec "github.com/cosmos/cosmos-sdk/codec/address" "github.com/cosmos/cosmos-sdk/runtime" "github.com/cosmos/cosmos-sdk/testutil" diff --git a/x/sendmanager/precompile/precompile.go b/x/sendmanager/precompile/precompile.go index 4d09efff..d514d1ea 100644 --- a/x/sendmanager/precompile/precompile.go +++ b/x/sendmanager/precompile/precompile.go @@ -22,7 +22,7 @@ import ( cmn "github.com/cosmos/evm/precompiles/common" - storetypes "cosmossdk.io/store/types" + storetypes "github.com/cosmos/cosmos-sdk/store/v2/types" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/tokenization/keeper/collection_cleanup.go b/x/tokenization/keeper/collection_cleanup.go index 0314e457..c91a6e29 100644 --- a/x/tokenization/keeper/collection_cleanup.go +++ b/x/tokenization/keeper/collection_cleanup.go @@ -2,8 +2,8 @@ package keeper import ( sdkmath "cosmossdk.io/math" - "cosmossdk.io/store/prefix" - storetypes "cosmossdk.io/store/types" + "github.com/cosmos/cosmos-sdk/store/v2/prefix" + storetypes "github.com/cosmos/cosmos-sdk/store/v2/types" "github.com/cosmos/cosmos-sdk/runtime" sdk "github.com/cosmos/cosmos-sdk/types" ) diff --git a/x/tokenization/keeper/keeper.go b/x/tokenization/keeper/keeper.go index d7adc141..8b2ece16 100644 --- a/x/tokenization/keeper/keeper.go +++ b/x/tokenization/keeper/keeper.go @@ -7,12 +7,12 @@ import ( "github.com/bitbadges/bitbadgeschain/x/tokenization/types" "cosmossdk.io/core/store" - "cosmossdk.io/log" - "cosmossdk.io/store/prefix" + "cosmossdk.io/log/v2" + "github.com/cosmos/cosmos-sdk/store/v2/prefix" "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/runtime" sdk "github.com/cosmos/cosmos-sdk/types" - ibckeeper "github.com/cosmos/ibc-go/v10/modules/core/keeper" + ibckeeper "github.com/cosmos/ibc-go/v11/modules/core/keeper" ) const ( diff --git a/x/tokenization/keeper/migrations.go b/x/tokenization/keeper/migrations.go index cce01aa2..3ac84b1b 100644 --- a/x/tokenization/keeper/migrations.go +++ b/x/tokenization/keeper/migrations.go @@ -2,182 +2,17 @@ package keeper import ( "context" - "encoding/binary" "encoding/json" - errorsmod "cosmossdk.io/errors" - sdkmath "cosmossdk.io/math" - "cosmossdk.io/store/prefix" - storetypes "cosmossdk.io/store/types" + "github.com/cosmos/cosmos-sdk/store/v2/prefix" + storetypes "github.com/cosmos/cosmos-sdk/store/v2/types" "github.com/cosmos/cosmos-sdk/runtime" sdk "github.com/cosmos/cosmos-sdk/types" - authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" newtypes "github.com/bitbadges/bitbadgeschain/x/tokenization/types" oldtypes "github.com/bitbadges/bitbadgeschain/x/tokenization/types/v29" ) -// The x/badges module was renamed to x/tokenization in v23, but the migration that -// re-derives collection addresses with the new module name (and moves the corresponding -// bank balances) was never wired into an upgrade handler. As a result, every existing -// collection on mainnet still has a mintEscrowAddress / cosmosCoinBackedPath.address / -// cosmosCoinWrapperPath.address derived from module="badges", while today's msg handlers -// and every downstream consumer (SDK, indexer, frontend) derives with module="tokenization". -// v30 is the catch-up migration: for each collection we compute the new tokenization-derived -// address, move all bank balances from the old address, rewrite the stored address on the -// collection, and flip the reserved-protocol-address flag. Idempotent — if old == new -// (which happens for any collection created after the migration ships), we skip. -const ( - oldAddressModuleName = "badges" -) - -// generateMintEscrowAddressWithModuleName reproduces UniversalUpdateCollection's address -// derivation with a pluggable module name. Used to compute both the legacy (badges) and -// new (tokenization) addresses for a collection so we can migrate between them. -func generateMintEscrowAddressWithModuleName(moduleName string, collectionId sdkmath.Uint) (sdk.AccAddress, error) { - derivationKey := make([]byte, DerivationKeyLength) - binary.BigEndian.PutUint64(derivationKey, collectionId.Uint64()) - ac, err := authtypes.NewModuleCredential(moduleName, AccountGenerationPrefix, derivationKey) - if err != nil { - return nil, err - } - return sdk.AccAddress(ac.Address()), nil -} - -// generatePathAddressWithModuleName mirrors generatePathAddress with a pluggable module name. -func generatePathAddressWithModuleName(moduleName string, pathString string, prefix []byte) (sdk.AccAddress, error) { - fullPathBytes := []byte(pathString) - ac, err := authtypes.NewModuleCredential(moduleName, prefix, fullPathBytes) - if err != nil { - return nil, errorsmod.Wrap(err, "failed to generate module credential") - } - return sdk.AccAddress(ac.Address()), nil -} - -// migrateBankBalancesBetweenAddresses moves every coin held by oldAddress to newAddress. -// No-op when the balance is zero (common for fresh wrapper/backed paths that never held funds). -func (k Keeper) migrateBankBalancesBetweenAddresses(ctx sdk.Context, oldAddress, newAddress string) error { - if oldAddress == newAddress { - return nil - } - oldAddr, err := sdk.AccAddressFromBech32(oldAddress) - if err != nil { - return errorsmod.Wrapf(err, "invalid old address %s", oldAddress) - } - newAddr, err := sdk.AccAddressFromBech32(newAddress) - if err != nil { - return errorsmod.Wrapf(err, "invalid new address %s", newAddress) - } - - balances := k.bankKeeper.GetAllBalances(ctx, oldAddr) - if balances.IsZero() { - return nil - } - if err := k.bankKeeper.SendCoins(ctx, oldAddr, newAddr, balances); err != nil { - return errorsmod.Wrapf(err, "failed to migrate balances from %s to %s", oldAddress, newAddress) - } - return nil -} - -// migrateReservedProtocolAddressMapping flips the reserved-protocol-address flag from the -// old address to the new one. The old flag is cleared so future lookups don't accidentally -// treat a stale module address as reserved. -func (k Keeper) migrateReservedProtocolAddressMapping(ctx sdk.Context, oldAddress, newAddress string) error { - if oldAddress == newAddress { - return nil - } - if err := k.SetReservedProtocolAddressInStore(ctx, oldAddress, false); err != nil { - return errorsmod.Wrapf(err, "failed to clear reserved flag on old address %s", oldAddress) - } - if err := k.SetReservedProtocolAddressInStore(ctx, newAddress, true); err != nil { - return errorsmod.Wrapf(err, "failed to set reserved flag on new address %s", newAddress) - } - return nil -} - -// migrateCollectionAddressesFromBadgesToTokenization updates a single collection's derived -// addresses in-place (mintEscrowAddress + cosmosCoinBackedPath.address + wrapper path -// addresses), moving bank balances from each old address to each new one. Mutates the -// passed-in collection pointer so the caller can persist it. -func (k Keeper) migrateCollectionAddressesFromBadgesToTokenization(ctx sdk.Context, collection *newtypes.TokenCollection) error { - newModuleName := newtypes.ModuleName // "tokenization" - - // 1. mintEscrowAddress - oldMint, err := generateMintEscrowAddressWithModuleName(oldAddressModuleName, collection.CollectionId) - if err != nil { - return errorsmod.Wrapf(err, "mint old derivation for collection %s", collection.CollectionId) - } - newMint, err := generateMintEscrowAddressWithModuleName(newModuleName, collection.CollectionId) - if err != nil { - return errorsmod.Wrapf(err, "mint new derivation for collection %s", collection.CollectionId) - } - oldMintStr, newMintStr := oldMint.String(), newMint.String() - if oldMintStr != newMintStr { - if err := k.migrateBankBalancesBetweenAddresses(ctx, oldMintStr, newMintStr); err != nil { - return errorsmod.Wrapf(err, "mint bank migration for collection %s", collection.CollectionId) - } - if err := k.migrateReservedProtocolAddressMapping(ctx, oldMintStr, newMintStr); err != nil { - return errorsmod.Wrapf(err, "mint reserved-flag migration for collection %s", collection.CollectionId) - } - collection.MintEscrowAddress = newMintStr - } - - // 2. cosmosCoinBackedPath.address (if present) - if collection.Invariants != nil && collection.Invariants.CosmosCoinBackedPath != nil { - backed := collection.Invariants.CosmosCoinBackedPath - if backed.Conversion != nil && backed.Conversion.SideA != nil && backed.Conversion.SideA.Denom != "" { - denom := backed.Conversion.SideA.Denom - oldAddr, err := generatePathAddressWithModuleName(oldAddressModuleName, denom, BackedPathGenerationPrefix) - if err != nil { - return errorsmod.Wrapf(err, "backed old derivation for denom %s", denom) - } - newAddr, err := generatePathAddressWithModuleName(newModuleName, denom, BackedPathGenerationPrefix) - if err != nil { - return errorsmod.Wrapf(err, "backed new derivation for denom %s", denom) - } - oldStr, newStr := oldAddr.String(), newAddr.String() - if oldStr != newStr { - if err := k.migrateBankBalancesBetweenAddresses(ctx, oldStr, newStr); err != nil { - return errorsmod.Wrapf(err, "backed bank migration for denom %s", denom) - } - if err := k.migrateReservedProtocolAddressMapping(ctx, oldStr, newStr); err != nil { - return errorsmod.Wrapf(err, "backed reserved-flag migration for denom %s", denom) - } - backed.Address = newStr - } - } - } - - // 3. cosmosCoinWrapperPaths[].address - for i := range collection.CosmosCoinWrapperPaths { - path := collection.CosmosCoinWrapperPaths[i] - if path == nil || path.Denom == "" { - continue - } - oldAddr, err := generatePathAddressWithModuleName(oldAddressModuleName, path.Denom, WrapperPathGenerationPrefix) - if err != nil { - return errorsmod.Wrapf(err, "wrapper old derivation for denom %s", path.Denom) - } - newAddr, err := generatePathAddressWithModuleName(newModuleName, path.Denom, WrapperPathGenerationPrefix) - if err != nil { - return errorsmod.Wrapf(err, "wrapper new derivation for denom %s", path.Denom) - } - oldStr, newStr := oldAddr.String(), newAddr.String() - if oldStr == newStr { - continue - } - if err := k.migrateBankBalancesBetweenAddresses(ctx, oldStr, newStr); err != nil { - return errorsmod.Wrapf(err, "wrapper bank migration for denom %s", path.Denom) - } - if err := k.migrateReservedProtocolAddressMapping(ctx, oldStr, newStr); err != nil { - return errorsmod.Wrapf(err, "wrapper reserved-flag migration for denom %s", path.Denom) - } - path.Address = newStr - } - - return nil -} - // MigrateTokenizationKeeper migrates the tokenization keeper from v28 to v29. // // v29 changes: @@ -310,13 +145,6 @@ func MigrateCollections(ctx sdk.Context, store storetypes.KVStore, k Keeper) err newCollection.DefaultBalances.OutgoingApprovals = MigrateOutgoingApprovals(newCollection.DefaultBalances.OutgoingApprovals) } - // Re-derive module addresses with the current "tokenization" module name and move - // any bank balances off the legacy "badges"-derived addresses. See the comment on - // migrateCollectionAddressesFromBadgesToTokenization for the full history. - if err := k.migrateCollectionAddressesFromBadgesToTokenization(ctx, &newCollection); err != nil { - return err - } - // Save the updated collection (with migrated fields) if err := k.SetCollectionInStore(ctx, &newCollection, true); err != nil { return err diff --git a/x/tokenization/keeper/store.go b/x/tokenization/keeper/store.go index 603a5dd0..c2f3b14f 100644 --- a/x/tokenization/keeper/store.go +++ b/x/tokenization/keeper/store.go @@ -13,8 +13,8 @@ import ( sdkmath "cosmossdk.io/math" - "cosmossdk.io/store/prefix" - storetypes "cosmossdk.io/store/types" + "github.com/cosmos/cosmos-sdk/store/v2/prefix" + storetypes "github.com/cosmos/cosmos-sdk/store/v2/types" ) // The following methods are used for the store and everything associated with tokens. diff --git a/x/tokenization/module/module.go b/x/tokenization/module/module.go index cd821744..461e8b3d 100644 --- a/x/tokenization/module/module.go +++ b/x/tokenization/module/module.go @@ -8,7 +8,7 @@ import ( "cosmossdk.io/core/appmodule" "cosmossdk.io/core/store" "cosmossdk.io/depinject" - "cosmossdk.io/log" + "cosmossdk.io/log/v2" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/codec" cdctypes "github.com/cosmos/cosmos-sdk/codec/types" @@ -16,8 +16,8 @@ import ( "github.com/cosmos/cosmos-sdk/types/module" authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - porttypes "github.com/cosmos/ibc-go/v10/modules/core/05-port/types" - ibckeeper "github.com/cosmos/ibc-go/v10/modules/core/keeper" + porttypes "github.com/cosmos/ibc-go/v11/modules/core/05-port/types" + ibckeeper "github.com/cosmos/ibc-go/v11/modules/core/keeper" "github.com/grpc-ecosystem/grpc-gateway/runtime" "github.com/spf13/cobra" diff --git a/x/tokenization/module/module_ibc.go b/x/tokenization/module/module_ibc.go index c50e5f49..bb7618f3 100644 --- a/x/tokenization/module/module_ibc.go +++ b/x/tokenization/module/module_ibc.go @@ -9,9 +9,9 @@ import ( errorsmod "cosmossdk.io/errors" sdk "github.com/cosmos/cosmos-sdk/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" - channeltypes "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" - porttypes "github.com/cosmos/ibc-go/v10/modules/core/05-port/types" - ibcexported "github.com/cosmos/ibc-go/v10/modules/core/exported" + channeltypes "github.com/cosmos/ibc-go/v11/modules/core/04-channel/types" + porttypes "github.com/cosmos/ibc-go/v11/modules/core/05-port/types" + ibcexported "github.com/cosmos/ibc-go/v11/modules/core/exported" ) // IBCModule implements the ICS26 interface for interchain accounts host chains diff --git a/x/tokenization/precompile/precompile.go b/x/tokenization/precompile/precompile.go index b52a5e46..265d0bc0 100644 --- a/x/tokenization/precompile/precompile.go +++ b/x/tokenization/precompile/precompile.go @@ -37,7 +37,7 @@ import ( "github.com/cosmos/gogoproto/proto" sdkmath "cosmossdk.io/math" - storetypes "cosmossdk.io/store/types" + storetypes "github.com/cosmos/cosmos-sdk/store/v2/types" sdk "github.com/cosmos/cosmos-sdk/types" diff --git a/x/tokenization/precompile/test/integration/evm_keeper_integration_test.go b/x/tokenization/precompile/test/integration/evm_keeper_integration_test.go index 07fdc0f7..36dec95f 100644 --- a/x/tokenization/precompile/test/integration/evm_keeper_integration_test.go +++ b/x/tokenization/precompile/test/integration/evm_keeper_integration_test.go @@ -23,7 +23,7 @@ import ( "github.com/stretchr/testify/suite" sdkmath "cosmossdk.io/math" - storetypes "cosmossdk.io/store/types" + storetypes "github.com/cosmos/cosmos-sdk/store/v2/types" sdk "github.com/cosmos/cosmos-sdk/types" bankkeeper "github.com/cosmos/cosmos-sdk/x/bank/keeper" slashingtypes "github.com/cosmos/cosmos-sdk/x/slashing/types" diff --git a/x/tokenization/testutil/keeper/tokenization.go b/x/tokenization/testutil/keeper/tokenization.go index e5786112..49e4caf9 100644 --- a/x/tokenization/testutil/keeper/tokenization.go +++ b/x/tokenization/testutil/keeper/tokenization.go @@ -3,11 +3,10 @@ package keeper import ( "testing" - "cosmossdk.io/log" + "cosmossdk.io/log/v2" "cosmossdk.io/math" - "cosmossdk.io/store" - "cosmossdk.io/store/metrics" - storetypes "cosmossdk.io/store/types" + "github.com/cosmos/cosmos-sdk/store/v2" + storetypes "github.com/cosmos/cosmos-sdk/store/v2/types" cmtproto "github.com/cometbft/cometbft/proto/tendermint/types" dbm "github.com/cosmos/cosmos-db" "github.com/cosmos/cosmos-sdk/codec" @@ -35,7 +34,7 @@ func TokenizationKeeper(t testing.TB) (*keeper.Keeper, sdk.Context) { transientStoreKey := customhookstypes.TransientStoreKey db := dbm.NewMemDB() - stateStore := store.NewCommitMultiStore(db, log.NewNopLogger(), metrics.NewNoOpMetrics()) + stateStore := store.NewCommitMultiStore(db, log.NewNopLogger()) stateStore.MountStoreWithDB(storeKey, storetypes.StoreTypeIAVL, db) stateStore.MountStoreWithDB(memStoreKey, storetypes.StoreTypeMemory, nil) stateStore.MountStoreWithDB(transientStoreKey, storetypes.StoreTypeTransient, db) diff --git a/x/tokenization/types/expected_ibc_keeper.go b/x/tokenization/types/expected_ibc_keeper.go index 34873e70..0c7c65fb 100644 --- a/x/tokenization/types/expected_ibc_keeper.go +++ b/x/tokenization/types/expected_ibc_keeper.go @@ -4,8 +4,8 @@ import ( "context" capabilitytypes "github.com/cosmos/ibc-go/modules/capability/types" - clienttypes "github.com/cosmos/ibc-go/v10/modules/core/02-client/types" - channeltypes "github.com/cosmos/ibc-go/v10/modules/core/04-channel/types" + clienttypes "github.com/cosmos/ibc-go/v11/modules/core/02-client/types" + channeltypes "github.com/cosmos/ibc-go/v11/modules/core/04-channel/types" ) // ChannelKeeper defines the expected IBC channel keeper. diff --git a/x/tokenization/types/genesis.go b/x/tokenization/types/genesis.go index eee22e59..eff7180b 100644 --- a/x/tokenization/types/genesis.go +++ b/x/tokenization/types/genesis.go @@ -2,7 +2,7 @@ package types import ( types "cosmossdk.io/math" - host "github.com/cosmos/ibc-go/v10/modules/core/24-host" + host "github.com/cosmos/ibc-go/v11/modules/core/24-host" // this line is used by starport scaffolding # genesis/types/import )