diff --git a/.changeset/modern-planets-bake.md b/.changeset/modern-planets-bake.md new file mode 100644 index 00000000..b0a4b2a1 --- /dev/null +++ b/.changeset/modern-planets-bake.md @@ -0,0 +1,5 @@ +--- +"@chainlink/job-distributor": minor +--- + +Add CHAIN_TYPE_STELLAR to the node ChainType enum diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 5386d1c2..3d0d6f8b 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -12,7 +12,7 @@ # CRE /cre/ @smartcontractkit/keystone @smartcontractkit/op-tooling /cre/capabilities/blockchain/ @smartcontractkit/bix-framework @smartcontractkit/keystone @smartcontractkit/op-tooling -/cre/go/installer/pkg/embedded_gen.go @smartcontractkit/bix-framework @smartcontractkit/keystone @smartcontractkit/op-tooling +/cre/go/installer/pkg/embedded_gen.go @smartcontractkit/bix-framework @smartcontractkit/keystone @smartcontractkit/op-tooling @smartcontractkit/privacy /workflows/ @smartcontractkit/foundations @smartcontractkit/core @smartcontractkit/op-tooling /billing/ @smartcontractkit/cre-business @smartcontractkit/core @smartcontractkit/op-tooling @@ -22,8 +22,10 @@ #CRE Privacy /cre/capabilities/networking/confidentialhttp @smartcontractkit/privacy @smartcontractkit/op-tooling +/cre/capabilities/compute/confidentialworkflow @smartcontractkit/privacy @smartcontractkit/op-tooling # Data +/data-feeds/ @smartcontractkit/data-feeds-engineers @smartcontractkit/op-tooling /svr/ @smartcontractkit/oev @smartcontractkit/op-tooling # Ring diff --git a/.github/scripts/verify-cre-proto-subset-of-capdev.sh b/.github/scripts/verify-cre-proto-subset-of-capdev.sh new file mode 100755 index 00000000..53686419 --- /dev/null +++ b/.github/scripts/verify-cre-proto-subset-of-capdev.sh @@ -0,0 +1,126 @@ +#!/usr/bin/env bash +# Verify PR cre/ proto changes are already present on capabilities-development. +# +# Usage (from repo root, on a PR branch): +# bash ./.github/scripts/verify-cre-proto-subset-of-capdev.sh + +set -euo pipefail + +BASE_BRANCH="${BASE_BRANCH:-main}" +CAP_DEV_BRANCH="${CAP_DEV_BRANCH:-capabilities-development}" +# When set to 1 (CI fallback after patch-id failure), fail if the PR has no proto changes. +REQUIRE_PROTO_CHANGES="${REQUIRE_PROTO_CHANGES:-0}" + +git fetch origin "${BASE_BRANCH}" "${CAP_DEV_BRANCH}" --quiet + +PROTO_FILES=$(git diff --name-only "origin/${BASE_BRANCH}...HEAD" -- 'cre/**/*.proto' || true) + +if [[ -z "${PROTO_FILES}" ]]; then + if [[ "${REQUIRE_PROTO_CHANGES}" == "1" ]]; then + echo "::error::Patch-id check failed and PR has no cre/**/*.proto changes for subset fallback." + exit 1 + fi + echo "No cre/ proto files changed in PR. Subset check skipped." + exit 0 +fi + +echo "Checking proto file(s) against origin/${CAP_DEV_BRANCH}..." +echo "" + +WORKDIR=$(mktemp -d) +trap 'rm -rf "$WORKDIR"' EXIT + +fail() { + echo "::error::$1" + exit 1 +} + +extract_block() { + local file=$1 kind=$2 name=$3 + awk -v kind="$kind" -v name="$name" ' + $1 == kind && $2 == name { + depth = 0 + in_block = 1 + } + in_block { + print + if ($0 ~ /{/) depth++ + if ($0 ~ /}/) { + depth-- + if (depth == 0) { exit } + } + } + ' "$file" +} + +field_lines() { + grep -E '^\s*(repeated\s+)?[A-Za-z0-9_.]+\s+[A-Za-z0-9_]+\s*=\s*[0-9]+;' || true +} + +check_proto_subset() { + local rel=$1 + local pr_file=$2 + local cap_file=$3 + + echo " file: ${rel}" + + while IFS= read -r rpc_line; do + [[ -z "$rpc_line" ]] && continue + grep -qF "$rpc_line" "$cap_file" || fail "${rel}: RPC missing on ${CAP_DEV_BRANCH}: ${rpc_line}" + done </dev/null || \ + fail "${rel}: enum missing on ${CAP_DEV_BRANCH}: ${enum_name}" + + while IFS= read -r val_line; do + [[ -z "$val_line" ]] && continue + grep -qF "$val_line" "$cap_file" || \ + fail "${rel}: enum value missing on ${CAP_DEV_BRANCH} (${enum_name}): ${val_line}" + done </dev/null || \ + fail "${rel}: message missing on ${CAP_DEV_BRANCH}: ${msg_name}" + + while IFS= read -r field_line; do + [[ -z "$field_line" ]] && continue + grep -qF "$field_line" "$cap_file" || \ + fail "${rel}: field missing on ${CAP_DEV_BRANCH} (${msg_name}): ${field_line}" + done </dev/null; then + fail "${rel} does not exist on origin/${CAP_DEV_BRANCH}" + fi + + git show "HEAD:${rel}" > "${WORKDIR}/pr.proto" + git show "origin/${CAP_DEV_BRANCH}:${rel}" > "${WORKDIR}/cap.proto" + + check_proto_subset "$rel" "${WORKDIR}/pr.proto" "${WORKDIR}/cap.proto" + echo "" +done </dev/null || true + + CRE_CHANGED=$(git diff --name-only "origin/${TARGET_BRANCH}...HEAD" -- cre/) + + if [[ -z "$CRE_CHANGED" ]]; then + echo "No cre/ files modified. Skipping branch check." + exit 0 + fi + + echo "The following cre/ files are modified in this PR:" + echo "$CRE_CHANGED" + echo "" + + echo "PR targets 'main' and contains cre/ changes." + echo "Verifying all CRE-modifying commits are cherry-picks from capabilities-development..." + echo "" + + if ! git fetch origin capabilities-development --quiet 2>/dev/null; then + echo "::error::Could not fetch the 'capabilities-development' branch. Ensure it exists on the remote." + echo "::error::CRE changes must target 'capabilities-development' or be cherry-picks of commits already in that branch." + exit 1 + fi + + # Precompute patch-ids for all CRE-touching commits in capabilities-development + CAP_PATCH_IDS=$(mktemp) + git log --format=%H origin/capabilities-development -- cre/ | while read -r cap_commit; do + git show "$cap_commit" -- cre/ | git patch-id --stable 2>/dev/null | awk '{print $1}' + done | sort -u > "$CAP_PATCH_IDS" + + CAP_COUNT=$(wc -l < "$CAP_PATCH_IDS" | tr -d ' ') + echo "Found ${CAP_COUNT} unique CRE patch-ids in capabilities-development." + echo "" + + # Check each PR commit that touches cre/ + FAILURES=$(mktemp) + git log --format=%H "origin/${TARGET_BRANCH}..HEAD" -- cre/ | while read -r commit; do + PATCH_ID=$(git show "$commit" -- cre/ | git patch-id --stable 2>/dev/null | awk '{print $1}') + + if [ -z "$PATCH_ID" ]; then + continue + fi + + if ! grep -qF "$PATCH_ID" "$CAP_PATCH_IDS"; then + git log -1 --format='%h %s' "$commit" >> "$FAILURES" + fi + done + + if [ -s "$FAILURES" ]; then + echo "::error::The following commits modify cre/ but are not cherry-picks of commits in capabilities-development:" + echo "" + while IFS= read -r line; do + echo " - ${line}" + done < "$FAILURES" + echo "" + echo "Trying proto subset fallback (PR cre/**/*.proto vs capabilities-development)..." + echo "" + + if BASE_BRANCH="${TARGET_BRANCH}" REQUIRE_PROTO_CHANGES=1 \ + bash .github/scripts/verify-cre-proto-subset-of-capdev.sh; then + echo "Fallback passed: PR proto changes exist on capabilities-development." + rm -f "$CAP_PATCH_IDS" "$FAILURES" + exit 0 + fi + + echo "" + echo "::error::CRE changes must first be merged into 'capabilities-development'. PRs to other branches may only include cherry-picks of commits already in that branch, or proto changes that already exist on that branch." + rm -f "$CAP_PATCH_IDS" "$FAILURES" + exit 1 + fi + + rm -f "$CAP_PATCH_IDS" "$FAILURES" + echo "All CRE-modifying commits are verified cherry-picks from capabilities-development." diff --git a/.github/workflows/register-data-feeds-schemas.yaml b/.github/workflows/register-data-feeds-schemas.yaml new file mode 100644 index 00000000..286b02ad --- /dev/null +++ b/.github/workflows/register-data-feeds-schemas.yaml @@ -0,0 +1,59 @@ +name: register-data-feeds-schemas + +on: + workflow_dispatch: + push: + branches: + - main + paths: + - ".github/workflows/register-data-feeds-schemas.yaml" + - "data-feeds/**/*.proto" + - "data-feeds/chip-schemas.json" + - "data-feeds/chip-job-spec-schemas.json" + - "data-feeds/beholder-job-spec-schemas.json" + pull_request: + paths: + - ".github/workflows/register-data-feeds-schemas.yaml" + - "data-feeds/**/*.proto" + - "data-feeds/chip-schemas.json" + - "data-feeds/chip-job-spec-schemas.json" + - "data-feeds/beholder-job-spec-schemas.json" + +jobs: + register-schemas: + runs-on: ubuntu-latest + environment: publish + permissions: + id-token: write + contents: read + + strategy: + fail-fast: false + matrix: + config: + - { name: data-feeds, file: chip-schemas.json } + - { name: job-spec, file: chip-job-spec-schemas.json } + - { name: job-spec-beholder, file: beholder-job-spec-schemas.json } + + steps: + - uses: actions/checkout@v5 + + - name: Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@e3dd6a429d7300a6a4c196c26e071d42e0343502 # v4.0.2 + with: + mask-aws-account-id: true + role-to-assume: ${{ secrets.AWS_IAM_ROLE_PUBLISH_ARN }} + aws-region: ${{ secrets.AWS_REGION }} + + - name: Register Data Feeds Schemas for ${{ matrix.config.name }} domain + uses: smartcontractkit/.github/actions/chip-schema-registration@b1bec0ae729606681897cbf7fad5d7c1d572173e # v1.1.0 + with: + aws-account-id: ${{ secrets.AWS_ACCOUNT_ID_ROOT }} + aws-region: us-west-2 + chip-schema-dir: "data-feeds" + chip-config-file-path: "data-feeds/${{ matrix.config.file }}" + chip-config-host: ${{ github.ref_name == 'main' && secrets.chip_config_host_prod || secrets.chip_config_host_staging }} + chip-config-user: ${{ secrets.chip_config_user }} + chip-config-password: ${{ github.ref_name == 'main' && secrets.chip_config_password_prod || secrets.chip_config_password_staging }} + ts-ouath-client-id: ${{ secrets.chip_config_ts_oauth_client_id }} + ts-ouath-secret: ${{ secrets.chip_config_ts_oauth_secret }} diff --git a/.github/workflows/register-workflows-schemas.yaml b/.github/workflows/register-workflows-schemas.yaml index 6fb3b138..dca63e69 100644 --- a/.github/workflows/register-workflows-schemas.yaml +++ b/.github/workflows/register-workflows-schemas.yaml @@ -7,10 +7,12 @@ on: - main paths: - ".github/workflows/register-workflows-schemas.yaml" + - "workflows/chip-*.json" - "workflows/**/*.proto" pull_request: paths: - ".github/workflows/register-workflows-schemas.yaml" + - "workflows/chip-*.json" - "workflows/**/*.proto" jobs: diff --git a/chainlink-ccv/committee-verifier/go.mod b/chainlink-ccv/committee-verifier/go.mod index 525ea188..8a05e425 100644 --- a/chainlink-ccv/committee-verifier/go.mod +++ b/chainlink-ccv/committee-verifier/go.mod @@ -1,16 +1,16 @@ module github.com/smartcontractkit/chainlink-protos/chainlink-ccv/committee-verifier -go 1.23.0 +go 1.24.0 require ( github.com/smartcontractkit/chainlink-protos/chainlink-ccv/verifier v0.0.0-20251210213124-585855c1471e - google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 - google.golang.org/grpc v1.75.0 - google.golang.org/protobuf v1.36.8 + google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 + google.golang.org/grpc v1.79.3 + google.golang.org/protobuf v1.36.10 ) require ( - golang.org/x/net v0.41.0 // indirect - golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.26.0 // indirect + golang.org/x/net v0.48.0 // indirect + golang.org/x/sys v0.39.0 // indirect + golang.org/x/text v0.32.0 // indirect ) diff --git a/chainlink-ccv/committee-verifier/go.sum b/chainlink-ccv/committee-verifier/go.sum index 64f95cbe..de0a62f2 100644 --- a/chainlink-ccv/committee-verifier/go.sum +++ b/chainlink-ccv/committee-verifier/go.sum @@ -1,3 +1,5 @@ +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/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= @@ -10,29 +12,29 @@ 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/smartcontractkit/chainlink-protos/chainlink-ccv/verifier v0.0.0-20251210213124-585855c1471e h1:r/bI4cJnDYeCHj4ejWDqpUJ8+Ho1XXgwVd0ZVbEtT3A= github.com/smartcontractkit/chainlink-protos/chainlink-ccv/verifier v0.0.0-20251210213124-585855c1471e/go.mod h1:5JdppgngCOUS76p61zCinSCgOhPeYQ+OcDUuome5THQ= -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/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= -go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= -go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= -go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= -go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= -go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= -go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= -go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= -go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= -golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= -golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +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/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= +go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= +go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= +go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= +go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= +go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= +go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= +go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= +go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= +go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 h1:pFyd6EwwL2TqFf8emdthzeX+gZE1ElRq3iM8pui4KBY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= -google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= -google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +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/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= diff --git a/chainlink-ccv/heartbeat/go.mod b/chainlink-ccv/heartbeat/go.mod index 46fe1f63..d2d417f2 100644 --- a/chainlink-ccv/heartbeat/go.mod +++ b/chainlink-ccv/heartbeat/go.mod @@ -3,13 +3,13 @@ module github.com/smartcontractkit/chainlink-protos/chainlink-ccv/heartbeat go 1.24.2 require ( - google.golang.org/grpc v1.78.0 + google.golang.org/grpc v1.79.3 google.golang.org/protobuf v1.36.11 ) require ( - golang.org/x/net v0.47.0 // indirect - golang.org/x/sys v0.38.0 // indirect - golang.org/x/text v0.31.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251029180050-ab9386a59fda // indirect + golang.org/x/net v0.48.0 // indirect + golang.org/x/sys v0.39.0 // indirect + golang.org/x/text v0.32.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect ) diff --git a/chainlink-ccv/heartbeat/go.sum b/chainlink-ccv/heartbeat/go.sum index f165e8bf..d705bc9b 100644 --- a/chainlink-ccv/heartbeat/go.sum +++ b/chainlink-ccv/heartbeat/go.sum @@ -1,3 +1,5 @@ +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/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= @@ -10,27 +12,27 @@ 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= 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/otel v1.38.0 h1:RkfdswUDRimDg0m2Az18RKOsnI8UDzppJAtj01/Ymk8= -go.opentelemetry.io/otel v1.38.0/go.mod h1:zcmtmQ1+YmQM9wrNsTGV/q/uyusom3P8RxwExxkZhjM= -go.opentelemetry.io/otel/metric v1.38.0 h1:Kl6lzIYGAh5M159u9NgiRkmoMKjvbsKtYRwgfrA6WpA= -go.opentelemetry.io/otel/metric v1.38.0/go.mod h1:kB5n/QoRM8YwmUahxvI3bO34eVtQf2i4utNVLr9gEmI= -go.opentelemetry.io/otel/sdk v1.38.0 h1:l48sr5YbNf2hpCUj/FoGhW9yDkl+Ma+LrVl8qaM5b+E= -go.opentelemetry.io/otel/sdk v1.38.0/go.mod h1:ghmNdGlVemJI3+ZB5iDEuk4bWA3GkTpW+DOoZMYBVVg= -go.opentelemetry.io/otel/sdk/metric v1.38.0 h1:aSH66iL0aZqo//xXzQLYozmWrXxyFkBJ6qT5wthqPoM= -go.opentelemetry.io/otel/sdk/metric v1.38.0/go.mod h1:dg9PBnW9XdQ1Hd6ZnRz689CbtrUp0wMMs9iPcgT9EZA= -go.opentelemetry.io/otel/trace v1.38.0 h1:Fxk5bKrDZJUH+AMyyIXGcFAPah0oRcT+LuNtJrmcNLE= -go.opentelemetry.io/otel/trace v1.38.0/go.mod h1:j1P9ivuFsTceSWe1oY+EeW3sc+Pp42sO++GHkg4wwhs= -golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= -golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= -golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= -golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= -golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= +go.opentelemetry.io/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= +go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= +go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= +go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= +go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= +go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= +go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= +go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= +go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= +go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251029180050-ab9386a59fda h1:i/Q+bfisr7gq6feoJnS/DlpdwEL4ihp41fvRiM3Ork0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251029180050-ab9386a59fda/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= -google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= -google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +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/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= diff --git a/chainlink-ccv/message-discovery/go.mod b/chainlink-ccv/message-discovery/go.mod index 007c0d5d..695e852d 100644 --- a/chainlink-ccv/message-discovery/go.mod +++ b/chainlink-ccv/message-discovery/go.mod @@ -1,16 +1,16 @@ module github.com/smartcontractkit/chainlink-protos/chainlink-ccv/message-discovery -go 1.23.0 +go 1.24.0 require ( github.com/smartcontractkit/chainlink-protos/chainlink-ccv/verifier v0.0.0-20251210213124-585855c1471e - google.golang.org/grpc v1.75.0 - google.golang.org/protobuf v1.36.8 + google.golang.org/grpc v1.79.3 + google.golang.org/protobuf v1.36.10 ) require ( - golang.org/x/net v0.41.0 // indirect - golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.26.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 // indirect + golang.org/x/net v0.48.0 // indirect + golang.org/x/sys v0.39.0 // indirect + golang.org/x/text v0.32.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect ) diff --git a/chainlink-ccv/message-discovery/go.sum b/chainlink-ccv/message-discovery/go.sum index 64f95cbe..de0a62f2 100644 --- a/chainlink-ccv/message-discovery/go.sum +++ b/chainlink-ccv/message-discovery/go.sum @@ -1,3 +1,5 @@ +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/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= @@ -10,29 +12,29 @@ 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/smartcontractkit/chainlink-protos/chainlink-ccv/verifier v0.0.0-20251210213124-585855c1471e h1:r/bI4cJnDYeCHj4ejWDqpUJ8+Ho1XXgwVd0ZVbEtT3A= github.com/smartcontractkit/chainlink-protos/chainlink-ccv/verifier v0.0.0-20251210213124-585855c1471e/go.mod h1:5JdppgngCOUS76p61zCinSCgOhPeYQ+OcDUuome5THQ= -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/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= -go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= -go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= -go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= -go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= -go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= -go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= -go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= -go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= -golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= -golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +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/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= +go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= +go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= +go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= +go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= +go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= +go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= +go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= +go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= +go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 h1:pFyd6EwwL2TqFf8emdthzeX+gZE1ElRq3iM8pui4KBY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= -google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= -google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +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/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= diff --git a/chainlink-ccv/message-rules/go.mod b/chainlink-ccv/message-rules/go.mod new file mode 100644 index 00000000..3131e946 --- /dev/null +++ b/chainlink-ccv/message-rules/go.mod @@ -0,0 +1,15 @@ +module github.com/smartcontractkit/chainlink-protos/chainlink-ccv/message-rules + +go 1.24.0 + +require ( + google.golang.org/grpc v1.79.3 + google.golang.org/protobuf v1.36.10 +) + +require ( + golang.org/x/net v0.48.0 // indirect + golang.org/x/sys v0.39.0 // indirect + golang.org/x/text v0.32.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 // indirect +) diff --git a/chainlink-ccv/message-rules/go.sum b/chainlink-ccv/message-rules/go.sum new file mode 100644 index 00000000..87cd2070 --- /dev/null +++ b/chainlink-ccv/message-rules/go.sum @@ -0,0 +1,38 @@ +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/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= +github.com/go-logr/logr v1.4.3/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/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= +github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +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/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +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/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= +go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= +go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= +go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= +go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= +go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= +go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= +go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= +go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= +go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= +gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= +gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +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/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= diff --git a/chainlink-ccv/message-rules/package.json b/chainlink-ccv/message-rules/package.json new file mode 100644 index 00000000..63988b44 --- /dev/null +++ b/chainlink-ccv/message-rules/package.json @@ -0,0 +1,5 @@ +{ + "name": "@chainlink/ccv-message-rules", + "version": "0.1.0", + "private": true +} diff --git a/chainlink-ccv/message-rules/v1/message-rules.pb.go b/chainlink-ccv/message-rules/v1/message-rules.pb.go new file mode 100644 index 00000000..62c48d5f --- /dev/null +++ b/chainlink-ccv/message-rules/v1/message-rules.pb.go @@ -0,0 +1,465 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.6 +// protoc (unknown) +// source: message-rules/v1/message-rules.proto + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type ListMessageRulesRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListMessageRulesRequest) Reset() { + *x = ListMessageRulesRequest{} + mi := &file_message_rules_v1_message_rules_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListMessageRulesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListMessageRulesRequest) ProtoMessage() {} + +func (x *ListMessageRulesRequest) ProtoReflect() protoreflect.Message { + mi := &file_message_rules_v1_message_rules_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListMessageRulesRequest.ProtoReflect.Descriptor instead. +func (*ListMessageRulesRequest) Descriptor() ([]byte, []int) { + return file_message_rules_v1_message_rules_proto_rawDescGZIP(), []int{0} +} + +type ListMessageRulesResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Rules []*MessageRule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ListMessageRulesResponse) Reset() { + *x = ListMessageRulesResponse{} + mi := &file_message_rules_v1_message_rules_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ListMessageRulesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListMessageRulesResponse) ProtoMessage() {} + +func (x *ListMessageRulesResponse) ProtoReflect() protoreflect.Message { + mi := &file_message_rules_v1_message_rules_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListMessageRulesResponse.ProtoReflect.Descriptor instead. +func (*ListMessageRulesResponse) Descriptor() ([]byte, []int) { + return file_message_rules_v1_message_rules_proto_rawDescGZIP(), []int{1} +} + +func (x *ListMessageRulesResponse) GetRules() []*MessageRule { + if x != nil { + return x.Rules + } + return nil +} + +type MessageRule struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // Types that are valid to be assigned to Condition: + // + // *MessageRule_Chain + // *MessageRule_Lane + // *MessageRule_Token + Condition isMessageRule_Condition `protobuf_oneof:"condition"` + CreatedAtUnixMillis int64 `protobuf:"varint,5,opt,name=created_at_unix_millis,json=createdAtUnixMillis,proto3" json:"created_at_unix_millis,omitempty"` + UpdatedAtUnixMillis int64 `protobuf:"varint,6,opt,name=updated_at_unix_millis,json=updatedAtUnixMillis,proto3" json:"updated_at_unix_millis,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *MessageRule) Reset() { + *x = MessageRule{} + mi := &file_message_rules_v1_message_rules_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *MessageRule) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MessageRule) ProtoMessage() {} + +func (x *MessageRule) ProtoReflect() protoreflect.Message { + mi := &file_message_rules_v1_message_rules_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MessageRule.ProtoReflect.Descriptor instead. +func (*MessageRule) Descriptor() ([]byte, []int) { + return file_message_rules_v1_message_rules_proto_rawDescGZIP(), []int{2} +} + +func (x *MessageRule) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *MessageRule) GetCondition() isMessageRule_Condition { + if x != nil { + return x.Condition + } + return nil +} + +func (x *MessageRule) GetChain() *ChainMessageRule { + if x != nil { + if x, ok := x.Condition.(*MessageRule_Chain); ok { + return x.Chain + } + } + return nil +} + +func (x *MessageRule) GetLane() *LaneMessageRule { + if x != nil { + if x, ok := x.Condition.(*MessageRule_Lane); ok { + return x.Lane + } + } + return nil +} + +func (x *MessageRule) GetToken() *TokenMessageRule { + if x != nil { + if x, ok := x.Condition.(*MessageRule_Token); ok { + return x.Token + } + } + return nil +} + +func (x *MessageRule) GetCreatedAtUnixMillis() int64 { + if x != nil { + return x.CreatedAtUnixMillis + } + return 0 +} + +func (x *MessageRule) GetUpdatedAtUnixMillis() int64 { + if x != nil { + return x.UpdatedAtUnixMillis + } + return 0 +} + +type isMessageRule_Condition interface { + isMessageRule_Condition() +} + +type MessageRule_Chain struct { + Chain *ChainMessageRule `protobuf:"bytes,2,opt,name=chain,proto3,oneof"` +} + +type MessageRule_Lane struct { + Lane *LaneMessageRule `protobuf:"bytes,3,opt,name=lane,proto3,oneof"` +} + +type MessageRule_Token struct { + Token *TokenMessageRule `protobuf:"bytes,4,opt,name=token,proto3,oneof"` +} + +func (*MessageRule_Chain) isMessageRule_Condition() {} + +func (*MessageRule_Lane) isMessageRule_Condition() {} + +func (*MessageRule_Token) isMessageRule_Condition() {} + +type ChainMessageRule struct { + state protoimpl.MessageState `protogen:"open.v1"` + ChainSelector uint64 `protobuf:"varint,1,opt,name=chain_selector,json=chainSelector,proto3" json:"chain_selector,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ChainMessageRule) Reset() { + *x = ChainMessageRule{} + mi := &file_message_rules_v1_message_rules_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ChainMessageRule) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChainMessageRule) ProtoMessage() {} + +func (x *ChainMessageRule) ProtoReflect() protoreflect.Message { + mi := &file_message_rules_v1_message_rules_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ChainMessageRule.ProtoReflect.Descriptor instead. +func (*ChainMessageRule) Descriptor() ([]byte, []int) { + return file_message_rules_v1_message_rules_proto_rawDescGZIP(), []int{3} +} + +func (x *ChainMessageRule) GetChainSelector() uint64 { + if x != nil { + return x.ChainSelector + } + return 0 +} + +type LaneMessageRule struct { + state protoimpl.MessageState `protogen:"open.v1"` + SelectorA uint64 `protobuf:"varint,1,opt,name=selector_a,json=selectorA,proto3" json:"selector_a,omitempty"` + SelectorB uint64 `protobuf:"varint,2,opt,name=selector_b,json=selectorB,proto3" json:"selector_b,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *LaneMessageRule) Reset() { + *x = LaneMessageRule{} + mi := &file_message_rules_v1_message_rules_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *LaneMessageRule) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LaneMessageRule) ProtoMessage() {} + +func (x *LaneMessageRule) ProtoReflect() protoreflect.Message { + mi := &file_message_rules_v1_message_rules_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LaneMessageRule.ProtoReflect.Descriptor instead. +func (*LaneMessageRule) Descriptor() ([]byte, []int) { + return file_message_rules_v1_message_rules_proto_rawDescGZIP(), []int{4} +} + +func (x *LaneMessageRule) GetSelectorA() uint64 { + if x != nil { + return x.SelectorA + } + return 0 +} + +func (x *LaneMessageRule) GetSelectorB() uint64 { + if x != nil { + return x.SelectorB + } + return 0 +} + +type TokenMessageRule struct { + state protoimpl.MessageState `protogen:"open.v1"` + ChainSelector uint64 `protobuf:"varint,1,opt,name=chain_selector,json=chainSelector,proto3" json:"chain_selector,omitempty"` + TokenAddress []byte `protobuf:"bytes,2,opt,name=token_address,json=tokenAddress,proto3" json:"token_address,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TokenMessageRule) Reset() { + *x = TokenMessageRule{} + mi := &file_message_rules_v1_message_rules_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TokenMessageRule) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TokenMessageRule) ProtoMessage() {} + +func (x *TokenMessageRule) ProtoReflect() protoreflect.Message { + mi := &file_message_rules_v1_message_rules_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TokenMessageRule.ProtoReflect.Descriptor instead. +func (*TokenMessageRule) Descriptor() ([]byte, []int) { + return file_message_rules_v1_message_rules_proto_rawDescGZIP(), []int{5} +} + +func (x *TokenMessageRule) GetChainSelector() uint64 { + if x != nil { + return x.ChainSelector + } + return 0 +} + +func (x *TokenMessageRule) GetTokenAddress() []byte { + if x != nil { + return x.TokenAddress + } + return nil +} + +var File_message_rules_v1_message_rules_proto protoreflect.FileDescriptor + +const file_message_rules_v1_message_rules_proto_rawDesc = "" + + "\n" + + "$message-rules/v1/message-rules.proto\x12\x1echainlink_ccv.message_rules.v1\"\x19\n" + + "\x17ListMessageRulesRequest\"]\n" + + "\x18ListMessageRulesResponse\x12A\n" + + "\x05rules\x18\x01 \x03(\v2+.chainlink_ccv.message_rules.v1.MessageRuleR\x05rules\"\xef\x02\n" + + "\vMessageRule\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12H\n" + + "\x05chain\x18\x02 \x01(\v20.chainlink_ccv.message_rules.v1.ChainMessageRuleH\x00R\x05chain\x12E\n" + + "\x04lane\x18\x03 \x01(\v2/.chainlink_ccv.message_rules.v1.LaneMessageRuleH\x00R\x04lane\x12H\n" + + "\x05token\x18\x04 \x01(\v20.chainlink_ccv.message_rules.v1.TokenMessageRuleH\x00R\x05token\x123\n" + + "\x16created_at_unix_millis\x18\x05 \x01(\x03R\x13createdAtUnixMillis\x123\n" + + "\x16updated_at_unix_millis\x18\x06 \x01(\x03R\x13updatedAtUnixMillisB\v\n" + + "\tcondition\"9\n" + + "\x10ChainMessageRule\x12%\n" + + "\x0echain_selector\x18\x01 \x01(\x04R\rchainSelector\"O\n" + + "\x0fLaneMessageRule\x12\x1d\n" + + "\n" + + "selector_a\x18\x01 \x01(\x04R\tselectorA\x12\x1d\n" + + "\n" + + "selector_b\x18\x02 \x01(\x04R\tselectorB\"^\n" + + "\x10TokenMessageRule\x12%\n" + + "\x0echain_selector\x18\x01 \x01(\x04R\rchainSelector\x12#\n" + + "\rtoken_address\x18\x02 \x01(\fR\ftokenAddress2\x96\x01\n" + + "\fMessageRules\x12\x85\x01\n" + + "\x10ListMessageRules\x127.chainlink_ccv.message_rules.v1.ListMessageRulesRequest\x1a8.chainlink_ccv.message_rules.v1.ListMessageRulesResponseBMZKgithub.com/smartcontractkit/chainlink-protos/chainlink-ccv/message-rules/v1b\x06proto3" + +var ( + file_message_rules_v1_message_rules_proto_rawDescOnce sync.Once + file_message_rules_v1_message_rules_proto_rawDescData []byte +) + +func file_message_rules_v1_message_rules_proto_rawDescGZIP() []byte { + file_message_rules_v1_message_rules_proto_rawDescOnce.Do(func() { + file_message_rules_v1_message_rules_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_message_rules_v1_message_rules_proto_rawDesc), len(file_message_rules_v1_message_rules_proto_rawDesc))) + }) + return file_message_rules_v1_message_rules_proto_rawDescData +} + +var file_message_rules_v1_message_rules_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_message_rules_v1_message_rules_proto_goTypes = []any{ + (*ListMessageRulesRequest)(nil), // 0: chainlink_ccv.message_rules.v1.ListMessageRulesRequest + (*ListMessageRulesResponse)(nil), // 1: chainlink_ccv.message_rules.v1.ListMessageRulesResponse + (*MessageRule)(nil), // 2: chainlink_ccv.message_rules.v1.MessageRule + (*ChainMessageRule)(nil), // 3: chainlink_ccv.message_rules.v1.ChainMessageRule + (*LaneMessageRule)(nil), // 4: chainlink_ccv.message_rules.v1.LaneMessageRule + (*TokenMessageRule)(nil), // 5: chainlink_ccv.message_rules.v1.TokenMessageRule +} +var file_message_rules_v1_message_rules_proto_depIdxs = []int32{ + 2, // 0: chainlink_ccv.message_rules.v1.ListMessageRulesResponse.rules:type_name -> chainlink_ccv.message_rules.v1.MessageRule + 3, // 1: chainlink_ccv.message_rules.v1.MessageRule.chain:type_name -> chainlink_ccv.message_rules.v1.ChainMessageRule + 4, // 2: chainlink_ccv.message_rules.v1.MessageRule.lane:type_name -> chainlink_ccv.message_rules.v1.LaneMessageRule + 5, // 3: chainlink_ccv.message_rules.v1.MessageRule.token:type_name -> chainlink_ccv.message_rules.v1.TokenMessageRule + 0, // 4: chainlink_ccv.message_rules.v1.MessageRules.ListMessageRules:input_type -> chainlink_ccv.message_rules.v1.ListMessageRulesRequest + 1, // 5: chainlink_ccv.message_rules.v1.MessageRules.ListMessageRules:output_type -> chainlink_ccv.message_rules.v1.ListMessageRulesResponse + 5, // [5:6] is the sub-list for method output_type + 4, // [4:5] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name +} + +func init() { file_message_rules_v1_message_rules_proto_init() } +func file_message_rules_v1_message_rules_proto_init() { + if File_message_rules_v1_message_rules_proto != nil { + return + } + file_message_rules_v1_message_rules_proto_msgTypes[2].OneofWrappers = []any{ + (*MessageRule_Chain)(nil), + (*MessageRule_Lane)(nil), + (*MessageRule_Token)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_message_rules_v1_message_rules_proto_rawDesc), len(file_message_rules_v1_message_rules_proto_rawDesc)), + NumEnums: 0, + NumMessages: 6, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_message_rules_v1_message_rules_proto_goTypes, + DependencyIndexes: file_message_rules_v1_message_rules_proto_depIdxs, + MessageInfos: file_message_rules_v1_message_rules_proto_msgTypes, + }.Build() + File_message_rules_v1_message_rules_proto = out.File + file_message_rules_v1_message_rules_proto_goTypes = nil + file_message_rules_v1_message_rules_proto_depIdxs = nil +} diff --git a/chainlink-ccv/message-rules/v1/message-rules.proto b/chainlink-ccv/message-rules/v1/message-rules.proto new file mode 100644 index 00000000..b32701c7 --- /dev/null +++ b/chainlink-ccv/message-rules/v1/message-rules.proto @@ -0,0 +1,40 @@ +syntax = "proto3"; + +package chainlink_ccv.message_rules.v1; + +option go_package = "github.com/smartcontractkit/chainlink-protos/chainlink-ccv/message-rules/v1"; + +service MessageRules { + rpc ListMessageRules(ListMessageRulesRequest) returns (ListMessageRulesResponse); +} + +message ListMessageRulesRequest {} + +message ListMessageRulesResponse { + repeated MessageRule rules = 1; +} + +message MessageRule { + string id = 1; + oneof condition { + ChainMessageRule chain = 2; + LaneMessageRule lane = 3; + TokenMessageRule token = 4; + } + int64 created_at_unix_millis = 5; + int64 updated_at_unix_millis = 6; +} + +message ChainMessageRule { + uint64 chain_selector = 1; +} + +message LaneMessageRule { + uint64 selector_a = 1; + uint64 selector_b = 2; +} + +message TokenMessageRule { + uint64 chain_selector = 1; + bytes token_address = 2; +} diff --git a/chainlink-ccv/message-rules/v1/message-rules_grpc.pb.go b/chainlink-ccv/message-rules/v1/message-rules_grpc.pb.go new file mode 100644 index 00000000..8f07bd3e --- /dev/null +++ b/chainlink-ccv/message-rules/v1/message-rules_grpc.pb.go @@ -0,0 +1,121 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.5.1 +// - protoc (unknown) +// source: message-rules/v1/message-rules.proto + +package v1 + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + MessageRules_ListMessageRules_FullMethodName = "/chainlink_ccv.message_rules.v1.MessageRules/ListMessageRules" +) + +// MessageRulesClient is the client API for MessageRules service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type MessageRulesClient interface { + ListMessageRules(ctx context.Context, in *ListMessageRulesRequest, opts ...grpc.CallOption) (*ListMessageRulesResponse, error) +} + +type messageRulesClient struct { + cc grpc.ClientConnInterface +} + +func NewMessageRulesClient(cc grpc.ClientConnInterface) MessageRulesClient { + return &messageRulesClient{cc} +} + +func (c *messageRulesClient) ListMessageRules(ctx context.Context, in *ListMessageRulesRequest, opts ...grpc.CallOption) (*ListMessageRulesResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(ListMessageRulesResponse) + err := c.cc.Invoke(ctx, MessageRules_ListMessageRules_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// MessageRulesServer is the server API for MessageRules service. +// All implementations must embed UnimplementedMessageRulesServer +// for forward compatibility. +type MessageRulesServer interface { + ListMessageRules(context.Context, *ListMessageRulesRequest) (*ListMessageRulesResponse, error) + mustEmbedUnimplementedMessageRulesServer() +} + +// UnimplementedMessageRulesServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedMessageRulesServer struct{} + +func (UnimplementedMessageRulesServer) ListMessageRules(context.Context, *ListMessageRulesRequest) (*ListMessageRulesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListMessageRules not implemented") +} +func (UnimplementedMessageRulesServer) mustEmbedUnimplementedMessageRulesServer() {} +func (UnimplementedMessageRulesServer) testEmbeddedByValue() {} + +// UnsafeMessageRulesServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to MessageRulesServer will +// result in compilation errors. +type UnsafeMessageRulesServer interface { + mustEmbedUnimplementedMessageRulesServer() +} + +func RegisterMessageRulesServer(s grpc.ServiceRegistrar, srv MessageRulesServer) { + // If the following call pancis, it indicates UnimplementedMessageRulesServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&MessageRules_ServiceDesc, srv) +} + +func _MessageRules_ListMessageRules_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListMessageRulesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MessageRulesServer).ListMessageRules(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: MessageRules_ListMessageRules_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MessageRulesServer).ListMessageRules(ctx, req.(*ListMessageRulesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// MessageRules_ServiceDesc is the grpc.ServiceDesc for MessageRules service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var MessageRules_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "chainlink_ccv.message_rules.v1.MessageRules", + HandlerType: (*MessageRulesServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "ListMessageRules", + Handler: _MessageRules_ListMessageRules_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "message-rules/v1/message-rules.proto", +} diff --git a/chainlink-ccv/verifier/go.mod b/chainlink-ccv/verifier/go.mod index 1a7b8026..86ef1b97 100644 --- a/chainlink-ccv/verifier/go.mod +++ b/chainlink-ccv/verifier/go.mod @@ -1,15 +1,15 @@ module github.com/smartcontractkit/chainlink-protos/chainlink-ccv/verifier -go 1.23.0 +go 1.24.0 require ( - google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 - google.golang.org/grpc v1.75.0 - google.golang.org/protobuf v1.36.8 + google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 + google.golang.org/grpc v1.79.3 + google.golang.org/protobuf v1.36.10 ) require ( - golang.org/x/net v0.41.0 // indirect - golang.org/x/sys v0.33.0 // indirect - golang.org/x/text v0.26.0 // indirect + golang.org/x/net v0.48.0 // indirect + golang.org/x/sys v0.39.0 // indirect + golang.org/x/text v0.32.0 // indirect ) diff --git a/chainlink-ccv/verifier/go.sum b/chainlink-ccv/verifier/go.sum index c21c8b57..87cd2070 100644 --- a/chainlink-ccv/verifier/go.sum +++ b/chainlink-ccv/verifier/go.sum @@ -1,3 +1,5 @@ +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/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= @@ -8,29 +10,29 @@ 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/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -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/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ= -go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I= -go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE= -go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E= -go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI= -go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg= -go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc= -go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps= -go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4= -go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0= -golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= -golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +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/otel v1.39.0 h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48= +go.opentelemetry.io/otel v1.39.0/go.mod h1:kLlFTywNWrFyEdH0oj2xK0bFYZtHRYUdv1NklR/tgc8= +go.opentelemetry.io/otel/metric v1.39.0 h1:d1UzonvEZriVfpNKEVmHXbdf909uGTOQjA0HF0Ls5Q0= +go.opentelemetry.io/otel/metric v1.39.0/go.mod h1:jrZSWL33sD7bBxg1xjrqyDjnuzTUB0x1nBERXd7Ftcs= +go.opentelemetry.io/otel/sdk v1.39.0 h1:nMLYcjVsvdui1B/4FRkwjzoRVsMK8uL/cj0OyhKzt18= +go.opentelemetry.io/otel/sdk v1.39.0/go.mod h1:vDojkC4/jsTJsE+kh+LXYQlbL8CgrEcwmt1ENZszdJE= +go.opentelemetry.io/otel/sdk/metric v1.39.0 h1:cXMVVFVgsIf2YL6QkRF4Urbr/aMInf+2WKg+sEJTtB8= +go.opentelemetry.io/otel/sdk/metric v1.39.0/go.mod h1:xq9HEVH7qeX69/JnwEfp6fVq5wosJsY1mt4lLfYdVew= +go.opentelemetry.io/otel/trace v1.39.0 h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6/qCJI= +go.opentelemetry.io/otel/trace v1.39.0/go.mod h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA= +golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= +golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= +golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= +golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 h1:pFyd6EwwL2TqFf8emdthzeX+gZE1ElRq3iM8pui4KBY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A= -google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4= -google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ= -google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc= -google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww= +google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +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/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE= +google.golang.org/protobuf v1.36.10/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= diff --git a/cre/capabilities/blockchain/aptos/v1alpha/client.proto b/cre/capabilities/blockchain/aptos/v1alpha/client.proto index bd3f2003..37a33ae7 100644 --- a/cre/capabilities/blockchain/aptos/v1alpha/client.proto +++ b/cre/capabilities/blockchain/aptos/v1alpha/client.proto @@ -25,6 +25,7 @@ message AccountAPTBalanceReply { message ViewRequest { ViewPayload payload = 1; + optional uint64 ledger_version = 2; // nil means use latest ledger version } message ViewReply { @@ -144,6 +145,11 @@ message GasConfig { // ========== WriteReport ========== +enum ReceiverContractExecutionStatus { + RECEIVER_CONTRACT_EXECUTION_STATUS_SUCCESS = 0; + RECEIVER_CONTRACT_EXECUTION_STATUS_REVERTED = 1; +} + message WriteReportRequest { bytes receiver = 1; // 32-byte Aptos account address of the receiver module optional GasConfig gas_config = 2; // optional gas configuration @@ -155,6 +161,8 @@ message WriteReportReply { optional string tx_hash = 2; // transaction hash (hex string with 0x prefix) optional uint64 transaction_fee = 3; // gas used in octas optional string error_message = 4; + optional ReceiverContractExecutionStatus receiver_contract_execution_status = 5; + optional uint64 block_timestamp = 6; // block timestamp in microseconds } // ========== Service ========== diff --git a/cre/capabilities/blockchain/evm/v1alpha/client.proto b/cre/capabilities/blockchain/evm/v1alpha/client.proto index 3884c16e..c2a4faa5 100644 --- a/cre/capabilities/blockchain/evm/v1alpha/client.proto +++ b/cre/capabilities/blockchain/evm/v1alpha/client.proto @@ -169,6 +169,14 @@ service Client { value: { uint64_label: { defaults: [ + { + key: "adi-mainnet" + value: 4059281736450291836 + }, + { + key: "adi-testnet" + value: 9418205736192840573 + }, { key: "apechain-testnet-curtis" value: 9900119385908781505 @@ -193,6 +201,26 @@ service Client { key: "binance_smart_chain-testnet" value: 13264668187771770619 }, + { + key: "celo-mainnet" + value: 1346049177634351622 + }, + { + key: "celo-sepolia" + value: 3761762704474186180 + }, + { + key: "cronos-testnet" + value: 2995292832068775165 + }, + { + key: "dtcc-mainnet-appchain" + value: 13879014182901017172 + }, + { + key: "dtcc-testnet-andesite" + value: 15513093881969820114 + }, { key: "ethereum-mainnet" value: 5009297550715157269 @@ -205,10 +233,26 @@ service Client { key: "ethereum-mainnet-base-1" value: 15971525489660198786 }, + { + key: "ethereum-mainnet-ink-1" + value: 3461204551265785888 + }, + { + key: "ethereum-mainnet-linea-1" + value: 4627098889531055414 + }, + { + key: "ethereum-mainnet-mantle-1" + value: 1556008542357238666 + }, { key: "ethereum-mainnet-optimism-1" value: 3734403246176062136 }, + { + key: "ethereum-mainnet-scroll-1" + value: 13204309965629103672 + }, { key: "ethereum-mainnet-worldchain-1" value: 2049429975587534727 @@ -237,10 +281,22 @@ service Client { key: "ethereum-testnet-sepolia-linea-1" value: 5719461335882077547 }, + { + key: "ethereum-testnet-sepolia-mantle-1" + value: 8236463271206331221 + }, { key: "ethereum-testnet-sepolia-optimism-1" value: 5224473277236331295 }, + { + key: "ethereum-testnet-sepolia-scroll-1" + value: 2279865765895943307 + }, + { + key: "ethereum-testnet-sepolia-unichain-1" + value: 14135854469784514356 + }, { key: "ethereum-testnet-sepolia-worldchain-1" value: 5299555114858065850 @@ -249,6 +305,18 @@ service Client { key: "ethereum-testnet-sepolia-zksync-1" value: 6898391096552792247 }, + { + key: "gnosis_chain-mainnet" + value: 465200170687744372 + }, + { + key: "gnosis_chain-testnet-chiado" + value: 8871595565390010547 + }, + { + key: "hyperliquid-mainnet" + value: 2442541497099098535 + }, { key: "hyperliquid-testnet" value: 4286062357653186312 @@ -265,10 +333,34 @@ service Client { key: "jovay-testnet" value: 945045181441419236 }, + { + key: "megaeth-mainnet" + value: 6093540873831549674 + }, + { + key: "megaeth-testnet-2" + value: 18241817625092392675 + }, + { + key: "monad-mainnet" + value: 8481857512324358265 + }, + { + key: "monad-testnet" + value: 2183018362218727504 + }, + { + key: "pharos-atlantic-testnet" + value: 16098325658947243212 + }, { key: "pharos-mainnet" value: 7801139999541420232 }, + { + key: "plasma-mainnet" + value: 9335212494177455608 + }, { key: "plasma-testnet" value: 3967220077692964309 @@ -284,6 +376,50 @@ service Client { { key: "private-testnet-andesite" value: 6915682381028791124 + }, + { + key: "private-testnet-pumice" + value: 1564738277398880633 + }, + { + key: "private-testnet-quartzite" + value: 4175996748267305081 + }, + { + key: "private-testnet-rhyolite" + value: 604447335222770945 + }, + { + key: "robinhood-testnet" + value: 2032988798112970440 + }, + { + key: "sonic-mainnet" + value: 1673871237479749969 + }, + { + key: "sonic-testnet" + value: 1763698235108410440 + }, + { + key: "stable-testnet" + value: 11793402411494852765 + }, + { + key: "tac-testnet" + value: 9488606126177218005 + }, + { + key: "tempo-testnet-moderato" + value: 8457817439310187923 + }, + { + key: "t-rex-testnet" + value: 17611928792452358269 + }, + { + key: "xlayer-testnet" + value: 10212741611335999305 } ] } diff --git a/cre/capabilities/blockchain/solana/v1alpha/client.proto b/cre/capabilities/blockchain/solana/v1alpha/client.proto new file mode 100644 index 00000000..087c454c --- /dev/null +++ b/cre/capabilities/blockchain/solana/v1alpha/client.proto @@ -0,0 +1,461 @@ +syntax = "proto3"; +package capabilities.blockchain.solana.v1alpha; + +import "sdk/v1alpha/sdk.proto"; +import "tools/generator/v1alpha/cre_metadata.proto"; +import "values/v1/values.proto"; + +// Account/tx data encodings. +enum EncodingType { + ENCODING_TYPE_NONE = 0; + ENCODING_TYPE_BASE58 = 1; // for data <129 bytes + ENCODING_TYPE_BASE64 = 2; // any size + ENCODING_TYPE_BASE64_ZSTD = 3; // zstd-compressed, base64-wrapped + ENCODING_TYPE_JSON_PARSED = 4; // program parsers; fallback to base64 if unknown + ENCODING_TYPE_JSON = 5; // raw JSON (rare; prefer JSON_PARSED) +} + +// Read consistency of queried state. +enum CommitmentType { + COMMITMENT_TYPE_NONE = 0; + COMMITMENT_TYPE_FINALIZED = 1; // cluster-finalized + COMMITMENT_TYPE_CONFIRMED = 2; // voted by supermajority + COMMITMENT_TYPE_PROCESSED = 3; // node’s latest +} + +// Cluster confirmation status of a tx/signature. +enum ConfirmationStatusType { + CONFIRMATION_STATUS_TYPE_NONE = 0; + CONFIRMATION_STATUS_TYPE_PROCESSED = 1; + CONFIRMATION_STATUS_TYPE_CONFIRMED = 2; + CONFIRMATION_STATUS_TYPE_FINALIZED = 3; +} + +// Transaction execution status returned by submitters/simulations. +enum TxStatus { + TX_STATUS_FATAL = 0; // unrecoverable failure + TX_STATUS_ABORTED = 1; // not executed / dropped + TX_STATUS_SUCCESS = 2; // executed successfully +} + +// On-chain account state. +message Account { + uint64 lamports = 1; // balance in lamports (1e-9 SOL) + bytes owner = 2; // 32-byte program id (Pubkey) + DataBytesOrJSON data = 3; // account data (encoded or JSON) + bool executable = 4; // true if this is a program account + values.v1.BigInt rent_epoch = 5; // next rent epoch + uint64 space = 6; // data length in bytes +} + +// Compute budget configuration when submitting txs. +message ComputeConfig { + uint32 compute_limit = 1; // max CUs (approx per-tx limit) +} + +// Raw bytes vs parsed JSON (as returned by RPC). +message DataBytesOrJSON { + EncodingType encoding = 1; + oneof body { + bytes raw = 2; // program data (node’s base64/base58 decoded) + bytes json = 3; // json: UTF-8 bytes of the jsonParsed payload. + } +} + +// Return a slice of account data. +message DataSlice { + uint64 offset = 1; // start byte + uint64 length = 2; // number of bytes +} + +// Options for GetAccountInfo. +message GetAccountInfoOpts { + EncodingType encoding = 1; // data encoding + CommitmentType commitment = 2; // read consistency + DataSlice data_slice = 3; // optional slice window + uint64 min_context_slot = 4; // lower bound slot +} + +// Reply for GetAccountInfoWithOpts. +message GetAccountInfoWithOptsReply { + optional Account value = 2; // account (may be empty) +} + +// Request for GetAccountInfoWithOpts. +message GetAccountInfoWithOptsRequest { + bytes account = 1; // 32-byte Pubkey + GetAccountInfoOpts opts = 2; +} + +// Reply for GetBalance. +message GetBalanceReply { + uint64 value = 1; // lamports +} + +// Request for GetBalance. +message GetBalanceRequest { + bytes addr = 1; // 32-byte Pubkey + CommitmentType commitment = 2; // read consistency +} + +// Options for GetBlock. +message GetBlockOpts { + CommitmentType commitment = 4; // read consistency +} + +// Block response. +message GetBlockReply { + bytes blockhash = 1; // 32-byte block hash + bytes previous_blockhash = 2; // 32-byte parent hash + uint64 parent_slot = 3; + optional int64 block_time = 4; // unix seconds, node may not report it + uint64 block_height = 5; // chain height +} + +// Request for GetBlock. +message GetBlockRequest { + uint64 slot = 1; // target slot + GetBlockOpts opts = 2; +} + +// Fee quote for a base58-encoded Message. +message GetFeeForMessageReply { + uint64 fee = 1; // lamports +} + +message GetFeeForMessageRequest { + string message = 1; // must be base58-encoded Message + CommitmentType commitment = 2; // read consistency +} + +// Options for GetMultipleAccounts. +message GetMultipleAccountsOpts { + EncodingType encoding = 1; + CommitmentType commitment = 2; + DataSlice data_slice = 3; + uint64 min_context_slot = 4; +} + +message OptionalAccountWrapper { + optional Account account = 1; +} + +// Reply for GetMultipleAccountsWithOpts. +message GetMultipleAccountsWithOptsReply { + repeated OptionalAccountWrapper value = 2; // accounts (nil entries allowed) +} + +// Request for GetMultipleAccountsWithOpts. +message GetMultipleAccountsWithOptsRequest { + repeated bytes accounts = 1; // list of 32-byte Pubkeys + GetMultipleAccountsOpts opts = 2; +} + +// Memcmp filter for getProgramAccounts. +message RPCFilterMemcmp { + uint64 offset = 1; // byte offset into account data + bytes bytes = 2; // data to match (RPC encodes as base58) +} + +// Account filter for getProgramAccounts (memcmp or data size). +message RPCFilter { + RPCFilterMemcmp memcmp = 1; + uint64 data_size = 2; // match accounts with this data length +} + +// Options for GetProgramAccounts. +message GetProgramAccountsOpts { + EncodingType encoding = 1; + CommitmentType commitment = 2; + DataSlice data_slice = 3; + repeated RPCFilter filters = 4; +} + +// Program-owned account with its pubkey. +message KeyedAccount { + bytes pubkey = 1; // 32-byte Pubkey + Account account = 2; +} + +// Reply for GetProgramAccounts. +message GetProgramAccountsReply { + repeated KeyedAccount value = 1; +} + +// Request for GetProgramAccounts. +message GetProgramAccountsRequest { + bytes program = 1; // 32-byte program Pubkey + GetProgramAccountsOpts opts = 2; +} + +// Reply for GetSignatureStatuses. +message GetSignatureStatusesReply { + repeated GetSignatureStatusesResult results = 1; // 1:1 with input +} + +// Request for GetSignatureStatuses. +message GetSignatureStatusesRequest { + repeated bytes sigs = 1; // 64-byte signatures +} + +// Per-signature status. +message GetSignatureStatusesResult { + uint64 slot = 1; // processed slot + optional uint64 confirmations = 2; // null->0 here + string err = 3; // error JSON string (empty on success) + ConfirmationStatusType confirmation_status = 4; +} + +// Current “height” (blocks below latest). +message GetSlotHeightReply { + uint64 height = 1; +} + +message GetSlotHeightRequest { + CommitmentType commitment = 1; // read consistency +} + +// Message header counts. +message MessageHeader { + uint32 num_required_signatures = 1; // signer count + uint32 num_readonly_signed_accounts = 2; // trailing signed RO + uint32 num_readonly_unsigned_accounts = 3; // trailing unsigned RO +} + +// Parsed message (no address tables). +message ParsedMessage { + bytes recent_blockhash = 1; // 32-byte Hash + repeated bytes account_keys = 2; // list of 32-byte Pubkeys + MessageHeader header = 3; + repeated CompiledInstruction instructions = 4; +} + +// Parsed transaction (signatures + message). +message ParsedTransaction { + repeated bytes signatures = 1; // 64-byte signatures + ParsedMessage message = 2; +} + +// Token amount (UI-friendly). +message UiTokenAmount { + string amount = 1; // raw integer string + uint32 decimals = 2; // mint decimals + string ui_amount_string = 4; // amount / 10^decimals +} + +// SPL token balance entry. +message TokenBalance { + uint32 account_index = 1; // index in account_keys + optional bytes owner = 2; // 32-byte owner (optional) + optional bytes program_id = 3; // 32-byte token program (optional) + bytes mint = 4; // 32-byte mint + UiTokenAmount ui = 5; // formatted amounts +} + +// Inner instruction list at a given outer instruction index. +message InnerInstruction { + uint32 index = 1; // outer ix index + repeated CompiledInstruction instructions = 2; // invoked ixs +} + +// Address table lookups expanded by loader. +message LoadedAddresses { + repeated bytes readonly = 1; // 32-byte Pubkeys + repeated bytes writable = 2; // 32-byte Pubkeys +} + +// Compiled (program) instruction. +message CompiledInstruction { + uint32 program_id_index = 1; // index into account_keys + repeated uint32 accounts = 2; // indices into account_keys + bytes data = 3; // program input bytes + uint32 stack_height = 4; // if recorded by node +} + +// Raw bytes with encoding tag. +message Data { + bytes content = 1; // raw bytes + EncodingType encoding = 2; // how it was encoded originally +} + +// Program return data. +message ReturnData { + bytes program_id = 1; // 32-byte Pubkey + Data data = 2; // raw return bytes +} + +// Transaction execution metadata. +message TransactionMeta { + string err_json = 1; // error JSON (empty on success) + uint64 fee = 2; // lamports + repeated uint64 pre_balances = 3; // lamports per account + repeated uint64 post_balances = 4; // lamports per account + repeated string log_messages = 5; // runtime logs + repeated TokenBalance pre_token_balances = 6; + repeated TokenBalance post_token_balances = 7; + repeated InnerInstruction inner_instructions = 8; + LoadedAddresses loaded_addresses = 9; + ReturnData return_data = 10; + optional uint64 compute_units_consumed = 11; // CUs +} + +// Transaction envelope: raw bytes or parsed struct. +message TransactionEnvelope { + oneof transaction { + bytes raw = 1; // raw tx bytes (for RAW/base64) + ParsedTransaction parsed = 2; // parsed tx (for JSON_PARSED) + } +} + +// GetTransaction reply. +message GetTransactionReply { + uint64 slot = 1; // processed slot + optional int64 block_time = 2; // unix seconds + optional TransactionEnvelope transaction = 3; // tx bytes or parsed + optional TransactionMeta meta = 4; // may be omitted by node +} + +// GetTransaction request. +message GetTransactionRequest { + bytes signature = 1; // 64-byte signature +} + +// Simulation options. +message SimulateTXOpts { + bool sig_verify = 1; // verify sigs + CommitmentType commitment = 2; // read consistency + bool replace_recent_blockhash = 3; // refresh blockhash + SimulateTransactionAccountsOpts accounts = 4; // return accounts +} + +// Simulation result. +message SimulateTXReply { + string err = 1; // empty on success + repeated string logs = 2; // runtime logs + repeated Account accounts = 3; // returned accounts + uint64 units_consumed = 4; // CUs +} + +// Simulation request. +message SimulateTXRequest { + bytes receiver = 1; // 32-byte program id (target) + string encoded_transaction = 2; // base64/base58 tx + SimulateTXOpts opts = 3; +} + +// Accounts to return during simulation. +message SimulateTransactionAccountsOpts { + EncodingType encoding = 1; // account data encoding + repeated bytes addresses = 2; // 32-byte Pubkeys +} + +enum ComparisonOperator { + COMPARISON_OPERATOR_EQ = 0; + COMPARISON_OPERATOR_NEQ = 1; + COMPARISON_OPERATOR_GT = 2; + COMPARISON_OPERATOR_LT = 3; + COMPARISON_OPERATOR_GTE = 4; + COMPARISON_OPERATOR_LTE = 5; +} + +message ValueComparator { + bytes value = 1; + ComparisonOperator operator = 2; +} + +message SubkeyConfig { + repeated string path = 1; + repeated ValueComparator comparers = 2; +} + +message CPIFilterConfig { + bytes dest_address = 1; + bytes method_name = 2; +} + +message FilterLogTriggerRequest { + string name = 1; + bytes address = 2; // Solana PublicKey (32 bytes) + string event_name = 3; + bytes contract_idl_json = 4; + repeated SubkeyConfig subkeys = 5; + optional CPIFilterConfig cpi_filter_config = 6; +} + +message Log { + string chain_id = 1; // Chain identifier + int64 log_index = 2; // Index of the log within the block + bytes block_hash = 3; // 32-byte block hash + int64 block_number = 4; // Block/slot number + uint64 block_timestamp = 5; // Unix timestamp of the block + bytes address = 6; // 32-byte program PublicKey + bytes event_sig = 7; // 8-byte event signature + bytes tx_hash = 8; // 64-byte transaction signature + bytes data = 9; // Decoded event data + int64 sequence_num = 10; // Sequence number for ordering + optional string error = 11; // Error message if log processing failed +} + +// All metas are non-signers. +message AccountMeta { + bytes public_key = 1; // 32 bytes account public key + bool is_writable = 2; // write flag +} + +message WriteReportRequest { + repeated AccountMeta remaining_accounts = 1; // accounts that are required by the receiver to accept the report + bytes receiver = 2; // 32 bytes receiver + optional ComputeConfig compute_config = 3; + sdk.v1alpha.ReportResponse report = 4; +} + +enum ReceiverContractExecutionStatus { + RECEIVER_CONTRACT_EXECUTION_STATUS_SUCCESS = 0; + RECEIVER_CONTRACT_EXECUTION_STATUS_REVERTED = 1; +} + +message WriteReportReply { + TxStatus tx_status = 1; + optional ReceiverContractExecutionStatus receiver_contract_execution_status = 2; + optional bytes tx_signature = 3; + optional uint64 transaction_fee = 4; + optional string error_message = 5; +} + +service Client { + option (tools.generator.v1alpha.capability) = { + mode: MODE_DON + capability_id: "solana@1.0.0" + labels: { + // from https://github.com/smartcontractkit/chain-selectors/blob/main/selectors.yml + // as a subset of the selectors supported on the CRE + key: "ChainSelector" + value: { + uint64_label: { + defaults: [ + { + key: "solana-devnet" + value: 16423721717087811551 + }, + { + key: "solana-mainnet" + value: 124615329519749607 + } + ] + } + } + } + }; + + rpc GetAccountInfoWithOpts(GetAccountInfoWithOptsRequest) returns (GetAccountInfoWithOptsReply); + rpc GetBalance(GetBalanceRequest) returns (GetBalanceReply); + rpc GetBlock(GetBlockRequest) returns (GetBlockReply); + rpc GetFeeForMessage(GetFeeForMessageRequest) returns (GetFeeForMessageReply); + rpc GetMultipleAccountsWithOpts(GetMultipleAccountsWithOptsRequest) returns (GetMultipleAccountsWithOptsReply); + rpc GetProgramAccounts(GetProgramAccountsRequest) returns (GetProgramAccountsReply); + rpc GetSignatureStatuses(GetSignatureStatusesRequest) returns (GetSignatureStatusesReply); + rpc GetSlotHeight(GetSlotHeightRequest) returns (GetSlotHeightReply); + rpc GetTransaction(GetTransactionRequest) returns (GetTransactionReply); + rpc LogTrigger(FilterLogTriggerRequest) returns (stream Log); + rpc WriteReport(WriteReportRequest) returns (WriteReportReply); +} diff --git a/cre/capabilities/blockchain/stellar/v1alpha/client.proto b/cre/capabilities/blockchain/stellar/v1alpha/client.proto new file mode 100644 index 00000000..b9dc8ce4 --- /dev/null +++ b/cre/capabilities/blockchain/stellar/v1alpha/client.proto @@ -0,0 +1,94 @@ +syntax = "proto3"; +package capabilities.blockchain.stellar.v1alpha; + +import "capabilities/blockchain/stellar/v1alpha/scval.proto"; +import "sdk/v1alpha/sdk.proto"; +import "tools/generator/v1alpha/cre_metadata.proto"; + +enum TxStatus { + TX_STATUS_FATAL = 0; + TX_STATUS_REVERTED = 1; + TX_STATUS_SUCCESS = 2; +} + +message ReadContractRequest { + string contract_id = 1; + string function = 2; + repeated ScVal args = 3; // Typed Soroban contract arguments (replaces raw XDR bytes) + // Source account (G… StrKey) to simulate the call as (the invoker). Required for contracts + // whose result depends on the caller, e.g. that call require_auth or branch on the invoker. + // Leave empty for source-insensitive reads; a deterministic placeholder account is used. + string source_account = 4; +} + +message ReadContractResponse { + // Result is a serialized base64 string - return value of the Host Function call. + string result = 1; + // Ledger actually used for simulation + uint32 ledger_sequence = 2; + // Response + string error = 3; +} + +// ========== GetLatestLedger ========== + +message GetLatestLedgerRequest {} + +message GetLatestLedgerResponse { + bytes hash = 1; // 32-byte raw ledger hash + uint32 protocol_version = 2; + uint32 sequence = 3; + int64 ledger_close_time = 4; + bytes ledger_header_xdr = 5; // LedgerHeader binary XDR + bytes ledger_metadata_xdr = 6; // LedgerCloseMetaV2 binary XDR +} + +// ========== WriteReport ========== + +message WriteReportRequest { + string contract_id = 1; // Stellar contract address (C… StrKey) + sdk.v1alpha.ReportResponse report = 2; // signed report from consensus +} + +enum ReceiverContractExecutionStatus { + RECEIVER_CONTRACT_EXECUTION_STATUS_SUCCESS = 0; + RECEIVER_CONTRACT_EXECUTION_STATUS_REVERTED = 1; +} + +message WriteReportReply { + TxStatus tx_status = 1; + optional ReceiverContractExecutionStatus receiver_contract_execution_status = 2; + optional string tx_hash = 3; + optional uint64 transaction_fee = 4; // total fee paid in stroops + optional uint32 ledger_sequence = 5; + optional string error_message = 6; // user-actionable failure reason + optional uint64 block_timestamp = 7; // block timestamp in microseconds +} + +service Client { + option (tools.generator.v1alpha.capability) = { + mode: MODE_DON + capability_id: "stellar@1.0.0" + labels: { + key: "ChainSelector" + value: { + uint64_label: { + defaults: [ + { + key: "stellar-mainnet" + value: 17783245649066640917 + }, + { + key: "stellar-testnet" + value: 4894814558906953166 + } + ] + } + } + } + }; + + rpc GetLatestLedger(GetLatestLedgerRequest) returns (GetLatestLedgerResponse); + rpc ReadContract(ReadContractRequest) returns (ReadContractResponse); + rpc WriteReport(WriteReportRequest) returns (WriteReportReply); +} diff --git a/cre/capabilities/blockchain/stellar/v1alpha/scval.proto b/cre/capabilities/blockchain/stellar/v1alpha/scval.proto new file mode 100644 index 00000000..35ec4633 --- /dev/null +++ b/cre/capabilities/blockchain/stellar/v1alpha/scval.proto @@ -0,0 +1,210 @@ +syntax = "proto3"; +package capabilities.blockchain.stellar.v1alpha; + +// ============================================================ +// Scalar 128/256-bit integer parts +// These mirror the XDR UInt128Parts / Int128Parts / UInt256Parts / Int256Parts. +// ============================================================ + +message UInt128Parts { + uint64 hi = 1; + uint64 lo = 2; +} + +message Int128Parts { + int64 hi = 1; + uint64 lo = 2; +} + +message UInt256Parts { + uint64 hi_hi = 1; + uint64 hi_lo = 2; + uint64 lo_hi = 3; + uint64 lo_lo = 4; +} + +message Int256Parts { + int64 hi_hi = 1; + uint64 hi_lo = 2; + uint64 lo_hi = 3; + uint64 lo_lo = 4; +} + +// ============================================================ +// SCError (XDR: union SCError switch (SCErrorType type)) +// ============================================================ + +message ScError { + enum Type { + TYPE_CONTRACT = 0; + TYPE_WASM_VM = 1; + TYPE_CONTEXT = 2; + TYPE_STORAGE = 3; + TYPE_OBJECT = 4; + TYPE_CRYPTO = 5; + TYPE_EVENTS = 6; + TYPE_BUDGET = 7; + TYPE_VALUE = 8; + TYPE_AUTH = 9; + } + + enum Code { + CODE_ARITH_DOMAIN = 0; + CODE_INDEX_BOUNDS = 1; + CODE_INVALID_INPUT = 2; + CODE_MISSING_VALUE = 3; + CODE_EXISTING_VALUE = 4; + CODE_EXCEEDED_LIMIT = 5; + CODE_INVALID_ACTION = 6; + CODE_INTERNAL_ERROR = 7; + CODE_UNEXPECTED_TYPE = 8; + CODE_UNEXPECTED_SIZE = 9; + } + + Type type = 1; + + // For SCE_CONTRACT: user-defined numeric code. + // For all other types: one of the well-known SCErrorCode values. + oneof code_or_contract { + uint32 contract_code = 2; + Code code = 3; + } +} + +// ============================================================ +// SCAddress (XDR: union SCAddress switch (SCAddressType type)) +// ============================================================ + +message MuxedEd25519Account { + uint64 id = 1; + bytes ed25519 = 2; // 32-byte Ed25519 public key +} + +// A claimable balance ID is simply a 32-byte hash tagged with a type. +// We encode only the v0 variant (hash bytes) since that is the only +// type in the current protocol. +message ClaimableBalanceId { + bytes v0 = 1; // 32-byte SHA-256 hash +} + +message ScAddress { + oneof address { + bytes account_id = 1; // 32-byte Ed25519 public key (AccountID) + bytes contract_id = 2; // 32-byte contract hash (ContractID) + MuxedEd25519Account muxed_account = 3; // muxed Ed25519 account + ClaimableBalanceId claimable_balance_id = 4; + bytes liquidity_pool_id = 5; // 32-byte pool hash (PoolID) + } +} + +// ============================================================ +// Contract executable (XDR: union ContractExecutable) +// ============================================================ + +message ContractExecutable { + oneof type { + bytes wasm_hash = 1; // SHA-256 hash of the WASM module + bool stellar_asset = 2; // true ⇒ CONTRACT_EXECUTABLE_STELLAR_ASSET + } +} + +// ============================================================ +// SCContractInstance (XDR: struct SCContractInstance) +// ============================================================ + +// Forward-declared via ScMapEntry below; proto3 allows forward references. +message ScContractInstance { + ContractExecutable executable = 1; + repeated ScMapEntry storage = 2; // empty slice ⇒ no storage map (nil in XDR) +} + +// ============================================================ +// SCNonceKey (XDR: struct SCNonceKey) +// ============================================================ + +message ScNonceKey { + int64 nonce = 1; +} + +// ============================================================ +// SCMapEntry (XDR: struct SCMapEntry) +// ============================================================ + +message ScMapEntry { + ScVal key = 1; + ScVal val = 2; +} + +// ============================================================ +// Vec / Map containers (XDR: SCVec / SCMap typedefs) +// ============================================================ + +message ScVec { + repeated ScVal values = 1; +} + +message ScMap { + repeated ScMapEntry entries = 1; +} + +// ============================================================ +// Void – sentinel for XDR variants that carry no payload +// ============================================================ + +message Void {} + +// ============================================================ +// SCVal (XDR: union SCVal switch (SCValType type)) +// +// The active oneof field implicitly encodes the SCValType +// discriminant. Mapping: +// b → SCV_BOOL +// void_val → SCV_VOID +// error → SCV_ERROR +// u32 → SCV_U32 +// i32 → SCV_I32 +// u64 → SCV_U64 +// i64 → SCV_I64 +// timepoint → SCV_TIMEPOINT (uint64) +// duration → SCV_DURATION (uint64) +// u128 → SCV_U128 +// i128 → SCV_I128 +// u256 → SCV_U256 +// i256 → SCV_I256 +// bytes_val → SCV_BYTES +// str → SCV_STRING +// sym → SCV_SYMBOL (≤32 chars) +// vec → SCV_VEC +// map → SCV_MAP +// address → SCV_ADDRESS +// contract_instance → SCV_CONTRACT_INSTANCE +// ledger_key_contract_instance → SCV_LEDGER_KEY_CONTRACT_INSTANCE +// nonce_key → SCV_LEDGER_KEY_NONCE +// ============================================================ + +message ScVal { + oneof value { + bool b = 1; + Void void_val = 2; + ScError error = 3; + uint32 u32 = 4; + int32 i32 = 5; + uint64 u64 = 6; + int64 i64 = 7; + uint64 timepoint = 8; + uint64 duration = 9; + UInt128Parts u128 = 10; + Int128Parts i128 = 11; + UInt256Parts u256 = 12; + Int256Parts i256 = 13; + bytes bytes_val = 14; + string str = 15; + string sym = 16; + ScVec vec = 17; + ScMap map = 18; + ScAddress address = 19; + ScContractInstance contract_instance = 20; + Void ledger_key_contract_instance = 21; + ScNonceKey nonce_key = 22; + } +} diff --git a/cre/capabilities/compute/confidentialworkflow/v1alpha/client.proto b/cre/capabilities/compute/confidentialworkflow/v1alpha/client.proto index fe43fab6..c73c39e8 100644 --- a/cre/capabilities/compute/confidentialworkflow/v1alpha/client.proto +++ b/cre/capabilities/compute/confidentialworkflow/v1alpha/client.proto @@ -2,6 +2,8 @@ syntax = "proto3"; package capabilities.compute.confidentialworkflow.v1alpha; +import "google/protobuf/empty.proto"; +import "sdk/v1alpha/sdk.proto"; import "tools/generator/v1alpha/cre_metadata.proto"; message SecretIdentifier { @@ -11,17 +13,45 @@ message SecretIdentifier { } // WorkflowExecution is the public data sent to the enclave. -// Becomes ComputeRequest.PublicData after proto serialization. +// Becomes ComputeRequest.PublicData after proto serialization, which is +// covered by ComputeRequest.Hash() for F+1 quorum matching at the enclave. message WorkflowExecution { // workflow_id identifies the workflow to execute. string workflow_id = 1; - // binary_url is the URL from which the enclave fetches the compiled WASM binary. + // binary_url is the URL from which the enclave fetches the compiled WASM + // binary. It lives inside WorkflowExecution (PublicData), covered by + // ComputeRequest.Hash() for F+1 quorum, so every node agrees on the same + // canonical locator. Authentication to the storage service is handled out of + // band by the fetch sidecar, so this is a stable, node-agnostic locator + // rather than a per-node pre-signed URL. string binary_url = 2; // binary_hash is the expected SHA-256 hash of the WASM binary, for integrity verification. bytes binary_hash = 3; // execute_request is a serialized sdk.v1alpha.ExecuteRequest proto. // Contains either a subscribe request or a trigger execution request. bytes execute_request = 4; + // owner is the on-chain owner address of the workflow (hex, 0x-prefixed). + // Used by the enclave for runtime secret fetching from VaultDON. + string owner = 5; + // execution_id is the unique execution identifier (64 hex chars, 32 bytes). + // Used by the enclave for runtime secret fetching from VaultDON. + string execution_id = 6; + // org_id is the organization identifier for the workflow owner. + // Used by the enclave when fetching secrets from VaultDON with org-based ownership. + string org_id = 7; + // requirements describes what is needed to run this workflow (e.g. TEE type + // and regions). + sdk.v1alpha.Requirements requirements = 8; + // sdk_execute_request is the structured form of execute_request. It carries + // the same sdk.v1alpha.ExecuteRequest as the serialized execute_request bytes + // field; the two are independent on the wire (setting one does not populate + // the other). Consumers that want the typed message read this; legacy + // consumers continue to unmarshal execute_request. + sdk.v1alpha.ExecuteRequest sdk_execute_request = 9; + + // restrictions on the capabilities and the secrets.bool + // This is sent to avoid overhead when a TEE is not compromised, the DON will verify the restrictions on its end as well. + sdk.v1alpha.Restrictions restrictions = 10; } // ConfidentialWorkflowRequest is the input provided to the confidential workflows capability. @@ -29,12 +59,25 @@ message WorkflowExecution { message ConfidentialWorkflowRequest { repeated SecretIdentifier vault_don_secrets = 1; WorkflowExecution execution = 2; + // Deprecated: the per-node pre-signed URL approach is superseded. binary_url + // now travels inside WorkflowExecution (PublicData) as a canonical locator, + // with authentication to the storage service handled out of band by the fetch + // sidecar. Retained for back-compat; no longer populated. + string binary_url = 3 [deprecated = true]; } // ConfidentialWorkflowResponse is the output from the confidential workflows capability. message ConfidentialWorkflowResponse { // execution_result is a serialized sdk.v1alpha.ExecutionResult proto. bytes execution_result = 1; + // sdk_execution_result is the structured form of execution_result. It carries + // the same sdk.v1alpha.ExecutionResult as the serialized execution_result + // bytes field; the two are independent on the wire. + sdk.v1alpha.ExecutionResult sdk_execution_result = 2; +} + +message ProvidedTeesResponse { + repeated sdk.v1alpha.TeeTypeAndRegions tee = 1; } service Client { @@ -44,4 +87,5 @@ service Client { }; rpc Execute(ConfidentialWorkflowRequest) returns (ConfidentialWorkflowResponse); + rpc ProvidedTees(google.protobuf.Empty) returns (ProvidedTeesResponse); } diff --git a/cre/capabilities/internal/README.md b/cre/capabilities/internal/README.md index 326b03f4..e8c22708 100644 --- a/cre/capabilities/internal/README.md +++ b/cre/capabilities/internal/README.md @@ -1,3 +1,3 @@ -Capabilities in internal are meant to be used directly by the SDK and are not intended for use by workflow authors. +Capabilities in internal are meant to be used directly by the SDKs and are not intended for use by workflow authors. Other than consensus, the capabilities in this directory are for SDK testing only. diff --git a/cre/capabilities/networking/http/v1alpha/client.proto b/cre/capabilities/networking/http/v1alpha/client.proto index a42e23bd..4a32109e 100644 --- a/cre/capabilities/networking/http/v1alpha/client.proto +++ b/cre/capabilities/networking/http/v1alpha/client.proto @@ -16,6 +16,12 @@ message HeaderValues { repeated string values = 1; } +// MtlsAuth represents the private-key/cert pair for mtls auth. +message MtlsAuth { + bytes private_key = 1; + bytes certificate = 2; +} + message Request { string url = 1; string method = 2; @@ -24,6 +30,7 @@ message Request { google.protobuf.Duration timeout = 5; // Request timeout duration CacheSettings cache_settings = 6; map multi_headers = 7; + optional MtlsAuth mtls = 8; } message Response { @@ -37,6 +44,7 @@ service Client { option (tools.generator.v1alpha.capability) = { mode: MODE_NODE capability_id: "http-actions@1.0.0-alpha" + additional_environments: [ADDITIONAL_ENVIRONMENTS_TEE] }; rpc SendRequest(Request) returns (Response); } diff --git a/cre/go/go.mod b/cre/go/go.mod index 1cc49f3a..3f2be7ad 100644 --- a/cre/go/go.mod +++ b/cre/go/go.mod @@ -5,7 +5,7 @@ go 1.24.5 require ( github.com/go-viper/mapstructure/v2 v2.4.0 github.com/shopspring/decimal v1.4.0 - github.com/smartcontractkit/chain-selectors v1.0.89 + github.com/smartcontractkit/chain-selectors v1.0.104 github.com/stretchr/testify v1.11.1 google.golang.org/protobuf v1.36.7 ) diff --git a/cre/go/go.sum b/cre/go/go.sum index a0580bf6..9894ee83 100644 --- a/cre/go/go.sum +++ b/cre/go/go.sum @@ -10,8 +10,8 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k= github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= -github.com/smartcontractkit/chain-selectors v1.0.89 h1:L9oWZGqQXWyTPnC6ODXgu3b0DFyLmJ9eHv+uJrE9IZY= -github.com/smartcontractkit/chain-selectors v1.0.89/go.mod h1:qy7whtgG5g+7z0jt0nRyii9bLND9m15NZTzuQPkMZ5w= +github.com/smartcontractkit/chain-selectors v1.0.104 h1:/n9pPGM5W/+r1eHoWZv4VwX9LNS1af4+ICyhM8zKRNM= +github.com/smartcontractkit/chain-selectors v1.0.104/go.mod h1:qy7whtgG5g+7z0jt0nRyii9bLND9m15NZTzuQPkMZ5w= github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= diff --git a/cre/go/installer/pkg/embedded_gen.go b/cre/go/installer/pkg/embedded_gen.go index 0b5ed0f9..b5e80b76 100755 --- a/cre/go/installer/pkg/embedded_gen.go +++ b/cre/go/installer/pkg/embedded_gen.go @@ -28,6 +28,7 @@ message AccountAPTBalanceReply { message ViewRequest { ViewPayload payload = 1; + optional uint64 ledger_version = 2; // nil means use latest ledger version } message ViewReply { @@ -147,6 +148,11 @@ message GasConfig { // ========== WriteReport ========== +enum ReceiverContractExecutionStatus { + RECEIVER_CONTRACT_EXECUTION_STATUS_SUCCESS = 0; + RECEIVER_CONTRACT_EXECUTION_STATUS_REVERTED = 1; +} + message WriteReportRequest { bytes receiver = 1; // 32-byte Aptos account address of the receiver module optional GasConfig gas_config = 2; // optional gas configuration @@ -158,6 +164,8 @@ message WriteReportReply { optional string tx_hash = 2; // transaction hash (hex string with 0x prefix) optional uint64 transaction_fee = 3; // gas used in octas optional string error_message = 4; + optional ReceiverContractExecutionStatus receiver_contract_execution_status = 5; + optional uint64 block_timestamp = 6; // block timestamp in microseconds } // ========== Service ========== @@ -365,6 +373,14 @@ service Client { value: { uint64_label: { defaults: [ + { + key: "adi-mainnet" + value: 4059281736450291836 + }, + { + key: "adi-testnet" + value: 9418205736192840573 + }, { key: "apechain-testnet-curtis" value: 9900119385908781505 @@ -389,6 +405,26 @@ service Client { key: "binance_smart_chain-testnet" value: 13264668187771770619 }, + { + key: "celo-mainnet" + value: 1346049177634351622 + }, + { + key: "celo-sepolia" + value: 3761762704474186180 + }, + { + key: "cronos-testnet" + value: 2995292832068775165 + }, + { + key: "dtcc-mainnet-appchain" + value: 13879014182901017172 + }, + { + key: "dtcc-testnet-andesite" + value: 15513093881969820114 + }, { key: "ethereum-mainnet" value: 5009297550715157269 @@ -401,10 +437,26 @@ service Client { key: "ethereum-mainnet-base-1" value: 15971525489660198786 }, + { + key: "ethereum-mainnet-ink-1" + value: 3461204551265785888 + }, + { + key: "ethereum-mainnet-linea-1" + value: 4627098889531055414 + }, + { + key: "ethereum-mainnet-mantle-1" + value: 1556008542357238666 + }, { key: "ethereum-mainnet-optimism-1" value: 3734403246176062136 }, + { + key: "ethereum-mainnet-scroll-1" + value: 13204309965629103672 + }, { key: "ethereum-mainnet-worldchain-1" value: 2049429975587534727 @@ -433,10 +485,22 @@ service Client { key: "ethereum-testnet-sepolia-linea-1" value: 5719461335882077547 }, + { + key: "ethereum-testnet-sepolia-mantle-1" + value: 8236463271206331221 + }, { key: "ethereum-testnet-sepolia-optimism-1" value: 5224473277236331295 }, + { + key: "ethereum-testnet-sepolia-scroll-1" + value: 2279865765895943307 + }, + { + key: "ethereum-testnet-sepolia-unichain-1" + value: 14135854469784514356 + }, { key: "ethereum-testnet-sepolia-worldchain-1" value: 5299555114858065850 @@ -445,6 +509,18 @@ service Client { key: "ethereum-testnet-sepolia-zksync-1" value: 6898391096552792247 }, + { + key: "gnosis_chain-mainnet" + value: 465200170687744372 + }, + { + key: "gnosis_chain-testnet-chiado" + value: 8871595565390010547 + }, + { + key: "hyperliquid-mainnet" + value: 2442541497099098535 + }, { key: "hyperliquid-testnet" value: 4286062357653186312 @@ -461,10 +537,34 @@ service Client { key: "jovay-testnet" value: 945045181441419236 }, + { + key: "megaeth-mainnet" + value: 6093540873831549674 + }, + { + key: "megaeth-testnet-2" + value: 18241817625092392675 + }, + { + key: "monad-mainnet" + value: 8481857512324358265 + }, + { + key: "monad-testnet" + value: 2183018362218727504 + }, + { + key: "pharos-atlantic-testnet" + value: 16098325658947243212 + }, { key: "pharos-mainnet" value: 7801139999541420232 }, + { + key: "plasma-mainnet" + value: 9335212494177455608 + }, { key: "plasma-testnet" value: 3967220077692964309 @@ -480,6 +580,50 @@ service Client { { key: "private-testnet-andesite" value: 6915682381028791124 + }, + { + key: "private-testnet-pumice" + value: 1564738277398880633 + }, + { + key: "private-testnet-quartzite" + value: 4175996748267305081 + }, + { + key: "private-testnet-rhyolite" + value: 604447335222770945 + }, + { + key: "robinhood-testnet" + value: 2032988798112970440 + }, + { + key: "sonic-mainnet" + value: 1673871237479749969 + }, + { + key: "sonic-testnet" + value: 1763698235108410440 + }, + { + key: "stable-testnet" + value: 11793402411494852765 + }, + { + key: "tac-testnet" + value: 9488606126177218005 + }, + { + key: "tempo-testnet-moderato" + value: 8457817439310187923 + }, + { + key: "t-rex-testnet" + value: 17611928792452358269 + }, + { + key: "xlayer-testnet" + value: 10212741611335999305 } ] } @@ -527,10 +671,783 @@ message WriteReportReply { } ` +const blockchainSolanaV1alphaClientEmbedded = `syntax = "proto3"; +package capabilities.blockchain.solana.v1alpha; + +import "sdk/v1alpha/sdk.proto"; +import "tools/generator/v1alpha/cre_metadata.proto"; +import "values/v1/values.proto"; + +// Account/tx data encodings. +enum EncodingType { + ENCODING_TYPE_NONE = 0; + ENCODING_TYPE_BASE58 = 1; // for data <129 bytes + ENCODING_TYPE_BASE64 = 2; // any size + ENCODING_TYPE_BASE64_ZSTD = 3; // zstd-compressed, base64-wrapped + ENCODING_TYPE_JSON_PARSED = 4; // program parsers; fallback to base64 if unknown + ENCODING_TYPE_JSON = 5; // raw JSON (rare; prefer JSON_PARSED) +} + +// Read consistency of queried state. +enum CommitmentType { + COMMITMENT_TYPE_NONE = 0; + COMMITMENT_TYPE_FINALIZED = 1; // cluster-finalized + COMMITMENT_TYPE_CONFIRMED = 2; // voted by supermajority + COMMITMENT_TYPE_PROCESSED = 3; // node’s latest +} + +// Cluster confirmation status of a tx/signature. +enum ConfirmationStatusType { + CONFIRMATION_STATUS_TYPE_NONE = 0; + CONFIRMATION_STATUS_TYPE_PROCESSED = 1; + CONFIRMATION_STATUS_TYPE_CONFIRMED = 2; + CONFIRMATION_STATUS_TYPE_FINALIZED = 3; +} + +// Transaction execution status returned by submitters/simulations. +enum TxStatus { + TX_STATUS_FATAL = 0; // unrecoverable failure + TX_STATUS_ABORTED = 1; // not executed / dropped + TX_STATUS_SUCCESS = 2; // executed successfully +} + +// On-chain account state. +message Account { + uint64 lamports = 1; // balance in lamports (1e-9 SOL) + bytes owner = 2; // 32-byte program id (Pubkey) + DataBytesOrJSON data = 3; // account data (encoded or JSON) + bool executable = 4; // true if this is a program account + values.v1.BigInt rent_epoch = 5; // next rent epoch + uint64 space = 6; // data length in bytes +} + +// Compute budget configuration when submitting txs. +message ComputeConfig { + uint32 compute_limit = 1; // max CUs (approx per-tx limit) +} + +// Raw bytes vs parsed JSON (as returned by RPC). +message DataBytesOrJSON { + EncodingType encoding = 1; + oneof body { + bytes raw = 2; // program data (node’s base64/base58 decoded) + bytes json = 3; // json: UTF-8 bytes of the jsonParsed payload. + } +} + +// Return a slice of account data. +message DataSlice { + uint64 offset = 1; // start byte + uint64 length = 2; // number of bytes +} + +// Options for GetAccountInfo. +message GetAccountInfoOpts { + EncodingType encoding = 1; // data encoding + CommitmentType commitment = 2; // read consistency + DataSlice data_slice = 3; // optional slice window + uint64 min_context_slot = 4; // lower bound slot +} + +// Reply for GetAccountInfoWithOpts. +message GetAccountInfoWithOptsReply { + optional Account value = 2; // account (may be empty) +} + +// Request for GetAccountInfoWithOpts. +message GetAccountInfoWithOptsRequest { + bytes account = 1; // 32-byte Pubkey + GetAccountInfoOpts opts = 2; +} + +// Reply for GetBalance. +message GetBalanceReply { + uint64 value = 1; // lamports +} + +// Request for GetBalance. +message GetBalanceRequest { + bytes addr = 1; // 32-byte Pubkey + CommitmentType commitment = 2; // read consistency +} + +// Options for GetBlock. +message GetBlockOpts { + CommitmentType commitment = 4; // read consistency +} + +// Block response. +message GetBlockReply { + bytes blockhash = 1; // 32-byte block hash + bytes previous_blockhash = 2; // 32-byte parent hash + uint64 parent_slot = 3; + optional int64 block_time = 4; // unix seconds, node may not report it + uint64 block_height = 5; // chain height +} + +// Request for GetBlock. +message GetBlockRequest { + uint64 slot = 1; // target slot + GetBlockOpts opts = 2; +} + +// Fee quote for a base58-encoded Message. +message GetFeeForMessageReply { + uint64 fee = 1; // lamports +} + +message GetFeeForMessageRequest { + string message = 1; // must be base58-encoded Message + CommitmentType commitment = 2; // read consistency +} + +// Options for GetMultipleAccounts. +message GetMultipleAccountsOpts { + EncodingType encoding = 1; + CommitmentType commitment = 2; + DataSlice data_slice = 3; + uint64 min_context_slot = 4; +} + +message OptionalAccountWrapper { + optional Account account = 1; +} + +// Reply for GetMultipleAccountsWithOpts. +message GetMultipleAccountsWithOptsReply { + repeated OptionalAccountWrapper value = 2; // accounts (nil entries allowed) +} + +// Request for GetMultipleAccountsWithOpts. +message GetMultipleAccountsWithOptsRequest { + repeated bytes accounts = 1; // list of 32-byte Pubkeys + GetMultipleAccountsOpts opts = 2; +} + +// Memcmp filter for getProgramAccounts. +message RPCFilterMemcmp { + uint64 offset = 1; // byte offset into account data + bytes bytes = 2; // data to match (RPC encodes as base58) +} + +// Account filter for getProgramAccounts (memcmp or data size). +message RPCFilter { + RPCFilterMemcmp memcmp = 1; + uint64 data_size = 2; // match accounts with this data length +} + +// Options for GetProgramAccounts. +message GetProgramAccountsOpts { + EncodingType encoding = 1; + CommitmentType commitment = 2; + DataSlice data_slice = 3; + repeated RPCFilter filters = 4; +} + +// Program-owned account with its pubkey. +message KeyedAccount { + bytes pubkey = 1; // 32-byte Pubkey + Account account = 2; +} + +// Reply for GetProgramAccounts. +message GetProgramAccountsReply { + repeated KeyedAccount value = 1; +} + +// Request for GetProgramAccounts. +message GetProgramAccountsRequest { + bytes program = 1; // 32-byte program Pubkey + GetProgramAccountsOpts opts = 2; +} + +// Reply for GetSignatureStatuses. +message GetSignatureStatusesReply { + repeated GetSignatureStatusesResult results = 1; // 1:1 with input +} + +// Request for GetSignatureStatuses. +message GetSignatureStatusesRequest { + repeated bytes sigs = 1; // 64-byte signatures +} + +// Per-signature status. +message GetSignatureStatusesResult { + uint64 slot = 1; // processed slot + optional uint64 confirmations = 2; // null->0 here + string err = 3; // error JSON string (empty on success) + ConfirmationStatusType confirmation_status = 4; +} + +// Current “height” (blocks below latest). +message GetSlotHeightReply { + uint64 height = 1; +} + +message GetSlotHeightRequest { + CommitmentType commitment = 1; // read consistency +} + +// Message header counts. +message MessageHeader { + uint32 num_required_signatures = 1; // signer count + uint32 num_readonly_signed_accounts = 2; // trailing signed RO + uint32 num_readonly_unsigned_accounts = 3; // trailing unsigned RO +} + +// Parsed message (no address tables). +message ParsedMessage { + bytes recent_blockhash = 1; // 32-byte Hash + repeated bytes account_keys = 2; // list of 32-byte Pubkeys + MessageHeader header = 3; + repeated CompiledInstruction instructions = 4; +} + +// Parsed transaction (signatures + message). +message ParsedTransaction { + repeated bytes signatures = 1; // 64-byte signatures + ParsedMessage message = 2; +} + +// Token amount (UI-friendly). +message UiTokenAmount { + string amount = 1; // raw integer string + uint32 decimals = 2; // mint decimals + string ui_amount_string = 4; // amount / 10^decimals +} + +// SPL token balance entry. +message TokenBalance { + uint32 account_index = 1; // index in account_keys + optional bytes owner = 2; // 32-byte owner (optional) + optional bytes program_id = 3; // 32-byte token program (optional) + bytes mint = 4; // 32-byte mint + UiTokenAmount ui = 5; // formatted amounts +} + +// Inner instruction list at a given outer instruction index. +message InnerInstruction { + uint32 index = 1; // outer ix index + repeated CompiledInstruction instructions = 2; // invoked ixs +} + +// Address table lookups expanded by loader. +message LoadedAddresses { + repeated bytes readonly = 1; // 32-byte Pubkeys + repeated bytes writable = 2; // 32-byte Pubkeys +} + +// Compiled (program) instruction. +message CompiledInstruction { + uint32 program_id_index = 1; // index into account_keys + repeated uint32 accounts = 2; // indices into account_keys + bytes data = 3; // program input bytes + uint32 stack_height = 4; // if recorded by node +} + +// Raw bytes with encoding tag. +message Data { + bytes content = 1; // raw bytes + EncodingType encoding = 2; // how it was encoded originally +} + +// Program return data. +message ReturnData { + bytes program_id = 1; // 32-byte Pubkey + Data data = 2; // raw return bytes +} + +// Transaction execution metadata. +message TransactionMeta { + string err_json = 1; // error JSON (empty on success) + uint64 fee = 2; // lamports + repeated uint64 pre_balances = 3; // lamports per account + repeated uint64 post_balances = 4; // lamports per account + repeated string log_messages = 5; // runtime logs + repeated TokenBalance pre_token_balances = 6; + repeated TokenBalance post_token_balances = 7; + repeated InnerInstruction inner_instructions = 8; + LoadedAddresses loaded_addresses = 9; + ReturnData return_data = 10; + optional uint64 compute_units_consumed = 11; // CUs +} + +// Transaction envelope: raw bytes or parsed struct. +message TransactionEnvelope { + oneof transaction { + bytes raw = 1; // raw tx bytes (for RAW/base64) + ParsedTransaction parsed = 2; // parsed tx (for JSON_PARSED) + } +} + +// GetTransaction reply. +message GetTransactionReply { + uint64 slot = 1; // processed slot + optional int64 block_time = 2; // unix seconds + optional TransactionEnvelope transaction = 3; // tx bytes or parsed + optional TransactionMeta meta = 4; // may be omitted by node +} + +// GetTransaction request. +message GetTransactionRequest { + bytes signature = 1; // 64-byte signature +} + +// Simulation options. +message SimulateTXOpts { + bool sig_verify = 1; // verify sigs + CommitmentType commitment = 2; // read consistency + bool replace_recent_blockhash = 3; // refresh blockhash + SimulateTransactionAccountsOpts accounts = 4; // return accounts +} + +// Simulation result. +message SimulateTXReply { + string err = 1; // empty on success + repeated string logs = 2; // runtime logs + repeated Account accounts = 3; // returned accounts + uint64 units_consumed = 4; // CUs +} + +// Simulation request. +message SimulateTXRequest { + bytes receiver = 1; // 32-byte program id (target) + string encoded_transaction = 2; // base64/base58 tx + SimulateTXOpts opts = 3; +} + +// Accounts to return during simulation. +message SimulateTransactionAccountsOpts { + EncodingType encoding = 1; // account data encoding + repeated bytes addresses = 2; // 32-byte Pubkeys +} + +enum ComparisonOperator { + COMPARISON_OPERATOR_EQ = 0; + COMPARISON_OPERATOR_NEQ = 1; + COMPARISON_OPERATOR_GT = 2; + COMPARISON_OPERATOR_LT = 3; + COMPARISON_OPERATOR_GTE = 4; + COMPARISON_OPERATOR_LTE = 5; +} + +message ValueComparator { + bytes value = 1; + ComparisonOperator operator = 2; +} + +message SubkeyConfig { + repeated string path = 1; + repeated ValueComparator comparers = 2; +} + +message CPIFilterConfig { + bytes dest_address = 1; + bytes method_name = 2; +} + +message FilterLogTriggerRequest { + string name = 1; + bytes address = 2; // Solana PublicKey (32 bytes) + string event_name = 3; + bytes contract_idl_json = 4; + repeated SubkeyConfig subkeys = 5; + optional CPIFilterConfig cpi_filter_config = 6; +} + +message Log { + string chain_id = 1; // Chain identifier + int64 log_index = 2; // Index of the log within the block + bytes block_hash = 3; // 32-byte block hash + int64 block_number = 4; // Block/slot number + uint64 block_timestamp = 5; // Unix timestamp of the block + bytes address = 6; // 32-byte program PublicKey + bytes event_sig = 7; // 8-byte event signature + bytes tx_hash = 8; // 64-byte transaction signature + bytes data = 9; // Decoded event data + int64 sequence_num = 10; // Sequence number for ordering + optional string error = 11; // Error message if log processing failed +} + +// All metas are non-signers. +message AccountMeta { + bytes public_key = 1; // 32 bytes account public key + bool is_writable = 2; // write flag +} + +message WriteReportRequest { + repeated AccountMeta remaining_accounts = 1; // accounts that are required by the receiver to accept the report + bytes receiver = 2; // 32 bytes receiver + optional ComputeConfig compute_config = 3; + sdk.v1alpha.ReportResponse report = 4; +} + +enum ReceiverContractExecutionStatus { + RECEIVER_CONTRACT_EXECUTION_STATUS_SUCCESS = 0; + RECEIVER_CONTRACT_EXECUTION_STATUS_REVERTED = 1; +} + +message WriteReportReply { + TxStatus tx_status = 1; + optional ReceiverContractExecutionStatus receiver_contract_execution_status = 2; + optional bytes tx_signature = 3; + optional uint64 transaction_fee = 4; + optional string error_message = 5; +} + +service Client { + option (tools.generator.v1alpha.capability) = { + mode: MODE_DON + capability_id: "solana@1.0.0" + labels: { + // from https://github.com/smartcontractkit/chain-selectors/blob/main/selectors.yml + // as a subset of the selectors supported on the CRE + key: "ChainSelector" + value: { + uint64_label: { + defaults: [ + { + key: "solana-devnet" + value: 16423721717087811551 + }, + { + key: "solana-mainnet" + value: 124615329519749607 + } + ] + } + } + } + }; + + rpc GetAccountInfoWithOpts(GetAccountInfoWithOptsRequest) returns (GetAccountInfoWithOptsReply); + rpc GetBalance(GetBalanceRequest) returns (GetBalanceReply); + rpc GetBlock(GetBlockRequest) returns (GetBlockReply); + rpc GetFeeForMessage(GetFeeForMessageRequest) returns (GetFeeForMessageReply); + rpc GetMultipleAccountsWithOpts(GetMultipleAccountsWithOptsRequest) returns (GetMultipleAccountsWithOptsReply); + rpc GetProgramAccounts(GetProgramAccountsRequest) returns (GetProgramAccountsReply); + rpc GetSignatureStatuses(GetSignatureStatusesRequest) returns (GetSignatureStatusesReply); + rpc GetSlotHeight(GetSlotHeightRequest) returns (GetSlotHeightReply); + rpc GetTransaction(GetTransactionRequest) returns (GetTransactionReply); + rpc LogTrigger(FilterLogTriggerRequest) returns (stream Log); + rpc WriteReport(WriteReportRequest) returns (WriteReportReply); +} +` + +const blockchainStellarV1alphaClientEmbedded = `syntax = "proto3"; +package capabilities.blockchain.stellar.v1alpha; + +import "capabilities/blockchain/stellar/v1alpha/scval.proto"; +import "sdk/v1alpha/sdk.proto"; +import "tools/generator/v1alpha/cre_metadata.proto"; + +enum TxStatus { + TX_STATUS_FATAL = 0; + TX_STATUS_REVERTED = 1; + TX_STATUS_SUCCESS = 2; +} + +message ReadContractRequest { + string contract_id = 1; + string function = 2; + repeated ScVal args = 3; // Typed Soroban contract arguments (replaces raw XDR bytes) + // Source account (G… StrKey) to simulate the call as (the invoker). Required for contracts + // whose result depends on the caller, e.g. that call require_auth or branch on the invoker. + // Leave empty for source-insensitive reads; a deterministic placeholder account is used. + string source_account = 4; +} + +message ReadContractResponse { + // Result is a serialized base64 string - return value of the Host Function call. + string result = 1; + // Ledger actually used for simulation + uint32 ledger_sequence = 2; + // Response + string error = 3; +} + +// ========== GetLatestLedger ========== + +message GetLatestLedgerRequest {} + +message GetLatestLedgerResponse { + bytes hash = 1; // 32-byte raw ledger hash + uint32 protocol_version = 2; + uint32 sequence = 3; + int64 ledger_close_time = 4; + bytes ledger_header_xdr = 5; // LedgerHeader binary XDR + bytes ledger_metadata_xdr = 6; // LedgerCloseMetaV2 binary XDR +} + +// ========== WriteReport ========== + +message WriteReportRequest { + string contract_id = 1; // Stellar contract address (C… StrKey) + sdk.v1alpha.ReportResponse report = 2; // signed report from consensus +} + +enum ReceiverContractExecutionStatus { + RECEIVER_CONTRACT_EXECUTION_STATUS_SUCCESS = 0; + RECEIVER_CONTRACT_EXECUTION_STATUS_REVERTED = 1; +} + +message WriteReportReply { + TxStatus tx_status = 1; + optional ReceiverContractExecutionStatus receiver_contract_execution_status = 2; + optional string tx_hash = 3; + optional uint64 transaction_fee = 4; // total fee paid in stroops + optional uint32 ledger_sequence = 5; + optional string error_message = 6; // user-actionable failure reason + optional uint64 block_timestamp = 7; // block timestamp in microseconds +} + +service Client { + option (tools.generator.v1alpha.capability) = { + mode: MODE_DON + capability_id: "stellar@1.0.0" + labels: { + key: "ChainSelector" + value: { + uint64_label: { + defaults: [ + { + key: "stellar-mainnet" + value: 17783245649066640917 + }, + { + key: "stellar-testnet" + value: 4894814558906953166 + } + ] + } + } + } + }; + + rpc GetLatestLedger(GetLatestLedgerRequest) returns (GetLatestLedgerResponse); + rpc ReadContract(ReadContractRequest) returns (ReadContractResponse); + rpc WriteReport(WriteReportRequest) returns (WriteReportReply); +} +` + +const blockchainStellarV1alphaScvalEmbedded = `syntax = "proto3"; +package capabilities.blockchain.stellar.v1alpha; + +// ============================================================ +// Scalar 128/256-bit integer parts +// These mirror the XDR UInt128Parts / Int128Parts / UInt256Parts / Int256Parts. +// ============================================================ + +message UInt128Parts { + uint64 hi = 1; + uint64 lo = 2; +} + +message Int128Parts { + int64 hi = 1; + uint64 lo = 2; +} + +message UInt256Parts { + uint64 hi_hi = 1; + uint64 hi_lo = 2; + uint64 lo_hi = 3; + uint64 lo_lo = 4; +} + +message Int256Parts { + int64 hi_hi = 1; + uint64 hi_lo = 2; + uint64 lo_hi = 3; + uint64 lo_lo = 4; +} + +// ============================================================ +// SCError (XDR: union SCError switch (SCErrorType type)) +// ============================================================ + +message ScError { + enum Type { + TYPE_CONTRACT = 0; + TYPE_WASM_VM = 1; + TYPE_CONTEXT = 2; + TYPE_STORAGE = 3; + TYPE_OBJECT = 4; + TYPE_CRYPTO = 5; + TYPE_EVENTS = 6; + TYPE_BUDGET = 7; + TYPE_VALUE = 8; + TYPE_AUTH = 9; + } + + enum Code { + CODE_ARITH_DOMAIN = 0; + CODE_INDEX_BOUNDS = 1; + CODE_INVALID_INPUT = 2; + CODE_MISSING_VALUE = 3; + CODE_EXISTING_VALUE = 4; + CODE_EXCEEDED_LIMIT = 5; + CODE_INVALID_ACTION = 6; + CODE_INTERNAL_ERROR = 7; + CODE_UNEXPECTED_TYPE = 8; + CODE_UNEXPECTED_SIZE = 9; + } + + Type type = 1; + + // For SCE_CONTRACT: user-defined numeric code. + // For all other types: one of the well-known SCErrorCode values. + oneof code_or_contract { + uint32 contract_code = 2; + Code code = 3; + } +} + +// ============================================================ +// SCAddress (XDR: union SCAddress switch (SCAddressType type)) +// ============================================================ + +message MuxedEd25519Account { + uint64 id = 1; + bytes ed25519 = 2; // 32-byte Ed25519 public key +} + +// A claimable balance ID is simply a 32-byte hash tagged with a type. +// We encode only the v0 variant (hash bytes) since that is the only +// type in the current protocol. +message ClaimableBalanceId { + bytes v0 = 1; // 32-byte SHA-256 hash +} + +message ScAddress { + oneof address { + bytes account_id = 1; // 32-byte Ed25519 public key (AccountID) + bytes contract_id = 2; // 32-byte contract hash (ContractID) + MuxedEd25519Account muxed_account = 3; // muxed Ed25519 account + ClaimableBalanceId claimable_balance_id = 4; + bytes liquidity_pool_id = 5; // 32-byte pool hash (PoolID) + } +} + +// ============================================================ +// Contract executable (XDR: union ContractExecutable) +// ============================================================ + +message ContractExecutable { + oneof type { + bytes wasm_hash = 1; // SHA-256 hash of the WASM module + bool stellar_asset = 2; // true ⇒ CONTRACT_EXECUTABLE_STELLAR_ASSET + } +} + +// ============================================================ +// SCContractInstance (XDR: struct SCContractInstance) +// ============================================================ + +// Forward-declared via ScMapEntry below; proto3 allows forward references. +message ScContractInstance { + ContractExecutable executable = 1; + repeated ScMapEntry storage = 2; // empty slice ⇒ no storage map (nil in XDR) +} + +// ============================================================ +// SCNonceKey (XDR: struct SCNonceKey) +// ============================================================ + +message ScNonceKey { + int64 nonce = 1; +} + +// ============================================================ +// SCMapEntry (XDR: struct SCMapEntry) +// ============================================================ + +message ScMapEntry { + ScVal key = 1; + ScVal val = 2; +} + +// ============================================================ +// Vec / Map containers (XDR: SCVec / SCMap typedefs) +// ============================================================ + +message ScVec { + repeated ScVal values = 1; +} + +message ScMap { + repeated ScMapEntry entries = 1; +} + +// ============================================================ +// Void – sentinel for XDR variants that carry no payload +// ============================================================ + +message Void {} + +// ============================================================ +// SCVal (XDR: union SCVal switch (SCValType type)) +// +// The active oneof field implicitly encodes the SCValType +// discriminant. Mapping: +// b → SCV_BOOL +// void_val → SCV_VOID +// error → SCV_ERROR +// u32 → SCV_U32 +// i32 → SCV_I32 +// u64 → SCV_U64 +// i64 → SCV_I64 +// timepoint → SCV_TIMEPOINT (uint64) +// duration → SCV_DURATION (uint64) +// u128 → SCV_U128 +// i128 → SCV_I128 +// u256 → SCV_U256 +// i256 → SCV_I256 +// bytes_val → SCV_BYTES +// str → SCV_STRING +// sym → SCV_SYMBOL (≤32 chars) +// vec → SCV_VEC +// map → SCV_MAP +// address → SCV_ADDRESS +// contract_instance → SCV_CONTRACT_INSTANCE +// ledger_key_contract_instance → SCV_LEDGER_KEY_CONTRACT_INSTANCE +// nonce_key → SCV_LEDGER_KEY_NONCE +// ============================================================ + +message ScVal { + oneof value { + bool b = 1; + Void void_val = 2; + ScError error = 3; + uint32 u32 = 4; + int32 i32 = 5; + uint64 u64 = 6; + int64 i64 = 7; + uint64 timepoint = 8; + uint64 duration = 9; + UInt128Parts u128 = 10; + Int128Parts i128 = 11; + UInt256Parts u256 = 12; + Int256Parts i256 = 13; + bytes bytes_val = 14; + string str = 15; + string sym = 16; + ScVec vec = 17; + ScMap map = 18; + ScAddress address = 19; + ScContractInstance contract_instance = 20; + Void ledger_key_contract_instance = 21; + ScNonceKey nonce_key = 22; + } +} +` + const computeConfidentialworkflowV1alphaClientEmbedded = `syntax = "proto3"; package capabilities.compute.confidentialworkflow.v1alpha; +import "google/protobuf/empty.proto"; +import "sdk/v1alpha/sdk.proto"; import "tools/generator/v1alpha/cre_metadata.proto"; message SecretIdentifier { @@ -540,17 +1457,45 @@ message SecretIdentifier { } // WorkflowExecution is the public data sent to the enclave. -// Becomes ComputeRequest.PublicData after proto serialization. +// Becomes ComputeRequest.PublicData after proto serialization, which is +// covered by ComputeRequest.Hash() for F+1 quorum matching at the enclave. message WorkflowExecution { // workflow_id identifies the workflow to execute. string workflow_id = 1; - // binary_url is the URL from which the enclave fetches the compiled WASM binary. + // binary_url is the URL from which the enclave fetches the compiled WASM + // binary. It lives inside WorkflowExecution (PublicData), covered by + // ComputeRequest.Hash() for F+1 quorum, so every node agrees on the same + // canonical locator. Authentication to the storage service is handled out of + // band by the fetch sidecar, so this is a stable, node-agnostic locator + // rather than a per-node pre-signed URL. string binary_url = 2; // binary_hash is the expected SHA-256 hash of the WASM binary, for integrity verification. bytes binary_hash = 3; // execute_request is a serialized sdk.v1alpha.ExecuteRequest proto. // Contains either a subscribe request or a trigger execution request. bytes execute_request = 4; + // owner is the on-chain owner address of the workflow (hex, 0x-prefixed). + // Used by the enclave for runtime secret fetching from VaultDON. + string owner = 5; + // execution_id is the unique execution identifier (64 hex chars, 32 bytes). + // Used by the enclave for runtime secret fetching from VaultDON. + string execution_id = 6; + // org_id is the organization identifier for the workflow owner. + // Used by the enclave when fetching secrets from VaultDON with org-based ownership. + string org_id = 7; + // requirements describes what is needed to run this workflow (e.g. TEE type + // and regions). + sdk.v1alpha.Requirements requirements = 8; + // sdk_execute_request is the structured form of execute_request. It carries + // the same sdk.v1alpha.ExecuteRequest as the serialized execute_request bytes + // field; the two are independent on the wire (setting one does not populate + // the other). Consumers that want the typed message read this; legacy + // consumers continue to unmarshal execute_request. + sdk.v1alpha.ExecuteRequest sdk_execute_request = 9; + + // restrictions on the capabilities and the secrets.bool + // This is sent to avoid overhead when a TEE is not compromised, the DON will verify the restrictions on its end as well. + sdk.v1alpha.Restrictions restrictions = 10; } // ConfidentialWorkflowRequest is the input provided to the confidential workflows capability. @@ -558,12 +1503,25 @@ message WorkflowExecution { message ConfidentialWorkflowRequest { repeated SecretIdentifier vault_don_secrets = 1; WorkflowExecution execution = 2; + // Deprecated: the per-node pre-signed URL approach is superseded. binary_url + // now travels inside WorkflowExecution (PublicData) as a canonical locator, + // with authentication to the storage service handled out of band by the fetch + // sidecar. Retained for back-compat; no longer populated. + string binary_url = 3 [deprecated = true]; } // ConfidentialWorkflowResponse is the output from the confidential workflows capability. message ConfidentialWorkflowResponse { // execution_result is a serialized sdk.v1alpha.ExecutionResult proto. bytes execution_result = 1; + // sdk_execution_result is the structured form of execution_result. It carries + // the same sdk.v1alpha.ExecutionResult as the serialized execution_result + // bytes field; the two are independent on the wire. + sdk.v1alpha.ExecutionResult sdk_execution_result = 2; +} + +message ProvidedTeesResponse { + repeated sdk.v1alpha.TeeTypeAndRegions tee = 1; } service Client { @@ -573,6 +1531,7 @@ service Client { }; rpc Execute(ConfidentialWorkflowRequest) returns (ConfidentialWorkflowResponse); + rpc ProvidedTees(google.protobuf.Empty) returns (ProvidedTeesResponse); } ` @@ -844,6 +1803,12 @@ message HeaderValues { repeated string values = 1; } +// MtlsAuth represents the private-key/cert pair for mtls auth. +message MtlsAuth { + bytes private_key = 1; + bytes certificate = 2; +} + message Request { string url = 1; string method = 2; @@ -852,6 +1817,7 @@ message Request { google.protobuf.Duration timeout = 5; // Request timeout duration CacheSettings cache_settings = 6; map multi_headers = 7; + optional MtlsAuth mtls = 8; } message Response { @@ -865,6 +1831,7 @@ service Client { option (tools.generator.v1alpha.capability) = { mode: MODE_NODE capability_id: "http-actions@1.0.0-alpha" + additional_environments: [ADDITIONAL_ENVIRONMENTS_TEE] }; rpc SendRequest(Request) returns (Response); } @@ -959,6 +1926,7 @@ enum AggregationType { AGGREGATION_TYPE_IDENTICAL = 2; AGGREGATION_TYPE_COMMON_PREFIX = 3; AGGREGATION_TYPE_COMMON_SUFFIX = 4; + AGGREGATION_TYPE_FREQUENCY_LIST = 5; } message SimpleConsensusInputs { @@ -1025,6 +1993,18 @@ message TriggerSubscription { string id = 1; google.protobuf.Any payload = 2; string method = 3; + Requirements requirements = 4; + bool pre_hook = 5; +} + +enum TeeType { + TEE_TYPE_UNSPECIFIED = 0; + TEE_TYPE_AWS_NITRO = 1; +} + +message TeeTypeAndRegions { + TeeType type = 1; + repeated string regions = 3; } message TriggerSubscriptionRequest { @@ -1036,6 +2016,25 @@ message Trigger { google.protobuf.Any payload = 2; } +message Regions { + repeated string regions = 1; +} + +message TeeTypesAndRegions { + repeated TeeTypeAndRegions tee_type_and_regions = 1; +} + +message Tee { + oneof item { + Regions any_regions = 1; + TeeTypesAndRegions tee_types_and_regions = 2; + } +} + +message Requirements { + Tee tee = 1; +} + message AwaitCapabilitiesRequest { repeated int32 ids = 1; } @@ -1048,8 +2047,10 @@ message ExecuteRequest { oneof request { google.protobuf.Empty subscribe = 2; Trigger trigger = 3; + Trigger pre_hook = 5; } uint64 max_response_size = 4; + bool suspend_on_await = 6; } message ExecutionResult { @@ -1057,6 +2058,7 @@ message ExecutionResult { values.v1.Value value = 1; string error = 2; TriggerSubscriptionRequest trigger_subscriptions = 3; + Restrictions restrictions = 4; } } @@ -1102,6 +2104,52 @@ message SecretResponse { message SecretResponses { repeated SecretResponse responses = 1; } + +message MethodRestriction { + string id = 1; + string method = 2; + uint32 max_calls = 3; +} + +message CapabilityRestriction { + oneof restriction { + MethodRestriction method = 1; + } +} + +enum CapabilityRestrictionType { + CAPABILITY_RESTRICTION_TYPE_CLOSED = 0; + CAPABILITY_RESTRICTION_TYPE_OPEN = 1; +} + +message CapabilityRestrictions { + repeated CapabilityRestriction restrictions = 1; + uint32 max_total_calls = 2; + CapabilityRestrictionType type = 3; +} + +message SecretPrefixRestriction { + string prefix = 1; + string namespace = 2; + uint32 max_secrets = 3; +} + +message SecretRestriction { + oneof restriction { + Secret exact_secret = 1; + SecretPrefixRestriction prefixed_secret = 2; + } +} + +message SecretsRestritions { + repeated SecretRestriction restrictions = 1; + uint32 max_secrets = 2; +} + +message Restrictions { + SecretsRestritions secrets = 1; + CapabilityRestrictions capabilities = 2; +} ` const v1betaSdkEmbedded = `syntax = "proto3"; @@ -1118,6 +2166,7 @@ enum AggregationType { AGGREGATION_TYPE_IDENTICAL = 2; AGGREGATION_TYPE_COMMON_PREFIX = 3; AGGREGATION_TYPE_COMMON_SUFFIX = 4; + AGGREGATION_TYPE_FREQUENCY_LIST = 5; } message SimpleConsensusInputs { @@ -1300,10 +2349,16 @@ message Label { } } +enum AdditionalEnvironments { + ADDITIONAL_ENVIRONMENTS_UNSPECIFIED = 0; + ADDITIONAL_ENVIRONMENTS_TEE = 1; +} + message CapabilityMetadata { sdk.v1alpha.Mode mode = 1; string capability_id = 2; map labels = 3; + repeated AdditionalEnvironments additional_environments = 4; } extend google.protobuf.ServiceOptions { @@ -1426,6 +2481,18 @@ var allFiles = []*embeddedFile{ name: "capabilities/blockchain/evm/v1alpha/client.proto", content: blockchainEvmV1alphaClientEmbedded, }, + { + name: "capabilities/blockchain/solana/v1alpha/client.proto", + content: blockchainSolanaV1alphaClientEmbedded, + }, + { + name: "capabilities/blockchain/stellar/v1alpha/client.proto", + content: blockchainStellarV1alphaClientEmbedded, + }, + { + name: "capabilities/blockchain/stellar/v1alpha/scval.proto", + content: blockchainStellarV1alphaScvalEmbedded, + }, { name: "capabilities/compute/confidentialworkflow/v1alpha/client.proto", content: computeConfidentialworkflowV1alphaClientEmbedded, diff --git a/cre/go/sdk/sdk.pb.go b/cre/go/sdk/sdk.pb.go index 3ab84306..d435aea2 100644 --- a/cre/go/sdk/sdk.pb.go +++ b/cre/go/sdk/sdk.pb.go @@ -27,11 +27,12 @@ const ( type AggregationType int32 const ( - AggregationType_AGGREGATION_TYPE_UNSPECIFIED AggregationType = 0 - AggregationType_AGGREGATION_TYPE_MEDIAN AggregationType = 1 - AggregationType_AGGREGATION_TYPE_IDENTICAL AggregationType = 2 - AggregationType_AGGREGATION_TYPE_COMMON_PREFIX AggregationType = 3 - AggregationType_AGGREGATION_TYPE_COMMON_SUFFIX AggregationType = 4 + AggregationType_AGGREGATION_TYPE_UNSPECIFIED AggregationType = 0 + AggregationType_AGGREGATION_TYPE_MEDIAN AggregationType = 1 + AggregationType_AGGREGATION_TYPE_IDENTICAL AggregationType = 2 + AggregationType_AGGREGATION_TYPE_COMMON_PREFIX AggregationType = 3 + AggregationType_AGGREGATION_TYPE_COMMON_SUFFIX AggregationType = 4 + AggregationType_AGGREGATION_TYPE_FREQUENCY_LIST AggregationType = 5 ) // Enum value maps for AggregationType. @@ -42,13 +43,15 @@ var ( 2: "AGGREGATION_TYPE_IDENTICAL", 3: "AGGREGATION_TYPE_COMMON_PREFIX", 4: "AGGREGATION_TYPE_COMMON_SUFFIX", + 5: "AGGREGATION_TYPE_FREQUENCY_LIST", } AggregationType_value = map[string]int32{ - "AGGREGATION_TYPE_UNSPECIFIED": 0, - "AGGREGATION_TYPE_MEDIAN": 1, - "AGGREGATION_TYPE_IDENTICAL": 2, - "AGGREGATION_TYPE_COMMON_PREFIX": 3, - "AGGREGATION_TYPE_COMMON_SUFFIX": 4, + "AGGREGATION_TYPE_UNSPECIFIED": 0, + "AGGREGATION_TYPE_MEDIAN": 1, + "AGGREGATION_TYPE_IDENTICAL": 2, + "AGGREGATION_TYPE_COMMON_PREFIX": 3, + "AGGREGATION_TYPE_COMMON_SUFFIX": 4, + "AGGREGATION_TYPE_FREQUENCY_LIST": 5, } ) @@ -128,6 +131,98 @@ func (Mode) EnumDescriptor() ([]byte, []int) { return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{1} } +type TeeType int32 + +const ( + TeeType_TEE_TYPE_UNSPECIFIED TeeType = 0 + TeeType_TEE_TYPE_AWS_NITRO TeeType = 1 +) + +// Enum value maps for TeeType. +var ( + TeeType_name = map[int32]string{ + 0: "TEE_TYPE_UNSPECIFIED", + 1: "TEE_TYPE_AWS_NITRO", + } + TeeType_value = map[string]int32{ + "TEE_TYPE_UNSPECIFIED": 0, + "TEE_TYPE_AWS_NITRO": 1, + } +) + +func (x TeeType) Enum() *TeeType { + p := new(TeeType) + *p = x + return p +} + +func (x TeeType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (TeeType) Descriptor() protoreflect.EnumDescriptor { + return file_sdk_v1alpha_sdk_proto_enumTypes[2].Descriptor() +} + +func (TeeType) Type() protoreflect.EnumType { + return &file_sdk_v1alpha_sdk_proto_enumTypes[2] +} + +func (x TeeType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use TeeType.Descriptor instead. +func (TeeType) EnumDescriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{2} +} + +type CapabilityRestrictionType int32 + +const ( + CapabilityRestrictionType_CAPABILITY_RESTRICTION_TYPE_CLOSED CapabilityRestrictionType = 0 + CapabilityRestrictionType_CAPABILITY_RESTRICTION_TYPE_OPEN CapabilityRestrictionType = 1 +) + +// Enum value maps for CapabilityRestrictionType. +var ( + CapabilityRestrictionType_name = map[int32]string{ + 0: "CAPABILITY_RESTRICTION_TYPE_CLOSED", + 1: "CAPABILITY_RESTRICTION_TYPE_OPEN", + } + CapabilityRestrictionType_value = map[string]int32{ + "CAPABILITY_RESTRICTION_TYPE_CLOSED": 0, + "CAPABILITY_RESTRICTION_TYPE_OPEN": 1, + } +) + +func (x CapabilityRestrictionType) Enum() *CapabilityRestrictionType { + p := new(CapabilityRestrictionType) + *p = x + return p +} + +func (x CapabilityRestrictionType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (CapabilityRestrictionType) Descriptor() protoreflect.EnumDescriptor { + return file_sdk_v1alpha_sdk_proto_enumTypes[3].Descriptor() +} + +func (CapabilityRestrictionType) Type() protoreflect.EnumType { + return &file_sdk_v1alpha_sdk_proto_enumTypes[3] +} + +func (x CapabilityRestrictionType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use CapabilityRestrictionType.Descriptor instead. +func (CapabilityRestrictionType) EnumDescriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{3} +} + type SimpleConsensusInputs struct { state protoimpl.MessageState `protogen:"open.v1"` // Types that are valid to be assigned to Observation: @@ -703,6 +798,8 @@ type TriggerSubscription struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Payload *anypb.Any `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` Method string `protobuf:"bytes,3,opt,name=method,proto3" json:"method,omitempty"` + Requirements *Requirements `protobuf:"bytes,4,opt,name=requirements,proto3" json:"requirements,omitempty"` + PreHook bool `protobuf:"varint,5,opt,name=pre_hook,json=preHook,proto3" json:"pre_hook,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -758,6 +855,72 @@ func (x *TriggerSubscription) GetMethod() string { return "" } +func (x *TriggerSubscription) GetRequirements() *Requirements { + if x != nil { + return x.Requirements + } + return nil +} + +func (x *TriggerSubscription) GetPreHook() bool { + if x != nil { + return x.PreHook + } + return false +} + +type TeeTypeAndRegions struct { + state protoimpl.MessageState `protogen:"open.v1"` + Type TeeType `protobuf:"varint,1,opt,name=type,proto3,enum=sdk.v1alpha.TeeType" json:"type,omitempty"` + Regions []string `protobuf:"bytes,3,rep,name=regions,proto3" json:"regions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *TeeTypeAndRegions) Reset() { + *x = TeeTypeAndRegions{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TeeTypeAndRegions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TeeTypeAndRegions) ProtoMessage() {} + +func (x *TeeTypeAndRegions) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TeeTypeAndRegions.ProtoReflect.Descriptor instead. +func (*TeeTypeAndRegions) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{9} +} + +func (x *TeeTypeAndRegions) GetType() TeeType { + if x != nil { + return x.Type + } + return TeeType_TEE_TYPE_UNSPECIFIED +} + +func (x *TeeTypeAndRegions) GetRegions() []string { + if x != nil { + return x.Regions + } + return nil +} + type TriggerSubscriptionRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Subscriptions []*TriggerSubscription `protobuf:"bytes,1,rep,name=subscriptions,proto3" json:"subscriptions,omitempty"` @@ -767,7 +930,7 @@ type TriggerSubscriptionRequest struct { func (x *TriggerSubscriptionRequest) Reset() { *x = TriggerSubscriptionRequest{} - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[9] + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -779,7 +942,7 @@ func (x *TriggerSubscriptionRequest) String() string { func (*TriggerSubscriptionRequest) ProtoMessage() {} func (x *TriggerSubscriptionRequest) ProtoReflect() protoreflect.Message { - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[9] + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -792,7 +955,7 @@ func (x *TriggerSubscriptionRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use TriggerSubscriptionRequest.ProtoReflect.Descriptor instead. func (*TriggerSubscriptionRequest) Descriptor() ([]byte, []int) { - return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{9} + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{10} } func (x *TriggerSubscriptionRequest) GetSubscriptions() []*TriggerSubscription { @@ -812,7 +975,7 @@ type Trigger struct { func (x *Trigger) Reset() { *x = Trigger{} - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[10] + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -824,7 +987,7 @@ func (x *Trigger) String() string { func (*Trigger) ProtoMessage() {} func (x *Trigger) ProtoReflect() protoreflect.Message { - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[10] + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -837,7 +1000,7 @@ func (x *Trigger) ProtoReflect() protoreflect.Message { // Deprecated: Use Trigger.ProtoReflect.Descriptor instead. func (*Trigger) Descriptor() ([]byte, []int) { - return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{10} + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{11} } func (x *Trigger) GetId() uint64 { @@ -854,28 +1017,28 @@ func (x *Trigger) GetPayload() *anypb.Any { return nil } -type AwaitCapabilitiesRequest struct { +type Regions struct { state protoimpl.MessageState `protogen:"open.v1"` - Ids []int32 `protobuf:"varint,1,rep,packed,name=ids,proto3" json:"ids,omitempty"` + Regions []string `protobuf:"bytes,1,rep,name=regions,proto3" json:"regions,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *AwaitCapabilitiesRequest) Reset() { - *x = AwaitCapabilitiesRequest{} - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[11] +func (x *Regions) Reset() { + *x = Regions{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *AwaitCapabilitiesRequest) String() string { +func (x *Regions) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AwaitCapabilitiesRequest) ProtoMessage() {} +func (*Regions) ProtoMessage() {} -func (x *AwaitCapabilitiesRequest) ProtoReflect() protoreflect.Message { - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[11] +func (x *Regions) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -886,40 +1049,40 @@ func (x *AwaitCapabilitiesRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AwaitCapabilitiesRequest.ProtoReflect.Descriptor instead. -func (*AwaitCapabilitiesRequest) Descriptor() ([]byte, []int) { - return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{11} +// Deprecated: Use Regions.ProtoReflect.Descriptor instead. +func (*Regions) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{12} } -func (x *AwaitCapabilitiesRequest) GetIds() []int32 { +func (x *Regions) GetRegions() []string { if x != nil { - return x.Ids + return x.Regions } return nil } -type AwaitCapabilitiesResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Responses map[int32]*CapabilityResponse `protobuf:"bytes,1,rep,name=responses,proto3" json:"responses,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache +type TeeTypesAndRegions struct { + state protoimpl.MessageState `protogen:"open.v1"` + TeeTypeAndRegions []*TeeTypeAndRegions `protobuf:"bytes,1,rep,name=tee_type_and_regions,json=teeTypeAndRegions,proto3" json:"tee_type_and_regions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *AwaitCapabilitiesResponse) Reset() { - *x = AwaitCapabilitiesResponse{} - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[12] +func (x *TeeTypesAndRegions) Reset() { + *x = TeeTypesAndRegions{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *AwaitCapabilitiesResponse) String() string { +func (x *TeeTypesAndRegions) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AwaitCapabilitiesResponse) ProtoMessage() {} +func (*TeeTypesAndRegions) ProtoMessage() {} -func (x *AwaitCapabilitiesResponse) ProtoReflect() protoreflect.Message { - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[12] +func (x *TeeTypesAndRegions) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -930,46 +1093,44 @@ func (x *AwaitCapabilitiesResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AwaitCapabilitiesResponse.ProtoReflect.Descriptor instead. -func (*AwaitCapabilitiesResponse) Descriptor() ([]byte, []int) { - return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{12} +// Deprecated: Use TeeTypesAndRegions.ProtoReflect.Descriptor instead. +func (*TeeTypesAndRegions) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{13} } -func (x *AwaitCapabilitiesResponse) GetResponses() map[int32]*CapabilityResponse { +func (x *TeeTypesAndRegions) GetTeeTypeAndRegions() []*TeeTypeAndRegions { if x != nil { - return x.Responses + return x.TeeTypeAndRegions } return nil } -type ExecuteRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Config []byte `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` - // Types that are valid to be assigned to Request: +type Tee struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Item: // - // *ExecuteRequest_Subscribe - // *ExecuteRequest_Trigger - Request isExecuteRequest_Request `protobuf_oneof:"request"` - MaxResponseSize uint64 `protobuf:"varint,4,opt,name=max_response_size,json=maxResponseSize,proto3" json:"max_response_size,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // *Tee_AnyRegions + // *Tee_TeeTypesAndRegions + Item isTee_Item `protobuf_oneof:"item"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *ExecuteRequest) Reset() { - *x = ExecuteRequest{} - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[13] +func (x *Tee) Reset() { + *x = Tee{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *ExecuteRequest) String() string { +func (x *Tee) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ExecuteRequest) ProtoMessage() {} +func (*Tee) ProtoMessage() {} -func (x *ExecuteRequest) ProtoReflect() protoreflect.Message { - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[13] +func (x *Tee) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -980,93 +1141,74 @@ func (x *ExecuteRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ExecuteRequest.ProtoReflect.Descriptor instead. -func (*ExecuteRequest) Descriptor() ([]byte, []int) { - return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{13} -} - -func (x *ExecuteRequest) GetConfig() []byte { - if x != nil { - return x.Config - } - return nil +// Deprecated: Use Tee.ProtoReflect.Descriptor instead. +func (*Tee) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{14} } -func (x *ExecuteRequest) GetRequest() isExecuteRequest_Request { +func (x *Tee) GetItem() isTee_Item { if x != nil { - return x.Request + return x.Item } return nil } -func (x *ExecuteRequest) GetSubscribe() *emptypb.Empty { +func (x *Tee) GetAnyRegions() *Regions { if x != nil { - if x, ok := x.Request.(*ExecuteRequest_Subscribe); ok { - return x.Subscribe + if x, ok := x.Item.(*Tee_AnyRegions); ok { + return x.AnyRegions } } return nil } -func (x *ExecuteRequest) GetTrigger() *Trigger { +func (x *Tee) GetTeeTypesAndRegions() *TeeTypesAndRegions { if x != nil { - if x, ok := x.Request.(*ExecuteRequest_Trigger); ok { - return x.Trigger + if x, ok := x.Item.(*Tee_TeeTypesAndRegions); ok { + return x.TeeTypesAndRegions } } return nil } -func (x *ExecuteRequest) GetMaxResponseSize() uint64 { - if x != nil { - return x.MaxResponseSize - } - return 0 -} - -type isExecuteRequest_Request interface { - isExecuteRequest_Request() +type isTee_Item interface { + isTee_Item() } -type ExecuteRequest_Subscribe struct { - Subscribe *emptypb.Empty `protobuf:"bytes,2,opt,name=subscribe,proto3,oneof"` +type Tee_AnyRegions struct { + AnyRegions *Regions `protobuf:"bytes,1,opt,name=any_regions,json=anyRegions,proto3,oneof"` } -type ExecuteRequest_Trigger struct { - Trigger *Trigger `protobuf:"bytes,3,opt,name=trigger,proto3,oneof"` +type Tee_TeeTypesAndRegions struct { + TeeTypesAndRegions *TeeTypesAndRegions `protobuf:"bytes,2,opt,name=tee_types_and_regions,json=teeTypesAndRegions,proto3,oneof"` } -func (*ExecuteRequest_Subscribe) isExecuteRequest_Request() {} +func (*Tee_AnyRegions) isTee_Item() {} -func (*ExecuteRequest_Trigger) isExecuteRequest_Request() {} +func (*Tee_TeeTypesAndRegions) isTee_Item() {} -type ExecutionResult struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Types that are valid to be assigned to Result: - // - // *ExecutionResult_Value - // *ExecutionResult_Error - // *ExecutionResult_TriggerSubscriptions - Result isExecutionResult_Result `protobuf_oneof:"result"` +type Requirements struct { + state protoimpl.MessageState `protogen:"open.v1"` + Tee *Tee `protobuf:"bytes,1,opt,name=tee,proto3" json:"tee,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *ExecutionResult) Reset() { - *x = ExecutionResult{} - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[14] +func (x *Requirements) Reset() { + *x = Requirements{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *ExecutionResult) String() string { +func (x *Requirements) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ExecutionResult) ProtoMessage() {} +func (*Requirements) ProtoMessage() {} -func (x *ExecutionResult) ProtoReflect() protoreflect.Message { - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[14] +func (x *Requirements) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1077,90 +1219,774 @@ func (x *ExecutionResult) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ExecutionResult.ProtoReflect.Descriptor instead. -func (*ExecutionResult) Descriptor() ([]byte, []int) { - return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{14} +// Deprecated: Use Requirements.ProtoReflect.Descriptor instead. +func (*Requirements) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{15} } -func (x *ExecutionResult) GetResult() isExecutionResult_Result { +func (x *Requirements) GetTee() *Tee { if x != nil { - return x.Result + return x.Tee } return nil } -func (x *ExecutionResult) GetValue() *pb.Value { - if x != nil { - if x, ok := x.Result.(*ExecutionResult_Value); ok { - return x.Value - } - } - return nil +type AwaitCapabilitiesRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Ids []int32 `protobuf:"varint,1,rep,packed,name=ids,proto3" json:"ids,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (x *ExecutionResult) GetError() string { - if x != nil { - if x, ok := x.Result.(*ExecutionResult_Error); ok { - return x.Error - } - } - return "" +func (x *AwaitCapabilitiesRequest) Reset() { + *x = AwaitCapabilitiesRequest{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) } -func (x *ExecutionResult) GetTriggerSubscriptions() *TriggerSubscriptionRequest { - if x != nil { - if x, ok := x.Result.(*ExecutionResult_TriggerSubscriptions); ok { - return x.TriggerSubscriptions - } +func (x *AwaitCapabilitiesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AwaitCapabilitiesRequest) ProtoMessage() {} + +func (x *AwaitCapabilitiesRequest) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AwaitCapabilitiesRequest.ProtoReflect.Descriptor instead. +func (*AwaitCapabilitiesRequest) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{16} +} + +func (x *AwaitCapabilitiesRequest) GetIds() []int32 { + if x != nil { + return x.Ids + } + return nil +} + +type AwaitCapabilitiesResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Responses map[int32]*CapabilityResponse `protobuf:"bytes,1,rep,name=responses,proto3" json:"responses,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AwaitCapabilitiesResponse) Reset() { + *x = AwaitCapabilitiesResponse{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AwaitCapabilitiesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AwaitCapabilitiesResponse) ProtoMessage() {} + +func (x *AwaitCapabilitiesResponse) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[17] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AwaitCapabilitiesResponse.ProtoReflect.Descriptor instead. +func (*AwaitCapabilitiesResponse) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{17} +} + +func (x *AwaitCapabilitiesResponse) GetResponses() map[int32]*CapabilityResponse { + if x != nil { + return x.Responses + } + return nil +} + +type ExecuteRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Config []byte `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` + // Types that are valid to be assigned to Request: + // + // *ExecuteRequest_Subscribe + // *ExecuteRequest_Trigger + // *ExecuteRequest_PreHook + Request isExecuteRequest_Request `protobuf_oneof:"request"` + MaxResponseSize uint64 `protobuf:"varint,4,opt,name=max_response_size,json=maxResponseSize,proto3" json:"max_response_size,omitempty"` + SuspendOnAwait bool `protobuf:"varint,6,opt,name=suspend_on_await,json=suspendOnAwait,proto3" json:"suspend_on_await,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExecuteRequest) Reset() { + *x = ExecuteRequest{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExecuteRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecuteRequest) ProtoMessage() {} + +func (x *ExecuteRequest) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[18] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExecuteRequest.ProtoReflect.Descriptor instead. +func (*ExecuteRequest) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{18} +} + +func (x *ExecuteRequest) GetConfig() []byte { + if x != nil { + return x.Config + } + return nil +} + +func (x *ExecuteRequest) GetRequest() isExecuteRequest_Request { + if x != nil { + return x.Request + } + return nil +} + +func (x *ExecuteRequest) GetSubscribe() *emptypb.Empty { + if x != nil { + if x, ok := x.Request.(*ExecuteRequest_Subscribe); ok { + return x.Subscribe + } + } + return nil +} + +func (x *ExecuteRequest) GetTrigger() *Trigger { + if x != nil { + if x, ok := x.Request.(*ExecuteRequest_Trigger); ok { + return x.Trigger + } + } + return nil +} + +func (x *ExecuteRequest) GetPreHook() *Trigger { + if x != nil { + if x, ok := x.Request.(*ExecuteRequest_PreHook); ok { + return x.PreHook + } + } + return nil +} + +func (x *ExecuteRequest) GetMaxResponseSize() uint64 { + if x != nil { + return x.MaxResponseSize + } + return 0 +} + +func (x *ExecuteRequest) GetSuspendOnAwait() bool { + if x != nil { + return x.SuspendOnAwait + } + return false +} + +type isExecuteRequest_Request interface { + isExecuteRequest_Request() +} + +type ExecuteRequest_Subscribe struct { + Subscribe *emptypb.Empty `protobuf:"bytes,2,opt,name=subscribe,proto3,oneof"` +} + +type ExecuteRequest_Trigger struct { + Trigger *Trigger `protobuf:"bytes,3,opt,name=trigger,proto3,oneof"` +} + +type ExecuteRequest_PreHook struct { + PreHook *Trigger `protobuf:"bytes,5,opt,name=pre_hook,json=preHook,proto3,oneof"` +} + +func (*ExecuteRequest_Subscribe) isExecuteRequest_Request() {} + +func (*ExecuteRequest_Trigger) isExecuteRequest_Request() {} + +func (*ExecuteRequest_PreHook) isExecuteRequest_Request() {} + +type ExecutionResult struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Result: + // + // *ExecutionResult_Value + // *ExecutionResult_Error + // *ExecutionResult_TriggerSubscriptions + // *ExecutionResult_Restrictions + Result isExecutionResult_Result `protobuf_oneof:"result"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *ExecutionResult) Reset() { + *x = ExecutionResult{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ExecutionResult) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ExecutionResult) ProtoMessage() {} + +func (x *ExecutionResult) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[19] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ExecutionResult.ProtoReflect.Descriptor instead. +func (*ExecutionResult) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{19} +} + +func (x *ExecutionResult) GetResult() isExecutionResult_Result { + if x != nil { + return x.Result + } + return nil +} + +func (x *ExecutionResult) GetValue() *pb.Value { + if x != nil { + if x, ok := x.Result.(*ExecutionResult_Value); ok { + return x.Value + } + } + return nil +} + +func (x *ExecutionResult) GetError() string { + if x != nil { + if x, ok := x.Result.(*ExecutionResult_Error); ok { + return x.Error + } + } + return "" +} + +func (x *ExecutionResult) GetTriggerSubscriptions() *TriggerSubscriptionRequest { + if x != nil { + if x, ok := x.Result.(*ExecutionResult_TriggerSubscriptions); ok { + return x.TriggerSubscriptions + } + } + return nil +} + +func (x *ExecutionResult) GetRestrictions() *Restrictions { + if x != nil { + if x, ok := x.Result.(*ExecutionResult_Restrictions); ok { + return x.Restrictions + } + } + return nil +} + +type isExecutionResult_Result interface { + isExecutionResult_Result() +} + +type ExecutionResult_Value struct { + Value *pb.Value `protobuf:"bytes,1,opt,name=value,proto3,oneof"` +} + +type ExecutionResult_Error struct { + Error string `protobuf:"bytes,2,opt,name=error,proto3,oneof"` +} + +type ExecutionResult_TriggerSubscriptions struct { + TriggerSubscriptions *TriggerSubscriptionRequest `protobuf:"bytes,3,opt,name=trigger_subscriptions,json=triggerSubscriptions,proto3,oneof"` +} + +type ExecutionResult_Restrictions struct { + Restrictions *Restrictions `protobuf:"bytes,4,opt,name=restrictions,proto3,oneof"` +} + +func (*ExecutionResult_Value) isExecutionResult_Result() {} + +func (*ExecutionResult_Error) isExecutionResult_Result() {} + +func (*ExecutionResult_TriggerSubscriptions) isExecutionResult_Result() {} + +func (*ExecutionResult_Restrictions) isExecutionResult_Result() {} + +type GetSecretsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Requests []*SecretRequest `protobuf:"bytes,1,rep,name=requests,proto3" json:"requests,omitempty"` + CallbackId int32 `protobuf:"varint,2,opt,name=callback_id,json=callbackId,proto3" json:"callback_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetSecretsRequest) Reset() { + *x = GetSecretsRequest{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetSecretsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetSecretsRequest) ProtoMessage() {} + +func (x *GetSecretsRequest) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[20] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetSecretsRequest.ProtoReflect.Descriptor instead. +func (*GetSecretsRequest) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{20} +} + +func (x *GetSecretsRequest) GetRequests() []*SecretRequest { + if x != nil { + return x.Requests + } + return nil +} + +func (x *GetSecretsRequest) GetCallbackId() int32 { + if x != nil { + return x.CallbackId + } + return 0 +} + +type AwaitSecretsRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Ids []int32 `protobuf:"varint,1,rep,packed,name=ids,proto3" json:"ids,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AwaitSecretsRequest) Reset() { + *x = AwaitSecretsRequest{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AwaitSecretsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AwaitSecretsRequest) ProtoMessage() {} + +func (x *AwaitSecretsRequest) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[21] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AwaitSecretsRequest.ProtoReflect.Descriptor instead. +func (*AwaitSecretsRequest) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{21} +} + +func (x *AwaitSecretsRequest) GetIds() []int32 { + if x != nil { + return x.Ids + } + return nil +} + +type AwaitSecretsResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Responses map[int32]*SecretResponses `protobuf:"bytes,1,rep,name=responses,proto3" json:"responses,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *AwaitSecretsResponse) Reset() { + *x = AwaitSecretsResponse{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[22] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *AwaitSecretsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AwaitSecretsResponse) ProtoMessage() {} + +func (x *AwaitSecretsResponse) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[22] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AwaitSecretsResponse.ProtoReflect.Descriptor instead. +func (*AwaitSecretsResponse) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{22} +} + +func (x *AwaitSecretsResponse) GetResponses() map[int32]*SecretResponses { + if x != nil { + return x.Responses + } + return nil +} + +type SecretRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SecretRequest) Reset() { + *x = SecretRequest{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[23] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SecretRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SecretRequest) ProtoMessage() {} + +func (x *SecretRequest) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[23] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms } - return nil + return mi.MessageOf(x) } -type isExecutionResult_Result interface { - isExecutionResult_Result() +// Deprecated: Use SecretRequest.ProtoReflect.Descriptor instead. +func (*SecretRequest) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{23} } -type ExecutionResult_Value struct { - Value *pb.Value `protobuf:"bytes,1,opt,name=value,proto3,oneof"` +func (x *SecretRequest) GetId() string { + if x != nil { + return x.Id + } + return "" } -type ExecutionResult_Error struct { - Error string `protobuf:"bytes,2,opt,name=error,proto3,oneof"` +func (x *SecretRequest) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" } -type ExecutionResult_TriggerSubscriptions struct { - TriggerSubscriptions *TriggerSubscriptionRequest `protobuf:"bytes,3,opt,name=trigger_subscriptions,json=triggerSubscriptions,proto3,oneof"` +type Secret struct { + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + Owner string `protobuf:"bytes,3,opt,name=owner,proto3" json:"owner,omitempty"` + Value string `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } -func (*ExecutionResult_Value) isExecutionResult_Result() {} +func (x *Secret) Reset() { + *x = Secret{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} -func (*ExecutionResult_Error) isExecutionResult_Result() {} +func (x *Secret) String() string { + return protoimpl.X.MessageStringOf(x) +} -func (*ExecutionResult_TriggerSubscriptions) isExecutionResult_Result() {} +func (*Secret) ProtoMessage() {} -type GetSecretsRequest struct { +func (x *Secret) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[24] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Secret.ProtoReflect.Descriptor instead. +func (*Secret) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{24} +} + +func (x *Secret) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *Secret) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} + +func (x *Secret) GetOwner() string { + if x != nil { + return x.Owner + } + return "" +} + +func (x *Secret) GetValue() string { + if x != nil { + return x.Value + } + return "" +} + +type SecretError struct { state protoimpl.MessageState `protogen:"open.v1"` - Requests []*SecretRequest `protobuf:"bytes,1,rep,name=requests,proto3" json:"requests,omitempty"` - CallbackId int32 `protobuf:"varint,2,opt,name=callback_id,json=callbackId,proto3" json:"callback_id,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` + Owner string `protobuf:"bytes,3,opt,name=owner,proto3" json:"owner,omitempty"` + Error string `protobuf:"bytes,4,opt,name=error,proto3" json:"error,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *GetSecretsRequest) Reset() { - *x = GetSecretsRequest{} - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[15] +func (x *SecretError) Reset() { + *x = SecretError{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[25] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SecretError) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SecretError) ProtoMessage() {} + +func (x *SecretError) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[25] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SecretError.ProtoReflect.Descriptor instead. +func (*SecretError) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{25} +} + +func (x *SecretError) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *SecretError) GetNamespace() string { + if x != nil { + return x.Namespace + } + return "" +} + +func (x *SecretError) GetOwner() string { + if x != nil { + return x.Owner + } + return "" +} + +func (x *SecretError) GetError() string { + if x != nil { + return x.Error + } + return "" +} + +type SecretResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Response: + // + // *SecretResponse_Secret + // *SecretResponse_Error + Response isSecretResponse_Response `protobuf_oneof:"response"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SecretResponse) Reset() { + *x = SecretResponse{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[26] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SecretResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SecretResponse) ProtoMessage() {} + +func (x *SecretResponse) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[26] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SecretResponse.ProtoReflect.Descriptor instead. +func (*SecretResponse) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{26} +} + +func (x *SecretResponse) GetResponse() isSecretResponse_Response { + if x != nil { + return x.Response + } + return nil +} + +func (x *SecretResponse) GetSecret() *Secret { + if x != nil { + if x, ok := x.Response.(*SecretResponse_Secret); ok { + return x.Secret + } + } + return nil +} + +func (x *SecretResponse) GetError() *SecretError { + if x != nil { + if x, ok := x.Response.(*SecretResponse_Error); ok { + return x.Error + } + } + return nil +} + +type isSecretResponse_Response interface { + isSecretResponse_Response() +} + +type SecretResponse_Secret struct { + Secret *Secret `protobuf:"bytes,1,opt,name=secret,proto3,oneof"` +} + +type SecretResponse_Error struct { + Error *SecretError `protobuf:"bytes,2,opt,name=error,proto3,oneof"` +} + +func (*SecretResponse_Secret) isSecretResponse_Response() {} + +func (*SecretResponse_Error) isSecretResponse_Response() {} + +type SecretResponses struct { + state protoimpl.MessageState `protogen:"open.v1"` + Responses []*SecretResponse `protobuf:"bytes,1,rep,name=responses,proto3" json:"responses,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *SecretResponses) Reset() { + *x = SecretResponses{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *GetSecretsRequest) String() string { +func (x *SecretResponses) String() string { return protoimpl.X.MessageStringOf(x) } -func (*GetSecretsRequest) ProtoMessage() {} +func (*SecretResponses) ProtoMessage() {} -func (x *GetSecretsRequest) ProtoReflect() protoreflect.Message { - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[15] +func (x *SecretResponses) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[27] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1171,47 +1997,42 @@ func (x *GetSecretsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use GetSecretsRequest.ProtoReflect.Descriptor instead. -func (*GetSecretsRequest) Descriptor() ([]byte, []int) { - return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{15} +// Deprecated: Use SecretResponses.ProtoReflect.Descriptor instead. +func (*SecretResponses) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{27} } -func (x *GetSecretsRequest) GetRequests() []*SecretRequest { +func (x *SecretResponses) GetResponses() []*SecretResponse { if x != nil { - return x.Requests + return x.Responses } return nil } -func (x *GetSecretsRequest) GetCallbackId() int32 { - if x != nil { - return x.CallbackId - } - return 0 -} - -type AwaitSecretsRequest struct { +type MethodRestriction struct { state protoimpl.MessageState `protogen:"open.v1"` - Ids []int32 `protobuf:"varint,1,rep,packed,name=ids,proto3" json:"ids,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Method string `protobuf:"bytes,2,opt,name=method,proto3" json:"method,omitempty"` + MaxCalls uint32 `protobuf:"varint,3,opt,name=max_calls,json=maxCalls,proto3" json:"max_calls,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *AwaitSecretsRequest) Reset() { - *x = AwaitSecretsRequest{} - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[16] +func (x *MethodRestriction) Reset() { + *x = MethodRestriction{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *AwaitSecretsRequest) String() string { +func (x *MethodRestriction) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AwaitSecretsRequest) ProtoMessage() {} +func (*MethodRestriction) ProtoMessage() {} -func (x *AwaitSecretsRequest) ProtoReflect() protoreflect.Message { - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[16] +func (x *MethodRestriction) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[28] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1222,40 +2043,57 @@ func (x *AwaitSecretsRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AwaitSecretsRequest.ProtoReflect.Descriptor instead. -func (*AwaitSecretsRequest) Descriptor() ([]byte, []int) { - return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{16} +// Deprecated: Use MethodRestriction.ProtoReflect.Descriptor instead. +func (*MethodRestriction) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{28} } -func (x *AwaitSecretsRequest) GetIds() []int32 { +func (x *MethodRestriction) GetId() string { if x != nil { - return x.Ids + return x.Id } - return nil + return "" } -type AwaitSecretsResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - Responses map[int32]*SecretResponses `protobuf:"bytes,1,rep,name=responses,proto3" json:"responses,omitempty" protobuf_key:"varint,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` +func (x *MethodRestriction) GetMethod() string { + if x != nil { + return x.Method + } + return "" +} + +func (x *MethodRestriction) GetMaxCalls() uint32 { + if x != nil { + return x.MaxCalls + } + return 0 +} + +type CapabilityRestriction struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Restriction: + // + // *CapabilityRestriction_Method + Restriction isCapabilityRestriction_Restriction `protobuf_oneof:"restriction"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *AwaitSecretsResponse) Reset() { - *x = AwaitSecretsResponse{} - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[17] +func (x *CapabilityRestriction) Reset() { + *x = CapabilityRestriction{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *AwaitSecretsResponse) String() string { +func (x *CapabilityRestriction) String() string { return protoimpl.X.MessageStringOf(x) } -func (*AwaitSecretsResponse) ProtoMessage() {} +func (*CapabilityRestriction) ProtoMessage() {} -func (x *AwaitSecretsResponse) ProtoReflect() protoreflect.Message { - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[17] +func (x *CapabilityRestriction) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[29] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1266,41 +2104,61 @@ func (x *AwaitSecretsResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use AwaitSecretsResponse.ProtoReflect.Descriptor instead. -func (*AwaitSecretsResponse) Descriptor() ([]byte, []int) { - return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{17} +// Deprecated: Use CapabilityRestriction.ProtoReflect.Descriptor instead. +func (*CapabilityRestriction) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{29} } -func (x *AwaitSecretsResponse) GetResponses() map[int32]*SecretResponses { +func (x *CapabilityRestriction) GetRestriction() isCapabilityRestriction_Restriction { if x != nil { - return x.Responses + return x.Restriction } return nil } -type SecretRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` +func (x *CapabilityRestriction) GetMethod() *MethodRestriction { + if x != nil { + if x, ok := x.Restriction.(*CapabilityRestriction_Method); ok { + return x.Method + } + } + return nil +} + +type isCapabilityRestriction_Restriction interface { + isCapabilityRestriction_Restriction() +} + +type CapabilityRestriction_Method struct { + Method *MethodRestriction `protobuf:"bytes,1,opt,name=method,proto3,oneof"` +} + +func (*CapabilityRestriction_Method) isCapabilityRestriction_Restriction() {} + +type CapabilityRestrictions struct { + state protoimpl.MessageState `protogen:"open.v1"` + Restrictions []*CapabilityRestriction `protobuf:"bytes,1,rep,name=restrictions,proto3" json:"restrictions,omitempty"` + MaxTotalCalls uint32 `protobuf:"varint,2,opt,name=max_total_calls,json=maxTotalCalls,proto3" json:"max_total_calls,omitempty"` + Type CapabilityRestrictionType `protobuf:"varint,3,opt,name=type,proto3,enum=sdk.v1alpha.CapabilityRestrictionType" json:"type,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *SecretRequest) Reset() { - *x = SecretRequest{} - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[18] +func (x *CapabilityRestrictions) Reset() { + *x = CapabilityRestrictions{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *SecretRequest) String() string { +func (x *CapabilityRestrictions) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SecretRequest) ProtoMessage() {} +func (*CapabilityRestrictions) ProtoMessage() {} -func (x *SecretRequest) ProtoReflect() protoreflect.Message { - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[18] +func (x *CapabilityRestrictions) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[30] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1311,50 +2169,56 @@ func (x *SecretRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SecretRequest.ProtoReflect.Descriptor instead. -func (*SecretRequest) Descriptor() ([]byte, []int) { - return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{18} +// Deprecated: Use CapabilityRestrictions.ProtoReflect.Descriptor instead. +func (*CapabilityRestrictions) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{30} } -func (x *SecretRequest) GetId() string { +func (x *CapabilityRestrictions) GetRestrictions() []*CapabilityRestriction { if x != nil { - return x.Id + return x.Restrictions } - return "" + return nil } -func (x *SecretRequest) GetNamespace() string { +func (x *CapabilityRestrictions) GetMaxTotalCalls() uint32 { if x != nil { - return x.Namespace + return x.MaxTotalCalls } - return "" + return 0 } -type Secret struct { +func (x *CapabilityRestrictions) GetType() CapabilityRestrictionType { + if x != nil { + return x.Type + } + return CapabilityRestrictionType_CAPABILITY_RESTRICTION_TYPE_CLOSED +} + +type SecretPrefixRestriction struct { state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Prefix string `protobuf:"bytes,1,opt,name=prefix,proto3" json:"prefix,omitempty"` Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - Owner string `protobuf:"bytes,3,opt,name=owner,proto3" json:"owner,omitempty"` - Value string `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"` + MaxSecrets uint32 `protobuf:"varint,3,opt,name=max_secrets,json=maxSecrets,proto3" json:"max_secrets,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *Secret) Reset() { - *x = Secret{} - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[19] +func (x *SecretPrefixRestriction) Reset() { + *x = SecretPrefixRestriction{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *Secret) String() string { +func (x *SecretPrefixRestriction) String() string { return protoimpl.X.MessageStringOf(x) } -func (*Secret) ProtoMessage() {} +func (*SecretPrefixRestriction) ProtoMessage() {} -func (x *Secret) ProtoReflect() protoreflect.Message { - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[19] +func (x *SecretPrefixRestriction) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[31] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1365,64 +2229,58 @@ func (x *Secret) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use Secret.ProtoReflect.Descriptor instead. -func (*Secret) Descriptor() ([]byte, []int) { - return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{19} +// Deprecated: Use SecretPrefixRestriction.ProtoReflect.Descriptor instead. +func (*SecretPrefixRestriction) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{31} } -func (x *Secret) GetId() string { +func (x *SecretPrefixRestriction) GetPrefix() string { if x != nil { - return x.Id + return x.Prefix } return "" } -func (x *Secret) GetNamespace() string { +func (x *SecretPrefixRestriction) GetNamespace() string { if x != nil { return x.Namespace } return "" } -func (x *Secret) GetOwner() string { - if x != nil { - return x.Owner - } - return "" -} - -func (x *Secret) GetValue() string { +func (x *SecretPrefixRestriction) GetMaxSecrets() uint32 { if x != nil { - return x.Value + return x.MaxSecrets } - return "" + return 0 } -type SecretError struct { - state protoimpl.MessageState `protogen:"open.v1"` - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Namespace string `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` - Owner string `protobuf:"bytes,3,opt,name=owner,proto3" json:"owner,omitempty"` - Error string `protobuf:"bytes,4,opt,name=error,proto3" json:"error,omitempty"` +type SecretRestriction struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Types that are valid to be assigned to Restriction: + // + // *SecretRestriction_ExactSecret + // *SecretRestriction_PrefixedSecret + Restriction isSecretRestriction_Restriction `protobuf_oneof:"restriction"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *SecretError) Reset() { - *x = SecretError{} - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[20] +func (x *SecretRestriction) Reset() { + *x = SecretRestriction{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *SecretError) String() string { +func (x *SecretRestriction) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SecretError) ProtoMessage() {} +func (*SecretRestriction) ProtoMessage() {} -func (x *SecretError) ProtoReflect() protoreflect.Message { - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[20] +func (x *SecretRestriction) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[32] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1433,65 +2291,75 @@ func (x *SecretError) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SecretError.ProtoReflect.Descriptor instead. -func (*SecretError) Descriptor() ([]byte, []int) { - return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{20} +// Deprecated: Use SecretRestriction.ProtoReflect.Descriptor instead. +func (*SecretRestriction) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{32} } -func (x *SecretError) GetId() string { +func (x *SecretRestriction) GetRestriction() isSecretRestriction_Restriction { if x != nil { - return x.Id + return x.Restriction } - return "" + return nil } -func (x *SecretError) GetNamespace() string { +func (x *SecretRestriction) GetExactSecret() *Secret { if x != nil { - return x.Namespace + if x, ok := x.Restriction.(*SecretRestriction_ExactSecret); ok { + return x.ExactSecret + } } - return "" + return nil } -func (x *SecretError) GetOwner() string { +func (x *SecretRestriction) GetPrefixedSecret() *SecretPrefixRestriction { if x != nil { - return x.Owner + if x, ok := x.Restriction.(*SecretRestriction_PrefixedSecret); ok { + return x.PrefixedSecret + } } - return "" + return nil } -func (x *SecretError) GetError() string { - if x != nil { - return x.Error - } - return "" +type isSecretRestriction_Restriction interface { + isSecretRestriction_Restriction() } -type SecretResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - // Types that are valid to be assigned to Response: - // - // *SecretResponse_Secret - // *SecretResponse_Error - Response isSecretResponse_Response `protobuf_oneof:"response"` +type SecretRestriction_ExactSecret struct { + ExactSecret *Secret `protobuf:"bytes,1,opt,name=exact_secret,json=exactSecret,proto3,oneof"` +} + +type SecretRestriction_PrefixedSecret struct { + PrefixedSecret *SecretPrefixRestriction `protobuf:"bytes,2,opt,name=prefixed_secret,json=prefixedSecret,proto3,oneof"` +} + +func (*SecretRestriction_ExactSecret) isSecretRestriction_Restriction() {} + +func (*SecretRestriction_PrefixedSecret) isSecretRestriction_Restriction() {} + +type SecretsRestritions struct { + state protoimpl.MessageState `protogen:"open.v1"` + Restrictions []*SecretRestriction `protobuf:"bytes,1,rep,name=restrictions,proto3" json:"restrictions,omitempty"` + MaxSecrets uint32 `protobuf:"varint,2,opt,name=max_secrets,json=maxSecrets,proto3" json:"max_secrets,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *SecretResponse) Reset() { - *x = SecretResponse{} - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[21] +func (x *SecretsRestritions) Reset() { + *x = SecretsRestritions{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *SecretResponse) String() string { +func (x *SecretsRestritions) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SecretResponse) ProtoMessage() {} +func (*SecretsRestritions) ProtoMessage() {} -func (x *SecretResponse) ProtoReflect() protoreflect.Message { - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[21] +func (x *SecretsRestritions) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[33] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1502,74 +2370,48 @@ func (x *SecretResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SecretResponse.ProtoReflect.Descriptor instead. -func (*SecretResponse) Descriptor() ([]byte, []int) { - return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{21} -} - -func (x *SecretResponse) GetResponse() isSecretResponse_Response { - if x != nil { - return x.Response - } - return nil +// Deprecated: Use SecretsRestritions.ProtoReflect.Descriptor instead. +func (*SecretsRestritions) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{33} } -func (x *SecretResponse) GetSecret() *Secret { +func (x *SecretsRestritions) GetRestrictions() []*SecretRestriction { if x != nil { - if x, ok := x.Response.(*SecretResponse_Secret); ok { - return x.Secret - } + return x.Restrictions } return nil } -func (x *SecretResponse) GetError() *SecretError { +func (x *SecretsRestritions) GetMaxSecrets() uint32 { if x != nil { - if x, ok := x.Response.(*SecretResponse_Error); ok { - return x.Error - } + return x.MaxSecrets } - return nil -} - -type isSecretResponse_Response interface { - isSecretResponse_Response() -} - -type SecretResponse_Secret struct { - Secret *Secret `protobuf:"bytes,1,opt,name=secret,proto3,oneof"` -} - -type SecretResponse_Error struct { - Error *SecretError `protobuf:"bytes,2,opt,name=error,proto3,oneof"` + return 0 } -func (*SecretResponse_Secret) isSecretResponse_Response() {} - -func (*SecretResponse_Error) isSecretResponse_Response() {} - -type SecretResponses struct { - state protoimpl.MessageState `protogen:"open.v1"` - Responses []*SecretResponse `protobuf:"bytes,1,rep,name=responses,proto3" json:"responses,omitempty"` +type Restrictions struct { + state protoimpl.MessageState `protogen:"open.v1"` + Secrets *SecretsRestritions `protobuf:"bytes,1,opt,name=secrets,proto3" json:"secrets,omitempty"` + Capabilities *CapabilityRestrictions `protobuf:"bytes,2,opt,name=capabilities,proto3" json:"capabilities,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } -func (x *SecretResponses) Reset() { - *x = SecretResponses{} - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[22] +func (x *Restrictions) Reset() { + *x = Restrictions{} + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *SecretResponses) String() string { +func (x *Restrictions) String() string { return protoimpl.X.MessageStringOf(x) } -func (*SecretResponses) ProtoMessage() {} +func (*Restrictions) ProtoMessage() {} -func (x *SecretResponses) ProtoReflect() protoreflect.Message { - mi := &file_sdk_v1alpha_sdk_proto_msgTypes[22] +func (x *Restrictions) ProtoReflect() protoreflect.Message { + mi := &file_sdk_v1alpha_sdk_proto_msgTypes[34] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1580,14 +2422,21 @@ func (x *SecretResponses) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use SecretResponses.ProtoReflect.Descriptor instead. -func (*SecretResponses) Descriptor() ([]byte, []int) { - return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{22} +// Deprecated: Use Restrictions.ProtoReflect.Descriptor instead. +func (*Restrictions) Descriptor() ([]byte, []int) { + return file_sdk_v1alpha_sdk_proto_rawDescGZIP(), []int{34} } -func (x *SecretResponses) GetResponses() []*SecretResponse { +func (x *Restrictions) GetSecrets() *SecretsRestritions { if x != nil { - return x.Responses + return x.Secrets + } + return nil +} + +func (x *Restrictions) GetCapabilities() *CapabilityRestrictions { + if x != nil { + return x.Capabilities } return nil } @@ -1639,33 +2488,52 @@ const file_sdk_v1alpha_sdk_proto_rawDesc = "" + "\apayload\x18\x01 \x01(\v2\x14.google.protobuf.AnyH\x00R\apayload\x12\x16\n" + "\x05error\x18\x02 \x01(\tH\x00R\x05errorB\n" + "\n" + - "\bresponse\"m\n" + + "\bresponse\"\xc7\x01\n" + "\x13TriggerSubscription\x12\x0e\n" + "\x02id\x18\x01 \x01(\tR\x02id\x12.\n" + "\apayload\x18\x02 \x01(\v2\x14.google.protobuf.AnyR\apayload\x12\x16\n" + - "\x06method\x18\x03 \x01(\tR\x06method\"d\n" + + "\x06method\x18\x03 \x01(\tR\x06method\x12=\n" + + "\frequirements\x18\x04 \x01(\v2\x19.sdk.v1alpha.RequirementsR\frequirements\x12\x19\n" + + "\bpre_hook\x18\x05 \x01(\bR\apreHook\"W\n" + + "\x11TeeTypeAndRegions\x12(\n" + + "\x04type\x18\x01 \x01(\x0e2\x14.sdk.v1alpha.TeeTypeR\x04type\x12\x18\n" + + "\aregions\x18\x03 \x03(\tR\aregions\"d\n" + "\x1aTriggerSubscriptionRequest\x12F\n" + "\rsubscriptions\x18\x01 \x03(\v2 .sdk.v1alpha.TriggerSubscriptionR\rsubscriptions\"I\n" + "\aTrigger\x12\x0e\n" + "\x02id\x18\x01 \x01(\x04R\x02id\x12.\n" + - "\apayload\x18\x02 \x01(\v2\x14.google.protobuf.AnyR\apayload\",\n" + + "\apayload\x18\x02 \x01(\v2\x14.google.protobuf.AnyR\apayload\"#\n" + + "\aRegions\x12\x18\n" + + "\aregions\x18\x01 \x03(\tR\aregions\"e\n" + + "\x12TeeTypesAndRegions\x12O\n" + + "\x14tee_type_and_regions\x18\x01 \x03(\v2\x1e.sdk.v1alpha.TeeTypeAndRegionsR\x11teeTypeAndRegions\"\x9c\x01\n" + + "\x03Tee\x127\n" + + "\vany_regions\x18\x01 \x01(\v2\x14.sdk.v1alpha.RegionsH\x00R\n" + + "anyRegions\x12T\n" + + "\x15tee_types_and_regions\x18\x02 \x01(\v2\x1f.sdk.v1alpha.TeeTypesAndRegionsH\x00R\x12teeTypesAndRegionsB\x06\n" + + "\x04item\"2\n" + + "\fRequirements\x12\"\n" + + "\x03tee\x18\x01 \x01(\v2\x10.sdk.v1alpha.TeeR\x03tee\",\n" + "\x18AwaitCapabilitiesRequest\x12\x10\n" + "\x03ids\x18\x01 \x03(\x05R\x03ids\"\xcf\x01\n" + "\x19AwaitCapabilitiesResponse\x12S\n" + "\tresponses\x18\x01 \x03(\v25.sdk.v1alpha.AwaitCapabilitiesResponse.ResponsesEntryR\tresponses\x1a]\n" + "\x0eResponsesEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\x05R\x03key\x125\n" + - "\x05value\x18\x02 \x01(\v2\x1f.sdk.v1alpha.CapabilityResponseR\x05value:\x028\x01\"\xc9\x01\n" + + "\x05value\x18\x02 \x01(\v2\x1f.sdk.v1alpha.CapabilityResponseR\x05value:\x028\x01\"\xa6\x02\n" + "\x0eExecuteRequest\x12\x16\n" + "\x06config\x18\x01 \x01(\fR\x06config\x126\n" + "\tsubscribe\x18\x02 \x01(\v2\x16.google.protobuf.EmptyH\x00R\tsubscribe\x120\n" + - "\atrigger\x18\x03 \x01(\v2\x14.sdk.v1alpha.TriggerH\x00R\atrigger\x12*\n" + - "\x11max_response_size\x18\x04 \x01(\x04R\x0fmaxResponseSizeB\t\n" + - "\arequest\"\xbd\x01\n" + + "\atrigger\x18\x03 \x01(\v2\x14.sdk.v1alpha.TriggerH\x00R\atrigger\x121\n" + + "\bpre_hook\x18\x05 \x01(\v2\x14.sdk.v1alpha.TriggerH\x00R\apreHook\x12*\n" + + "\x11max_response_size\x18\x04 \x01(\x04R\x0fmaxResponseSize\x12(\n" + + "\x10suspend_on_await\x18\x06 \x01(\bR\x0esuspendOnAwaitB\t\n" + + "\arequest\"\xfe\x01\n" + "\x0fExecutionResult\x12(\n" + "\x05value\x18\x01 \x01(\v2\x10.values.v1.ValueH\x00R\x05value\x12\x16\n" + "\x05error\x18\x02 \x01(\tH\x00R\x05error\x12^\n" + - "\x15trigger_subscriptions\x18\x03 \x01(\v2'.sdk.v1alpha.TriggerSubscriptionRequestH\x00R\x14triggerSubscriptionsB\b\n" + + "\x15trigger_subscriptions\x18\x03 \x01(\v2'.sdk.v1alpha.TriggerSubscriptionRequestH\x00R\x14triggerSubscriptions\x12?\n" + + "\frestrictions\x18\x04 \x01(\v2\x19.sdk.v1alpha.RestrictionsH\x00R\frestrictionsB\b\n" + "\x06result\"l\n" + "\x11GetSecretsRequest\x126\n" + "\brequests\x18\x01 \x03(\v2\x1a.sdk.v1alpha.SecretRequestR\brequests\x12\x1f\n" + @@ -1697,17 +2565,51 @@ const file_sdk_v1alpha_sdk_proto_rawDesc = "" + "\n" + "\bresponse\"L\n" + "\x0fSecretResponses\x129\n" + - "\tresponses\x18\x01 \x03(\v2\x1b.sdk.v1alpha.SecretResponseR\tresponses*\xb8\x01\n" + + "\tresponses\x18\x01 \x03(\v2\x1b.sdk.v1alpha.SecretResponseR\tresponses\"X\n" + + "\x11MethodRestriction\x12\x0e\n" + + "\x02id\x18\x01 \x01(\tR\x02id\x12\x16\n" + + "\x06method\x18\x02 \x01(\tR\x06method\x12\x1b\n" + + "\tmax_calls\x18\x03 \x01(\rR\bmaxCalls\"`\n" + + "\x15CapabilityRestriction\x128\n" + + "\x06method\x18\x01 \x01(\v2\x1e.sdk.v1alpha.MethodRestrictionH\x00R\x06methodB\r\n" + + "\vrestriction\"\xc4\x01\n" + + "\x16CapabilityRestrictions\x12F\n" + + "\frestrictions\x18\x01 \x03(\v2\".sdk.v1alpha.CapabilityRestrictionR\frestrictions\x12&\n" + + "\x0fmax_total_calls\x18\x02 \x01(\rR\rmaxTotalCalls\x12:\n" + + "\x04type\x18\x03 \x01(\x0e2&.sdk.v1alpha.CapabilityRestrictionTypeR\x04type\"p\n" + + "\x17SecretPrefixRestriction\x12\x16\n" + + "\x06prefix\x18\x01 \x01(\tR\x06prefix\x12\x1c\n" + + "\tnamespace\x18\x02 \x01(\tR\tnamespace\x12\x1f\n" + + "\vmax_secrets\x18\x03 \x01(\rR\n" + + "maxSecrets\"\xad\x01\n" + + "\x11SecretRestriction\x128\n" + + "\fexact_secret\x18\x01 \x01(\v2\x13.sdk.v1alpha.SecretH\x00R\vexactSecret\x12O\n" + + "\x0fprefixed_secret\x18\x02 \x01(\v2$.sdk.v1alpha.SecretPrefixRestrictionH\x00R\x0eprefixedSecretB\r\n" + + "\vrestriction\"y\n" + + "\x12SecretsRestritions\x12B\n" + + "\frestrictions\x18\x01 \x03(\v2\x1e.sdk.v1alpha.SecretRestrictionR\frestrictions\x12\x1f\n" + + "\vmax_secrets\x18\x02 \x01(\rR\n" + + "maxSecrets\"\x92\x01\n" + + "\fRestrictions\x129\n" + + "\asecrets\x18\x01 \x01(\v2\x1f.sdk.v1alpha.SecretsRestritionsR\asecrets\x12G\n" + + "\fcapabilities\x18\x02 \x01(\v2#.sdk.v1alpha.CapabilityRestrictionsR\fcapabilities*\xdd\x01\n" + "\x0fAggregationType\x12 \n" + "\x1cAGGREGATION_TYPE_UNSPECIFIED\x10\x00\x12\x1b\n" + "\x17AGGREGATION_TYPE_MEDIAN\x10\x01\x12\x1e\n" + "\x1aAGGREGATION_TYPE_IDENTICAL\x10\x02\x12\"\n" + "\x1eAGGREGATION_TYPE_COMMON_PREFIX\x10\x03\x12\"\n" + - "\x1eAGGREGATION_TYPE_COMMON_SUFFIX\x10\x04*9\n" + + "\x1eAGGREGATION_TYPE_COMMON_SUFFIX\x10\x04\x12#\n" + + "\x1fAGGREGATION_TYPE_FREQUENCY_LIST\x10\x05*9\n" + "\x04Mode\x12\x14\n" + "\x10MODE_UNSPECIFIED\x10\x00\x12\f\n" + "\bMODE_DON\x10\x01\x12\r\n" + - "\tMODE_NODE\x10\x02b\x06proto3" + "\tMODE_NODE\x10\x02*;\n" + + "\aTeeType\x12\x18\n" + + "\x14TEE_TYPE_UNSPECIFIED\x10\x00\x12\x16\n" + + "\x12TEE_TYPE_AWS_NITRO\x10\x01*i\n" + + "\x19CapabilityRestrictionType\x12&\n" + + "\"CAPABILITY_RESTRICTION_TYPE_CLOSED\x10\x00\x12$\n" + + " CAPABILITY_RESTRICTION_TYPE_OPEN\x10\x01b\x06proto3" var ( file_sdk_v1alpha_sdk_proto_rawDescOnce sync.Once @@ -1721,72 +2623,102 @@ func file_sdk_v1alpha_sdk_proto_rawDescGZIP() []byte { return file_sdk_v1alpha_sdk_proto_rawDescData } -var file_sdk_v1alpha_sdk_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_sdk_v1alpha_sdk_proto_msgTypes = make([]protoimpl.MessageInfo, 26) +var file_sdk_v1alpha_sdk_proto_enumTypes = make([]protoimpl.EnumInfo, 4) +var file_sdk_v1alpha_sdk_proto_msgTypes = make([]protoimpl.MessageInfo, 38) var file_sdk_v1alpha_sdk_proto_goTypes = []any{ (AggregationType)(0), // 0: sdk.v1alpha.AggregationType (Mode)(0), // 1: sdk.v1alpha.Mode - (*SimpleConsensusInputs)(nil), // 2: sdk.v1alpha.SimpleConsensusInputs - (*FieldsMap)(nil), // 3: sdk.v1alpha.FieldsMap - (*ConsensusDescriptor)(nil), // 4: sdk.v1alpha.ConsensusDescriptor - (*ReportRequest)(nil), // 5: sdk.v1alpha.ReportRequest - (*ReportResponse)(nil), // 6: sdk.v1alpha.ReportResponse - (*AttributedSignature)(nil), // 7: sdk.v1alpha.AttributedSignature - (*CapabilityRequest)(nil), // 8: sdk.v1alpha.CapabilityRequest - (*CapabilityResponse)(nil), // 9: sdk.v1alpha.CapabilityResponse - (*TriggerSubscription)(nil), // 10: sdk.v1alpha.TriggerSubscription - (*TriggerSubscriptionRequest)(nil), // 11: sdk.v1alpha.TriggerSubscriptionRequest - (*Trigger)(nil), // 12: sdk.v1alpha.Trigger - (*AwaitCapabilitiesRequest)(nil), // 13: sdk.v1alpha.AwaitCapabilitiesRequest - (*AwaitCapabilitiesResponse)(nil), // 14: sdk.v1alpha.AwaitCapabilitiesResponse - (*ExecuteRequest)(nil), // 15: sdk.v1alpha.ExecuteRequest - (*ExecutionResult)(nil), // 16: sdk.v1alpha.ExecutionResult - (*GetSecretsRequest)(nil), // 17: sdk.v1alpha.GetSecretsRequest - (*AwaitSecretsRequest)(nil), // 18: sdk.v1alpha.AwaitSecretsRequest - (*AwaitSecretsResponse)(nil), // 19: sdk.v1alpha.AwaitSecretsResponse - (*SecretRequest)(nil), // 20: sdk.v1alpha.SecretRequest - (*Secret)(nil), // 21: sdk.v1alpha.Secret - (*SecretError)(nil), // 22: sdk.v1alpha.SecretError - (*SecretResponse)(nil), // 23: sdk.v1alpha.SecretResponse - (*SecretResponses)(nil), // 24: sdk.v1alpha.SecretResponses - nil, // 25: sdk.v1alpha.FieldsMap.FieldsEntry - nil, // 26: sdk.v1alpha.AwaitCapabilitiesResponse.ResponsesEntry - nil, // 27: sdk.v1alpha.AwaitSecretsResponse.ResponsesEntry - (*pb.Value)(nil), // 28: values.v1.Value - (*anypb.Any)(nil), // 29: google.protobuf.Any - (*emptypb.Empty)(nil), // 30: google.protobuf.Empty + (TeeType)(0), // 2: sdk.v1alpha.TeeType + (CapabilityRestrictionType)(0), // 3: sdk.v1alpha.CapabilityRestrictionType + (*SimpleConsensusInputs)(nil), // 4: sdk.v1alpha.SimpleConsensusInputs + (*FieldsMap)(nil), // 5: sdk.v1alpha.FieldsMap + (*ConsensusDescriptor)(nil), // 6: sdk.v1alpha.ConsensusDescriptor + (*ReportRequest)(nil), // 7: sdk.v1alpha.ReportRequest + (*ReportResponse)(nil), // 8: sdk.v1alpha.ReportResponse + (*AttributedSignature)(nil), // 9: sdk.v1alpha.AttributedSignature + (*CapabilityRequest)(nil), // 10: sdk.v1alpha.CapabilityRequest + (*CapabilityResponse)(nil), // 11: sdk.v1alpha.CapabilityResponse + (*TriggerSubscription)(nil), // 12: sdk.v1alpha.TriggerSubscription + (*TeeTypeAndRegions)(nil), // 13: sdk.v1alpha.TeeTypeAndRegions + (*TriggerSubscriptionRequest)(nil), // 14: sdk.v1alpha.TriggerSubscriptionRequest + (*Trigger)(nil), // 15: sdk.v1alpha.Trigger + (*Regions)(nil), // 16: sdk.v1alpha.Regions + (*TeeTypesAndRegions)(nil), // 17: sdk.v1alpha.TeeTypesAndRegions + (*Tee)(nil), // 18: sdk.v1alpha.Tee + (*Requirements)(nil), // 19: sdk.v1alpha.Requirements + (*AwaitCapabilitiesRequest)(nil), // 20: sdk.v1alpha.AwaitCapabilitiesRequest + (*AwaitCapabilitiesResponse)(nil), // 21: sdk.v1alpha.AwaitCapabilitiesResponse + (*ExecuteRequest)(nil), // 22: sdk.v1alpha.ExecuteRequest + (*ExecutionResult)(nil), // 23: sdk.v1alpha.ExecutionResult + (*GetSecretsRequest)(nil), // 24: sdk.v1alpha.GetSecretsRequest + (*AwaitSecretsRequest)(nil), // 25: sdk.v1alpha.AwaitSecretsRequest + (*AwaitSecretsResponse)(nil), // 26: sdk.v1alpha.AwaitSecretsResponse + (*SecretRequest)(nil), // 27: sdk.v1alpha.SecretRequest + (*Secret)(nil), // 28: sdk.v1alpha.Secret + (*SecretError)(nil), // 29: sdk.v1alpha.SecretError + (*SecretResponse)(nil), // 30: sdk.v1alpha.SecretResponse + (*SecretResponses)(nil), // 31: sdk.v1alpha.SecretResponses + (*MethodRestriction)(nil), // 32: sdk.v1alpha.MethodRestriction + (*CapabilityRestriction)(nil), // 33: sdk.v1alpha.CapabilityRestriction + (*CapabilityRestrictions)(nil), // 34: sdk.v1alpha.CapabilityRestrictions + (*SecretPrefixRestriction)(nil), // 35: sdk.v1alpha.SecretPrefixRestriction + (*SecretRestriction)(nil), // 36: sdk.v1alpha.SecretRestriction + (*SecretsRestritions)(nil), // 37: sdk.v1alpha.SecretsRestritions + (*Restrictions)(nil), // 38: sdk.v1alpha.Restrictions + nil, // 39: sdk.v1alpha.FieldsMap.FieldsEntry + nil, // 40: sdk.v1alpha.AwaitCapabilitiesResponse.ResponsesEntry + nil, // 41: sdk.v1alpha.AwaitSecretsResponse.ResponsesEntry + (*pb.Value)(nil), // 42: values.v1.Value + (*anypb.Any)(nil), // 43: google.protobuf.Any + (*emptypb.Empty)(nil), // 44: google.protobuf.Empty } var file_sdk_v1alpha_sdk_proto_depIdxs = []int32{ - 28, // 0: sdk.v1alpha.SimpleConsensusInputs.value:type_name -> values.v1.Value - 4, // 1: sdk.v1alpha.SimpleConsensusInputs.descriptors:type_name -> sdk.v1alpha.ConsensusDescriptor - 28, // 2: sdk.v1alpha.SimpleConsensusInputs.default:type_name -> values.v1.Value - 25, // 3: sdk.v1alpha.FieldsMap.fields:type_name -> sdk.v1alpha.FieldsMap.FieldsEntry + 42, // 0: sdk.v1alpha.SimpleConsensusInputs.value:type_name -> values.v1.Value + 6, // 1: sdk.v1alpha.SimpleConsensusInputs.descriptors:type_name -> sdk.v1alpha.ConsensusDescriptor + 42, // 2: sdk.v1alpha.SimpleConsensusInputs.default:type_name -> values.v1.Value + 39, // 3: sdk.v1alpha.FieldsMap.fields:type_name -> sdk.v1alpha.FieldsMap.FieldsEntry 0, // 4: sdk.v1alpha.ConsensusDescriptor.aggregation:type_name -> sdk.v1alpha.AggregationType - 3, // 5: sdk.v1alpha.ConsensusDescriptor.fields_map:type_name -> sdk.v1alpha.FieldsMap - 7, // 6: sdk.v1alpha.ReportResponse.sigs:type_name -> sdk.v1alpha.AttributedSignature - 29, // 7: sdk.v1alpha.CapabilityRequest.payload:type_name -> google.protobuf.Any - 29, // 8: sdk.v1alpha.CapabilityResponse.payload:type_name -> google.protobuf.Any - 29, // 9: sdk.v1alpha.TriggerSubscription.payload:type_name -> google.protobuf.Any - 10, // 10: sdk.v1alpha.TriggerSubscriptionRequest.subscriptions:type_name -> sdk.v1alpha.TriggerSubscription - 29, // 11: sdk.v1alpha.Trigger.payload:type_name -> google.protobuf.Any - 26, // 12: sdk.v1alpha.AwaitCapabilitiesResponse.responses:type_name -> sdk.v1alpha.AwaitCapabilitiesResponse.ResponsesEntry - 30, // 13: sdk.v1alpha.ExecuteRequest.subscribe:type_name -> google.protobuf.Empty - 12, // 14: sdk.v1alpha.ExecuteRequest.trigger:type_name -> sdk.v1alpha.Trigger - 28, // 15: sdk.v1alpha.ExecutionResult.value:type_name -> values.v1.Value - 11, // 16: sdk.v1alpha.ExecutionResult.trigger_subscriptions:type_name -> sdk.v1alpha.TriggerSubscriptionRequest - 20, // 17: sdk.v1alpha.GetSecretsRequest.requests:type_name -> sdk.v1alpha.SecretRequest - 27, // 18: sdk.v1alpha.AwaitSecretsResponse.responses:type_name -> sdk.v1alpha.AwaitSecretsResponse.ResponsesEntry - 21, // 19: sdk.v1alpha.SecretResponse.secret:type_name -> sdk.v1alpha.Secret - 22, // 20: sdk.v1alpha.SecretResponse.error:type_name -> sdk.v1alpha.SecretError - 23, // 21: sdk.v1alpha.SecretResponses.responses:type_name -> sdk.v1alpha.SecretResponse - 4, // 22: sdk.v1alpha.FieldsMap.FieldsEntry.value:type_name -> sdk.v1alpha.ConsensusDescriptor - 9, // 23: sdk.v1alpha.AwaitCapabilitiesResponse.ResponsesEntry.value:type_name -> sdk.v1alpha.CapabilityResponse - 24, // 24: sdk.v1alpha.AwaitSecretsResponse.ResponsesEntry.value:type_name -> sdk.v1alpha.SecretResponses - 25, // [25:25] is the sub-list for method output_type - 25, // [25:25] is the sub-list for method input_type - 25, // [25:25] is the sub-list for extension type_name - 25, // [25:25] is the sub-list for extension extendee - 0, // [0:25] is the sub-list for field type_name + 5, // 5: sdk.v1alpha.ConsensusDescriptor.fields_map:type_name -> sdk.v1alpha.FieldsMap + 9, // 6: sdk.v1alpha.ReportResponse.sigs:type_name -> sdk.v1alpha.AttributedSignature + 43, // 7: sdk.v1alpha.CapabilityRequest.payload:type_name -> google.protobuf.Any + 43, // 8: sdk.v1alpha.CapabilityResponse.payload:type_name -> google.protobuf.Any + 43, // 9: sdk.v1alpha.TriggerSubscription.payload:type_name -> google.protobuf.Any + 19, // 10: sdk.v1alpha.TriggerSubscription.requirements:type_name -> sdk.v1alpha.Requirements + 2, // 11: sdk.v1alpha.TeeTypeAndRegions.type:type_name -> sdk.v1alpha.TeeType + 12, // 12: sdk.v1alpha.TriggerSubscriptionRequest.subscriptions:type_name -> sdk.v1alpha.TriggerSubscription + 43, // 13: sdk.v1alpha.Trigger.payload:type_name -> google.protobuf.Any + 13, // 14: sdk.v1alpha.TeeTypesAndRegions.tee_type_and_regions:type_name -> sdk.v1alpha.TeeTypeAndRegions + 16, // 15: sdk.v1alpha.Tee.any_regions:type_name -> sdk.v1alpha.Regions + 17, // 16: sdk.v1alpha.Tee.tee_types_and_regions:type_name -> sdk.v1alpha.TeeTypesAndRegions + 18, // 17: sdk.v1alpha.Requirements.tee:type_name -> sdk.v1alpha.Tee + 40, // 18: sdk.v1alpha.AwaitCapabilitiesResponse.responses:type_name -> sdk.v1alpha.AwaitCapabilitiesResponse.ResponsesEntry + 44, // 19: sdk.v1alpha.ExecuteRequest.subscribe:type_name -> google.protobuf.Empty + 15, // 20: sdk.v1alpha.ExecuteRequest.trigger:type_name -> sdk.v1alpha.Trigger + 15, // 21: sdk.v1alpha.ExecuteRequest.pre_hook:type_name -> sdk.v1alpha.Trigger + 42, // 22: sdk.v1alpha.ExecutionResult.value:type_name -> values.v1.Value + 14, // 23: sdk.v1alpha.ExecutionResult.trigger_subscriptions:type_name -> sdk.v1alpha.TriggerSubscriptionRequest + 38, // 24: sdk.v1alpha.ExecutionResult.restrictions:type_name -> sdk.v1alpha.Restrictions + 27, // 25: sdk.v1alpha.GetSecretsRequest.requests:type_name -> sdk.v1alpha.SecretRequest + 41, // 26: sdk.v1alpha.AwaitSecretsResponse.responses:type_name -> sdk.v1alpha.AwaitSecretsResponse.ResponsesEntry + 28, // 27: sdk.v1alpha.SecretResponse.secret:type_name -> sdk.v1alpha.Secret + 29, // 28: sdk.v1alpha.SecretResponse.error:type_name -> sdk.v1alpha.SecretError + 30, // 29: sdk.v1alpha.SecretResponses.responses:type_name -> sdk.v1alpha.SecretResponse + 32, // 30: sdk.v1alpha.CapabilityRestriction.method:type_name -> sdk.v1alpha.MethodRestriction + 33, // 31: sdk.v1alpha.CapabilityRestrictions.restrictions:type_name -> sdk.v1alpha.CapabilityRestriction + 3, // 32: sdk.v1alpha.CapabilityRestrictions.type:type_name -> sdk.v1alpha.CapabilityRestrictionType + 28, // 33: sdk.v1alpha.SecretRestriction.exact_secret:type_name -> sdk.v1alpha.Secret + 35, // 34: sdk.v1alpha.SecretRestriction.prefixed_secret:type_name -> sdk.v1alpha.SecretPrefixRestriction + 36, // 35: sdk.v1alpha.SecretsRestritions.restrictions:type_name -> sdk.v1alpha.SecretRestriction + 37, // 36: sdk.v1alpha.Restrictions.secrets:type_name -> sdk.v1alpha.SecretsRestritions + 34, // 37: sdk.v1alpha.Restrictions.capabilities:type_name -> sdk.v1alpha.CapabilityRestrictions + 6, // 38: sdk.v1alpha.FieldsMap.FieldsEntry.value:type_name -> sdk.v1alpha.ConsensusDescriptor + 11, // 39: sdk.v1alpha.AwaitCapabilitiesResponse.ResponsesEntry.value:type_name -> sdk.v1alpha.CapabilityResponse + 31, // 40: sdk.v1alpha.AwaitSecretsResponse.ResponsesEntry.value:type_name -> sdk.v1alpha.SecretResponses + 41, // [41:41] is the sub-list for method output_type + 41, // [41:41] is the sub-list for method input_type + 41, // [41:41] is the sub-list for extension type_name + 41, // [41:41] is the sub-list for extension extendee + 0, // [0:41] is the sub-list for field type_name } func init() { file_sdk_v1alpha_sdk_proto_init() } @@ -1806,26 +2738,39 @@ func file_sdk_v1alpha_sdk_proto_init() { (*CapabilityResponse_Payload)(nil), (*CapabilityResponse_Error)(nil), } - file_sdk_v1alpha_sdk_proto_msgTypes[13].OneofWrappers = []any{ + file_sdk_v1alpha_sdk_proto_msgTypes[14].OneofWrappers = []any{ + (*Tee_AnyRegions)(nil), + (*Tee_TeeTypesAndRegions)(nil), + } + file_sdk_v1alpha_sdk_proto_msgTypes[18].OneofWrappers = []any{ (*ExecuteRequest_Subscribe)(nil), (*ExecuteRequest_Trigger)(nil), + (*ExecuteRequest_PreHook)(nil), } - file_sdk_v1alpha_sdk_proto_msgTypes[14].OneofWrappers = []any{ + file_sdk_v1alpha_sdk_proto_msgTypes[19].OneofWrappers = []any{ (*ExecutionResult_Value)(nil), (*ExecutionResult_Error)(nil), (*ExecutionResult_TriggerSubscriptions)(nil), + (*ExecutionResult_Restrictions)(nil), } - file_sdk_v1alpha_sdk_proto_msgTypes[21].OneofWrappers = []any{ + file_sdk_v1alpha_sdk_proto_msgTypes[26].OneofWrappers = []any{ (*SecretResponse_Secret)(nil), (*SecretResponse_Error)(nil), } + file_sdk_v1alpha_sdk_proto_msgTypes[29].OneofWrappers = []any{ + (*CapabilityRestriction_Method)(nil), + } + file_sdk_v1alpha_sdk_proto_msgTypes[32].OneofWrappers = []any{ + (*SecretRestriction_ExactSecret)(nil), + (*SecretRestriction_PrefixedSecret)(nil), + } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_sdk_v1alpha_sdk_proto_rawDesc), len(file_sdk_v1alpha_sdk_proto_rawDesc)), - NumEnums: 2, - NumMessages: 26, + NumEnums: 4, + NumMessages: 38, NumExtensions: 0, NumServices: 0, }, diff --git a/cre/go/tools/generator/cre_metadata.pb.go b/cre/go/tools/generator/cre_metadata.pb.go index 7026ea3f..655b2f0e 100644 --- a/cre/go/tools/generator/cre_metadata.pb.go +++ b/cre/go/tools/generator/cre_metadata.pb.go @@ -23,6 +23,52 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +type AdditionalEnvironments int32 + +const ( + AdditionalEnvironments_ADDITIONAL_ENVIRONMENTS_UNSPECIFIED AdditionalEnvironments = 0 + AdditionalEnvironments_ADDITIONAL_ENVIRONMENTS_TEE AdditionalEnvironments = 1 +) + +// Enum value maps for AdditionalEnvironments. +var ( + AdditionalEnvironments_name = map[int32]string{ + 0: "ADDITIONAL_ENVIRONMENTS_UNSPECIFIED", + 1: "ADDITIONAL_ENVIRONMENTS_TEE", + } + AdditionalEnvironments_value = map[string]int32{ + "ADDITIONAL_ENVIRONMENTS_UNSPECIFIED": 0, + "ADDITIONAL_ENVIRONMENTS_TEE": 1, + } +) + +func (x AdditionalEnvironments) Enum() *AdditionalEnvironments { + p := new(AdditionalEnvironments) + *p = x + return p +} + +func (x AdditionalEnvironments) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AdditionalEnvironments) Descriptor() protoreflect.EnumDescriptor { + return file_tools_generator_v1alpha_cre_metadata_proto_enumTypes[0].Descriptor() +} + +func (AdditionalEnvironments) Type() protoreflect.EnumType { + return &file_tools_generator_v1alpha_cre_metadata_proto_enumTypes[0] +} + +func (x AdditionalEnvironments) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AdditionalEnvironments.Descriptor instead. +func (AdditionalEnvironments) EnumDescriptor() ([]byte, []int) { + return file_tools_generator_v1alpha_cre_metadata_proto_rawDescGZIP(), []int{0} +} + type StringLabel struct { state protoimpl.MessageState `protogen:"open.v1"` Defaults map[string]string `protobuf:"bytes,1,rep,name=defaults,proto3" json:"defaults,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` @@ -374,12 +420,13 @@ func (*Label_Uint32Label) isLabel_Kind() {} func (*Label_Int32Label) isLabel_Kind() {} type CapabilityMetadata struct { - state protoimpl.MessageState `protogen:"open.v1"` - Mode sdk.Mode `protobuf:"varint,1,opt,name=mode,proto3,enum=sdk.v1alpha.Mode" json:"mode,omitempty"` - CapabilityId string `protobuf:"bytes,2,opt,name=capability_id,json=capabilityId,proto3" json:"capability_id,omitempty"` - Labels map[string]*Label `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Mode sdk.Mode `protobuf:"varint,1,opt,name=mode,proto3,enum=sdk.v1alpha.Mode" json:"mode,omitempty"` + CapabilityId string `protobuf:"bytes,2,opt,name=capability_id,json=capabilityId,proto3" json:"capability_id,omitempty"` + Labels map[string]*Label `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + AdditionalEnvironments []AdditionalEnvironments `protobuf:"varint,4,rep,packed,name=additional_environments,json=additionalEnvironments,proto3,enum=tools.generator.v1alpha.AdditionalEnvironments" json:"additional_environments,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CapabilityMetadata) Reset() { @@ -433,6 +480,13 @@ func (x *CapabilityMetadata) GetLabels() map[string]*Label { return nil } +func (x *CapabilityMetadata) GetAdditionalEnvironments() []AdditionalEnvironments { + if x != nil { + return x.AdditionalEnvironments + } + return nil +} + type CapabilityMethodMetadata struct { state protoimpl.MessageState `protogen:"open.v1"` MapToUntypedApi bool `protobuf:"varint,1,opt,name=map_to_untyped_api,json=mapToUntypedApi,proto3" json:"map_to_untyped_api,omitempty"` @@ -548,16 +602,20 @@ const file_tools_generator_v1alpha_cre_metadata_proto_rawDesc = "" + "\fuint32_label\x18\x04 \x01(\v2$.tools.generator.v1alpha.Uint32LabelH\x00R\vuint32Label\x12F\n" + "\vint32_label\x18\x05 \x01(\v2#.tools.generator.v1alpha.Int32LabelH\x00R\n" + "int32LabelB\x06\n" + - "\x04kind\"\x8c\x02\n" + + "\x04kind\"\xf6\x02\n" + "\x12CapabilityMetadata\x12%\n" + "\x04mode\x18\x01 \x01(\x0e2\x11.sdk.v1alpha.ModeR\x04mode\x12#\n" + "\rcapability_id\x18\x02 \x01(\tR\fcapabilityId\x12O\n" + - "\x06labels\x18\x03 \x03(\v27.tools.generator.v1alpha.CapabilityMetadata.LabelsEntryR\x06labels\x1aY\n" + + "\x06labels\x18\x03 \x03(\v27.tools.generator.v1alpha.CapabilityMetadata.LabelsEntryR\x06labels\x12h\n" + + "\x17additional_environments\x18\x04 \x03(\x0e2/.tools.generator.v1alpha.AdditionalEnvironmentsR\x16additionalEnvironments\x1aY\n" + "\vLabelsEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x124\n" + "\x05value\x18\x02 \x01(\v2\x1e.tools.generator.v1alpha.LabelR\x05value:\x028\x01\"G\n" + "\x18CapabilityMethodMetadata\x12+\n" + - "\x12map_to_untyped_api\x18\x01 \x01(\bR\x0fmapToUntypedApi:n\n" + + "\x12map_to_untyped_api\x18\x01 \x01(\bR\x0fmapToUntypedApi*b\n" + + "\x16AdditionalEnvironments\x12'\n" + + "#ADDITIONAL_ENVIRONMENTS_UNSPECIFIED\x10\x00\x12\x1f\n" + + "\x1bADDITIONAL_ENVIRONMENTS_TEE\x10\x01:n\n" + "\n" + "capability\x12\x1f.google.protobuf.ServiceOptions\x18І\x03 \x01(\v2+.tools.generator.v1alpha.CapabilityMetadataR\n" + "capability:k\n" + @@ -575,49 +633,52 @@ func file_tools_generator_v1alpha_cre_metadata_proto_rawDescGZIP() []byte { return file_tools_generator_v1alpha_cre_metadata_proto_rawDescData } +var file_tools_generator_v1alpha_cre_metadata_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_tools_generator_v1alpha_cre_metadata_proto_msgTypes = make([]protoimpl.MessageInfo, 14) var file_tools_generator_v1alpha_cre_metadata_proto_goTypes = []any{ - (*StringLabel)(nil), // 0: tools.generator.v1alpha.StringLabel - (*Uint64Label)(nil), // 1: tools.generator.v1alpha.Uint64Label - (*Uint32Label)(nil), // 2: tools.generator.v1alpha.Uint32Label - (*Int64Label)(nil), // 3: tools.generator.v1alpha.Int64Label - (*Int32Label)(nil), // 4: tools.generator.v1alpha.Int32Label - (*Label)(nil), // 5: tools.generator.v1alpha.Label - (*CapabilityMetadata)(nil), // 6: tools.generator.v1alpha.CapabilityMetadata - (*CapabilityMethodMetadata)(nil), // 7: tools.generator.v1alpha.CapabilityMethodMetadata - nil, // 8: tools.generator.v1alpha.StringLabel.DefaultsEntry - nil, // 9: tools.generator.v1alpha.Uint64Label.DefaultsEntry - nil, // 10: tools.generator.v1alpha.Uint32Label.DefaultsEntry - nil, // 11: tools.generator.v1alpha.Int64Label.DefaultsEntry - nil, // 12: tools.generator.v1alpha.Int32Label.DefaultsEntry - nil, // 13: tools.generator.v1alpha.CapabilityMetadata.LabelsEntry - (sdk.Mode)(0), // 14: sdk.v1alpha.Mode - (*descriptorpb.ServiceOptions)(nil), // 15: google.protobuf.ServiceOptions - (*descriptorpb.MethodOptions)(nil), // 16: google.protobuf.MethodOptions + (AdditionalEnvironments)(0), // 0: tools.generator.v1alpha.AdditionalEnvironments + (*StringLabel)(nil), // 1: tools.generator.v1alpha.StringLabel + (*Uint64Label)(nil), // 2: tools.generator.v1alpha.Uint64Label + (*Uint32Label)(nil), // 3: tools.generator.v1alpha.Uint32Label + (*Int64Label)(nil), // 4: tools.generator.v1alpha.Int64Label + (*Int32Label)(nil), // 5: tools.generator.v1alpha.Int32Label + (*Label)(nil), // 6: tools.generator.v1alpha.Label + (*CapabilityMetadata)(nil), // 7: tools.generator.v1alpha.CapabilityMetadata + (*CapabilityMethodMetadata)(nil), // 8: tools.generator.v1alpha.CapabilityMethodMetadata + nil, // 9: tools.generator.v1alpha.StringLabel.DefaultsEntry + nil, // 10: tools.generator.v1alpha.Uint64Label.DefaultsEntry + nil, // 11: tools.generator.v1alpha.Uint32Label.DefaultsEntry + nil, // 12: tools.generator.v1alpha.Int64Label.DefaultsEntry + nil, // 13: tools.generator.v1alpha.Int32Label.DefaultsEntry + nil, // 14: tools.generator.v1alpha.CapabilityMetadata.LabelsEntry + (sdk.Mode)(0), // 15: sdk.v1alpha.Mode + (*descriptorpb.ServiceOptions)(nil), // 16: google.protobuf.ServiceOptions + (*descriptorpb.MethodOptions)(nil), // 17: google.protobuf.MethodOptions } var file_tools_generator_v1alpha_cre_metadata_proto_depIdxs = []int32{ - 8, // 0: tools.generator.v1alpha.StringLabel.defaults:type_name -> tools.generator.v1alpha.StringLabel.DefaultsEntry - 9, // 1: tools.generator.v1alpha.Uint64Label.defaults:type_name -> tools.generator.v1alpha.Uint64Label.DefaultsEntry - 10, // 2: tools.generator.v1alpha.Uint32Label.defaults:type_name -> tools.generator.v1alpha.Uint32Label.DefaultsEntry - 11, // 3: tools.generator.v1alpha.Int64Label.defaults:type_name -> tools.generator.v1alpha.Int64Label.DefaultsEntry - 12, // 4: tools.generator.v1alpha.Int32Label.defaults:type_name -> tools.generator.v1alpha.Int32Label.DefaultsEntry - 0, // 5: tools.generator.v1alpha.Label.string_label:type_name -> tools.generator.v1alpha.StringLabel - 1, // 6: tools.generator.v1alpha.Label.uint64_label:type_name -> tools.generator.v1alpha.Uint64Label - 3, // 7: tools.generator.v1alpha.Label.int64_label:type_name -> tools.generator.v1alpha.Int64Label - 2, // 8: tools.generator.v1alpha.Label.uint32_label:type_name -> tools.generator.v1alpha.Uint32Label - 4, // 9: tools.generator.v1alpha.Label.int32_label:type_name -> tools.generator.v1alpha.Int32Label - 14, // 10: tools.generator.v1alpha.CapabilityMetadata.mode:type_name -> sdk.v1alpha.Mode - 13, // 11: tools.generator.v1alpha.CapabilityMetadata.labels:type_name -> tools.generator.v1alpha.CapabilityMetadata.LabelsEntry - 5, // 12: tools.generator.v1alpha.CapabilityMetadata.LabelsEntry.value:type_name -> tools.generator.v1alpha.Label - 15, // 13: tools.generator.v1alpha.capability:extendee -> google.protobuf.ServiceOptions - 16, // 14: tools.generator.v1alpha.method:extendee -> google.protobuf.MethodOptions - 6, // 15: tools.generator.v1alpha.capability:type_name -> tools.generator.v1alpha.CapabilityMetadata - 7, // 16: tools.generator.v1alpha.method:type_name -> tools.generator.v1alpha.CapabilityMethodMetadata - 17, // [17:17] is the sub-list for method output_type - 17, // [17:17] is the sub-list for method input_type - 15, // [15:17] is the sub-list for extension type_name - 13, // [13:15] is the sub-list for extension extendee - 0, // [0:13] is the sub-list for field type_name + 9, // 0: tools.generator.v1alpha.StringLabel.defaults:type_name -> tools.generator.v1alpha.StringLabel.DefaultsEntry + 10, // 1: tools.generator.v1alpha.Uint64Label.defaults:type_name -> tools.generator.v1alpha.Uint64Label.DefaultsEntry + 11, // 2: tools.generator.v1alpha.Uint32Label.defaults:type_name -> tools.generator.v1alpha.Uint32Label.DefaultsEntry + 12, // 3: tools.generator.v1alpha.Int64Label.defaults:type_name -> tools.generator.v1alpha.Int64Label.DefaultsEntry + 13, // 4: tools.generator.v1alpha.Int32Label.defaults:type_name -> tools.generator.v1alpha.Int32Label.DefaultsEntry + 1, // 5: tools.generator.v1alpha.Label.string_label:type_name -> tools.generator.v1alpha.StringLabel + 2, // 6: tools.generator.v1alpha.Label.uint64_label:type_name -> tools.generator.v1alpha.Uint64Label + 4, // 7: tools.generator.v1alpha.Label.int64_label:type_name -> tools.generator.v1alpha.Int64Label + 3, // 8: tools.generator.v1alpha.Label.uint32_label:type_name -> tools.generator.v1alpha.Uint32Label + 5, // 9: tools.generator.v1alpha.Label.int32_label:type_name -> tools.generator.v1alpha.Int32Label + 15, // 10: tools.generator.v1alpha.CapabilityMetadata.mode:type_name -> sdk.v1alpha.Mode + 14, // 11: tools.generator.v1alpha.CapabilityMetadata.labels:type_name -> tools.generator.v1alpha.CapabilityMetadata.LabelsEntry + 0, // 12: tools.generator.v1alpha.CapabilityMetadata.additional_environments:type_name -> tools.generator.v1alpha.AdditionalEnvironments + 6, // 13: tools.generator.v1alpha.CapabilityMetadata.LabelsEntry.value:type_name -> tools.generator.v1alpha.Label + 16, // 14: tools.generator.v1alpha.capability:extendee -> google.protobuf.ServiceOptions + 17, // 15: tools.generator.v1alpha.method:extendee -> google.protobuf.MethodOptions + 7, // 16: tools.generator.v1alpha.capability:type_name -> tools.generator.v1alpha.CapabilityMetadata + 8, // 17: tools.generator.v1alpha.method:type_name -> tools.generator.v1alpha.CapabilityMethodMetadata + 18, // [18:18] is the sub-list for method output_type + 18, // [18:18] is the sub-list for method input_type + 16, // [16:18] is the sub-list for extension type_name + 14, // [14:16] is the sub-list for extension extendee + 0, // [0:14] is the sub-list for field type_name } func init() { file_tools_generator_v1alpha_cre_metadata_proto_init() } @@ -637,13 +698,14 @@ func file_tools_generator_v1alpha_cre_metadata_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_tools_generator_v1alpha_cre_metadata_proto_rawDesc), len(file_tools_generator_v1alpha_cre_metadata_proto_rawDesc)), - NumEnums: 0, + NumEnums: 1, NumMessages: 14, NumExtensions: 2, NumServices: 0, }, GoTypes: file_tools_generator_v1alpha_cre_metadata_proto_goTypes, DependencyIndexes: file_tools_generator_v1alpha_cre_metadata_proto_depIdxs, + EnumInfos: file_tools_generator_v1alpha_cre_metadata_proto_enumTypes, MessageInfos: file_tools_generator_v1alpha_cre_metadata_proto_msgTypes, ExtensionInfos: file_tools_generator_v1alpha_cre_metadata_proto_extTypes, }.Build() diff --git a/cre/sdk/v1alpha/sdk.proto b/cre/sdk/v1alpha/sdk.proto index 4be81f5e..0a562a17 100644 --- a/cre/sdk/v1alpha/sdk.proto +++ b/cre/sdk/v1alpha/sdk.proto @@ -12,6 +12,7 @@ enum AggregationType { AGGREGATION_TYPE_IDENTICAL = 2; AGGREGATION_TYPE_COMMON_PREFIX = 3; AGGREGATION_TYPE_COMMON_SUFFIX = 4; + AGGREGATION_TYPE_FREQUENCY_LIST = 5; } message SimpleConsensusInputs { @@ -78,6 +79,18 @@ message TriggerSubscription { string id = 1; google.protobuf.Any payload = 2; string method = 3; + Requirements requirements = 4; + bool pre_hook = 5; +} + +enum TeeType { + TEE_TYPE_UNSPECIFIED = 0; + TEE_TYPE_AWS_NITRO = 1; +} + +message TeeTypeAndRegions { + TeeType type = 1; + repeated string regions = 3; } message TriggerSubscriptionRequest { @@ -89,6 +102,25 @@ message Trigger { google.protobuf.Any payload = 2; } +message Regions { + repeated string regions = 1; +} + +message TeeTypesAndRegions { + repeated TeeTypeAndRegions tee_type_and_regions = 1; +} + +message Tee { + oneof item { + Regions any_regions = 1; + TeeTypesAndRegions tee_types_and_regions = 2; + } +} + +message Requirements { + Tee tee = 1; +} + message AwaitCapabilitiesRequest { repeated int32 ids = 1; } @@ -101,8 +133,10 @@ message ExecuteRequest { oneof request { google.protobuf.Empty subscribe = 2; Trigger trigger = 3; + Trigger pre_hook = 5; } uint64 max_response_size = 4; + bool suspend_on_await = 6; } message ExecutionResult { @@ -110,6 +144,7 @@ message ExecutionResult { values.v1.Value value = 1; string error = 2; TriggerSubscriptionRequest trigger_subscriptions = 3; + Restrictions restrictions = 4; } } @@ -155,3 +190,49 @@ message SecretResponse { message SecretResponses { repeated SecretResponse responses = 1; } + +message MethodRestriction { + string id = 1; + string method = 2; + uint32 max_calls = 3; +} + +message CapabilityRestriction { + oneof restriction { + MethodRestriction method = 1; + } +} + +enum CapabilityRestrictionType { + CAPABILITY_RESTRICTION_TYPE_CLOSED = 0; + CAPABILITY_RESTRICTION_TYPE_OPEN = 1; +} + +message CapabilityRestrictions { + repeated CapabilityRestriction restrictions = 1; + uint32 max_total_calls = 2; + CapabilityRestrictionType type = 3; +} + +message SecretPrefixRestriction { + string prefix = 1; + string namespace = 2; + uint32 max_secrets = 3; +} + +message SecretRestriction { + oneof restriction { + Secret exact_secret = 1; + SecretPrefixRestriction prefixed_secret = 2; + } +} + +message SecretsRestritions { + repeated SecretRestriction restrictions = 1; + uint32 max_secrets = 2; +} + +message Restrictions { + SecretsRestritions secrets = 1; + CapabilityRestrictions capabilities = 2; +} diff --git a/cre/sdk/v1beta/sdk.proto b/cre/sdk/v1beta/sdk.proto index 39d73ae0..59c90216 100644 --- a/cre/sdk/v1beta/sdk.proto +++ b/cre/sdk/v1beta/sdk.proto @@ -12,6 +12,7 @@ enum AggregationType { AGGREGATION_TYPE_IDENTICAL = 2; AGGREGATION_TYPE_COMMON_PREFIX = 3; AGGREGATION_TYPE_COMMON_SUFFIX = 4; + AGGREGATION_TYPE_FREQUENCY_LIST = 5; } message SimpleConsensusInputs { diff --git a/cre/tools/generator/v1alpha/cre_metadata.proto b/cre/tools/generator/v1alpha/cre_metadata.proto index cc947db8..25b1f301 100644 --- a/cre/tools/generator/v1alpha/cre_metadata.proto +++ b/cre/tools/generator/v1alpha/cre_metadata.proto @@ -35,10 +35,16 @@ message Label { } } +enum AdditionalEnvironments { + ADDITIONAL_ENVIRONMENTS_UNSPECIFIED = 0; + ADDITIONAL_ENVIRONMENTS_TEE = 1; +} + message CapabilityMetadata { sdk.v1alpha.Mode mode = 1; string capability_id = 2; map labels = 3; + repeated AdditionalEnvironments additional_environments = 4; } extend google.protobuf.ServiceOptions { diff --git a/data-feeds/beholder-job-spec-schemas.json b/data-feeds/beholder-job-spec-schemas.json new file mode 100644 index 00000000..f7e8647a --- /dev/null +++ b/data-feeds/beholder-job-spec-schemas.json @@ -0,0 +1,40 @@ +{ + "domain": "beholder__data-feeds.job-spec__messages", + "schemas": [ + { + "entity": "job_spec.v1.OCR2EVMRelayConfig", + "path": "job_spec/v1/ocr2_evm_relay_config.proto" + }, + { + "entity": "job_spec.v1.OCR2MedianPluginConfig", + "path": "job_spec/v1/ocr2_median_plugin_config.proto" + }, + { + "entity": "job_spec.v1.OCR2OracleSpecInfo", + "path": "job_spec/v1/ocr2_oracle_spec_info.proto", + "references": [ + { + "name": "job_spec/v1/ocr2_evm_relay_config.proto", + "entity": "job_spec.v1.OCR2EVMRelayConfig", + "path": "job_spec/v1/ocr2_evm_relay_config.proto" + }, + { + "name": "job_spec/v1/ocr2_median_plugin_config.proto", + "entity": "job_spec.v1.OCR2MedianPluginConfig", + "path": "job_spec/v1/ocr2_median_plugin_config.proto" + } + ] + }, + { + "entity": "job_spec.v1.JobSpecEvent", + "path": "job_spec/v1/job_spec_event.proto", + "references": [ + { + "name": "job_spec/v1/ocr2_oracle_spec_info.proto", + "entity": "job_spec.v1.OCR2OracleSpecInfo", + "path": "job_spec/v1/ocr2_oracle_spec_info.proto" + } + ] + } + ] +} diff --git a/data-feeds/chip-job-spec-schemas.json b/data-feeds/chip-job-spec-schemas.json new file mode 100644 index 00000000..eb419680 --- /dev/null +++ b/data-feeds/chip-job-spec-schemas.json @@ -0,0 +1,40 @@ +{ + "domain": "data-feeds.job-spec", + "schemas": [ + { + "entity": "job_spec.v1.OCR2EVMRelayConfig", + "path": "job_spec/v1/ocr2_evm_relay_config.proto" + }, + { + "entity": "job_spec.v1.OCR2MedianPluginConfig", + "path": "job_spec/v1/ocr2_median_plugin_config.proto" + }, + { + "entity": "job_spec.v1.OCR2OracleSpecInfo", + "path": "job_spec/v1/ocr2_oracle_spec_info.proto", + "references": [ + { + "name": "job_spec/v1/ocr2_evm_relay_config.proto", + "entity": "job_spec.v1.OCR2EVMRelayConfig", + "path": "job_spec/v1/ocr2_evm_relay_config.proto" + }, + { + "name": "job_spec/v1/ocr2_median_plugin_config.proto", + "entity": "job_spec.v1.OCR2MedianPluginConfig", + "path": "job_spec/v1/ocr2_median_plugin_config.proto" + } + ] + }, + { + "entity": "job_spec.v1.JobSpecEvent", + "path": "job_spec/v1/job_spec_event.proto", + "references": [ + { + "name": "job_spec/v1/ocr2_oracle_spec_info.proto", + "entity": "job_spec.v1.OCR2OracleSpecInfo", + "path": "job_spec/v1/ocr2_oracle_spec_info.proto" + } + ] + } + ] +} diff --git a/data-feeds/chip-schemas.json b/data-feeds/chip-schemas.json new file mode 100644 index 00000000..14e26bf1 --- /dev/null +++ b/data-feeds/chip-schemas.json @@ -0,0 +1,56 @@ +{ + "domain": "data-feeds", + "schemas": [ + { + "entity": "bridge_status.v1.JobInfo", + "path": "bridge_status/v1/job_info.proto" + }, + { + "entity": "bridge_status.v1.RuntimeInfo", + "path": "bridge_status/v1/runtime_info.proto" + }, + { + "entity": "bridge_status.v1.MetricsInfo", + "path": "bridge_status/v1/metrics_info.proto" + }, + { + "entity": "bridge_status.v1.EndpointInfo", + "path": "bridge_status/v1/endpoint_info.proto" + }, + { + "entity": "bridge_status.v1.ConfigurationItem", + "path": "bridge_status/v1/configuration_item.proto" + }, + { + "entity": "bridge_status.v1.BridgeStatusEvent", + "path": "bridge_status/v1/bridge_status_event.proto", + "references": [ + { + "name": "bridge_status/v1/job_info.proto", + "entity": "bridge_status.v1.JobInfo", + "path": "bridge_status/v1/job_info.proto" + }, + { + "name": "bridge_status/v1/runtime_info.proto", + "entity": "bridge_status.v1.RuntimeInfo", + "path": "bridge_status/v1/runtime_info.proto" + }, + { + "name": "bridge_status/v1/metrics_info.proto", + "entity": "bridge_status.v1.MetricsInfo", + "path": "bridge_status/v1/metrics_info.proto" + }, + { + "name": "bridge_status/v1/endpoint_info.proto", + "entity": "bridge_status.v1.EndpointInfo", + "path": "bridge_status/v1/endpoint_info.proto" + }, + { + "name": "bridge_status/v1/configuration_item.proto", + "entity": "bridge_status.v1.ConfigurationItem", + "path": "bridge_status/v1/configuration_item.proto" + } + ] + } + ] +} diff --git a/data-feeds/generate.go b/data-feeds/generate.go index 47106a56..c3250138 100644 --- a/data-feeds/generate.go +++ b/data-feeds/generate.go @@ -6,3 +6,7 @@ package data_feeds //go:generate protoc --proto_path=. --go_out=. --go_opt=paths=source_relative ./bridge_status/v1/metrics_info.proto //go:generate protoc --proto_path=. --go_out=. --go_opt=paths=source_relative ./bridge_status/v1/endpoint_info.proto //go:generate protoc --proto_path=. --go_out=. --go_opt=paths=source_relative ./bridge_status/v1/configuration_item.proto +//go:generate protoc --proto_path=. --go_out=. --go_opt=paths=source_relative ./job_spec/v1/job_spec_event.proto +//go:generate protoc --proto_path=. --go_out=. --go_opt=paths=source_relative ./job_spec/v1/ocr2_oracle_spec_info.proto +//go:generate protoc --proto_path=. --go_out=. --go_opt=paths=source_relative ./job_spec/v1/ocr2_evm_relay_config.proto +//go:generate protoc --proto_path=. --go_out=. --go_opt=paths=source_relative ./job_spec/v1/ocr2_median_plugin_config.proto diff --git a/data-feeds/job_spec/v1/job_spec_event.pb.go b/data-feeds/job_spec/v1/job_spec_event.pb.go new file mode 100644 index 00000000..b40984bc --- /dev/null +++ b/data-feeds/job_spec/v1/job_spec_event.pb.go @@ -0,0 +1,394 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.6 +// protoc v5.29.3 +// source: job_spec/v1/job_spec_event.proto + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// EmissionTrigger is the reason a JobSpecEvent was emitted. +type EmissionTrigger int32 + +const ( + EmissionTrigger_EMISSION_TRIGGER_UNSPECIFIED EmissionTrigger = 0 + EmissionTrigger_EMISSION_TRIGGER_HEARTBEAT EmissionTrigger = 1 + EmissionTrigger_EMISSION_TRIGGER_CREATE EmissionTrigger = 2 + EmissionTrigger_EMISSION_TRIGGER_DELETE EmissionTrigger = 3 +) + +// Enum value maps for EmissionTrigger. +var ( + EmissionTrigger_name = map[int32]string{ + 0: "EMISSION_TRIGGER_UNSPECIFIED", + 1: "EMISSION_TRIGGER_HEARTBEAT", + 2: "EMISSION_TRIGGER_CREATE", + 3: "EMISSION_TRIGGER_DELETE", + } + EmissionTrigger_value = map[string]int32{ + "EMISSION_TRIGGER_UNSPECIFIED": 0, + "EMISSION_TRIGGER_HEARTBEAT": 1, + "EMISSION_TRIGGER_CREATE": 2, + "EMISSION_TRIGGER_DELETE": 3, + } +) + +func (x EmissionTrigger) Enum() *EmissionTrigger { + p := new(EmissionTrigger) + *p = x + return p +} + +func (x EmissionTrigger) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (EmissionTrigger) Descriptor() protoreflect.EnumDescriptor { + return file_job_spec_v1_job_spec_event_proto_enumTypes[0].Descriptor() +} + +func (EmissionTrigger) Type() protoreflect.EnumType { + return &file_job_spec_v1_job_spec_event_proto_enumTypes[0] +} + +func (x EmissionTrigger) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use EmissionTrigger.Descriptor instead. +func (EmissionTrigger) EnumDescriptor() ([]byte, []int) { + return file_job_spec_v1_job_spec_event_proto_rawDescGZIP(), []int{0} +} + +// JobSpecEvent carries a job's spec, emitted on heartbeat, create, and delete. +type JobSpecEvent struct { + state protoimpl.MessageState `protogen:"open.v1"` + // Job identity + ExternalJobId string `protobuf:"bytes,1,opt,name=external_job_id,json=externalJobId,proto3" json:"external_job_id,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + JobType string `protobuf:"bytes,4,opt,name=job_type,json=jobType,proto3" json:"job_type,omitempty"` + SchemaVersion uint32 `protobuf:"varint,5,opt,name=schema_version,json=schemaVersion,proto3" json:"schema_version,omitempty"` + GasLimit *uint32 `protobuf:"varint,6,opt,name=gas_limit,json=gasLimit,proto3,oneof" json:"gas_limit,omitempty"` + ForwardingAllowed bool `protobuf:"varint,7,opt,name=forwarding_allowed,json=forwardingAllowed,proto3" json:"forwarding_allowed,omitempty"` + StreamId *uint32 `protobuf:"varint,8,opt,name=stream_id,json=streamId,proto3,oneof" json:"stream_id,omitempty"` + CreatedAt string `protobuf:"bytes,10,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + // Observation pipeline + ObservationSource string `protobuf:"bytes,11,opt,name=observation_source,json=observationSource,proto3" json:"observation_source,omitempty"` + // Top-level bridge names in the observation pipeline. + BridgeNames []string `protobuf:"bytes,13,rep,name=bridge_names,json=bridgeNames,proto3" json:"bridge_names,omitempty"` + // Proposal lifecycle: zero/empty for jobs not managed by a Feeds Manager. + FeedsManagerId int64 `protobuf:"varint,14,opt,name=feeds_manager_id,json=feedsManagerId,proto3" json:"feeds_manager_id,omitempty"` + RemoteUuid string `protobuf:"bytes,15,opt,name=remote_uuid,json=remoteUuid,proto3" json:"remote_uuid,omitempty"` + SpecVersion int32 `protobuf:"varint,16,opt,name=spec_version,json=specVersion,proto3" json:"spec_version,omitempty"` + ProposedAt string `protobuf:"bytes,17,opt,name=proposed_at,json=proposedAt,proto3" json:"proposed_at,omitempty"` + ApprovedAt string `protobuf:"bytes,18,opt,name=approved_at,json=approvedAt,proto3" json:"approved_at,omitempty"` + AcceptLatencySeconds float64 `protobuf:"fixed64,19,opt,name=accept_latency_seconds,json=acceptLatencySeconds,proto3" json:"accept_latency_seconds,omitempty"` + // OCR2-only; absent for other job types. + Ocr2OracleSpec *OCR2OracleSpecInfo `protobuf:"bytes,20,opt,name=ocr2_oracle_spec,json=ocr2OracleSpec,proto3" json:"ocr2_oracle_spec,omitempty"` + // Node identity + CsaPublicKey string `protobuf:"bytes,21,opt,name=csa_public_key,json=csaPublicKey,proto3" json:"csa_public_key,omitempty"` + NodeVersion string `protobuf:"bytes,22,opt,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` + Hostname string `protobuf:"bytes,23,opt,name=hostname,proto3" json:"hostname,omitempty"` + // Event metadata + EmissionTrigger EmissionTrigger `protobuf:"varint,24,opt,name=emission_trigger,json=emissionTrigger,proto3,enum=job_spec.v1.EmissionTrigger" json:"emission_trigger,omitempty"` + Timestamp string `protobuf:"bytes,25,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *JobSpecEvent) Reset() { + *x = JobSpecEvent{} + mi := &file_job_spec_v1_job_spec_event_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *JobSpecEvent) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JobSpecEvent) ProtoMessage() {} + +func (x *JobSpecEvent) ProtoReflect() protoreflect.Message { + mi := &file_job_spec_v1_job_spec_event_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JobSpecEvent.ProtoReflect.Descriptor instead. +func (*JobSpecEvent) Descriptor() ([]byte, []int) { + return file_job_spec_v1_job_spec_event_proto_rawDescGZIP(), []int{0} +} + +func (x *JobSpecEvent) GetExternalJobId() string { + if x != nil { + return x.ExternalJobId + } + return "" +} + +func (x *JobSpecEvent) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *JobSpecEvent) GetJobType() string { + if x != nil { + return x.JobType + } + return "" +} + +func (x *JobSpecEvent) GetSchemaVersion() uint32 { + if x != nil { + return x.SchemaVersion + } + return 0 +} + +func (x *JobSpecEvent) GetGasLimit() uint32 { + if x != nil && x.GasLimit != nil { + return *x.GasLimit + } + return 0 +} + +func (x *JobSpecEvent) GetForwardingAllowed() bool { + if x != nil { + return x.ForwardingAllowed + } + return false +} + +func (x *JobSpecEvent) GetStreamId() uint32 { + if x != nil && x.StreamId != nil { + return *x.StreamId + } + return 0 +} + +func (x *JobSpecEvent) GetCreatedAt() string { + if x != nil { + return x.CreatedAt + } + return "" +} + +func (x *JobSpecEvent) GetObservationSource() string { + if x != nil { + return x.ObservationSource + } + return "" +} + +func (x *JobSpecEvent) GetBridgeNames() []string { + if x != nil { + return x.BridgeNames + } + return nil +} + +func (x *JobSpecEvent) GetFeedsManagerId() int64 { + if x != nil { + return x.FeedsManagerId + } + return 0 +} + +func (x *JobSpecEvent) GetRemoteUuid() string { + if x != nil { + return x.RemoteUuid + } + return "" +} + +func (x *JobSpecEvent) GetSpecVersion() int32 { + if x != nil { + return x.SpecVersion + } + return 0 +} + +func (x *JobSpecEvent) GetProposedAt() string { + if x != nil { + return x.ProposedAt + } + return "" +} + +func (x *JobSpecEvent) GetApprovedAt() string { + if x != nil { + return x.ApprovedAt + } + return "" +} + +func (x *JobSpecEvent) GetAcceptLatencySeconds() float64 { + if x != nil { + return x.AcceptLatencySeconds + } + return 0 +} + +func (x *JobSpecEvent) GetOcr2OracleSpec() *OCR2OracleSpecInfo { + if x != nil { + return x.Ocr2OracleSpec + } + return nil +} + +func (x *JobSpecEvent) GetCsaPublicKey() string { + if x != nil { + return x.CsaPublicKey + } + return "" +} + +func (x *JobSpecEvent) GetNodeVersion() string { + if x != nil { + return x.NodeVersion + } + return "" +} + +func (x *JobSpecEvent) GetHostname() string { + if x != nil { + return x.Hostname + } + return "" +} + +func (x *JobSpecEvent) GetEmissionTrigger() EmissionTrigger { + if x != nil { + return x.EmissionTrigger + } + return EmissionTrigger_EMISSION_TRIGGER_UNSPECIFIED +} + +func (x *JobSpecEvent) GetTimestamp() string { + if x != nil { + return x.Timestamp + } + return "" +} + +var File_job_spec_v1_job_spec_event_proto protoreflect.FileDescriptor + +const file_job_spec_v1_job_spec_event_proto_rawDesc = "" + + "\n" + + " job_spec/v1/job_spec_event.proto\x12\vjob_spec.v1\x1a'job_spec/v1/ocr2_oracle_spec_info.proto\"\x89\a\n" + + "\fJobSpecEvent\x12&\n" + + "\x0fexternal_job_id\x18\x01 \x01(\tR\rexternalJobId\x12\x12\n" + + "\x04name\x18\x03 \x01(\tR\x04name\x12\x19\n" + + "\bjob_type\x18\x04 \x01(\tR\ajobType\x12%\n" + + "\x0eschema_version\x18\x05 \x01(\rR\rschemaVersion\x12 \n" + + "\tgas_limit\x18\x06 \x01(\rH\x00R\bgasLimit\x88\x01\x01\x12-\n" + + "\x12forwarding_allowed\x18\a \x01(\bR\x11forwardingAllowed\x12 \n" + + "\tstream_id\x18\b \x01(\rH\x01R\bstreamId\x88\x01\x01\x12\x1d\n" + + "\n" + + "created_at\x18\n" + + " \x01(\tR\tcreatedAt\x12-\n" + + "\x12observation_source\x18\v \x01(\tR\x11observationSource\x12!\n" + + "\fbridge_names\x18\r \x03(\tR\vbridgeNames\x12(\n" + + "\x10feeds_manager_id\x18\x0e \x01(\x03R\x0efeedsManagerId\x12\x1f\n" + + "\vremote_uuid\x18\x0f \x01(\tR\n" + + "remoteUuid\x12!\n" + + "\fspec_version\x18\x10 \x01(\x05R\vspecVersion\x12\x1f\n" + + "\vproposed_at\x18\x11 \x01(\tR\n" + + "proposedAt\x12\x1f\n" + + "\vapproved_at\x18\x12 \x01(\tR\n" + + "approvedAt\x124\n" + + "\x16accept_latency_seconds\x18\x13 \x01(\x01R\x14acceptLatencySeconds\x12I\n" + + "\x10ocr2_oracle_spec\x18\x14 \x01(\v2\x1f.job_spec.v1.OCR2OracleSpecInfoR\x0eocr2OracleSpec\x12$\n" + + "\x0ecsa_public_key\x18\x15 \x01(\tR\fcsaPublicKey\x12!\n" + + "\fnode_version\x18\x16 \x01(\tR\vnodeVersion\x12\x1a\n" + + "\bhostname\x18\x17 \x01(\tR\bhostname\x12G\n" + + "\x10emission_trigger\x18\x18 \x01(\x0e2\x1c.job_spec.v1.EmissionTriggerR\x0femissionTrigger\x12\x1c\n" + + "\ttimestamp\x18\x19 \x01(\tR\ttimestampB\f\n" + + "\n" + + "_gas_limitB\f\n" + + "\n" + + "_stream_id*\x8d\x01\n" + + "\x0fEmissionTrigger\x12 \n" + + "\x1cEMISSION_TRIGGER_UNSPECIFIED\x10\x00\x12\x1e\n" + + "\x1aEMISSION_TRIGGER_HEARTBEAT\x10\x01\x12\x1b\n" + + "\x17EMISSION_TRIGGER_CREATE\x10\x02\x12\x1b\n" + + "\x17EMISSION_TRIGGER_DELETE\x10\x03BEZCgithub.com/smartcontractkit/chainlink-protos/data-feeds/job_spec/v1b\x06proto3" + +var ( + file_job_spec_v1_job_spec_event_proto_rawDescOnce sync.Once + file_job_spec_v1_job_spec_event_proto_rawDescData []byte +) + +func file_job_spec_v1_job_spec_event_proto_rawDescGZIP() []byte { + file_job_spec_v1_job_spec_event_proto_rawDescOnce.Do(func() { + file_job_spec_v1_job_spec_event_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_job_spec_v1_job_spec_event_proto_rawDesc), len(file_job_spec_v1_job_spec_event_proto_rawDesc))) + }) + return file_job_spec_v1_job_spec_event_proto_rawDescData +} + +var file_job_spec_v1_job_spec_event_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_job_spec_v1_job_spec_event_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_job_spec_v1_job_spec_event_proto_goTypes = []any{ + (EmissionTrigger)(0), // 0: job_spec.v1.EmissionTrigger + (*JobSpecEvent)(nil), // 1: job_spec.v1.JobSpecEvent + (*OCR2OracleSpecInfo)(nil), // 2: job_spec.v1.OCR2OracleSpecInfo +} +var file_job_spec_v1_job_spec_event_proto_depIdxs = []int32{ + 2, // 0: job_spec.v1.JobSpecEvent.ocr2_oracle_spec:type_name -> job_spec.v1.OCR2OracleSpecInfo + 0, // 1: job_spec.v1.JobSpecEvent.emission_trigger:type_name -> job_spec.v1.EmissionTrigger + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_job_spec_v1_job_spec_event_proto_init() } +func file_job_spec_v1_job_spec_event_proto_init() { + if File_job_spec_v1_job_spec_event_proto != nil { + return + } + file_job_spec_v1_ocr2_oracle_spec_info_proto_init() + file_job_spec_v1_job_spec_event_proto_msgTypes[0].OneofWrappers = []any{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_job_spec_v1_job_spec_event_proto_rawDesc), len(file_job_spec_v1_job_spec_event_proto_rawDesc)), + NumEnums: 1, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_job_spec_v1_job_spec_event_proto_goTypes, + DependencyIndexes: file_job_spec_v1_job_spec_event_proto_depIdxs, + EnumInfos: file_job_spec_v1_job_spec_event_proto_enumTypes, + MessageInfos: file_job_spec_v1_job_spec_event_proto_msgTypes, + }.Build() + File_job_spec_v1_job_spec_event_proto = out.File + file_job_spec_v1_job_spec_event_proto_goTypes = nil + file_job_spec_v1_job_spec_event_proto_depIdxs = nil +} diff --git a/data-feeds/job_spec/v1/job_spec_event.proto b/data-feeds/job_spec/v1/job_spec_event.proto new file mode 100644 index 00000000..31e89677 --- /dev/null +++ b/data-feeds/job_spec/v1/job_spec_event.proto @@ -0,0 +1,54 @@ +syntax = "proto3"; + +package job_spec.v1; + +import "job_spec/v1/ocr2_oracle_spec_info.proto"; + +option go_package = "github.com/smartcontractkit/chainlink-protos/data-feeds/job_spec/v1"; + +// JobSpecEvent carries a job's spec, emitted on heartbeat, create, and delete. +message JobSpecEvent { + // Job identity + string external_job_id = 1; + string name = 3; + string job_type = 4; + uint32 schema_version = 5; + optional uint32 gas_limit = 6; + bool forwarding_allowed = 7; + optional uint32 stream_id = 8; + string created_at = 10; + + // Observation pipeline + string observation_source = 11; + + // Top-level bridge names in the observation pipeline. + repeated string bridge_names = 13; + + // Proposal lifecycle: zero/empty for jobs not managed by a Feeds Manager. + int64 feeds_manager_id = 14; + string remote_uuid = 15; + int32 spec_version = 16; + string proposed_at = 17; + string approved_at = 18; + double accept_latency_seconds = 19; + + // OCR2-only; absent for other job types. + OCR2OracleSpecInfo ocr2_oracle_spec = 20; + + // Node identity + string csa_public_key = 21; + string node_version = 22; + string hostname = 23; + + // Event metadata + EmissionTrigger emission_trigger = 24; + string timestamp = 25; +} + +// EmissionTrigger is the reason a JobSpecEvent was emitted. +enum EmissionTrigger { + EMISSION_TRIGGER_UNSPECIFIED = 0; + EMISSION_TRIGGER_HEARTBEAT = 1; + EMISSION_TRIGGER_CREATE = 2; + EMISSION_TRIGGER_DELETE = 3; +} diff --git a/data-feeds/job_spec/v1/ocr2_evm_relay_config.pb.go b/data-feeds/job_spec/v1/ocr2_evm_relay_config.pb.go new file mode 100644 index 00000000..c88d0360 --- /dev/null +++ b/data-feeds/job_spec/v1/ocr2_evm_relay_config.pb.go @@ -0,0 +1,205 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.6 +// protoc v5.29.3 +// source: job_spec/v1/ocr2_evm_relay_config.proto + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// OCR2EVMRelayConfig is a typed view of the EVM relay config JSON. +type OCR2EVMRelayConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + ChainId string `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + FromBlock *uint64 `protobuf:"varint,2,opt,name=from_block,json=fromBlock,proto3,oneof" json:"from_block,omitempty"` + EffectiveTransmitterId string `protobuf:"bytes,3,opt,name=effective_transmitter_id,json=effectiveTransmitterId,proto3" json:"effective_transmitter_id,omitempty"` + EnableDualTransmission *bool `protobuf:"varint,4,opt,name=enable_dual_transmission,json=enableDualTransmission,proto3,oneof" json:"enable_dual_transmission,omitempty"` + EnableTriggerCapability *bool `protobuf:"varint,5,opt,name=enable_trigger_capability,json=enableTriggerCapability,proto3,oneof" json:"enable_trigger_capability,omitempty"` + LloDonId *uint64 `protobuf:"varint,6,opt,name=llo_don_id,json=lloDonId,proto3,oneof" json:"llo_don_id,omitempty"` + FeedId *string `protobuf:"bytes,7,opt,name=feed_id,json=feedId,proto3,oneof" json:"feed_id,omitempty"` + SendingKeys []string `protobuf:"bytes,8,rep,name=sending_keys,json=sendingKeys,proto3" json:"sending_keys,omitempty"` + ProviderType *string `protobuf:"bytes,9,opt,name=provider_type,json=providerType,proto3,oneof" json:"provider_type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *OCR2EVMRelayConfig) Reset() { + *x = OCR2EVMRelayConfig{} + mi := &file_job_spec_v1_ocr2_evm_relay_config_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OCR2EVMRelayConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OCR2EVMRelayConfig) ProtoMessage() {} + +func (x *OCR2EVMRelayConfig) ProtoReflect() protoreflect.Message { + mi := &file_job_spec_v1_ocr2_evm_relay_config_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OCR2EVMRelayConfig.ProtoReflect.Descriptor instead. +func (*OCR2EVMRelayConfig) Descriptor() ([]byte, []int) { + return file_job_spec_v1_ocr2_evm_relay_config_proto_rawDescGZIP(), []int{0} +} + +func (x *OCR2EVMRelayConfig) GetChainId() string { + if x != nil { + return x.ChainId + } + return "" +} + +func (x *OCR2EVMRelayConfig) GetFromBlock() uint64 { + if x != nil && x.FromBlock != nil { + return *x.FromBlock + } + return 0 +} + +func (x *OCR2EVMRelayConfig) GetEffectiveTransmitterId() string { + if x != nil { + return x.EffectiveTransmitterId + } + return "" +} + +func (x *OCR2EVMRelayConfig) GetEnableDualTransmission() bool { + if x != nil && x.EnableDualTransmission != nil { + return *x.EnableDualTransmission + } + return false +} + +func (x *OCR2EVMRelayConfig) GetEnableTriggerCapability() bool { + if x != nil && x.EnableTriggerCapability != nil { + return *x.EnableTriggerCapability + } + return false +} + +func (x *OCR2EVMRelayConfig) GetLloDonId() uint64 { + if x != nil && x.LloDonId != nil { + return *x.LloDonId + } + return 0 +} + +func (x *OCR2EVMRelayConfig) GetFeedId() string { + if x != nil && x.FeedId != nil { + return *x.FeedId + } + return "" +} + +func (x *OCR2EVMRelayConfig) GetSendingKeys() []string { + if x != nil { + return x.SendingKeys + } + return nil +} + +func (x *OCR2EVMRelayConfig) GetProviderType() string { + if x != nil && x.ProviderType != nil { + return *x.ProviderType + } + return "" +} + +var File_job_spec_v1_ocr2_evm_relay_config_proto protoreflect.FileDescriptor + +const file_job_spec_v1_ocr2_evm_relay_config_proto_rawDesc = "" + + "\n" + + "'job_spec/v1/ocr2_evm_relay_config.proto\x12\vjob_spec.v1\"\x92\x04\n" + + "\x12OCR2EVMRelayConfig\x12\x19\n" + + "\bchain_id\x18\x01 \x01(\tR\achainId\x12\"\n" + + "\n" + + "from_block\x18\x02 \x01(\x04H\x00R\tfromBlock\x88\x01\x01\x128\n" + + "\x18effective_transmitter_id\x18\x03 \x01(\tR\x16effectiveTransmitterId\x12=\n" + + "\x18enable_dual_transmission\x18\x04 \x01(\bH\x01R\x16enableDualTransmission\x88\x01\x01\x12?\n" + + "\x19enable_trigger_capability\x18\x05 \x01(\bH\x02R\x17enableTriggerCapability\x88\x01\x01\x12!\n" + + "\n" + + "llo_don_id\x18\x06 \x01(\x04H\x03R\blloDonId\x88\x01\x01\x12\x1c\n" + + "\afeed_id\x18\a \x01(\tH\x04R\x06feedId\x88\x01\x01\x12!\n" + + "\fsending_keys\x18\b \x03(\tR\vsendingKeys\x12(\n" + + "\rprovider_type\x18\t \x01(\tH\x05R\fproviderType\x88\x01\x01B\r\n" + + "\v_from_blockB\x1b\n" + + "\x19_enable_dual_transmissionB\x1c\n" + + "\x1a_enable_trigger_capabilityB\r\n" + + "\v_llo_don_idB\n" + + "\n" + + "\b_feed_idB\x10\n" + + "\x0e_provider_typeBEZCgithub.com/smartcontractkit/chainlink-protos/data-feeds/job_spec/v1b\x06proto3" + +var ( + file_job_spec_v1_ocr2_evm_relay_config_proto_rawDescOnce sync.Once + file_job_spec_v1_ocr2_evm_relay_config_proto_rawDescData []byte +) + +func file_job_spec_v1_ocr2_evm_relay_config_proto_rawDescGZIP() []byte { + file_job_spec_v1_ocr2_evm_relay_config_proto_rawDescOnce.Do(func() { + file_job_spec_v1_ocr2_evm_relay_config_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_job_spec_v1_ocr2_evm_relay_config_proto_rawDesc), len(file_job_spec_v1_ocr2_evm_relay_config_proto_rawDesc))) + }) + return file_job_spec_v1_ocr2_evm_relay_config_proto_rawDescData +} + +var file_job_spec_v1_ocr2_evm_relay_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_job_spec_v1_ocr2_evm_relay_config_proto_goTypes = []any{ + (*OCR2EVMRelayConfig)(nil), // 0: job_spec.v1.OCR2EVMRelayConfig +} +var file_job_spec_v1_ocr2_evm_relay_config_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_job_spec_v1_ocr2_evm_relay_config_proto_init() } +func file_job_spec_v1_ocr2_evm_relay_config_proto_init() { + if File_job_spec_v1_ocr2_evm_relay_config_proto != nil { + return + } + file_job_spec_v1_ocr2_evm_relay_config_proto_msgTypes[0].OneofWrappers = []any{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_job_spec_v1_ocr2_evm_relay_config_proto_rawDesc), len(file_job_spec_v1_ocr2_evm_relay_config_proto_rawDesc)), + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_job_spec_v1_ocr2_evm_relay_config_proto_goTypes, + DependencyIndexes: file_job_spec_v1_ocr2_evm_relay_config_proto_depIdxs, + MessageInfos: file_job_spec_v1_ocr2_evm_relay_config_proto_msgTypes, + }.Build() + File_job_spec_v1_ocr2_evm_relay_config_proto = out.File + file_job_spec_v1_ocr2_evm_relay_config_proto_goTypes = nil + file_job_spec_v1_ocr2_evm_relay_config_proto_depIdxs = nil +} diff --git a/data-feeds/job_spec/v1/ocr2_evm_relay_config.proto b/data-feeds/job_spec/v1/ocr2_evm_relay_config.proto new file mode 100644 index 00000000..b2392aaf --- /dev/null +++ b/data-feeds/job_spec/v1/ocr2_evm_relay_config.proto @@ -0,0 +1,18 @@ +syntax = "proto3"; + +package job_spec.v1; + +option go_package = "github.com/smartcontractkit/chainlink-protos/data-feeds/job_spec/v1"; + +// OCR2EVMRelayConfig is a typed view of the EVM relay config JSON. +message OCR2EVMRelayConfig { + string chain_id = 1; + optional uint64 from_block = 2; + string effective_transmitter_id = 3; + optional bool enable_dual_transmission = 4; + optional bool enable_trigger_capability = 5; + optional uint64 llo_don_id = 6; + optional string feed_id = 7; + repeated string sending_keys = 8; + optional string provider_type = 9; +} diff --git a/data-feeds/job_spec/v1/ocr2_median_plugin_config.pb.go b/data-feeds/job_spec/v1/ocr2_median_plugin_config.pb.go new file mode 100644 index 00000000..ec6c8917 --- /dev/null +++ b/data-feeds/job_spec/v1/ocr2_median_plugin_config.pb.go @@ -0,0 +1,123 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.6 +// protoc v5.29.3 +// source: job_spec/v1/ocr2_median_plugin_config.proto + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// OCR2MedianPluginConfig mirrors median/config.PluginConfig. +type OCR2MedianPluginConfig struct { + state protoimpl.MessageState `protogen:"open.v1"` + JuelsPerFeeCoinSource string `protobuf:"bytes,1,opt,name=juels_per_fee_coin_source,json=juelsPerFeeCoinSource,proto3" json:"juels_per_fee_coin_source,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *OCR2MedianPluginConfig) Reset() { + *x = OCR2MedianPluginConfig{} + mi := &file_job_spec_v1_ocr2_median_plugin_config_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OCR2MedianPluginConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OCR2MedianPluginConfig) ProtoMessage() {} + +func (x *OCR2MedianPluginConfig) ProtoReflect() protoreflect.Message { + mi := &file_job_spec_v1_ocr2_median_plugin_config_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OCR2MedianPluginConfig.ProtoReflect.Descriptor instead. +func (*OCR2MedianPluginConfig) Descriptor() ([]byte, []int) { + return file_job_spec_v1_ocr2_median_plugin_config_proto_rawDescGZIP(), []int{0} +} + +func (x *OCR2MedianPluginConfig) GetJuelsPerFeeCoinSource() string { + if x != nil { + return x.JuelsPerFeeCoinSource + } + return "" +} + +var File_job_spec_v1_ocr2_median_plugin_config_proto protoreflect.FileDescriptor + +const file_job_spec_v1_ocr2_median_plugin_config_proto_rawDesc = "" + + "\n" + + "+job_spec/v1/ocr2_median_plugin_config.proto\x12\vjob_spec.v1\"R\n" + + "\x16OCR2MedianPluginConfig\x128\n" + + "\x19juels_per_fee_coin_source\x18\x01 \x01(\tR\x15juelsPerFeeCoinSourceBEZCgithub.com/smartcontractkit/chainlink-protos/data-feeds/job_spec/v1b\x06proto3" + +var ( + file_job_spec_v1_ocr2_median_plugin_config_proto_rawDescOnce sync.Once + file_job_spec_v1_ocr2_median_plugin_config_proto_rawDescData []byte +) + +func file_job_spec_v1_ocr2_median_plugin_config_proto_rawDescGZIP() []byte { + file_job_spec_v1_ocr2_median_plugin_config_proto_rawDescOnce.Do(func() { + file_job_spec_v1_ocr2_median_plugin_config_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_job_spec_v1_ocr2_median_plugin_config_proto_rawDesc), len(file_job_spec_v1_ocr2_median_plugin_config_proto_rawDesc))) + }) + return file_job_spec_v1_ocr2_median_plugin_config_proto_rawDescData +} + +var file_job_spec_v1_ocr2_median_plugin_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_job_spec_v1_ocr2_median_plugin_config_proto_goTypes = []any{ + (*OCR2MedianPluginConfig)(nil), // 0: job_spec.v1.OCR2MedianPluginConfig +} +var file_job_spec_v1_ocr2_median_plugin_config_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_job_spec_v1_ocr2_median_plugin_config_proto_init() } +func file_job_spec_v1_ocr2_median_plugin_config_proto_init() { + if File_job_spec_v1_ocr2_median_plugin_config_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_job_spec_v1_ocr2_median_plugin_config_proto_rawDesc), len(file_job_spec_v1_ocr2_median_plugin_config_proto_rawDesc)), + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_job_spec_v1_ocr2_median_plugin_config_proto_goTypes, + DependencyIndexes: file_job_spec_v1_ocr2_median_plugin_config_proto_depIdxs, + MessageInfos: file_job_spec_v1_ocr2_median_plugin_config_proto_msgTypes, + }.Build() + File_job_spec_v1_ocr2_median_plugin_config_proto = out.File + file_job_spec_v1_ocr2_median_plugin_config_proto_goTypes = nil + file_job_spec_v1_ocr2_median_plugin_config_proto_depIdxs = nil +} diff --git a/data-feeds/job_spec/v1/ocr2_median_plugin_config.proto b/data-feeds/job_spec/v1/ocr2_median_plugin_config.proto new file mode 100644 index 00000000..c01ae73b --- /dev/null +++ b/data-feeds/job_spec/v1/ocr2_median_plugin_config.proto @@ -0,0 +1,10 @@ +syntax = "proto3"; + +package job_spec.v1; + +option go_package = "github.com/smartcontractkit/chainlink-protos/data-feeds/job_spec/v1"; + +// OCR2MedianPluginConfig mirrors median/config.PluginConfig. +message OCR2MedianPluginConfig { + string juels_per_fee_coin_source = 1; +} diff --git a/data-feeds/job_spec/v1/ocr2_oracle_spec_info.pb.go b/data-feeds/job_spec/v1/ocr2_oracle_spec_info.pb.go new file mode 100644 index 00000000..e2d0709d --- /dev/null +++ b/data-feeds/job_spec/v1/ocr2_oracle_spec_info.pb.go @@ -0,0 +1,230 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.6 +// protoc v5.29.3 +// source: job_spec/v1/ocr2_oracle_spec_info.proto + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// OCR2OracleSpecInfo mirrors job.OCR2OracleSpec. +type OCR2OracleSpecInfo struct { + state protoimpl.MessageState `protogen:"open.v1"` + ContractId string `protobuf:"bytes,1,opt,name=contract_id,json=contractId,proto3" json:"contract_id,omitempty"` + FeedId *string `protobuf:"bytes,2,opt,name=feed_id,json=feedId,proto3,oneof" json:"feed_id,omitempty"` + Relay string `protobuf:"bytes,3,opt,name=relay,proto3" json:"relay,omitempty"` + PluginType string `protobuf:"bytes,4,opt,name=plugin_type,json=pluginType,proto3" json:"plugin_type,omitempty"` + TransmitterId *string `protobuf:"bytes,5,opt,name=transmitter_id,json=transmitterId,proto3,oneof" json:"transmitter_id,omitempty"` + OcrKeyBundleId *string `protobuf:"bytes,6,opt,name=ocr_key_bundle_id,json=ocrKeyBundleId,proto3,oneof" json:"ocr_key_bundle_id,omitempty"` + CaptureEaTelemetry bool `protobuf:"varint,13,opt,name=capture_ea_telemetry,json=captureEaTelemetry,proto3" json:"capture_ea_telemetry,omitempty"` + // Raw JSON passthroughs are always populated and authoritative over the typed + // sub-messages below. + RelayConfigJson string `protobuf:"bytes,17,opt,name=relay_config_json,json=relayConfigJson,proto3" json:"relay_config_json,omitempty"` + PluginConfigJson string `protobuf:"bytes,18,opt,name=plugin_config_json,json=pluginConfigJson,proto3" json:"plugin_config_json,omitempty"` + // Populated when relay == "evm". + EvmRelayConfig *OCR2EVMRelayConfig `protobuf:"bytes,20,opt,name=evm_relay_config,json=evmRelayConfig,proto3" json:"evm_relay_config,omitempty"` + // Populated when plugin_type == "median". + MedianPluginConfig *OCR2MedianPluginConfig `protobuf:"bytes,21,opt,name=median_plugin_config,json=medianPluginConfig,proto3" json:"median_plugin_config,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *OCR2OracleSpecInfo) Reset() { + *x = OCR2OracleSpecInfo{} + mi := &file_job_spec_v1_ocr2_oracle_spec_info_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OCR2OracleSpecInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OCR2OracleSpecInfo) ProtoMessage() {} + +func (x *OCR2OracleSpecInfo) ProtoReflect() protoreflect.Message { + mi := &file_job_spec_v1_ocr2_oracle_spec_info_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OCR2OracleSpecInfo.ProtoReflect.Descriptor instead. +func (*OCR2OracleSpecInfo) Descriptor() ([]byte, []int) { + return file_job_spec_v1_ocr2_oracle_spec_info_proto_rawDescGZIP(), []int{0} +} + +func (x *OCR2OracleSpecInfo) GetContractId() string { + if x != nil { + return x.ContractId + } + return "" +} + +func (x *OCR2OracleSpecInfo) GetFeedId() string { + if x != nil && x.FeedId != nil { + return *x.FeedId + } + return "" +} + +func (x *OCR2OracleSpecInfo) GetRelay() string { + if x != nil { + return x.Relay + } + return "" +} + +func (x *OCR2OracleSpecInfo) GetPluginType() string { + if x != nil { + return x.PluginType + } + return "" +} + +func (x *OCR2OracleSpecInfo) GetTransmitterId() string { + if x != nil && x.TransmitterId != nil { + return *x.TransmitterId + } + return "" +} + +func (x *OCR2OracleSpecInfo) GetOcrKeyBundleId() string { + if x != nil && x.OcrKeyBundleId != nil { + return *x.OcrKeyBundleId + } + return "" +} + +func (x *OCR2OracleSpecInfo) GetCaptureEaTelemetry() bool { + if x != nil { + return x.CaptureEaTelemetry + } + return false +} + +func (x *OCR2OracleSpecInfo) GetRelayConfigJson() string { + if x != nil { + return x.RelayConfigJson + } + return "" +} + +func (x *OCR2OracleSpecInfo) GetPluginConfigJson() string { + if x != nil { + return x.PluginConfigJson + } + return "" +} + +func (x *OCR2OracleSpecInfo) GetEvmRelayConfig() *OCR2EVMRelayConfig { + if x != nil { + return x.EvmRelayConfig + } + return nil +} + +func (x *OCR2OracleSpecInfo) GetMedianPluginConfig() *OCR2MedianPluginConfig { + if x != nil { + return x.MedianPluginConfig + } + return nil +} + +var File_job_spec_v1_ocr2_oracle_spec_info_proto protoreflect.FileDescriptor + +const file_job_spec_v1_ocr2_oracle_spec_info_proto_rawDesc = "" + + "\n" + + "'job_spec/v1/ocr2_oracle_spec_info.proto\x12\vjob_spec.v1\x1a'job_spec/v1/ocr2_evm_relay_config.proto\x1a+job_spec/v1/ocr2_median_plugin_config.proto\"\xc9\x04\n" + + "\x12OCR2OracleSpecInfo\x12\x1f\n" + + "\vcontract_id\x18\x01 \x01(\tR\n" + + "contractId\x12\x1c\n" + + "\afeed_id\x18\x02 \x01(\tH\x00R\x06feedId\x88\x01\x01\x12\x14\n" + + "\x05relay\x18\x03 \x01(\tR\x05relay\x12\x1f\n" + + "\vplugin_type\x18\x04 \x01(\tR\n" + + "pluginType\x12*\n" + + "\x0etransmitter_id\x18\x05 \x01(\tH\x01R\rtransmitterId\x88\x01\x01\x12.\n" + + "\x11ocr_key_bundle_id\x18\x06 \x01(\tH\x02R\x0eocrKeyBundleId\x88\x01\x01\x120\n" + + "\x14capture_ea_telemetry\x18\r \x01(\bR\x12captureEaTelemetry\x12*\n" + + "\x11relay_config_json\x18\x11 \x01(\tR\x0frelayConfigJson\x12,\n" + + "\x12plugin_config_json\x18\x12 \x01(\tR\x10pluginConfigJson\x12I\n" + + "\x10evm_relay_config\x18\x14 \x01(\v2\x1f.job_spec.v1.OCR2EVMRelayConfigR\x0eevmRelayConfig\x12U\n" + + "\x14median_plugin_config\x18\x15 \x01(\v2#.job_spec.v1.OCR2MedianPluginConfigR\x12medianPluginConfigB\n" + + "\n" + + "\b_feed_idB\x11\n" + + "\x0f_transmitter_idB\x14\n" + + "\x12_ocr_key_bundle_idBEZCgithub.com/smartcontractkit/chainlink-protos/data-feeds/job_spec/v1b\x06proto3" + +var ( + file_job_spec_v1_ocr2_oracle_spec_info_proto_rawDescOnce sync.Once + file_job_spec_v1_ocr2_oracle_spec_info_proto_rawDescData []byte +) + +func file_job_spec_v1_ocr2_oracle_spec_info_proto_rawDescGZIP() []byte { + file_job_spec_v1_ocr2_oracle_spec_info_proto_rawDescOnce.Do(func() { + file_job_spec_v1_ocr2_oracle_spec_info_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_job_spec_v1_ocr2_oracle_spec_info_proto_rawDesc), len(file_job_spec_v1_ocr2_oracle_spec_info_proto_rawDesc))) + }) + return file_job_spec_v1_ocr2_oracle_spec_info_proto_rawDescData +} + +var file_job_spec_v1_ocr2_oracle_spec_info_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_job_spec_v1_ocr2_oracle_spec_info_proto_goTypes = []any{ + (*OCR2OracleSpecInfo)(nil), // 0: job_spec.v1.OCR2OracleSpecInfo + (*OCR2EVMRelayConfig)(nil), // 1: job_spec.v1.OCR2EVMRelayConfig + (*OCR2MedianPluginConfig)(nil), // 2: job_spec.v1.OCR2MedianPluginConfig +} +var file_job_spec_v1_ocr2_oracle_spec_info_proto_depIdxs = []int32{ + 1, // 0: job_spec.v1.OCR2OracleSpecInfo.evm_relay_config:type_name -> job_spec.v1.OCR2EVMRelayConfig + 2, // 1: job_spec.v1.OCR2OracleSpecInfo.median_plugin_config:type_name -> job_spec.v1.OCR2MedianPluginConfig + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_job_spec_v1_ocr2_oracle_spec_info_proto_init() } +func file_job_spec_v1_ocr2_oracle_spec_info_proto_init() { + if File_job_spec_v1_ocr2_oracle_spec_info_proto != nil { + return + } + file_job_spec_v1_ocr2_evm_relay_config_proto_init() + file_job_spec_v1_ocr2_median_plugin_config_proto_init() + file_job_spec_v1_ocr2_oracle_spec_info_proto_msgTypes[0].OneofWrappers = []any{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_job_spec_v1_ocr2_oracle_spec_info_proto_rawDesc), len(file_job_spec_v1_ocr2_oracle_spec_info_proto_rawDesc)), + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_job_spec_v1_ocr2_oracle_spec_info_proto_goTypes, + DependencyIndexes: file_job_spec_v1_ocr2_oracle_spec_info_proto_depIdxs, + MessageInfos: file_job_spec_v1_ocr2_oracle_spec_info_proto_msgTypes, + }.Build() + File_job_spec_v1_ocr2_oracle_spec_info_proto = out.File + file_job_spec_v1_ocr2_oracle_spec_info_proto_goTypes = nil + file_job_spec_v1_ocr2_oracle_spec_info_proto_depIdxs = nil +} diff --git a/data-feeds/job_spec/v1/ocr2_oracle_spec_info.proto b/data-feeds/job_spec/v1/ocr2_oracle_spec_info.proto new file mode 100644 index 00000000..ae17afb4 --- /dev/null +++ b/data-feeds/job_spec/v1/ocr2_oracle_spec_info.proto @@ -0,0 +1,30 @@ +syntax = "proto3"; + +package job_spec.v1; + +import "job_spec/v1/ocr2_evm_relay_config.proto"; +import "job_spec/v1/ocr2_median_plugin_config.proto"; + +option go_package = "github.com/smartcontractkit/chainlink-protos/data-feeds/job_spec/v1"; + +// OCR2OracleSpecInfo mirrors job.OCR2OracleSpec. +message OCR2OracleSpecInfo { + string contract_id = 1; + optional string feed_id = 2; + string relay = 3; + string plugin_type = 4; + optional string transmitter_id = 5; + optional string ocr_key_bundle_id = 6; + bool capture_ea_telemetry = 13; + + // Raw JSON passthroughs are always populated and authoritative over the typed + // sub-messages below. + string relay_config_json = 17; + string plugin_config_json = 18; + + // Populated when relay == "evm". + OCR2EVMRelayConfig evm_relay_config = 20; + + // Populated when plugin_type == "median". + OCR2MedianPluginConfig median_plugin_config = 21; +} diff --git a/job-distributor/CHANGELOG.md b/job-distributor/CHANGELOG.md index 6bcc1268..f9ca5d53 100644 --- a/job-distributor/CHANGELOG.md +++ b/job-distributor/CHANGELOG.md @@ -1,5 +1,11 @@ # @chainlink/job-distributor +## 0.19.0 + +### Minor Changes + +- [#391](https://github.com/smartcontractkit/chainlink-protos/pull/391) [`e09b354`](https://github.com/smartcontractkit/chainlink-protos/commit/e09b354110b82b2fc586e9b2bc7929f8375e5dc3) Thanks [@ChrisAmora](https://github.com/ChrisAmora)! - add pub key to ocr bundle + ## 0.18.0 ### Minor Changes diff --git a/job-distributor/package.json b/job-distributor/package.json index cc38bfeb..999df3d6 100644 --- a/job-distributor/package.json +++ b/job-distributor/package.json @@ -1,5 +1,5 @@ { "name": "@chainlink/job-distributor", - "version": "0.18.0", + "version": "0.19.0", "private": true } diff --git a/job-distributor/v1/node/node.pb.go b/job-distributor/v1/node/node.pb.go index fc94f553..33b09fda 100644 --- a/job-distributor/v1/node/node.pb.go +++ b/job-distributor/v1/node/node.pb.go @@ -34,6 +34,7 @@ const ( ChainType_CHAIN_TYPE_TRON ChainType = 5 ChainType_CHAIN_TYPE_TON ChainType = 6 ChainType_CHAIN_TYPE_SUI ChainType = 7 + ChainType_CHAIN_TYPE_STELLAR ChainType = 8 ) // Enum value maps for ChainType. @@ -47,6 +48,7 @@ var ( 5: "CHAIN_TYPE_TRON", 6: "CHAIN_TYPE_TON", 7: "CHAIN_TYPE_SUI", + 8: "CHAIN_TYPE_STELLAR", } ChainType_value = map[string]int32{ "CHAIN_TYPE_UNSPECIFIED": 0, @@ -57,6 +59,7 @@ var ( "CHAIN_TYPE_TRON": 5, "CHAIN_TYPE_TON": 6, "CHAIN_TYPE_SUI": 7, + "CHAIN_TYPE_STELLAR": 8, } ) @@ -1587,6 +1590,7 @@ type OCR2Config_OCRKeyBundle struct { ConfigPublicKey string `protobuf:"bytes,2,opt,name=config_public_key,json=configPublicKey,proto3" json:"config_public_key,omitempty"` OffchainPublicKey string `protobuf:"bytes,3,opt,name=offchain_public_key,json=offchainPublicKey,proto3" json:"offchain_public_key,omitempty"` OnchainSigningAddress string `protobuf:"bytes,4,opt,name=onchain_signing_address,json=onchainSigningAddress,proto3" json:"onchain_signing_address,omitempty"` + OnchainSigningPubKey string `protobuf:"bytes,5,opt,name=onchain_signing_pub_key,json=onchainSigningPubKey,proto3" json:"onchain_signing_pub_key,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -1649,6 +1653,13 @@ func (x *OCR2Config_OCRKeyBundle) GetOnchainSigningAddress() string { return "" } +func (x *OCR2Config_OCRKeyBundle) GetOnchainSigningPubKey() string { + if x != nil { + return x.OnchainSigningPubKey + } + return "" +} + type OCR2Config_Plugins struct { state protoimpl.MessageState `protogen:"open.v1"` Commit bool `protobuf:"varint,1,opt,name=commit,proto3" json:"commit,omitempty"` @@ -1881,7 +1892,7 @@ const file_v1_node_node_proto_rawDesc = "" + "\tbundle_id\x18\x01 \x01(\tR\bbundleId\x12*\n" + "\x11config_public_key\x18\x02 \x01(\tR\x0fconfigPublicKey\x12.\n" + "\x13offchain_public_key\x18\x03 \x01(\tR\x11offchainPublicKey\x126\n" + - "\x17onchain_signing_address\x18\x04 \x01(\tR\x15onchainSigningAddress\"\x9c\x06\n" + + "\x17onchain_signing_address\x18\x04 \x01(\tR\x15onchainSigningAddress\"\xd3\x06\n" + "\n" + "OCR2Config\x12\x18\n" + "\aenabled\x18\x01 \x01(\bR\aenabled\x12!\n" + @@ -1894,12 +1905,13 @@ const file_v1_node_node_proto_rawDesc = "" + "\fP2PKeyBundle\x12\x17\n" + "\apeer_id\x18\x01 \x01(\tR\x06peerId\x12\x1d\n" + "\n" + - "public_key\x18\x02 \x01(\tR\tpublicKey\x1a\xbf\x01\n" + + "public_key\x18\x02 \x01(\tR\tpublicKey\x1a\xf6\x01\n" + "\fOCRKeyBundle\x12\x1b\n" + "\tbundle_id\x18\x01 \x01(\tR\bbundleId\x12*\n" + "\x11config_public_key\x18\x02 \x01(\tR\x0fconfigPublicKey\x12.\n" + "\x13offchain_public_key\x18\x03 \x01(\tR\x11offchainPublicKey\x126\n" + - "\x17onchain_signing_address\x18\x04 \x01(\tR\x15onchainSigningAddress\x1a\x8d\x01\n" + + "\x17onchain_signing_address\x18\x04 \x01(\tR\x15onchainSigningAddress\x125\n" + + "\x17onchain_signing_pub_key\x18\x05 \x01(\tR\x14onchainSigningPubKey\x1a\x8d\x01\n" + "\aPlugins\x12\x16\n" + "\x06commit\x18\x01 \x01(\bR\x06commit\x12\x18\n" + "\aexecute\x18\x02 \x01(\bR\aexecute\x12\x16\n" + @@ -1974,7 +1986,7 @@ const file_v1_node_node_proto_rawDesc = "" + "\fP2PKeyBundle\x12\x17\n" + "\apeer_id\x18\x01 \x01(\tR\x06peerId\x12\x1d\n" + "\n" + - "public_key\x18\x02 \x01(\tR\tpublicKey*\xbe\x01\n" + + "public_key\x18\x02 \x01(\tR\tpublicKey*\xd6\x01\n" + "\tChainType\x12\x1a\n" + "\x16CHAIN_TYPE_UNSPECIFIED\x10\x00\x12\x12\n" + "\x0eCHAIN_TYPE_EVM\x10\x01\x12\x15\n" + @@ -1983,7 +1995,8 @@ const file_v1_node_node_proto_rawDesc = "" + "\x10CHAIN_TYPE_APTOS\x10\x04\x12\x13\n" + "\x0fCHAIN_TYPE_TRON\x10\x05\x12\x12\n" + "\x0eCHAIN_TYPE_TON\x10\x06\x12\x12\n" + - "\x0eCHAIN_TYPE_SUI\x10\a*`\n" + + "\x0eCHAIN_TYPE_SUI\x10\a\x12\x16\n" + + "\x12CHAIN_TYPE_STELLAR\x10\b*`\n" + "\vEnableState\x12\x1c\n" + "\x18ENABLE_STATE_UNSPECIFIED\x10\x00\x12\x18\n" + "\x14ENABLE_STATE_ENABLED\x10\x01\x12\x19\n" + diff --git a/job-distributor/v1/node/node.proto b/job-distributor/v1/node/node.proto index 3390d25c..d238089d 100644 --- a/job-distributor/v1/node/node.proto +++ b/job-distributor/v1/node/node.proto @@ -55,6 +55,7 @@ enum ChainType { CHAIN_TYPE_TRON = 5; CHAIN_TYPE_TON = 6; CHAIN_TYPE_SUI = 7; + CHAIN_TYPE_STELLAR = 8; } message Chain { @@ -100,6 +101,7 @@ message OCR2Config { string config_public_key = 2; string offchain_public_key = 3; string onchain_signing_address = 4; + string onchain_signing_pub_key = 5; } message Plugins { diff --git a/node-platform/chip-schemas.json b/node-platform/chip-schemas.json index 2cf2dd30..8b0a0f20 100644 --- a/node-platform/chip-schemas.json +++ b/node-platform/chip-schemas.json @@ -4,6 +4,14 @@ { "entity": "common.v1.ChainPluginConfig", "path": "common/v1/chain_plugin_config.proto" + }, + { + "entity": "common.v1.NodeBuildInfo", + "path": "common/v1/node_build_info.proto" + }, + { + "entity": "common.v1.NodeJobInfo", + "path": "common/v1/node_job_info.proto" } ] } diff --git a/node-platform/common/v1/node_build_info.pb.go b/node-platform/common/v1/node_build_info.pb.go new file mode 100644 index 00000000..d83e05af --- /dev/null +++ b/node-platform/common/v1/node_build_info.pb.go @@ -0,0 +1,161 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.6 +// protoc v5.29.3 +// source: node-platform/common/v1/node_build_info.proto + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type NodeBuildInfo struct { + state protoimpl.MessageState `protogen:"open.v1"` + CsaPublicKey string `protobuf:"bytes,1,opt,name=csa_public_key,json=csaPublicKey,proto3" json:"csa_public_key,omitempty"` + CommitSha string `protobuf:"bytes,2,opt,name=commit_sha,json=commitSha,proto3" json:"commit_sha,omitempty"` + VersionTag string `protobuf:"bytes,3,opt,name=version_tag,json=versionTag,proto3" json:"version_tag,omitempty"` + Version string `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"` + DockerTag string `protobuf:"bytes,5,opt,name=docker_tag,json=dockerTag,proto3" json:"docker_tag,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NodeBuildInfo) Reset() { + *x = NodeBuildInfo{} + mi := &file_node_platform_common_v1_node_build_info_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NodeBuildInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NodeBuildInfo) ProtoMessage() {} + +func (x *NodeBuildInfo) ProtoReflect() protoreflect.Message { + mi := &file_node_platform_common_v1_node_build_info_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NodeBuildInfo.ProtoReflect.Descriptor instead. +func (*NodeBuildInfo) Descriptor() ([]byte, []int) { + return file_node_platform_common_v1_node_build_info_proto_rawDescGZIP(), []int{0} +} + +func (x *NodeBuildInfo) GetCsaPublicKey() string { + if x != nil { + return x.CsaPublicKey + } + return "" +} + +func (x *NodeBuildInfo) GetCommitSha() string { + if x != nil { + return x.CommitSha + } + return "" +} + +func (x *NodeBuildInfo) GetVersionTag() string { + if x != nil { + return x.VersionTag + } + return "" +} + +func (x *NodeBuildInfo) GetVersion() string { + if x != nil { + return x.Version + } + return "" +} + +func (x *NodeBuildInfo) GetDockerTag() string { + if x != nil { + return x.DockerTag + } + return "" +} + +var File_node_platform_common_v1_node_build_info_proto protoreflect.FileDescriptor + +const file_node_platform_common_v1_node_build_info_proto_rawDesc = "" + + "\n" + + "-node-platform/common/v1/node_build_info.proto\x12\tcommon.v1\"\xae\x01\n" + + "\rNodeBuildInfo\x12$\n" + + "\x0ecsa_public_key\x18\x01 \x01(\tR\fcsaPublicKey\x12\x1d\n" + + "\n" + + "commit_sha\x18\x02 \x01(\tR\tcommitSha\x12\x1f\n" + + "\vversion_tag\x18\x03 \x01(\tR\n" + + "versionTag\x12\x18\n" + + "\aversion\x18\x04 \x01(\tR\aversion\x12\x1d\n" + + "\n" + + "docker_tag\x18\x05 \x01(\tR\tdockerTagBFZDgithub.com/smartcontractkit/chainlink-protos/node-platform/common/v1b\x06proto3" + +var ( + file_node_platform_common_v1_node_build_info_proto_rawDescOnce sync.Once + file_node_platform_common_v1_node_build_info_proto_rawDescData []byte +) + +func file_node_platform_common_v1_node_build_info_proto_rawDescGZIP() []byte { + file_node_platform_common_v1_node_build_info_proto_rawDescOnce.Do(func() { + file_node_platform_common_v1_node_build_info_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_node_platform_common_v1_node_build_info_proto_rawDesc), len(file_node_platform_common_v1_node_build_info_proto_rawDesc))) + }) + return file_node_platform_common_v1_node_build_info_proto_rawDescData +} + +var file_node_platform_common_v1_node_build_info_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_node_platform_common_v1_node_build_info_proto_goTypes = []any{ + (*NodeBuildInfo)(nil), // 0: common.v1.NodeBuildInfo +} +var file_node_platform_common_v1_node_build_info_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_node_platform_common_v1_node_build_info_proto_init() } +func file_node_platform_common_v1_node_build_info_proto_init() { + if File_node_platform_common_v1_node_build_info_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_node_platform_common_v1_node_build_info_proto_rawDesc), len(file_node_platform_common_v1_node_build_info_proto_rawDesc)), + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_node_platform_common_v1_node_build_info_proto_goTypes, + DependencyIndexes: file_node_platform_common_v1_node_build_info_proto_depIdxs, + MessageInfos: file_node_platform_common_v1_node_build_info_proto_msgTypes, + }.Build() + File_node_platform_common_v1_node_build_info_proto = out.File + file_node_platform_common_v1_node_build_info_proto_goTypes = nil + file_node_platform_common_v1_node_build_info_proto_depIdxs = nil +} diff --git a/node-platform/common/v1/node_build_info.proto b/node-platform/common/v1/node_build_info.proto new file mode 100644 index 00000000..9152da26 --- /dev/null +++ b/node-platform/common/v1/node_build_info.proto @@ -0,0 +1,13 @@ +syntax = "proto3"; + +package common.v1; + +option go_package = "github.com/smartcontractkit/chainlink-protos/node-platform/common/v1"; + +message NodeBuildInfo { + string csa_public_key = 1; + string commit_sha = 2; + string version_tag = 3; + string version = 4; + string docker_tag = 5; +} diff --git a/node-platform/common/v1/node_job_info.pb.go b/node-platform/common/v1/node_job_info.pb.go new file mode 100644 index 00000000..f923acd3 --- /dev/null +++ b/node-platform/common/v1/node_job_info.pb.go @@ -0,0 +1,217 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.6 +// protoc v5.29.3 +// source: node-platform/common/v1/node_job_info.proto + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type NodeJobInfo struct { + state protoimpl.MessageState `protogen:"open.v1"` + CsaPublicKey string `protobuf:"bytes,1,opt,name=csa_public_key,json=csaPublicKey,proto3" json:"csa_public_key,omitempty"` + SubmitterAddresses []*NodeSubmitterAddress `protobuf:"bytes,2,rep,name=submitter_addresses,json=submitterAddresses,proto3" json:"submitter_addresses,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NodeJobInfo) Reset() { + *x = NodeJobInfo{} + mi := &file_node_platform_common_v1_node_job_info_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NodeJobInfo) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NodeJobInfo) ProtoMessage() {} + +func (x *NodeJobInfo) ProtoReflect() protoreflect.Message { + mi := &file_node_platform_common_v1_node_job_info_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NodeJobInfo.ProtoReflect.Descriptor instead. +func (*NodeJobInfo) Descriptor() ([]byte, []int) { + return file_node_platform_common_v1_node_job_info_proto_rawDescGZIP(), []int{0} +} + +func (x *NodeJobInfo) GetCsaPublicKey() string { + if x != nil { + return x.CsaPublicKey + } + return "" +} + +func (x *NodeJobInfo) GetSubmitterAddresses() []*NodeSubmitterAddress { + if x != nil { + return x.SubmitterAddresses + } + return nil +} + +type NodeSubmitterAddress struct { + state protoimpl.MessageState `protogen:"open.v1"` + ChainId string `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + JobType string `protobuf:"bytes,2,opt,name=job_type,json=jobType,proto3" json:"job_type,omitempty"` + PluginType string `protobuf:"bytes,3,opt,name=plugin_type,json=pluginType,proto3" json:"plugin_type,omitempty"` + FieldPath string `protobuf:"bytes,4,opt,name=field_path,json=fieldPath,proto3" json:"field_path,omitempty"` + Addresses []string `protobuf:"bytes,5,rep,name=addresses,proto3" json:"addresses,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *NodeSubmitterAddress) Reset() { + *x = NodeSubmitterAddress{} + mi := &file_node_platform_common_v1_node_job_info_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *NodeSubmitterAddress) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*NodeSubmitterAddress) ProtoMessage() {} + +func (x *NodeSubmitterAddress) ProtoReflect() protoreflect.Message { + mi := &file_node_platform_common_v1_node_job_info_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use NodeSubmitterAddress.ProtoReflect.Descriptor instead. +func (*NodeSubmitterAddress) Descriptor() ([]byte, []int) { + return file_node_platform_common_v1_node_job_info_proto_rawDescGZIP(), []int{1} +} + +func (x *NodeSubmitterAddress) GetChainId() string { + if x != nil { + return x.ChainId + } + return "" +} + +func (x *NodeSubmitterAddress) GetJobType() string { + if x != nil { + return x.JobType + } + return "" +} + +func (x *NodeSubmitterAddress) GetPluginType() string { + if x != nil { + return x.PluginType + } + return "" +} + +func (x *NodeSubmitterAddress) GetFieldPath() string { + if x != nil { + return x.FieldPath + } + return "" +} + +func (x *NodeSubmitterAddress) GetAddresses() []string { + if x != nil { + return x.Addresses + } + return nil +} + +var File_node_platform_common_v1_node_job_info_proto protoreflect.FileDescriptor + +const file_node_platform_common_v1_node_job_info_proto_rawDesc = "" + + "\n" + + "+node-platform/common/v1/node_job_info.proto\x12\tcommon.v1\"\x85\x01\n" + + "\vNodeJobInfo\x12$\n" + + "\x0ecsa_public_key\x18\x01 \x01(\tR\fcsaPublicKey\x12P\n" + + "\x13submitter_addresses\x18\x02 \x03(\v2\x1f.common.v1.NodeSubmitterAddressR\x12submitterAddresses\"\xaa\x01\n" + + "\x14NodeSubmitterAddress\x12\x19\n" + + "\bchain_id\x18\x01 \x01(\tR\achainId\x12\x19\n" + + "\bjob_type\x18\x02 \x01(\tR\ajobType\x12\x1f\n" + + "\vplugin_type\x18\x03 \x01(\tR\n" + + "pluginType\x12\x1d\n" + + "\n" + + "field_path\x18\x04 \x01(\tR\tfieldPath\x12\x1c\n" + + "\taddresses\x18\x05 \x03(\tR\taddressesBFZDgithub.com/smartcontractkit/chainlink-protos/node-platform/common/v1b\x06proto3" + +var ( + file_node_platform_common_v1_node_job_info_proto_rawDescOnce sync.Once + file_node_platform_common_v1_node_job_info_proto_rawDescData []byte +) + +func file_node_platform_common_v1_node_job_info_proto_rawDescGZIP() []byte { + file_node_platform_common_v1_node_job_info_proto_rawDescOnce.Do(func() { + file_node_platform_common_v1_node_job_info_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_node_platform_common_v1_node_job_info_proto_rawDesc), len(file_node_platform_common_v1_node_job_info_proto_rawDesc))) + }) + return file_node_platform_common_v1_node_job_info_proto_rawDescData +} + +var file_node_platform_common_v1_node_job_info_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_node_platform_common_v1_node_job_info_proto_goTypes = []any{ + (*NodeJobInfo)(nil), // 0: common.v1.NodeJobInfo + (*NodeSubmitterAddress)(nil), // 1: common.v1.NodeSubmitterAddress +} +var file_node_platform_common_v1_node_job_info_proto_depIdxs = []int32{ + 1, // 0: common.v1.NodeJobInfo.submitter_addresses:type_name -> common.v1.NodeSubmitterAddress + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_node_platform_common_v1_node_job_info_proto_init() } +func file_node_platform_common_v1_node_job_info_proto_init() { + if File_node_platform_common_v1_node_job_info_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_node_platform_common_v1_node_job_info_proto_rawDesc), len(file_node_platform_common_v1_node_job_info_proto_rawDesc)), + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_node_platform_common_v1_node_job_info_proto_goTypes, + DependencyIndexes: file_node_platform_common_v1_node_job_info_proto_depIdxs, + MessageInfos: file_node_platform_common_v1_node_job_info_proto_msgTypes, + }.Build() + File_node_platform_common_v1_node_job_info_proto = out.File + file_node_platform_common_v1_node_job_info_proto_goTypes = nil + file_node_platform_common_v1_node_job_info_proto_depIdxs = nil +} diff --git a/node-platform/common/v1/node_job_info.proto b/node-platform/common/v1/node_job_info.proto new file mode 100644 index 00000000..d9e0d046 --- /dev/null +++ b/node-platform/common/v1/node_job_info.proto @@ -0,0 +1,18 @@ +syntax = "proto3"; + +package common.v1; + +option go_package = "github.com/smartcontractkit/chainlink-protos/node-platform/common/v1"; + +message NodeJobInfo { + string csa_public_key = 1; + repeated NodeSubmitterAddress submitter_addresses = 2; +} + +message NodeSubmitterAddress { + string chain_id = 1; + string job_type = 2; + string plugin_type = 3; + string field_path = 4; + repeated string addresses = 5; +} diff --git a/op-catalog/CHANGELOG.md b/op-catalog/CHANGELOG.md index 5d5d9015..71041c90 100644 --- a/op-catalog/CHANGELOG.md +++ b/op-catalog/CHANGELOG.md @@ -1,5 +1,11 @@ # @chainlink/op-catalog +## 0.1.0 + +### Minor Changes + +- [#342](https://github.com/smartcontractkit/chainlink-protos/pull/342) [`41350ca`](https://github.com/smartcontractkit/chainlink-protos/commit/41350cab6cc270d17beba6ec78b68790fab6ad92) Thanks [@giogam](https://github.com/giogam)! - feat(op-catalog): add SEMANTICS_DELETE to EditSemantics enum + ## 0.0.4 ### Patch Changes diff --git a/op-catalog/package.json b/op-catalog/package.json index f97a7f61..bde1120d 100644 --- a/op-catalog/package.json +++ b/op-catalog/package.json @@ -1,5 +1,5 @@ { "name": "@chainlink/op-catalog", - "version": "0.0.4", + "version": "0.1.0", "private": true } diff --git a/op-catalog/v1/datastore/common.pb.go b/op-catalog/v1/datastore/common.pb.go index d0f11f27..bcfe8dcc 100644 --- a/op-catalog/v1/datastore/common.pb.go +++ b/op-catalog/v1/datastore/common.pb.go @@ -27,6 +27,7 @@ const ( EditSemantics_SEMANTICS_INSERT EditSemantics = 0 EditSemantics_SEMANTICS_UPSERT EditSemantics = 1 EditSemantics_SEMANTICS_UPDATE EditSemantics = 2 + EditSemantics_SEMANTICS_DELETE EditSemantics = 3 ) // Enum value maps for EditSemantics. @@ -35,11 +36,13 @@ var ( 0: "SEMANTICS_INSERT", 1: "SEMANTICS_UPSERT", 2: "SEMANTICS_UPDATE", + 3: "SEMANTICS_DELETE", } EditSemantics_value = map[string]int32{ "SEMANTICS_INSERT": 0, "SEMANTICS_UPSERT": 1, "SEMANTICS_UPDATE": 2, + "SEMANTICS_DELETE": 3, } ) @@ -74,11 +77,12 @@ var File_op_catalog_v1_datastore_common_proto protoreflect.FileDescriptor const file_op_catalog_v1_datastore_common_proto_rawDesc = "" + "\n" + - "$op-catalog/v1/datastore/common.proto\x12\x10api.datastore.v1*Q\n" + + "$op-catalog/v1/datastore/common.proto\x12\x10api.datastore.v1*g\n" + "\rEditSemantics\x12\x14\n" + "\x10SEMANTICS_INSERT\x10\x00\x12\x14\n" + "\x10SEMANTICS_UPSERT\x10\x01\x12\x14\n" + - "\x10SEMANTICS_UPDATE\x10\x02BFZDgithub.com/smartcontractkit/chainlink-protos/op-catalog/v1/datastoreb\x06proto3" + "\x10SEMANTICS_UPDATE\x10\x02\x12\x14\n" + + "\x10SEMANTICS_DELETE\x10\x03BFZDgithub.com/smartcontractkit/chainlink-protos/op-catalog/v1/datastoreb\x06proto3" var ( file_op_catalog_v1_datastore_common_proto_rawDescOnce sync.Once diff --git a/op-catalog/v1/datastore/common.proto b/op-catalog/v1/datastore/common.proto index 33000744..314bdcb2 100644 --- a/op-catalog/v1/datastore/common.proto +++ b/op-catalog/v1/datastore/common.proto @@ -8,5 +8,6 @@ enum EditSemantics { SEMANTICS_INSERT = 0; SEMANTICS_UPSERT = 1; SEMANTICS_UPDATE = 2; + SEMANTICS_DELETE = 3; } diff --git a/orchestrator/CHANGELOG.md b/orchestrator/CHANGELOG.md index a8b27941..5b6d1b18 100644 --- a/orchestrator/CHANGELOG.md +++ b/orchestrator/CHANGELOG.md @@ -1,5 +1,11 @@ # @chainlink/orchestrator +## 0.10.1 + +### Patch Changes + +- [#380](https://github.com/smartcontractkit/chainlink-protos/pull/380) [`84746b7`](https://github.com/smartcontractkit/chainlink-protos/commit/84746b70eeeb70dd2739bac20417fc0764b24849) Thanks [@stackman27](https://github.com/stackman27)! - feat(feedsmanager): add OCR2 onchain signing pub key field + ## 0.10.0 ### Minor Changes diff --git a/orchestrator/feedsmanager/feedsmanager.pb.go b/orchestrator/feedsmanager/feedsmanager.pb.go index 57edf1ec..c6d0cdc7 100644 --- a/orchestrator/feedsmanager/feedsmanager.pb.go +++ b/orchestrator/feedsmanager/feedsmanager.pb.go @@ -1825,8 +1825,10 @@ type OCR2Config_OCRKeyBundle struct { ConfigPublicKey string `protobuf:"bytes,2,opt,name=config_public_key,json=configPublicKey,proto3" json:"config_public_key,omitempty"` OffchainPublicKey string `protobuf:"bytes,3,opt,name=offchain_public_key,json=offchainPublicKey,proto3" json:"offchain_public_key,omitempty"` OnchainSigningAddress string `protobuf:"bytes,4,opt,name=onchain_signing_address,json=onchainSigningAddress,proto3" json:"onchain_signing_address,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + // Full uncompressed secp256k1 public key (65 bytes, hex-encoded) for EVM OCR2 bundles. + OnchainSigningPubKey string `protobuf:"bytes,5,opt,name=onchain_signing_pub_key,json=onchainSigningPubKey,proto3" json:"onchain_signing_pub_key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *OCR2Config_OCRKeyBundle) Reset() { @@ -1887,6 +1889,13 @@ func (x *OCR2Config_OCRKeyBundle) GetOnchainSigningAddress() string { return "" } +func (x *OCR2Config_OCRKeyBundle) GetOnchainSigningPubKey() string { + if x != nil { + return x.OnchainSigningPubKey + } + return "" +} + type OCR2Config_Plugins struct { state protoimpl.MessageState `protogen:"open.v1"` Commit bool `protobuf:"varint,1,opt,name=commit,proto3" json:"commit,omitempty"` @@ -1993,7 +2002,7 @@ const file_orchestrator_feedsmanager_feedsmanager_proto_rawDesc = "" + "\tbundle_id\x18\x01 \x01(\tR\bbundleId\x12*\n" + "\x11config_public_key\x18\x02 \x01(\tR\x0fconfigPublicKey\x12.\n" + "\x13offchain_public_key\x18\x03 \x01(\tR\x11offchainPublicKey\x126\n" + - "\x17onchain_signing_address\x18\x04 \x01(\tR\x15onchainSigningAddress\"\x84\x06\n" + + "\x17onchain_signing_address\x18\x04 \x01(\tR\x15onchainSigningAddress\"\xbb\x06\n" + "\n" + "OCR2Config\x12\x18\n" + "\aenabled\x18\x01 \x01(\bR\aenabled\x12!\n" + @@ -2006,12 +2015,13 @@ const file_orchestrator_feedsmanager_feedsmanager_proto_rawDesc = "" + "\fP2PKeyBundle\x12\x17\n" + "\apeer_id\x18\x01 \x01(\tR\x06peerId\x12\x1d\n" + "\n" + - "public_key\x18\x02 \x01(\tR\tpublicKey\x1a\xbf\x01\n" + + "public_key\x18\x02 \x01(\tR\tpublicKey\x1a\xf6\x01\n" + "\fOCRKeyBundle\x12\x1b\n" + "\tbundle_id\x18\x01 \x01(\tR\bbundleId\x12*\n" + "\x11config_public_key\x18\x02 \x01(\tR\x0fconfigPublicKey\x12.\n" + "\x13offchain_public_key\x18\x03 \x01(\tR\x11offchainPublicKey\x126\n" + - "\x17onchain_signing_address\x18\x04 \x01(\tR\x15onchainSigningAddress\x1a\x8d\x01\n" + + "\x17onchain_signing_address\x18\x04 \x01(\tR\x15onchainSigningAddress\x125\n" + + "\x17onchain_signing_pub_key\x18\x05 \x01(\tR\x14onchainSigningPubKey\x1a\x8d\x01\n" + "\aPlugins\x12\x16\n" + "\x06commit\x18\x01 \x01(\bR\x06commit\x12\x18\n" + "\aexecute\x18\x02 \x01(\bR\aexecute\x12\x16\n" + diff --git a/orchestrator/feedsmanager/feedsmanager.proto b/orchestrator/feedsmanager/feedsmanager.proto index 3e72f0cb..824630ac 100644 --- a/orchestrator/feedsmanager/feedsmanager.proto +++ b/orchestrator/feedsmanager/feedsmanager.proto @@ -84,6 +84,8 @@ message OCR2Config { string config_public_key = 2; string offchain_public_key = 3; string onchain_signing_address = 4; + // Full uncompressed secp256k1 public key (65 bytes, hex-encoded) for EVM OCR2 bundles. + string onchain_signing_pub_key = 5; } message Plugins { diff --git a/orchestrator/package.json b/orchestrator/package.json index b1df337f..c6b4cd53 100644 --- a/orchestrator/package.json +++ b/orchestrator/package.json @@ -1,5 +1,5 @@ { "name": "@chainlink/orchestrator", - "version": "0.10.0", + "version": "0.10.1", "private": true } diff --git a/package.json b/package.json index 0d400123..b5772ac0 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,12 @@ "license": "MIT", "description": "Protobuf definitions for Chainlink", "devDependencies": { - "@changesets/changelog-github": "0.5.1", - "@changesets/cli": "2.29.7" + "@changesets/changelog-github": "0.7.0", + "@changesets/cli": "2.31.0" + }, + "pnpm": { + "overrides": { + "human-id": "4.1.1" + } } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 74d50ed0..3befa72c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4,18 +4,29 @@ settings: autoInstallPeers: true excludeLinksFromLockfile: false +overrides: + human-id: 4.1.1 + importers: .: devDependencies: '@changesets/changelog-github': - specifier: 0.5.1 - version: 0.5.1 + specifier: 0.7.0 + version: 0.7.0 '@changesets/cli': - specifier: 2.29.7 - version: 2.29.7 + specifier: 2.31.0 + version: 2.31.0 + + chainlink-ccv/committee-verifier: {} + + chainlink-ccv/heartbeat: {} + + chainlink-ccv/message-discovery: {} + + chainlink-ccv/message-rules: {} - chainlink-ccv: {} + chainlink-ccv/verifier: {} job-distributor: {} @@ -37,36 +48,36 @@ packages: resolution: {integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==} engines: {node: '>=6.9.0'} - '@changesets/apply-release-plan@7.0.13': - resolution: {integrity: sha512-BIW7bofD2yAWoE8H4V40FikC+1nNFEKBisMECccS16W1rt6qqhNTBDmIw5HaqmMgtLNz9e7oiALiEUuKrQ4oHg==} + '@changesets/apply-release-plan@7.1.1': + resolution: {integrity: sha512-9qPCm/rLx/xoOFXIHGB229+4GOL76S4MC+7tyOuTsR6+1jYlfFDQORdvwR5hDA6y4FL2BPt3qpbcQIS+dW85LA==} - '@changesets/assemble-release-plan@6.0.9': - resolution: {integrity: sha512-tPgeeqCHIwNo8sypKlS3gOPmsS3wP0zHt67JDuL20P4QcXiw/O4Hl7oXiuLnP9yg+rXLQ2sScdV1Kkzde61iSQ==} + '@changesets/assemble-release-plan@6.0.10': + resolution: {integrity: sha512-rSDcqdJ9KbVyjpBIuCidhvZNIiVt1XaIYp73ycVQRIA5n/j6wQaEk0ChRLMUQ1vkxZe51PTQ9OIhbg6HQMW45A==} '@changesets/changelog-git@0.2.1': resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} - '@changesets/changelog-github@0.5.1': - resolution: {integrity: sha512-BVuHtF+hrhUScSoHnJwTELB4/INQxVFc+P/Qdt20BLiBFIHFJDDUaGsZw+8fQeJTRP5hJZrzpt3oZWh0G19rAQ==} + '@changesets/changelog-github@0.7.0': + resolution: {integrity: sha512-rBsbRvc4TVn+FvFnOVM3LxlFJfTXXCp8gfVJ+0BubxWNSVnLuAzowi5j+IEraLLP52w8AAs9QfKbPS3MMiXQJA==} - '@changesets/cli@2.29.7': - resolution: {integrity: sha512-R7RqWoaksyyKXbKXBTbT4REdy22yH81mcFK6sWtqSanxUCbUi9Uf+6aqxZtDQouIqPdem2W56CdxXgsxdq7FLQ==} + '@changesets/cli@2.31.0': + resolution: {integrity: sha512-AhI4enNTgHu2IZr6K4WZyf0EPch4XVMn1yOMFmCD9gsfBGqMYaHXls5HyDv6/CL5axVQABz68eG30eCtbr2wFg==} hasBin: true - '@changesets/config@3.1.1': - resolution: {integrity: sha512-bd+3Ap2TKXxljCggI0mKPfzCQKeV/TU4yO2h2C6vAihIo8tzseAn2e7klSuiyYYXvgu53zMN1OeYMIQkaQoWnA==} + '@changesets/config@3.1.4': + resolution: {integrity: sha512-pf0bvD/v6WI2cRlZ6hzpjtZdSlXDXMAJ+Iz7xfFzV4ZxJ8OGGAON+1qYc99ZPrijnt4xp3VGG7eNvAOGS24V1Q==} '@changesets/errors@0.2.0': resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} - '@changesets/get-dependents-graph@2.1.3': - resolution: {integrity: sha512-gphr+v0mv2I3Oxt19VdWRRUxq3sseyUpX9DaHpTUmLj92Y10AGy+XOtV+kbM6L/fDcpx7/ISDFK6T8A/P3lOdQ==} + '@changesets/get-dependents-graph@2.1.4': + resolution: {integrity: sha512-ZsS00x6WvmHq3sQv8oCMwL0f/z3wbXCVuSVTJwCnnmbC/iBdNJGFx1EcbMG4PC6sXRyH69liM4A2WKXzn/kRPg==} - '@changesets/get-github-info@0.6.0': - resolution: {integrity: sha512-v/TSnFVXI8vzX9/w3DU2Ol+UlTZcu3m0kXTjTT4KlAdwSvwutcByYwyYn9hwerPWfPkT2JfpoX0KgvCEi8Q/SA==} + '@changesets/get-github-info@0.8.0': + resolution: {integrity: sha512-cRnC+xdF0JIik7coko3iUP9qbnfi1iJQ3sAa6dE+Tx3+ET8bjFEm63PA4WEohgjYcmsOikPHWzPsMWWiZmntOQ==} - '@changesets/get-release-plan@4.0.13': - resolution: {integrity: sha512-DWG1pus72FcNeXkM12tx+xtExyH/c9I1z+2aXlObH3i9YA7+WZEVaiHzHl03thpvAgWTRaH64MpfHxozfF7Dvg==} + '@changesets/get-release-plan@4.0.16': + resolution: {integrity: sha512-2K5Om6CrMPm45rtvckfzWo7e9jOVCKLCnXia5eUPaURH7/LWzri7pK1TycdzAuAtehLkW7VPbWLCSExTHmiI6g==} '@changesets/get-version-range-type@0.4.0': resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} @@ -77,14 +88,14 @@ packages: '@changesets/logger@0.1.1': resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} - '@changesets/parse@0.4.1': - resolution: {integrity: sha512-iwksMs5Bf/wUItfcg+OXrEpravm5rEd9Bf4oyIPL4kVTmJQ7PNDSd6MDYkpSJR1pn7tz/k8Zf2DhTCqX08Ou+Q==} + '@changesets/parse@0.4.3': + resolution: {integrity: sha512-ZDmNc53+dXdWEv7fqIUSgRQOLYoUom5Z40gmLgmATmYR9NbL6FJJHwakcCpzaeCy+1D0m0n7mT4jj2B/MQPl7A==} '@changesets/pre@2.0.2': resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==} - '@changesets/read@0.6.5': - resolution: {integrity: sha512-UPzNGhsSjHD3Veb0xO/MwvasGe8eMyNrR/sT9gR8Q3DhOQZirgKhhXv/8hVsI0QpPjR004Z9iFxoJU6in3uGMg==} + '@changesets/read@0.6.7': + resolution: {integrity: sha512-D1G4AUYGrBEk8vj8MGwf75k9GpN6XL3wg8i42P2jZZwFLXnlr2Pn7r9yuQNbaMCarP7ZQWNJbV6XLeysAIMhTA==} '@changesets/should-skip-package@0.1.2': resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==} @@ -139,6 +150,9 @@ packages: argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} @@ -154,10 +168,6 @@ packages: chardet@2.1.0: resolution: {integrity: sha512-bNFETTG/pM5ryzQ9Ad0lJOTa6HWD/YsScAR3EnCPZRPlQh77JocYktSHOUHelyhm8IARL+o4c4F1bP5KVOjiRA==} - ci-info@3.9.0: - resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} - engines: {node: '>=8'} - cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -262,6 +272,10 @@ packages: resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} hasBin: true + js-yaml@4.2.0: + resolution: {integrity: sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==} + hasBin: true + jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} @@ -436,9 +450,9 @@ snapshots: '@babel/runtime@7.28.4': {} - '@changesets/apply-release-plan@7.0.13': + '@changesets/apply-release-plan@7.1.1': dependencies: - '@changesets/config': 3.1.1 + '@changesets/config': 3.1.4 '@changesets/get-version-range-type': 0.4.0 '@changesets/git': 3.0.4 '@changesets/should-skip-package': 0.1.2 @@ -452,10 +466,10 @@ snapshots: resolve-from: 5.0.0 semver: 7.7.2 - '@changesets/assemble-release-plan@6.0.9': + '@changesets/assemble-release-plan@6.0.10': dependencies: '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.3 + '@changesets/get-dependents-graph': 2.1.4 '@changesets/should-skip-package': 0.1.2 '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 @@ -465,38 +479,36 @@ snapshots: dependencies: '@changesets/types': 6.1.0 - '@changesets/changelog-github@0.5.1': + '@changesets/changelog-github@0.7.0': dependencies: - '@changesets/get-github-info': 0.6.0 + '@changesets/get-github-info': 0.8.0 '@changesets/types': 6.1.0 dotenv: 8.6.0 transitivePeerDependencies: - encoding - '@changesets/cli@2.29.7': + '@changesets/cli@2.31.0': dependencies: - '@changesets/apply-release-plan': 7.0.13 - '@changesets/assemble-release-plan': 6.0.9 + '@changesets/apply-release-plan': 7.1.1 + '@changesets/assemble-release-plan': 6.0.10 '@changesets/changelog-git': 0.2.1 - '@changesets/config': 3.1.1 + '@changesets/config': 3.1.4 '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.3 - '@changesets/get-release-plan': 4.0.13 + '@changesets/get-dependents-graph': 2.1.4 + '@changesets/get-release-plan': 4.0.16 '@changesets/git': 3.0.4 '@changesets/logger': 0.1.1 '@changesets/pre': 2.0.2 - '@changesets/read': 0.6.5 + '@changesets/read': 0.6.7 '@changesets/should-skip-package': 0.1.2 '@changesets/types': 6.1.0 '@changesets/write': 0.4.0 '@inquirer/external-editor': 1.0.2 '@manypkg/get-packages': 1.1.3 ansi-colors: 4.1.3 - ci-info: 3.9.0 enquirer: 2.4.1 fs-extra: 7.0.1 mri: 1.2.0 - p-limit: 2.3.0 package-manager-detector: 0.2.11 picocolors: 1.1.1 resolve-from: 5.0.0 @@ -506,11 +518,12 @@ snapshots: transitivePeerDependencies: - '@types/node' - '@changesets/config@3.1.1': + '@changesets/config@3.1.4': dependencies: '@changesets/errors': 0.2.0 - '@changesets/get-dependents-graph': 2.1.3 + '@changesets/get-dependents-graph': 2.1.4 '@changesets/logger': 0.1.1 + '@changesets/should-skip-package': 0.1.2 '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 @@ -520,26 +533,26 @@ snapshots: dependencies: extendable-error: 0.1.7 - '@changesets/get-dependents-graph@2.1.3': + '@changesets/get-dependents-graph@2.1.4': dependencies: '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 picocolors: 1.1.1 semver: 7.7.2 - '@changesets/get-github-info@0.6.0': + '@changesets/get-github-info@0.8.0': dependencies: dataloader: 1.4.0 node-fetch: 2.7.0 transitivePeerDependencies: - encoding - '@changesets/get-release-plan@4.0.13': + '@changesets/get-release-plan@4.0.16': dependencies: - '@changesets/assemble-release-plan': 6.0.9 - '@changesets/config': 3.1.1 + '@changesets/assemble-release-plan': 6.0.10 + '@changesets/config': 3.1.4 '@changesets/pre': 2.0.2 - '@changesets/read': 0.6.5 + '@changesets/read': 0.6.7 '@changesets/types': 6.1.0 '@manypkg/get-packages': 1.1.3 @@ -557,10 +570,10 @@ snapshots: dependencies: picocolors: 1.1.1 - '@changesets/parse@0.4.1': + '@changesets/parse@0.4.3': dependencies: '@changesets/types': 6.1.0 - js-yaml: 3.14.1 + js-yaml: 4.2.0 '@changesets/pre@2.0.2': dependencies: @@ -569,11 +582,11 @@ snapshots: '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 - '@changesets/read@0.6.5': + '@changesets/read@0.6.7': dependencies: '@changesets/git': 3.0.4 '@changesets/logger': 0.1.1 - '@changesets/parse': 0.4.1 + '@changesets/parse': 0.4.3 '@changesets/types': 6.1.0 fs-extra: 7.0.1 p-filter: 2.1.0 @@ -638,6 +651,8 @@ snapshots: dependencies: sprintf-js: 1.0.3 + argparse@2.0.1: {} + array-union@2.1.0: {} better-path-resolve@1.0.0: @@ -650,8 +665,6 @@ snapshots: chardet@2.1.0: {} - ci-info@3.9.0: {} - cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -754,6 +767,10 @@ snapshots: argparse: 1.0.10 esprima: 4.0.1 + js-yaml@4.2.0: + dependencies: + argparse: 2.0.1 + jsonfile@4.0.0: optionalDependencies: graceful-fs: 4.2.11 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 9361e286..bb3c448a 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -9,4 +9,5 @@ packages: - 'chainlink-ccv/verifier' - 'chainlink-ccv/committee-verifier' - 'chainlink-ccv/message-discovery' + - 'chainlink-ccv/message-rules' - 'chainlink-ccv/heartbeat' diff --git a/ring/go/shard_orchestrator.pb.go b/ring/go/shard_orchestrator.pb.go index 2ebdf252..fe6194b1 100644 --- a/ring/go/shard_orchestrator.pb.go +++ b/ring/go/shard_orchestrator.pb.go @@ -130,6 +130,8 @@ type GetWorkflowShardMappingResponse struct { Mappings map[string]uint32 `protobuf:"bytes,1,rep,name=mappings,proto3" json:"mappings,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` MappingStates map[string]*WorkflowMappingState `protobuf:"bytes,2,rep,name=mapping_states,json=mappingStates,proto3" json:"mapping_states,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` MappingVersion uint64 `protobuf:"varint,3,opt,name=mapping_version,json=mappingVersion,proto3" json:"mapping_version,omitempty"` + RoutingStateId uint64 `protobuf:"varint,4,opt,name=routing_state_id,json=routingStateId,proto3" json:"routing_state_id,omitempty"` + RoutingSteady bool `protobuf:"varint,5,opt,name=routing_steady,json=routingSteady,proto3" json:"routing_steady,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -185,6 +187,20 @@ func (x *GetWorkflowShardMappingResponse) GetMappingVersion() uint64 { return 0 } +func (x *GetWorkflowShardMappingResponse) GetRoutingStateId() uint64 { + if x != nil { + return x.RoutingStateId + } + return 0 +} + +func (x *GetWorkflowShardMappingResponse) GetRoutingSteady() bool { + if x != nil { + return x.RoutingSteady + } + return false +} + type ReportWorkflowTriggerRegistrationRequest struct { state protoimpl.MessageState `protogen:"open.v1"` SourceShardId uint32 `protobuf:"varint,1,opt,name=source_shard_id,json=sourceShardId,proto3" json:"source_shard_id,omitempty"` @@ -301,11 +317,13 @@ const file_shard_orchestrator_proto_rawDesc = "" + "oldShardId\x12 \n" + "\fnew_shard_id\x18\x02 \x01(\rR\n" + "newShardId\x12#\n" + - "\rin_transition\x18\x03 \x01(\bR\finTransition\"\x97\x03\n" + + "\rin_transition\x18\x03 \x01(\bR\finTransition\"\xe8\x03\n" + "\x1fGetWorkflowShardMappingResponse\x12O\n" + "\bmappings\x18\x01 \x03(\v23.ring.GetWorkflowShardMappingResponse.MappingsEntryR\bmappings\x12_\n" + "\x0emapping_states\x18\x02 \x03(\v28.ring.GetWorkflowShardMappingResponse.MappingStatesEntryR\rmappingStates\x12'\n" + - "\x0fmapping_version\x18\x03 \x01(\x04R\x0emappingVersion\x1a;\n" + + "\x0fmapping_version\x18\x03 \x01(\x04R\x0emappingVersion\x12(\n" + + "\x10routing_state_id\x18\x04 \x01(\x04R\x0eroutingStateId\x12%\n" + + "\x0erouting_steady\x18\x05 \x01(\bR\rroutingSteady\x1a;\n" + "\rMappingsEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + "\x05value\x18\x02 \x01(\rR\x05value:\x028\x01\x1a\\\n" + diff --git a/ring/pb/shard_orchestrator.proto b/ring/pb/shard_orchestrator.proto index 87932d11..6a3a5200 100644 --- a/ring/pb/shard_orchestrator.proto +++ b/ring/pb/shard_orchestrator.proto @@ -18,6 +18,8 @@ message GetWorkflowShardMappingResponse { map mappings = 1; map mapping_states = 2; uint64 mapping_version = 3; + uint64 routing_state_id = 4; + bool routing_steady = 5; } message ReportWorkflowTriggerRegistrationRequest { diff --git a/svr/CHANGELOG.md b/svr/CHANGELOG.md index bd528c89..3ff77fe7 100644 --- a/svr/CHANGELOG.md +++ b/svr/CHANGELOG.md @@ -1,5 +1,11 @@ # @chainlink/svr +## 1.2.0 + +### Minor Changes + +- OEV-851: Add optional `dual_broadcast_params` field (8) to `TxMessage` proto. Populated with the URL-encoded MEVShare/Atlas params when a secondary (dual-broadcast) transaction is emitted. + ## 1.1.0 ### Minor Changes diff --git a/svr/package.json b/svr/package.json index 46f3a769..ed753af5 100644 --- a/svr/package.json +++ b/svr/package.json @@ -1,5 +1,5 @@ { "name": "@chainlink/svr", - "version": "1.1.0", + "version": "1.2.0", "private": true } diff --git a/svr/svr-schemas-beholder.json b/svr/svr-schemas-beholder.json index 09f5b4d2..a0fb1a9a 100644 --- a/svr/svr-schemas-beholder.json +++ b/svr/svr-schemas-beholder.json @@ -8,6 +8,10 @@ { "entity": "svr.v1.FastLaneAtlasError", "path": "v1/fastlane_atlas_error.proto" + }, + { + "entity": "svr.v1.FastLaneAtlasUserOp", + "path": "v1/fastlane_atlas_user_op.proto" } ] } diff --git a/svr/svr-schemas-chip.json b/svr/svr-schemas-chip.json index 855ec5d9..e624832b 100644 --- a/svr/svr-schemas-chip.json +++ b/svr/svr-schemas-chip.json @@ -8,6 +8,10 @@ { "entity": "svr.v1.FastLaneAtlasError", "path": "v1/fastlane_atlas_error.proto" + }, + { + "entity": "svr.v1.FastLaneAtlasUserOp", + "path": "v1/fastlane_atlas_user_op.proto" } ] } diff --git a/svr/v1/beholder_tx_message.pb.go b/svr/v1/beholder_tx_message.pb.go index 20c3fc9a..c2aef3b8 100644 --- a/svr/v1/beholder_tx_message.pb.go +++ b/svr/v1/beholder_tx_message.pb.go @@ -22,16 +22,17 @@ const ( ) type TxMessage struct { - state protoimpl.MessageState `protogen:"open.v1"` - Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` - FromAddress string `protobuf:"bytes,2,opt,name=from_address,json=fromAddress,proto3" json:"from_address,omitempty"` - ToAddress string `protobuf:"bytes,3,opt,name=to_address,json=toAddress,proto3" json:"to_address,omitempty"` - Nonce string `protobuf:"bytes,4,opt,name=nonce,proto3" json:"nonce,omitempty"` - CreatedAt int64 `protobuf:"varint,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - ChainId string `protobuf:"bytes,6,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` - FeedAddress string `protobuf:"bytes,7,opt,name=feed_address,json=feedAddress,proto3" json:"feed_address,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Hash string `protobuf:"bytes,1,opt,name=hash,proto3" json:"hash,omitempty"` + FromAddress string `protobuf:"bytes,2,opt,name=from_address,json=fromAddress,proto3" json:"from_address,omitempty"` + ToAddress string `protobuf:"bytes,3,opt,name=to_address,json=toAddress,proto3" json:"to_address,omitempty"` + Nonce string `protobuf:"bytes,4,opt,name=nonce,proto3" json:"nonce,omitempty"` + CreatedAt int64 `protobuf:"varint,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + ChainId string `protobuf:"bytes,6,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + FeedAddress string `protobuf:"bytes,7,opt,name=feed_address,json=feedAddress,proto3" json:"feed_address,omitempty"` + DualBroadcastParams *string `protobuf:"bytes,8,opt,name=dual_broadcast_params,json=dualBroadcastParams,proto3,oneof" json:"dual_broadcast_params,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TxMessage) Reset() { @@ -113,11 +114,18 @@ func (x *TxMessage) GetFeedAddress() string { return "" } +func (x *TxMessage) GetDualBroadcastParams() string { + if x != nil && x.DualBroadcastParams != nil { + return *x.DualBroadcastParams + } + return "" +} + var File_svr_v1_beholder_tx_message_proto protoreflect.FileDescriptor const file_svr_v1_beholder_tx_message_proto_rawDesc = "" + "\n" + - " svr/v1/beholder_tx_message.proto\x12\x06svr.v1\"\xd4\x01\n" + + " svr/v1/beholder_tx_message.proto\x12\x06svr.v1\"\xa7\x02\n" + "\tTxMessage\x12\x12\n" + "\x04hash\x18\x01 \x01(\tR\x04hash\x12!\n" + "\ffrom_address\x18\x02 \x01(\tR\vfromAddress\x12\x1d\n" + @@ -127,7 +135,9 @@ const file_svr_v1_beholder_tx_message_proto_rawDesc = "" + "\n" + "created_at\x18\x05 \x01(\x03R\tcreatedAt\x12\x19\n" + "\bchain_id\x18\x06 \x01(\tR\achainId\x12!\n" + - "\ffeed_address\x18\a \x01(\tR\vfeedAddressB5Z3github.com/smartcontractkit/chainlink-protos/svr/v1b\x06proto3" + "\ffeed_address\x18\a \x01(\tR\vfeedAddress\x127\n" + + "\x15dual_broadcast_params\x18\b \x01(\tH\x00R\x13dualBroadcastParams\x88\x01\x01B\x18\n" + + "\x16_dual_broadcast_paramsB5Z3github.com/smartcontractkit/chainlink-protos/svr/v1b\x06proto3" var ( file_svr_v1_beholder_tx_message_proto_rawDescOnce sync.Once @@ -158,6 +168,7 @@ func file_svr_v1_beholder_tx_message_proto_init() { if File_svr_v1_beholder_tx_message_proto != nil { return } + file_svr_v1_beholder_tx_message_proto_msgTypes[0].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ diff --git a/svr/v1/beholder_tx_message.proto b/svr/v1/beholder_tx_message.proto index b307fcd3..2251d9b0 100644 --- a/svr/v1/beholder_tx_message.proto +++ b/svr/v1/beholder_tx_message.proto @@ -12,4 +12,5 @@ message TxMessage { int64 created_at = 5; string chain_id = 6; string feed_address = 7; + optional string dual_broadcast_params = 8; } diff --git a/svr/v1/fastlane_atlas_user_op.pb.go b/svr/v1/fastlane_atlas_user_op.pb.go new file mode 100644 index 00000000..2598dd16 --- /dev/null +++ b/svr/v1/fastlane_atlas_user_op.pb.go @@ -0,0 +1,196 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.6 +// protoc v5.29.3 +// source: svr/v1/fastlane_atlas_user_op.proto + +package v1 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type FastLaneAtlasUserOp struct { + state protoimpl.MessageState `protogen:"open.v1"` + ChainId string `protobuf:"bytes,1,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` + FromAddress string `protobuf:"bytes,2,opt,name=from_address,json=fromAddress,proto3" json:"from_address,omitempty"` + ToAddress string `protobuf:"bytes,3,opt,name=to_address,json=toAddress,proto3" json:"to_address,omitempty"` + FeedAddress string `protobuf:"bytes,4,opt,name=feed_address,json=feedAddress,proto3" json:"feed_address,omitempty"` + Nonce string `protobuf:"bytes,5,opt,name=nonce,proto3" json:"nonce,omitempty"` + UserOpHash string `protobuf:"bytes,6,opt,name=user_op_hash,json=userOpHash,proto3" json:"user_op_hash,omitempty"` + TransactionLifecycleId string `protobuf:"bytes,7,opt,name=transaction_lifecycle_id,json=transactionLifecycleId,proto3" json:"transaction_lifecycle_id,omitempty"` + RequestSentAt int64 `protobuf:"varint,8,opt,name=request_sent_at,json=requestSentAt,proto3" json:"request_sent_at,omitempty"` + ResponseReceivedAt int64 `protobuf:"varint,9,opt,name=response_received_at,json=responseReceivedAt,proto3" json:"response_received_at,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *FastLaneAtlasUserOp) Reset() { + *x = FastLaneAtlasUserOp{} + mi := &file_svr_v1_fastlane_atlas_user_op_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *FastLaneAtlasUserOp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*FastLaneAtlasUserOp) ProtoMessage() {} + +func (x *FastLaneAtlasUserOp) ProtoReflect() protoreflect.Message { + mi := &file_svr_v1_fastlane_atlas_user_op_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use FastLaneAtlasUserOp.ProtoReflect.Descriptor instead. +func (*FastLaneAtlasUserOp) Descriptor() ([]byte, []int) { + return file_svr_v1_fastlane_atlas_user_op_proto_rawDescGZIP(), []int{0} +} + +func (x *FastLaneAtlasUserOp) GetChainId() string { + if x != nil { + return x.ChainId + } + return "" +} + +func (x *FastLaneAtlasUserOp) GetFromAddress() string { + if x != nil { + return x.FromAddress + } + return "" +} + +func (x *FastLaneAtlasUserOp) GetToAddress() string { + if x != nil { + return x.ToAddress + } + return "" +} + +func (x *FastLaneAtlasUserOp) GetFeedAddress() string { + if x != nil { + return x.FeedAddress + } + return "" +} + +func (x *FastLaneAtlasUserOp) GetNonce() string { + if x != nil { + return x.Nonce + } + return "" +} + +func (x *FastLaneAtlasUserOp) GetUserOpHash() string { + if x != nil { + return x.UserOpHash + } + return "" +} + +func (x *FastLaneAtlasUserOp) GetTransactionLifecycleId() string { + if x != nil { + return x.TransactionLifecycleId + } + return "" +} + +func (x *FastLaneAtlasUserOp) GetRequestSentAt() int64 { + if x != nil { + return x.RequestSentAt + } + return 0 +} + +func (x *FastLaneAtlasUserOp) GetResponseReceivedAt() int64 { + if x != nil { + return x.ResponseReceivedAt + } + return 0 +} + +var File_svr_v1_fastlane_atlas_user_op_proto protoreflect.FileDescriptor + +const file_svr_v1_fastlane_atlas_user_op_proto_rawDesc = "" + + "\n" + + "#svr/v1/fastlane_atlas_user_op.proto\x12\x06svr.v1\"\xe1\x02\n" + + "\x13FastLaneAtlasUserOp\x12\x19\n" + + "\bchain_id\x18\x01 \x01(\tR\achainId\x12!\n" + + "\ffrom_address\x18\x02 \x01(\tR\vfromAddress\x12\x1d\n" + + "\n" + + "to_address\x18\x03 \x01(\tR\ttoAddress\x12!\n" + + "\ffeed_address\x18\x04 \x01(\tR\vfeedAddress\x12\x14\n" + + "\x05nonce\x18\x05 \x01(\tR\x05nonce\x12 \n" + + "\fuser_op_hash\x18\x06 \x01(\tR\n" + + "userOpHash\x128\n" + + "\x18transaction_lifecycle_id\x18\a \x01(\tR\x16transactionLifecycleId\x12&\n" + + "\x0frequest_sent_at\x18\b \x01(\x03R\rrequestSentAt\x120\n" + + "\x14response_received_at\x18\t \x01(\x03R\x12responseReceivedAtB5Z3github.com/smartcontractkit/chainlink-protos/svr/v1b\x06proto3" + +var ( + file_svr_v1_fastlane_atlas_user_op_proto_rawDescOnce sync.Once + file_svr_v1_fastlane_atlas_user_op_proto_rawDescData []byte +) + +func file_svr_v1_fastlane_atlas_user_op_proto_rawDescGZIP() []byte { + file_svr_v1_fastlane_atlas_user_op_proto_rawDescOnce.Do(func() { + file_svr_v1_fastlane_atlas_user_op_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_svr_v1_fastlane_atlas_user_op_proto_rawDesc), len(file_svr_v1_fastlane_atlas_user_op_proto_rawDesc))) + }) + return file_svr_v1_fastlane_atlas_user_op_proto_rawDescData +} + +var file_svr_v1_fastlane_atlas_user_op_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_svr_v1_fastlane_atlas_user_op_proto_goTypes = []any{ + (*FastLaneAtlasUserOp)(nil), // 0: svr.v1.FastLaneAtlasUserOp +} +var file_svr_v1_fastlane_atlas_user_op_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_svr_v1_fastlane_atlas_user_op_proto_init() } +func file_svr_v1_fastlane_atlas_user_op_proto_init() { + if File_svr_v1_fastlane_atlas_user_op_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_svr_v1_fastlane_atlas_user_op_proto_rawDesc), len(file_svr_v1_fastlane_atlas_user_op_proto_rawDesc)), + NumEnums: 0, + NumMessages: 1, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_svr_v1_fastlane_atlas_user_op_proto_goTypes, + DependencyIndexes: file_svr_v1_fastlane_atlas_user_op_proto_depIdxs, + MessageInfos: file_svr_v1_fastlane_atlas_user_op_proto_msgTypes, + }.Build() + File_svr_v1_fastlane_atlas_user_op_proto = out.File + file_svr_v1_fastlane_atlas_user_op_proto_goTypes = nil + file_svr_v1_fastlane_atlas_user_op_proto_depIdxs = nil +} diff --git a/svr/v1/fastlane_atlas_user_op.proto b/svr/v1/fastlane_atlas_user_op.proto new file mode 100644 index 00000000..1645acbb --- /dev/null +++ b/svr/v1/fastlane_atlas_user_op.proto @@ -0,0 +1,17 @@ +syntax = "proto3"; + +package svr.v1; + +option go_package = "github.com/smartcontractkit/chainlink-protos/svr/v1"; + +message FastLaneAtlasUserOp { + string chain_id = 1; + string from_address = 2; + string to_address = 3; + string feed_address = 4; + string nonce = 5; + string user_op_hash = 6; + string transaction_lifecycle_id = 7; + int64 request_sent_at = 8; + int64 response_received_at = 9; +} diff --git a/workflows/chip-cre.json b/workflows/chip-cre.json index cf5213fd..abd7594f 100644 --- a/workflows/chip-cre.json +++ b/workflows/chip-cre.json @@ -347,6 +347,22 @@ } ] }, + { + "entity": "workflows.v2.WorkflowUserMetric", + "path": "workflows/v2/workflow_user_metric.proto", + "references": [ + { + "name": "workflows/v2/cre_info.proto", + "entity": "workflows.v2.CreInfo", + "path": "workflows/v2/cre_info.proto" + }, + { + "name": "workflows/v2/workflow_key.proto", + "entity": "workflows.v2.WorkflowKey", + "path": "workflows/v2/workflow_key.proto" + } + ] + }, { "entity": "bridge_status.v1.JobInfo", "path": "bridge_status/v1/job_info.proto" diff --git a/workflows/go/generate.go b/workflows/go/generate.go index a799e784..73a2d2e0 100644 --- a/workflows/go/generate.go +++ b/workflows/go/generate.go @@ -29,7 +29,9 @@ package workflows //go:generate protoc --proto_path=../ --go_out=./ --go_opt=module=github.com/smartcontractkit/chainlink-protos/workflows/go ../workflows/v2/capability_execution_started.proto //go:generate protoc --proto_path=../ --go_out=./ --go_opt=module=github.com/smartcontractkit/chainlink-protos/workflows/go ../workflows/v2/capability_execution_finished.proto //go:generate protoc --proto_path=../ --go_out=./ --go_opt=module=github.com/smartcontractkit/chainlink-protos/workflows/go ../workflows/v2/workflow_user_log.proto +//go:generate protoc --proto_path=../ --go_out=./ --go_opt=module=github.com/smartcontractkit/chainlink-protos/workflows/go ../workflows/v2/workflow_user_metric.proto //go:generate protoc --proto_path=../ --go_out=./ --go_opt=module=github.com/smartcontractkit/chainlink-protos/workflows/go ../workflows/v2/xxx_no_send.proto +//go:generate protoc --proto_path=../ --go_out=./ --go_opt=module=github.com/smartcontractkit/chainlink-protos/workflows/go ../workflows/v2/workflow_execution_profile.proto // sources/v1 - workflow metadata source service //go:generate protoc --proto_path=../ --go_out=./ --go-grpc_out=./ --go_opt=module=github.com/smartcontractkit/chainlink-protos/workflows/go --go-grpc_opt=module=github.com/smartcontractkit/chainlink-protos/workflows/go ../sources/v1/workflow_metadata_source.proto diff --git a/workflows/go/v2/workflow_execution_finished.pb.go b/workflows/go/v2/workflow_execution_finished.pb.go index ae335ea0..31502f54 100644 --- a/workflows/go/v2/workflow_execution_finished.pb.go +++ b/workflows/go/v2/workflow_execution_finished.pb.go @@ -29,6 +29,7 @@ type WorkflowExecutionFinished struct { Timestamp string `protobuf:"bytes,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"` Status ExecutionStatus `protobuf:"varint,5,opt,name=status,proto3,enum=workflows.v2.ExecutionStatus" json:"status,omitempty"` Error string `protobuf:"bytes,6,opt,name=error,proto3" json:"error,omitempty"` + ExecutedInTEE bool `protobuf:"varint,7,opt,name=executedInTEE,proto3" json:"executedInTEE,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -105,18 +106,26 @@ func (x *WorkflowExecutionFinished) GetError() string { return "" } +func (x *WorkflowExecutionFinished) GetExecutedInTEE() bool { + if x != nil { + return x.ExecutedInTEE + } + return false +} + var File_workflows_v2_workflow_execution_finished_proto protoreflect.FileDescriptor const file_workflows_v2_workflow_execution_finished_proto_rawDesc = "" + "\n" + - ".workflows/v2/workflow_execution_finished.proto\x12\fworkflows.v2\x1a\x1bworkflows/v2/cre_info.proto\x1a\x1fworkflows/v2/workflow_key.proto\x1a\x1eworkflows/v2/xxx_no_send.proto\"\xa0\x02\n" + + ".workflows/v2/workflow_execution_finished.proto\x12\fworkflows.v2\x1a\x1bworkflows/v2/cre_info.proto\x1a\x1fworkflows/v2/workflow_key.proto\x1a\x1eworkflows/v2/xxx_no_send.proto\"\xc6\x02\n" + "\x19WorkflowExecutionFinished\x12/\n" + "\acreInfo\x18\x01 \x01(\v2\x15.workflows.v2.CreInfoR\acreInfo\x125\n" + "\bworkflow\x18\x02 \x01(\v2\x19.workflows.v2.WorkflowKeyR\bworkflow\x120\n" + "\x13workflowExecutionID\x18\x03 \x01(\tR\x13workflowExecutionID\x12\x1c\n" + "\ttimestamp\x18\x04 \x01(\tR\ttimestamp\x125\n" + "\x06status\x18\x05 \x01(\x0e2\x1d.workflows.v2.ExecutionStatusR\x06status\x12\x14\n" + - "\x05error\x18\x06 \x01(\tR\x05errorB>ZZZ workflows.v2.ExecutionProfileStep + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_workflows_v2_workflow_execution_profile_proto_init() } +func file_workflows_v2_workflow_execution_profile_proto_init() { + if File_workflows_v2_workflow_execution_profile_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_workflows_v2_workflow_execution_profile_proto_rawDesc), len(file_workflows_v2_workflow_execution_profile_proto_rawDesc)), + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_workflows_v2_workflow_execution_profile_proto_goTypes, + DependencyIndexes: file_workflows_v2_workflow_execution_profile_proto_depIdxs, + MessageInfos: file_workflows_v2_workflow_execution_profile_proto_msgTypes, + }.Build() + File_workflows_v2_workflow_execution_profile_proto = out.File + file_workflows_v2_workflow_execution_profile_proto_goTypes = nil + file_workflows_v2_workflow_execution_profile_proto_depIdxs = nil +} diff --git a/workflows/go/v2/workflow_user_metric.pb.go b/workflows/go/v2/workflow_user_metric.pb.go new file mode 100644 index 00000000..9fae638f --- /dev/null +++ b/workflows/go/v2/workflow_user_metric.pb.go @@ -0,0 +1,253 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.36.6 +// protoc v5.29.3 +// source: workflows/v2/workflow_user_metric.proto + +package v2 + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" + unsafe "unsafe" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type UserMetricType int32 + +const ( + UserMetricType_USER_METRIC_TYPE_UNSPECIFIED UserMetricType = 0 + UserMetricType_USER_METRIC_TYPE_COUNTER UserMetricType = 1 + UserMetricType_USER_METRIC_TYPE_GAUGE UserMetricType = 2 +) + +// Enum value maps for UserMetricType. +var ( + UserMetricType_name = map[int32]string{ + 0: "USER_METRIC_TYPE_UNSPECIFIED", + 1: "USER_METRIC_TYPE_COUNTER", + 2: "USER_METRIC_TYPE_GAUGE", + } + UserMetricType_value = map[string]int32{ + "USER_METRIC_TYPE_UNSPECIFIED": 0, + "USER_METRIC_TYPE_COUNTER": 1, + "USER_METRIC_TYPE_GAUGE": 2, + } +) + +func (x UserMetricType) Enum() *UserMetricType { + p := new(UserMetricType) + *p = x + return p +} + +func (x UserMetricType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (UserMetricType) Descriptor() protoreflect.EnumDescriptor { + return file_workflows_v2_workflow_user_metric_proto_enumTypes[0].Descriptor() +} + +func (UserMetricType) Type() protoreflect.EnumType { + return &file_workflows_v2_workflow_user_metric_proto_enumTypes[0] +} + +func (x UserMetricType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use UserMetricType.Descriptor instead. +func (UserMetricType) EnumDescriptor() ([]byte, []int) { + return file_workflows_v2_workflow_user_metric_proto_rawDescGZIP(), []int{0} +} + +type WorkflowUserMetric struct { + state protoimpl.MessageState `protogen:"open.v1"` + CreInfo *CreInfo `protobuf:"bytes,1,opt,name=creInfo,proto3" json:"creInfo,omitempty"` + Workflow *WorkflowKey `protobuf:"bytes,2,opt,name=workflow,proto3" json:"workflow,omitempty"` + WorkflowExecutionID string `protobuf:"bytes,3,opt,name=workflowExecutionID,proto3" json:"workflowExecutionID,omitempty"` + Timestamp string `protobuf:"bytes,4,opt,name=timestamp,proto3" json:"timestamp,omitempty"` + Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"` + Value float64 `protobuf:"fixed64,6,opt,name=value,proto3" json:"value,omitempty"` + Type UserMetricType `protobuf:"varint,7,opt,name=type,proto3,enum=workflows.v2.UserMetricType" json:"type,omitempty"` + Labels map[string]string `protobuf:"bytes,8,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *WorkflowUserMetric) Reset() { + *x = WorkflowUserMetric{} + mi := &file_workflows_v2_workflow_user_metric_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *WorkflowUserMetric) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*WorkflowUserMetric) ProtoMessage() {} + +func (x *WorkflowUserMetric) ProtoReflect() protoreflect.Message { + mi := &file_workflows_v2_workflow_user_metric_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use WorkflowUserMetric.ProtoReflect.Descriptor instead. +func (*WorkflowUserMetric) Descriptor() ([]byte, []int) { + return file_workflows_v2_workflow_user_metric_proto_rawDescGZIP(), []int{0} +} + +func (x *WorkflowUserMetric) GetCreInfo() *CreInfo { + if x != nil { + return x.CreInfo + } + return nil +} + +func (x *WorkflowUserMetric) GetWorkflow() *WorkflowKey { + if x != nil { + return x.Workflow + } + return nil +} + +func (x *WorkflowUserMetric) GetWorkflowExecutionID() string { + if x != nil { + return x.WorkflowExecutionID + } + return "" +} + +func (x *WorkflowUserMetric) GetTimestamp() string { + if x != nil { + return x.Timestamp + } + return "" +} + +func (x *WorkflowUserMetric) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *WorkflowUserMetric) GetValue() float64 { + if x != nil { + return x.Value + } + return 0 +} + +func (x *WorkflowUserMetric) GetType() UserMetricType { + if x != nil { + return x.Type + } + return UserMetricType_USER_METRIC_TYPE_UNSPECIFIED +} + +func (x *WorkflowUserMetric) GetLabels() map[string]string { + if x != nil { + return x.Labels + } + return nil +} + +var File_workflows_v2_workflow_user_metric_proto protoreflect.FileDescriptor + +const file_workflows_v2_workflow_user_metric_proto_rawDesc = "" + + "\n" + + "'workflows/v2/workflow_user_metric.proto\x12\fworkflows.v2\x1a\x1bworkflows/v2/cre_info.proto\x1a\x1fworkflows/v2/workflow_key.proto\"\xa9\x03\n" + + "\x12WorkflowUserMetric\x12/\n" + + "\acreInfo\x18\x01 \x01(\v2\x15.workflows.v2.CreInfoR\acreInfo\x125\n" + + "\bworkflow\x18\x02 \x01(\v2\x19.workflows.v2.WorkflowKeyR\bworkflow\x120\n" + + "\x13workflowExecutionID\x18\x03 \x01(\tR\x13workflowExecutionID\x12\x1c\n" + + "\ttimestamp\x18\x04 \x01(\tR\ttimestamp\x12\x12\n" + + "\x04name\x18\x05 \x01(\tR\x04name\x12\x14\n" + + "\x05value\x18\x06 \x01(\x01R\x05value\x120\n" + + "\x04type\x18\a \x01(\x0e2\x1c.workflows.v2.UserMetricTypeR\x04type\x12D\n" + + "\x06labels\x18\b \x03(\v2,.workflows.v2.WorkflowUserMetric.LabelsEntryR\x06labels\x1a9\n" + + "\vLabelsEntry\x12\x10\n" + + "\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n" + + "\x05value\x18\x02 \x01(\tR\x05value:\x028\x01*l\n" + + "\x0eUserMetricType\x12 \n" + + "\x1cUSER_METRIC_TYPE_UNSPECIFIED\x10\x00\x12\x1c\n" + + "\x18USER_METRIC_TYPE_COUNTER\x10\x01\x12\x1a\n" + + "\x16USER_METRIC_TYPE_GAUGE\x10\x02B>Z workflows.v2.CreInfo + 4, // 1: workflows.v2.WorkflowUserMetric.workflow:type_name -> workflows.v2.WorkflowKey + 0, // 2: workflows.v2.WorkflowUserMetric.type:type_name -> workflows.v2.UserMetricType + 2, // 3: workflows.v2.WorkflowUserMetric.labels:type_name -> workflows.v2.WorkflowUserMetric.LabelsEntry + 4, // [4:4] is the sub-list for method output_type + 4, // [4:4] is the sub-list for method input_type + 4, // [4:4] is the sub-list for extension type_name + 4, // [4:4] is the sub-list for extension extendee + 0, // [0:4] is the sub-list for field type_name +} + +func init() { file_workflows_v2_workflow_user_metric_proto_init() } +func file_workflows_v2_workflow_user_metric_proto_init() { + if File_workflows_v2_workflow_user_metric_proto != nil { + return + } + file_workflows_v2_cre_info_proto_init() + file_workflows_v2_workflow_key_proto_init() + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: unsafe.Slice(unsafe.StringData(file_workflows_v2_workflow_user_metric_proto_rawDesc), len(file_workflows_v2_workflow_user_metric_proto_rawDesc)), + NumEnums: 1, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_workflows_v2_workflow_user_metric_proto_goTypes, + DependencyIndexes: file_workflows_v2_workflow_user_metric_proto_depIdxs, + EnumInfos: file_workflows_v2_workflow_user_metric_proto_enumTypes, + MessageInfos: file_workflows_v2_workflow_user_metric_proto_msgTypes, + }.Build() + File_workflows_v2_workflow_user_metric_proto = out.File + file_workflows_v2_workflow_user_metric_proto_goTypes = nil + file_workflows_v2_workflow_user_metric_proto_depIdxs = nil +} diff --git a/workflows/workflows/v2/workflow_execution_finished.proto b/workflows/workflows/v2/workflow_execution_finished.proto index dfe22c8f..b70624bd 100644 --- a/workflows/workflows/v2/workflow_execution_finished.proto +++ b/workflows/workflows/v2/workflow_execution_finished.proto @@ -16,4 +16,5 @@ message WorkflowExecutionFinished { ExecutionStatus status = 5; string error = 6; + bool executedInTEE = 7; } diff --git a/workflows/workflows/v2/workflow_execution_profile.proto b/workflows/workflows/v2/workflow_execution_profile.proto new file mode 100644 index 00000000..b0d32cc1 --- /dev/null +++ b/workflows/workflows/v2/workflow_execution_profile.proto @@ -0,0 +1,22 @@ +syntax = "proto3"; + +package workflows.v2; + +option go_package = "github.com/smartcontractkit/chainlink-protos/workflows/go/v2"; + +message ExecutionProfile { + string workflowID = 1; + string workflowExecutionID = 2; + string startTime = 3; + string endTime = 4; + string status = 5; + repeated ExecutionProfileStep steps = 6; +} + +message ExecutionProfileStep { + string stepID = 1; + string startTime = 2; + string endTime = 3; + string capabilityID = 4; + bool hasError = 5; +} diff --git a/workflows/workflows/v2/workflow_user_metric.proto b/workflows/workflows/v2/workflow_user_metric.proto new file mode 100644 index 00000000..3d39c18b --- /dev/null +++ b/workflows/workflows/v2/workflow_user_metric.proto @@ -0,0 +1,26 @@ +syntax = "proto3"; + +package workflows.v2; + +import "workflows/v2/cre_info.proto"; +import "workflows/v2/workflow_key.proto"; + +option go_package = "github.com/smartcontractkit/chainlink-protos/workflows/go/v2"; + +enum UserMetricType { + USER_METRIC_TYPE_UNSPECIFIED = 0; + USER_METRIC_TYPE_COUNTER = 1; + USER_METRIC_TYPE_GAUGE = 2; +} + +message WorkflowUserMetric { + CreInfo creInfo = 1; + WorkflowKey workflow = 2; + string workflowExecutionID = 3; + string timestamp = 4; + + string name = 5; + double value = 6; + UserMetricType type = 7; + map labels = 8; +}