diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 558f58d..cd2d713 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -67,6 +67,26 @@ jobs: - name: Dependency audit run: pip-audit + spec: + name: Specification copy + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Read spec/VERSION + id: spec + run: echo "version=$(cat spec/VERSION)" >> "$GITHUB_OUTPUT" + + - name: Check out mina-sdk-spec at that tag + uses: actions/checkout@v4 + with: + repository: o1-labs/mina-sdk-spec + ref: ${{ steps.spec.outputs.version }} + path: .mina-sdk-spec + + - name: Check that spec/ is the tag's copy + run: .mina-sdk-spec/scripts/sync.sh --check . + test: runs-on: ubuntu-latest strategy: @@ -88,6 +108,7 @@ jobs: - name: Run unit tests with coverage run: | pytest tests/test_types.py tests/test_daemon_client.py \ + tests/test_spec.py tests/test_common_api.py \ -v --cov=mina_sdk --cov-report=term-missing --cov-report=xml - name: Upload coverage diff --git a/.github/workflows/schema-drift.yml b/.github/workflows/schema-drift.yml deleted file mode 100644 index a2390fc..0000000 --- a/.github/workflows/schema-drift.yml +++ /dev/null @@ -1,72 +0,0 @@ -name: Schema Drift Check - -on: - schedule: - - cron: "0 6 * * 1" # Weekly on Monday at 06:00 UTC - workflow_dispatch: - pull_request: - paths: - - "src/mina_sdk/schema/**" - -jobs: - schema-drift: - runs-on: ubuntu-latest - timeout-minutes: 15 - strategy: - fail-fast: false - matrix: - include: - - branch: master - image_tag: master-latest-lightnet - strict: true - - branch: compatible - image_tag: compatible-latest-lightnet - strict: false - - branch: develop - image_tag: develop-latest-lightnet - strict: false - - name: "Drift check: ${{ matrix.branch }}" - - services: - mina: - image: o1labs/mina-local-network:${{ matrix.image_tag }} - env: - NETWORK_TYPE: single-node - PROOF_LEVEL: none - LOG_LEVEL: Info - RUN_ARCHIVE_NODE: false - ports: - - 8080:8080 - - 3085:3085 - - steps: - - uses: actions/checkout@v4 - - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: "3.12" - - - name: Install dependencies - run: pip install httpx - - - name: Wait for Mina network - uses: o1-labs/wait-for-mina-network-action@v1 - with: - mina-graphql-port: "8080" - max-attempts: "60" - polling-interval-ms: "10000" - - - name: Check schema drift - id: drift - run: | - python scripts/check_schema_drift.py \ - --endpoint http://127.0.0.1:8080/graphql \ - --branch ${{ matrix.branch }} \ - ${{ matrix.strict && '--strict' || '' }} - - - name: Annotate warnings for non-strict branches - if: ${{ !matrix.strict && failure() }} - run: | - echo "::warning::Schema drift detected against ${{ matrix.branch }} branch (non-blocking)" diff --git a/CHANGELOG.md b/CHANGELOG.md index 27a1d97..63301e4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Added +- The common API of the Mina SDKs, from + [mina-sdk-spec](https://github.com/o1-labs/mina-sdk-spec) v0.1.0: `spec/` + is a copy at the tag in `spec/VERSION`. `tests/test_spec.py` checks that + the query strings are the specification's documents, and a CI job checks + that `spec/` is the tag's copy. +- Methods of the common API that this SDK did not have: `get_daemon_metrics`, + `get_genesis_block`, `get_block`, `get_pooled_zkapp_commands`, + `get_transaction_status`, `get_genesis_constants`, `get_tracked_accounts`, + `get_snark_pool`, `get_fork_config`, `send_zkapp` and `unlock_account`. +- Signatures made outside the daemon: `signature=SignatureInput(...)` on + `send_payment` and `send_delegation`. +- Result fields of the common API: more `DaemonStatus` fields + (`AddrsAndPorts`); `AccountData` token symbol, voting-for, receipt chain + hash, timing, permissions and zkApp state; `AccountBalance.block_height`; + `BlockInfo` previous state hash, epoch, block creator, coinbase receiver, + epoch data, dates, ledger hashes, coinbase, fee transfers and user + commands; kind, source, receiver, amount, fee and memo of a sent command. +- `AccountNotFoundError`, a `ValueError`, from `get_account`. +- Integration tests of the new methods. - `DaemonConnectionError` exception (replaces shadowed `ConnectionError`) - `Currency.__rmul__` for `3 * Currency(10)` support - Export all public types from `mina_sdk`: `AccountBalance`, `AccountData`, @@ -24,10 +43,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Negative `Currency` values are rejected with `ValueError` ### Changed +- Every query is a named operation of the specification. Nullable variables + are always sent, as null when omitted: `get_account` and + `get_pooled_user_commands` use one document each + (`queries.GET_ACCOUNT_WITH_TOKEN` and `queries.POOLED_USER_COMMANDS_ALL` + are deprecated aliases), and `get_best_chain` sends `maxLength: null`. +- `get_pooled_user_commands` returns `PooledUserCommand` objects, not + dictionaries. `command["hash"]` and `command.get("hash")` still work for the + keys of the dictionaries; the daemon's `from` is the attribute `from_`. +- `SendPaymentResult` and `SendDelegationResult` are aliases of the new + `SubmittedCommand`. - `Currency.__mul__` only accepts `int` scalars (was also accepting `Currency`, which produced nonsensical nanomina-squared units) - `ConnectionError` is now an alias for `DaemonConnectionError` (backwards compatible) +### Removed +- The schema drift check (`scripts/check_schema_drift.py`, the Schema Drift + Check workflow and `src/mina_sdk/schema/`). The documents of this SDK are + the documents of mina-sdk-spec, whose weekly drift job validates them + against the lightnet daemons of `master`, `compatible` and `develop`. + ## [0.1.0] - 2025-11-20 ### Added diff --git a/README.md b/README.md index 1c7e659..4740c15 100644 --- a/README.md +++ b/README.md @@ -63,24 +63,41 @@ client = MinaDaemonClient( ## API Reference +The Mina SDKs have the same API, defined in +[mina-sdk-spec](https://github.com/o1-labs/mina-sdk-spec). `spec/` is a copy +of it at the tag in `spec/VERSION`. `tests/test_spec.py` checks that this +SDK's queries are the specification's documents, and CI checks that `spec/` +is the tag's copy. The ITN client of the specification is not in this SDK yet. + ### Queries | Method | Returns | Description | |--------|---------|-------------| | `get_sync_status()` | `str` | Node sync status (SYNCED, BOOTSTRAP, etc.) | -| `get_daemon_status()` | `DaemonStatus` | Comprehensive daemon status | +| `get_daemon_status()` | `DaemonStatus` | Daemon status: chain length, peers, addresses, block production keys | +| `get_daemon_metrics()` | `DaemonMetrics` | Transaction and snark pool metrics, block production delay | | `get_network_id()` | `str` | Network identifier | -| `get_account(public_key)` | `AccountData` | Account balance, nonce, delegate | -| `get_best_chain(max_length)` | `list[BlockInfo]` | Recent blocks from best chain | +| `get_account(public_key, token_id=None)` | `AccountData` | Balance, nonce, delegate, timing, permissions, zkApp state | +| `get_best_chain(max_length=None)` | `list[BlockInfo]` | Recent blocks from the best chain | +| `get_genesis_block()` | `BlockInfo` | The genesis block | +| `get_block(state_hash=None, height=None)` | `BlockInfo` | One block; give exactly one of the two | | `get_peers()` | `list[PeerInfo]` | Connected peers | -| `get_pooled_user_commands(public_key)` | `list[dict]` | Pending transactions | +| `get_pooled_user_commands(public_key=None)` | `list[PooledUserCommand]` | Pending payments and delegations | +| `get_pooled_zkapp_commands(public_key=None)` | `list[ZkappCommandResult]` | Pending zkApp commands | +| `get_transaction_status(payment=None, zkapp_transaction=None)` | `TransactionStatus` | `PENDING`, `INCLUDED` or `UNKNOWN`; give exactly one ID | +| `get_genesis_constants()` | `GenesisConstants` | Genesis timestamp, coinbase, account creation fee | +| `get_tracked_accounts()` | `list[TrackedAccount]` | Accounts in the daemon's keystore | +| `get_snark_pool()` | `list[CompletedWork]` | Completed snark work | +| `get_fork_config()` | `Any` | The daemon's fork configuration (JSON) | ### Mutations | Method | Returns | Description | |--------|---------|-------------| -| `send_payment(sender, receiver, amount, fee)` | `SendPaymentResult` | Send a payment | -| `send_delegation(sender, delegate_to, fee)` | `SendDelegationResult` | Delegate stake | +| `send_payment(sender, receiver, amount, fee, signature=None)` | `SendPaymentResult` | Send a payment; `signature` for one made outside the daemon | +| `send_delegation(sender, delegate_to, fee, signature=None)` | `SendDelegationResult` | Delegate stake; `signature` likewise | +| `send_zkapp(zkapp_command)` | `ZkappCommandResult` | Send a signed zkApp command (JSON) | +| `unlock_account(public_key, password)` | `str` | Unlock a keystore account so the daemon can sign with it | | `set_snark_worker(public_key)` | `str \| None` | Set/unset SNARK worker | | `set_snark_work_fee(fee)` | `str` | Set SNARK work fee | @@ -133,13 +150,20 @@ All response types are importable from the top-level package: ```python from mina_sdk import ( - AccountBalance, # total, liquid, locked balances - AccountData, # public_key, nonce, balance, delegate, token_id - BlockInfo, # state_hash, height, slots, creator, tx count - DaemonStatus, # sync_status, chain height, peers, uptime + AccountBalance, # total, liquid, locked balances, block height + AccountData, # public_key, nonce, balance, delegate, timing, permissions, zkApp state + BlockInfo, # state_hash, height, slots, creator, epochs, ledger hashes, transactions + DaemonStatus, # sync_status, chain height, peers, uptime, addresses + DaemonMetrics, # pool sizes and diffs, block production delay PeerInfo, # peer_id, host, port - SendPaymentResult, # id, hash, nonce - SendDelegationResult, # id, hash, nonce + PooledUserCommand, # a pending payment or delegation + SubmittedCommand, # result of send_payment / send_delegation + ZkappCommandResult, # a pending or sent zkApp command + CompletedWork, # snark pool entry + GenesisConstants, + TrackedAccount, + TransactionStatus, + SignatureInput, # field, scalar ) ``` @@ -175,11 +199,11 @@ The daemon is not running or not reachable at the configured URI. Check: **GraphQLError: field not found** -The SDK's queries may be out of sync with the daemon's GraphQL schema. This can happen after a daemon upgrade. Check the [schema drift CI](https://github.com/MinaProtocol/mina-sdk-python/actions/workflows/schema-drift.yml) for compatibility status. +The SDK's queries may be out of sync with the daemon's GraphQL schema. This can happen after a daemon upgrade. Check the documents against your node with mina-sdk-spec: `python3 scripts/check.py --endpoint http://your-node:3085/graphql` (in a clone of [mina-sdk-spec](https://github.com/o1-labs/mina-sdk-spec)). **Account not found** -`get_account()` raises `ValueError` when the account doesn't exist on the ledger. This is normal for new accounts that haven't received any transactions yet. +`get_account()` raises `AccountNotFoundError` (a `ValueError`) when the account doesn't exist on the ledger. This is normal for new accounts that haven't received any transactions yet. ## License diff --git a/pyproject.toml b/pyproject.toml index 380af88..b1f5343 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -84,6 +84,8 @@ ignore = [ [tool.ruff.lint.per-file-ignores] "tests/*" = ["S101", "S106"] "examples/*" = ["T201"] +# The documents are copied from spec/operations.graphql and are not wrapped. +"src/mina_sdk/daemon/queries.py" = ["E501"] [tool.ruff.format] quote-style = "double" diff --git a/scripts/check_schema_drift.py b/scripts/check_schema_drift.py deleted file mode 100755 index c00116a..0000000 --- a/scripts/check_schema_drift.py +++ /dev/null @@ -1,561 +0,0 @@ -#!/usr/bin/env python3 -"""Check for schema drift between the SDK and a live Mina node, in two layers: - - 1. Introspection diff: compare ``src/mina_sdk/schema/graphql_schema.json`` - to the live ``__schema`` returned by the daemon. - 2. Live query check: parse ``src/mina_sdk/daemon/queries.py``, send each - operation with sentinel variables, and classify GraphQL errors as - either schema drift (parse/validation) or runtime (auth, value-validation). - -Designed for a lightnet-style local daemon (see -``.github/workflows/schema-drift.yml`` for the CI setup); do not point at a -public node by default. - -Usage: - python scripts/check_schema_drift.py --endpoint http://localhost:8080/graphql [--strict] - -Exit codes: - 0 - no drift (or non-strict mode) - 1 - drift detected in --strict mode - 2 - connection / introspection error -""" - -from __future__ import annotations - -import argparse -import json -import re -import sys -from dataclasses import dataclass, field -from pathlib import Path -from typing import Any - -import httpx - -REPO_ROOT = Path(__file__).resolve().parent.parent -SCHEMA_PATH = REPO_ROOT / "src" / "mina_sdk" / "schema" / "graphql_schema.json" -QUERIES_PATH = REPO_ROOT / "src" / "mina_sdk" / "daemon" / "queries.py" - -# Sentinel addresses — syntactically valid B62q keys. The daemon may not have -# the corresponding accounts, but the schema layer will still validate. -SENTINEL_SENDER = "B62qpRzFVjd56FiHnNfxokVbcHMQLT119My1FEdSq8ss7KomLiSZcan" -SENTINEL_RECEIVER = "B62qrPN5Y5yq8kGE3FbVKbGTdTAJNdtNtB5sNVpxyRwWGcDEhpMzc8g" - -INTROSPECTION_QUERY = """ -query IntrospectionQuery { - __schema { - queryType { name } - mutationType { name } - subscriptionType { name } - types { - kind - name - description - fields(includeDeprecated: true) { - name - description - args { - name - description - type { - kind - name - ofType { - kind - name - ofType { - kind - name - ofType { - kind - name - } - } - } - } - defaultValue - } - type { - kind - name - ofType { - kind - name - ofType { - kind - name - ofType { - kind - name - } - } - } - } - isDeprecated - deprecationReason - } - inputFields { - name - description - type { - kind - name - ofType { - kind - name - ofType { - kind - name - ofType { - kind - name - } - } - } - } - defaultValue - } - interfaces { - kind - name - ofType { - kind - name - } - } - enumValues(includeDeprecated: true) { - name - description - isDeprecated - deprecationReason - } - possibleTypes { - kind - name - } - } - } -} -""" - - -# ───────────────────────────────────────────────────────────────────────────── -# Layer 1: introspection diff -# ───────────────────────────────────────────────────────────────────────────── - - -def _name_of(item: Any) -> str: - """Safe name extractor — returns '' for non-dict / missing-name entries - so sorting never panics on `null` entries in introspection arrays.""" - if isinstance(item, dict): - n = item.get("name") - if isinstance(n, str): - return n - return "" - - -def normalize_schema(schema: dict[str, Any]) -> dict[str, Any]: - """Normalize a schema for stable comparison. Raises ValueError if the - response is an error envelope without data.__schema, instead of silently - returning a fake empty schema.""" - data = schema.get("data") if isinstance(schema.get("data"), dict) else schema - sc = data.get("__schema") if isinstance(data, dict) else None - if not isinstance(sc, dict): - if schema.get("errors"): - raise ValueError( - f"introspection returned errors envelope (no data.__schema): {schema['errors']}" - ) - raise ValueError("introspection response missing data.__schema") - s = sc - types_raw = s.get("types") - if not isinstance(types_raw, list): - raise ValueError(f"introspection __schema.types is not a list (got {type(types_raw).__name__})") - - types_list = sorted(types_raw, key=_name_of) - normalized_types = [] - for t in types_list: - if not isinstance(t, dict): - continue - nt = dict(t) - if nt.get("fields"): - nt["fields"] = sorted(nt["fields"], key=_name_of) - for field in nt["fields"]: - if isinstance(field, dict) and field.get("args"): - field["args"] = sorted(field["args"], key=_name_of) - if nt.get("inputFields"): - nt["inputFields"] = sorted(nt["inputFields"], key=_name_of) - if nt.get("enumValues"): - nt["enumValues"] = sorted(nt["enumValues"], key=_name_of) - if nt.get("interfaces"): - nt["interfaces"] = sorted(nt["interfaces"], key=_name_of) - if nt.get("possibleTypes"): - nt["possibleTypes"] = sorted(nt["possibleTypes"], key=_name_of) - normalized_types.append(nt) - - return { - "queryType": s.get("queryType"), - "mutationType": s.get("mutationType"), - "subscriptionType": s.get("subscriptionType"), - "types": normalized_types, - } - - -def compute_schema_diff(local: dict[str, Any], remote: dict[str, Any]) -> list[str]: - """Compute human-readable differences between two normalized schemas.""" - diffs: list[str] = [] - - local_types = {t["name"]: t for t in local["types"]} - remote_types = {t["name"]: t for t in remote["types"]} - - for name in sorted(set(local_types) - set(remote_types)): - diffs.append(f"REMOVED type: {name}") - for name in sorted(set(remote_types) - set(local_types)): - diffs.append(f"ADDED type: {name}") - - for name in sorted(set(local_types) & set(remote_types)): - lt = local_types[name] - rt = remote_types[name] - # Only flag kind change when both sides set it — otherwise a partial - # local dump emits a spurious " -> OBJECT" per type. - if lt.get("kind") is not None and rt.get("kind") is not None and lt["kind"] != rt["kind"]: - diffs.append(f"CHANGED {name}: kind {lt['kind']} -> {rt['kind']}") - - local_fields = {f["name"]: f for f in (lt.get("fields") or [])} - remote_fields = {f["name"]: f for f in (rt.get("fields") or [])} - for fname in sorted(set(local_fields) - set(remote_fields)): - diffs.append(f"REMOVED field: {name}.{fname}") - for fname in sorted(set(remote_fields) - set(local_fields)): - diffs.append(f"ADDED field: {name}.{fname}") - for fname in sorted(set(local_fields) & set(remote_fields)): - lf = local_fields[fname] - rf = remote_fields[fname] - if lf.get("type") != rf.get("type"): - diffs.append(f"CHANGED field type: {name}.{fname}") - local_args = {a["name"]: a for a in (lf.get("args") or [])} - remote_args = {a["name"]: a for a in (rf.get("args") or [])} - for aname in sorted(set(local_args) - set(remote_args)): - diffs.append(f"REMOVED arg: {name}.{fname}({aname})") - for aname in sorted(set(remote_args) - set(local_args)): - diffs.append(f"ADDED arg: {name}.{fname}({aname})") - # Compare arg types for shared keys — a scalar swap like - # account(token: UInt64 -> TokenId) is invisible without this. - for aname in sorted(set(local_args) & set(remote_args)): - if local_args[aname].get("type") != remote_args[aname].get("type"): - diffs.append(f"CHANGED arg type: {name}.{fname}({aname})") - - local_inputs = {f["name"]: f for f in (lt.get("inputFields") or [])} - remote_inputs = {f["name"]: f for f in (rt.get("inputFields") or [])} - for fname in sorted(set(local_inputs) - set(remote_inputs)): - diffs.append(f"REMOVED inputField: {name}.{fname}") - for fname in sorted(set(remote_inputs) - set(local_inputs)): - diffs.append(f"ADDED inputField: {name}.{fname}") - # Compare inputField types for shared keys. - for fname in sorted(set(local_inputs) & set(remote_inputs)): - if local_inputs[fname].get("type") != remote_inputs[fname].get("type"): - diffs.append(f"CHANGED inputField type: {name}.{fname}") - - local_enums = {e["name"] for e in (lt.get("enumValues") or [])} - remote_enums = {e["name"] for e in (rt.get("enumValues") or [])} - for ename in sorted(local_enums - remote_enums): - diffs.append(f"REMOVED enumValue: {name}.{ename}") - for ename in sorted(remote_enums - local_enums): - diffs.append(f"ADDED enumValue: {name}.{ename}") - - return diffs - - -# ───────────────────────────────────────────────────────────────────────────── -# Layer 2: live query check -# ───────────────────────────────────────────────────────────────────────────── - - -_OP_RE = re.compile(r'^(\w+)\s*=\s*"""(.*?)"""', re.MULTILINE | re.DOTALL) -# Anchor at the start of the body — without ^, varsRe could bind to inner -# field-arg parens like `bestChain(maxLength: 1)`. -_VARS_RE = re.compile(r"^\s*(?:query|mutation|subscription)(?:\s+\w+)?\s*\(([^)]*)\)", re.DOTALL) -_DECL_RE = re.compile(r"^\$(\w+)\s*:\s*([\w!\[\]]+)") -_OPERATION_START_RE = re.compile(r"^\s*(query|mutation|subscription)\b", re.IGNORECASE) - - -def parse_queries(src: str) -> list[tuple[str, str]]: - """Extract NAME = \"\"\"...\"\"\" pairs whose body is an actual GraphQL - operation. Filters out unrelated triple-quoted constants in the module.""" - out: list[tuple[str, str]] = [] - seen: set[str] = set() - for m in _OP_RE.finditer(src): - name, body = m.group(1), m.group(2) - if name in seen: - continue - if not _OPERATION_START_RE.match(body): - continue - seen.add(name) - out.append((name, body)) - return out - - -def parse_variable_decls(body: str) -> list[tuple[str, str]]: - """Pull ($var: Type[!], ...) out of an operation header.""" - m = _VARS_RE.search(body) - if not m: - return [] - decls: list[tuple[str, str]] = [] - for raw in m.group(1).split(","): - raw = raw.strip() - if not raw: - continue - d = _DECL_RE.match(raw) - if d: - decls.append((d.group(1), d.group(2))) - return decls - - -def sentinel_for_type(type_name: str) -> Any: - base = re.sub(r"[\[\]!]", "", type_name) - return { - "PublicKey": SENTINEL_SENDER, - "UInt32": "1000000000", - "UInt64": "1000000000", - "Fee": "1000000000", - "Balance": "1000000000", - "Int": 1, - "String": "1", - "TokenId": "1", - "Boolean": True, - "SendPaymentInput": { - "from": SENTINEL_SENDER, - "to": SENTINEL_RECEIVER, - "amount": "1000000000", - "fee": "1000000000", - }, - "SendDelegationInput": { - "from": SENTINEL_SENDER, - "to": SENTINEL_RECEIVER, - "fee": "1000000000", - }, - "SetSnarkWorkerInput": {"publicKey": SENTINEL_SENDER}, - "SetSnarkWorkFee": {"fee": "1000000000"}, - }.get(base, None) - - -def build_variables(decls: list[tuple[str, str]]) -> dict[str, Any] | None: - vars: dict[str, Any] = {} - for name, typ in decls: - v = sentinel_for_type(typ) - if v is None: - return None - vars[name] = v - return vars - - -# Case-insensitive substrings that uniquely identify schema-level errors -# emitted by Mina's GraphQL surface (graphql-ppx / OCaml). We deliberately -# omit bare "expected type" because it appears in both real drift and in -# value-coercion runtime errors ("Expected type Foo, found Bar"); the -# `_VALUE_COERCION_RE` below catches the runtime variant explicitly. -_DRIFT_PATTERNS = ( - "cannot query field", - "unknown argument", - "unknown type", - "is not defined", - "is not a subtype", - "is required", - "but not provided", - "used in position expecting type", - "must have a sub selection", - "did you mean", - "unknown directive", -) - -# Matches Mina's "Argument X of type Y expected on field Z, found " -# — value validation, not schema drift. -_VALUE_COERCION_RE = re.compile(r"expected on field .* found ", re.IGNORECASE) - - -def classify_error(err: dict[str, Any]) -> str: - """Decide whether a GraphQL error reflects schema drift or runtime - failure. Message-pattern match takes priority over `path` — Mina attaches - `path` to many validation errors, so a path-first short-circuit silently - drops real drift to the runtime bucket.""" - msg = err.get("message") or "" - lc = msg.lower() - if any(p in lc for p in _DRIFT_PATTERNS): - return "drift" - if _VALUE_COERCION_RE.search(msg): - return "runtime" - if err.get("path"): - return "runtime" - # Unknown error shape — surface as drift so silent breakage is visible - # in --strict mode at least. - return "drift" - - -_http_client = httpx.Client(timeout=30.0) - - -def post_graphql(endpoint: str, payload: dict[str, Any]) -> dict[str, Any]: - resp = _http_client.post(endpoint, json=payload) - if resp.status_code < 200 or resp.status_code >= 300: - snippet = resp.text - if len(snippet) > 200: - snippet = snippet[:200] + "…" - raise RuntimeError(f"HTTP {resp.status_code} {resp.reason_phrase}: {snippet}") - return resp.json() - - -@dataclass -class QueryStats: - ok: int = 0 - runtime: int = 0 - drift: list[str] = field(default_factory=list) - skipped: list[str] = field(default_factory=list) # coverage gaps (stale sentinel table) - failures: list[str] = field(default_factory=list) # infra (HTTP / network / parse) - - -def _missing_sentinel_types(decls: list[tuple[str, str]]) -> list[str]: - seen: set[str] = set() - out: list[str] = [] - for _, typ in decls: - if sentinel_for_type(typ) is None and typ not in seen: - seen.add(typ) - out.append(typ) - return out - - -def run_query_layer(endpoint: str) -> QueryStats: - stats = QueryStats() - try: - src = QUERIES_PATH.read_text() - except OSError as e: - print(f"FAIL: cannot read queries module: {e}") - stats.failures.append(f"read queries module: {e}") - return stats - ops = parse_queries(src) - if not ops: - print("WARN: no operations parsed from queries module") - stats.failures.append("no operations parsed from queries module") - return stats - - for name, body in ops: - decls = parse_variable_decls(body) - vars_ = build_variables(decls) - if vars_ is None: - missing = _missing_sentinel_types(decls) - print(f"SKIP {name} (no sentinel for: {', '.join(missing)})") - stats.skipped.append(f"{name}: missing sentinel for {', '.join(missing)}") - continue - - try: - result = post_graphql(endpoint, {"query": body, "variables": vars_}) - except (httpx.HTTPError, RuntimeError, ValueError) as e: - print(f"FAIL {name}: {e}") - stats.failures.append(f"{name}: {e}") - continue - - errors = result.get("errors") or [] - if not errors: - print(f"OK {name}") - stats.ok += 1 - continue - - classified = [(classify_error(e), e) for e in errors] - drift_errs = [e for kind, e in classified if kind == "drift"] - if drift_errs: - msgs = "; ".join(e.get("message", "") for e in drift_errs) - print(f"DRIFT {name}: {msgs}") - stats.drift.append(f"{name}: {msgs}") - else: - msgs = "; ".join(e.get("message", "") for _, e in classified) - print(f"RUNTIME {name}: {msgs}") - stats.runtime += 1 - - return stats - - -# ───────────────────────────────────────────────────────────────────────────── -# Main -# ───────────────────────────────────────────────────────────────────────────── - - -def main() -> int: - parser = argparse.ArgumentParser(description="Check GraphQL schema drift against a Mina node") - parser.add_argument("--endpoint", default="http://127.0.0.1:8080/graphql") - parser.add_argument("--strict", action="store_true") - parser.add_argument("--branch", default="unknown") - parser.add_argument("--skip-schema", action="store_true") - parser.add_argument("--skip-queries", action="store_true") - args = parser.parse_args() - - schema_diff: list[str] = [] - - if not args.skip_schema: - print(f"\n── Layer 1: schema introspection ({args.branch}) ──") - try: - local_raw = json.loads(SCHEMA_PATH.read_text()) - except (FileNotFoundError, json.JSONDecodeError) as e: - print(f"ERROR: Cannot load local schema from {SCHEMA_PATH}: {e}", file=sys.stderr) - return 2 - - try: - print(f"Fetching introspection from {args.endpoint}...") - remote_raw = post_graphql(args.endpoint, {"query": INTROSPECTION_QUERY}) - except (httpx.HTTPError, RuntimeError, ValueError) as e: - print(f"ERROR: Cannot fetch remote schema: {e}", file=sys.stderr) - return 2 - - try: - local = normalize_schema(local_raw) - remote = normalize_schema(remote_raw) - except ValueError as e: - print(f"ERROR: malformed schema: {e}", file=sys.stderr) - return 2 - - schema_diff = compute_schema_diff(local, remote) - if not schema_diff: - print("OK: local schema matches node schema") - else: - print(f"Schema drift: {len(schema_diff)} difference(s)") - for d in schema_diff: - print(f" {d}") - - qstats = QueryStats() - if not args.skip_queries: - print(f"\n── Layer 2: live query check ({args.branch}) ──") - qstats = run_query_layer(args.endpoint) - print( - f"\nResults: {qstats.ok} ok, {len(qstats.drift)} drift, {qstats.runtime} runtime, " - f"{len(qstats.skipped)} skipped, {len(qstats.failures)} infra-failures" - ) - - print(f"\n── Summary ({args.branch}) ──") - if args.skip_schema: - print("Schema diffs: SKIPPED") - else: - print(f"Schema diffs: {len(schema_diff)}") - if args.skip_queries: - print("Query drift: SKIPPED") - else: - print(f"Query drift: {len(qstats.drift)}") - print(f"Skipped (cov): {len(qstats.skipped)}") - print(f"Infra failures: {len(qstats.failures)}") - - # Infra failures always fail — we can't trust the result if we couldn't - # talk to the daemon. - if qstats.failures: - print("FAIL: infrastructure errors prevented a clean check") - return 1 - - total_drift = len(schema_diff) + len(qstats.drift) - if total_drift == 0 and not qstats.skipped: - print("OK: no drift detected") - return 0 - if args.strict: - # In strict mode, skipped ops are also a failure: we can't claim the - # SDK is in sync if we couldn't probe parts of it. - print("FAIL: drift or coverage gap detected in --strict mode") - return 1 - print(f"WARN: drift or coverage gap differs from {args.branch} (non-blocking).") - return 0 - - -if __name__ == "__main__": - sys.exit(main()) diff --git a/spec/ITN.md b/spec/ITN.md new file mode 100644 index 0000000..98d82a1 --- /dev/null +++ b/spec/ITN.md @@ -0,0 +1,68 @@ +# Mina SDK ITN API + +A daemon started with `ITN_FEATURES=1`, `--itn-graphql-port ` and +`--itn-keys ` serves a second GraphQL API, the +ITN server (schema `Mina_graphql.schema_itn`, see +[`schema/itn.graphql`](schema/itn.graphql)). Load testing tools use it to +schedule payments and zkApp commands, read internal logs, change connection +gating and stop the daemon. + +The Mina SDKs have the same ITN client. This document and +[`itn-operations.graphql`](itn-operations.graphql) define it. The rules of +[`SPEC.md`](SPEC.md) apply: each method sends one named operation, and +nullable variables are always sent, as null when the caller omits them. + +## Authentication protocol + +Every request must be signed with an ed25519 key whose public half is in +`--itn-keys`. The daemon reads the `Authorization` header: + +- `Signature `: the signature covers the request body. The daemon + accepts this form for the `Auth` operation only. Every other operation + answers "Missing sequence information". +- `Signature ; Sequencing `: the signature covers the + big-endian `u16` `n`, then the server UUID, then the body. `n` must be + exactly the daemon's sequence number for this public key. It starts at 0, + goes up by one (wrapping at 2^16) after each accepted sequenced request, + and is shared by all clients that sign with the same key. + +`pk` and `sig` are standard base64. The key is a 32-byte ed25519 seed, +stored as base64. + +A client must: + +1. Run `Auth` to learn the server UUID and the sequence number. +2. Send sequenced requests one at a time, because the daemon accepts only the + exact next number. +3. On HTTP 412 (the daemon restarted, or another client used the number), run + `Auth` again and repeat the request once. +4. On HTTP 401 (a bad signature or an unknown key), fail. Do not repeat. +5. After a transport error on a sequenced request, fail. Do not repeat, + because the daemon may already have run it. The next request runs `Auth` + again. + +## Methods + +| Operation | Rust | Go | JS | Arguments | Returns | +|:--|:--|:--|:--|:--|:--| +| `Auth` | `auth` | `Auth` | `auth` | – | server UUID, sequence number, libp2p port, peer ID, block producer flag | +| `SlotsWon` | `slots_won` | `SlotsWon` | `slotsWon` | – | list of global slots | +| `InternalLogs` | `internal_logs` | `InternalLogs` | `internalLogs` | start log ID | list of logs (`id`, `timestamp`, `message`, `metadata` (`item`, `value`), `process?`) | +| `FlushInternalLogs` | `flush_internal_logs` | `FlushInternalLogs` | `flushInternalLogs` | end log ID | string | +| `SchedulePayments` | `schedule_payments` | `SchedulePayments` | `schedulePayments` | `PaymentsDetails` | handle | +| `ScheduleZkappCommands` | `schedule_zkapp_commands` | `ScheduleZkappCommands` | `scheduleZkappCommands` | `ZkappCommandsDetails` | handle | +| `StopScheduledTransactions` | `stop_scheduled_transactions` | `StopScheduledTransactions` | `stopScheduledTransactions` | handle | string | +| `UpdateGating` | `update_gating` | `UpdateGating` | `updateGating` | `GatingUpdate` | string | +| `StopDaemon` | `stop_daemon` | `StopDaemon` | `stopDaemon` | [delay seconds], [clean config] | string | +| `ZkappCommandLimit` | `set_zkapp_command_limit` | `SetZkappCommandLimit` | `setZkappCommandLimit` | limit or null | limit now in force | + +The input types `PaymentsDetails`, `ZkappCommandsDetails` and `GatingUpdate` +have the fields of [`schema/itn.graphql`](schema/itn.graphql). Every SDK also +has a custom-query method that signs and sequences any document. + +## Notes + +- The daemon ignores input fields that it does not know. A field that exists + only on a daemon branch (for example `nonDefaultToken` on + `georgeee/itn-arbitrary-cap-custom-token`) has no effect on other daemons. +- `StopDaemon` has a minimum delay of 5 seconds in the daemon. diff --git a/spec/SPEC.md b/spec/SPEC.md new file mode 100644 index 0000000..5d62576 --- /dev/null +++ b/spec/SPEC.md @@ -0,0 +1,137 @@ +# Mina SDK common API + +The Mina SDKs (`mina-sdk-rust`, `mina-sdk-go`, `mina-sdk-js`) have the same +client API for the daemon's public GraphQL server (default port 3085). This +document and [`operations.graphql`](operations.graphql) define it. +[`ITN.md`](ITN.md) defines the client of the daemon's ITN server. + +Each SDK keeps a copy of these files at a release tag of this repository +(`spec/VERSION`), and a test that its query strings are the documents of +`operations.graphql`, up to white space. To change the API, change this +repository first, make a release, then update every SDK with +`scripts/sync.sh`. + +## Methods + +Names follow each language's style. Arguments in brackets are optional. + +| Operation | Rust | Go | JS | Arguments | Returns | +|:--|:--|:--|:--|:--|:--| +| `SyncStatus` | `get_sync_status` | `GetSyncStatus` | `getSyncStatus` | – | `SyncStatus` | +| `DaemonStatus` | `get_daemon_status` | `GetDaemonStatus` | `getDaemonStatus` | – | `DaemonStatus` | +| `DaemonMetrics` | `get_daemon_metrics` | `GetDaemonMetrics` | `getDaemonMetrics` | – | `DaemonMetrics` | +| `NetworkId` | `get_network_id` | `GetNetworkID` | `getNetworkId` | – | string | +| `Account` | `get_account` | `GetAccount` | `getAccount` | public key, [token ID] | `AccountData` | +| `BestChain` | `get_best_chain` | `GetBestChain` | `getBestChain` | [max length] | list of `BlockInfo` | +| `GenesisBlock` | `get_genesis_block` | `GetGenesisBlock` | `getGenesisBlock` | – | `BlockInfo` | +| `Block` | `get_block` | `GetBlock` | `getBlock` | state hash **or** height | `BlockInfo` | +| `Peers` | `get_peers` | `GetPeers` | `getPeers` | – | list of `PeerInfo` | +| `PooledUserCommands` | `get_pooled_user_commands` | `GetPooledUserCommands` | `getPooledUserCommands` | [public key] | list of `PooledUserCommand` | +| `PooledZkappCommands` | `get_pooled_zkapp_commands` | `GetPooledZkappCommands` | `getPooledZkappCommands` | [public key] | list of `ZkappCommandResult` | +| `TransactionStatus` | `get_transaction_status` | `GetTransactionStatus` | `getTransactionStatus` | payment ID **or** zkApp transaction ID | `TransactionStatus` | +| `GenesisConstants` | `get_genesis_constants` | `GetGenesisConstants` | `getGenesisConstants` | – | `GenesisConstants` | +| `TrackedAccounts` | `get_tracked_accounts` | `GetTrackedAccounts` | `getTrackedAccounts` | – | list of `TrackedAccount` | +| `SnarkPool` | `get_snark_pool` | `GetSnarkPool` | `getSnarkPool` | – | list of `CompletedWork` | +| `ForkConfig` | `get_fork_config` | `GetForkConfig` | `getForkConfig` | – | JSON value | +| `SendPayment` | `send_payment` | `SendPayment` | `sendPayment` | payment, [signature] | `SubmittedCommand` | +| `SendDelegation` | `send_delegation` | `SendDelegation` | `sendDelegation` | delegation, [signature] | `SubmittedCommand` | +| `SendZkapp` | `send_zkapp` | `SendZkapp` | `sendZkapp` | zkApp command (JSON) | `ZkappCommandResult` | +| `UnlockAccount` | `unlock_account` | `UnlockAccount` | `unlockAccount` | public key, password | public key | +| `SetSnarkWorker` | `set_snark_worker` | `SetSnarkWorker` | `setSnarkWorker` | [public key] | previous worker or null | +| `SetSnarkWorkFee` | `set_snark_work_fee` | `SetSnarkWorkFee` | `setSnarkWorkFee` | fee | previous fee | + +Every SDK also has a custom-query method (`execute_query`, `Request`, +`executeQuery`) that uses the same transport, retries and errors. + +## Rules + +- **Nullable variables.** An SDK always sends every declared variable, as + null when the caller omits it. The daemon rejects a declared variable that + is absent from the request. +- **Signatures.** `SendPayment` and `SendDelegation` take an optional + signature (`{ field, scalar }`, for example from `mina-signer`). Without + one, the daemon signs with a key from its own keystore, which must be + unlocked (`UnlockAccount`). +- **Exactly one.** `Block` needs exactly one of state hash and height, and + `TransactionStatus` exactly one of payment ID and zkApp transaction ID. The + SDK rejects any other combination before it sends the request. +- **Amounts** are `Currency` (nanomina) where the daemon sends `Amount`, + `Fee` or `Balance`. Other numbers that the daemon sends as strings (nonces, + slots, lengths) are integers. +- **Errors.** A GraphQL `errors` array is a GraphQL error and is not retried. + A transport failure or an HTTP error status is retried as configured, then + reported as a connection error. `GetAccount` reports a null account as + "account not found". + +## Result types + +Field names are shown in camelCase; Rust uses snake_case and Go PascalCase. +`?` marks a field that can be null or absent. + +The types are the union of what the SDKs returned before this API, so no +caller loses a field. Where an SDK already had a field or a type under +another name, it keeps that name (for example Go `CreatorPK` and Rust +`creator_pk` for `creatorPublicKey`, and the JS type `Block` for the result +of `getBlock`), and adds the fields of this document to it. + +**`DaemonStatus`**: `syncStatus`, `blockchainLength?`, +`highestBlockLengthReceived?`, `highestUnvalidatedBlockLengthReceived?`, +`uptimeSecs?`, `stateHash?`, `commitId?`, `numAccounts?`, +`ledgerMerkleRoot?`, `chainId?`, `catchupStatus?` (list of strings), +`blockProductionKeys` (list), `coinbaseReceiver?`, `peers` (list of +`PeerInfo`), `addrsAndPorts?` (`externalIp`, `bindIp`, `clientPort`, +`libp2pPort`). + +**`DaemonMetrics`**: `blockProductionDelay` (list of integers), +`transactionPoolDiffReceived`, `transactionPoolDiffBroadcasted`, +`transactionsAddedToPool`, `transactionPoolSize`, `snarkPoolDiffReceived`, +`snarkPoolDiffBroadcasted`, `pendingSnarkWork`, `snarkPoolSize`. + +**`PeerInfo`**: `peerId`, `host`, `port` (the libp2p port). + +**`AccountData`**: `publicKey`, `nonce`, `delegate?`, `tokenId`, +`tokenSymbol?`, `votingFor?`, `receiptChainHash?`, `balance` (`total`, +`liquid?`, `locked?`, `blockHeight?`), `timing?` (`initialMinimumBalance`, +`cliffTime`, `cliffAmount`, `vestingPeriod`, `vestingIncrement`), +`permissions?` (`editState`, `send`, `receive`, `access`, `setDelegate`, +`setPermissions`, `setVerificationKey` (`auth`, `txnVersion`), +`setZkappUri`, `editActionState`, `setTokenSymbol`, `incrementNonce`, +`setVotingFor`, `setTiming`), `zkappState?` (list of strings), +`provedState?`, `zkappUri?`. + +**`BlockInfo`** (for `BestChain`, `GenesisBlock` and `Block`): `stateHash`, +`previousStateHash`, `height`, `globalSlotSinceHardFork` (`slot`), +`globalSlotSinceGenesis`, `epoch`, `creatorPublicKey`, `blockCreator`, +`coinbaseReceiver?` (the consensus state's `coinbaseReceiever`), +`commandTransactionCount`, `stakingEpoch` (`length`, `seed`, `ledgerHash`), +`nextEpoch` (`seed`, `ledgerHash`), `date`, `utcDate`, `snarkedLedgerHash`, +`stagedLedgerHash`, `coinbase`, `coinbaseReceiverAccount?`, `feeTransfers` +(list of `recipient`, `fee`, `type`), `userCommands` (list of +`BlockTransaction`). + +**`BlockTransaction`**: `id`, `hash`, `kind`, `nonce`, `source`, `receiver`, +`amount`, `fee`, `memo`, `failureReason?`. + +**`PooledUserCommand`**: `id`, `hash`, `kind`, `nonce`, `amount`, `fee`, +`from`, `to`, `source`, `receiver`, `memo`, `failureReason?`. + +**`SubmittedCommand`**: `id`, `hash`, `kind`, `nonce`, `source`, `receiver`, +`amount`, `fee`, `memo`. + +**`ZkappCommandResult`**: `id`, `hash`, `memo`, `feePayer` (`publicKey`, +`fee`, `nonce`, `validUntil?`), `failureReason?` (list of `index?` and +`failures`). + +**`CompletedWork`**: `prover`, `fee`, `workIds` (list of integers). + +**`TransactionStatus`**: one of `PENDING`, `INCLUDED`, `UNKNOWN`. + +**`GenesisConstants`**: `genesisTimestamp`, `coinbase`, `accountCreationFee`. + +**`TrackedAccount`**: `publicKey`, `balance` (total). + +## Outside this API + +- Trustless block verification (`verifyPrecomputedBlock`, `checkBlockClaims`) + is a feature of `mina-sdk-js` only. It needs a WASM proof verifier and is + not a GraphQL call. diff --git a/spec/VERSION b/spec/VERSION new file mode 100644 index 0000000..b82608c --- /dev/null +++ b/spec/VERSION @@ -0,0 +1 @@ +v0.1.0 diff --git a/spec/itn-operations.graphql b/spec/itn-operations.graphql new file mode 100644 index 0000000..14ad9ed --- /dev/null +++ b/spec/itn-operations.graphql @@ -0,0 +1,65 @@ +# Mina SDK ITN API: the GraphQL documents of the daemon's ITN server +# (`--itn-graphql-port`, schema `Mina_graphql.schema_itn`) that the Mina SDKs +# send. ITN.md describes the methods and the authentication protocol. +# +# Each SDK keeps a copy at a pinned tag (spec/VERSION) and a test that its ITN +# query strings are these documents, up to white space. CI in this repository +# validates them against schema/itn.graphql. +# +# The rules of operations.graphql apply: one named operation per method, and +# nullable variables are always sent, as null when the caller omits them. + +query Auth { + auth { + serverUuid + signerSequenceNumber + libp2pPort + peerId + isBlockProducer + } +} + +query SlotsWon { + slotsWon +} + +query InternalLogs($startLogId: Int!) { + internalLogs(startLogId: $startLogId) { + id + timestamp + message + metadata { + item + value + } + process + } +} + +mutation FlushInternalLogs($endLogId: Int!) { + flushInternalLogs(endLogId: $endLogId) +} + +mutation SchedulePayments($input: PaymentsDetails!) { + schedulePayments(input: $input) +} + +mutation ScheduleZkappCommands($input: ZkappCommandsDetails!) { + scheduleZkappCommands(input: $input) +} + +mutation StopScheduledTransactions($handle: String!) { + stopScheduledTransactions(handle: $handle) +} + +mutation UpdateGating($input: GatingUpdate!) { + updateGating(input: $input) +} + +mutation StopDaemon($delaySeconds: Int, $cleanConfig: Boolean) { + stopDaemon(delaySeconds: $delaySeconds, cleanConfig: $cleanConfig) +} + +mutation ZkappCommandLimit($limit: Int) { + zkAppCommandLimit(limit: $limit) +} diff --git a/spec/operations.graphql b/spec/operations.graphql new file mode 100644 index 0000000..c1cf316 --- /dev/null +++ b/spec/operations.graphql @@ -0,0 +1,480 @@ +# Mina SDK common API: the GraphQL documents of the public daemon API +# (port 3085) that the Mina SDKs send. +# +# This file and SPEC.md are the specification (o1-labs/mina-sdk-spec). Each +# SDK keeps a copy at a pinned tag (spec/VERSION) and a test that its query +# strings are these documents, up to white space. CI in this repository +# validates the documents against schema/daemon.graphql and against live +# daemons. Change the documents here first, then in every SDK. +# +# Rules: +# - One named operation per method. The SDKs send the operation name too. +# - Nullable variables are always sent, as null when the caller omits them: +# the daemon rejects a declared variable that is absent from the request. +# - Where the SDKs had different selections, this is their union. + +query SyncStatus { + syncStatus +} + +query DaemonStatus { + daemonStatus { + syncStatus + blockchainLength + highestBlockLengthReceived + highestUnvalidatedBlockLengthReceived + uptimeSecs + stateHash + commitId + numAccounts + ledgerMerkleRoot + chainId + catchupStatus + blockProductionKeys + coinbaseReceiver + peers { + peerId + host + libp2pPort + } + addrsAndPorts { + externalIp + bindIp + clientPort + libp2pPort + } + } +} + +query DaemonMetrics { + daemonStatus { + metrics { + blockProductionDelay + transactionPoolDiffReceived + transactionPoolDiffBroadcasted + transactionsAddedToPool + transactionPoolSize + snarkPoolDiffReceived + snarkPoolDiffBroadcasted + pendingSnarkWork + snarkPoolSize + } + } +} + +query NetworkId { + networkID +} + +query Account($publicKey: PublicKey!, $token: TokenId) { + account(publicKey: $publicKey, token: $token) { + publicKey + nonce + delegate + tokenId + tokenSymbol + votingFor + receiptChainHash + balance { + total + liquid + locked + blockHeight + } + timing { + initialMinimumBalance + cliffTime + cliffAmount + vestingPeriod + vestingIncrement + } + permissions { + editState + send + receive + access + setDelegate + setPermissions + setVerificationKey { + auth + txnVersion + } + setZkappUri + editActionState + setTokenSymbol + incrementNonce + setVotingFor + setTiming + } + zkappState + provedState + zkappUri + } +} + +query BestChain($maxLength: Int) { + bestChain(maxLength: $maxLength) { + stateHash + commandTransactionCount + creatorAccount { + publicKey + } + protocolState { + previousStateHash + consensusState { + blockHeight + epoch + slot + slotSinceGenesis + blockCreator + coinbaseReceiever + stakingEpochData { + epochLength + seed + ledger { + hash + } + } + nextEpochData { + seed + ledger { + hash + } + } + } + blockchainState { + date + utcDate + snarkedLedgerHash + stagedLedgerHash + } + } + transactions { + coinbase + coinbaseReceiverAccount { + publicKey + } + feeTransfer { + recipient + fee + type + } + userCommands { + id + hash + kind + nonce + source { + publicKey + } + receiver { + publicKey + } + amount + fee + memo + failureReason + } + } + } +} + +query GenesisBlock { + genesisBlock { + stateHash + commandTransactionCount + creatorAccount { + publicKey + } + protocolState { + previousStateHash + consensusState { + blockHeight + epoch + slot + slotSinceGenesis + blockCreator + coinbaseReceiever + stakingEpochData { + epochLength + seed + ledger { + hash + } + } + nextEpochData { + seed + ledger { + hash + } + } + } + blockchainState { + date + utcDate + snarkedLedgerHash + stagedLedgerHash + } + } + transactions { + coinbase + coinbaseReceiverAccount { + publicKey + } + feeTransfer { + recipient + fee + type + } + userCommands { + id + hash + kind + nonce + source { + publicKey + } + receiver { + publicKey + } + amount + fee + memo + failureReason + } + } + } +} + +query Block($stateHash: String, $height: Int) { + block(stateHash: $stateHash, height: $height) { + stateHash + commandTransactionCount + creatorAccount { + publicKey + } + protocolState { + previousStateHash + consensusState { + blockHeight + epoch + slot + slotSinceGenesis + blockCreator + coinbaseReceiever + stakingEpochData { + epochLength + seed + ledger { + hash + } + } + nextEpochData { + seed + ledger { + hash + } + } + } + blockchainState { + date + utcDate + snarkedLedgerHash + stagedLedgerHash + } + } + transactions { + coinbase + coinbaseReceiverAccount { + publicKey + } + feeTransfer { + recipient + fee + type + } + userCommands { + id + hash + kind + nonce + source { + publicKey + } + receiver { + publicKey + } + amount + fee + memo + failureReason + } + } + } +} + +query Peers { + getPeers { + peerId + host + libp2pPort + } +} + +query PooledUserCommands($publicKey: PublicKey) { + pooledUserCommands(publicKey: $publicKey) { + id + hash + kind + nonce + amount + fee + from + to + source { + publicKey + } + receiver { + publicKey + } + memo + failureReason + } +} + +query PooledZkappCommands($publicKey: PublicKey) { + pooledZkappCommands(publicKey: $publicKey) { + id + hash + zkappCommand { + memo + feePayer { + body { + publicKey + fee + nonce + validUntil + } + } + } + failureReason { + index + failures + } + } +} + +query TransactionStatus($payment: ID, $zkappTransaction: ID) { + transactionStatus(payment: $payment, zkappTransaction: $zkappTransaction) +} + +query GenesisConstants { + genesisConstants { + genesisTimestamp + coinbase + accountCreationFee + } +} + +query TrackedAccounts { + trackedAccounts { + publicKey + balance { + total + } + } +} + +query SnarkPool { + snarkPool { + fee + prover + workIds + } +} + +query ForkConfig { + fork_config +} + +mutation SendPayment($input: SendPaymentInput!, $signature: SignatureInput) { + sendPayment(input: $input, signature: $signature) { + payment { + id + hash + kind + nonce + source { + publicKey + } + receiver { + publicKey + } + amount + fee + memo + } + } +} + +mutation SendDelegation($input: SendDelegationInput!, $signature: SignatureInput) { + sendDelegation(input: $input, signature: $signature) { + delegation { + id + hash + kind + nonce + source { + publicKey + } + receiver { + publicKey + } + amount + fee + memo + } + } +} + +mutation SendZkapp($input: SendZkappInput!) { + sendZkapp(input: $input) { + zkapp { + id + hash + zkappCommand { + memo + feePayer { + body { + publicKey + fee + nonce + validUntil + } + } + } + failureReason { + index + failures + } + } + } +} + +mutation UnlockAccount($input: UnlockInput!) { + unlockAccount(input: $input) { + publicKey + } +} + +mutation SetSnarkWorker($input: SetSnarkWorkerInput!) { + setSnarkWorker(input: $input) { + lastSnarkWorker + } +} + +mutation SetSnarkWorkFee($fee: UInt64!) { + setSnarkWorkFee(input: {fee: $fee}) { + lastFee + } +} diff --git a/src/mina_sdk/__init__.py b/src/mina_sdk/__init__.py index 1af3fab..e3ebbdc 100644 --- a/src/mina_sdk/__init__.py +++ b/src/mina_sdk/__init__.py @@ -14,6 +14,7 @@ """ from mina_sdk.daemon.client import ( + AccountNotFoundError, DaemonConnectionError, GraphQLError, MinaDaemonClient, @@ -21,30 +22,67 @@ from mina_sdk.types import ( AccountBalance, AccountData, + AccountPermissions, + AccountTiming, + AddrsAndPorts, BlockInfo, + BlockTransaction, + CompletedWork, Currency, CurrencyFormat, CurrencyUnderflow, + DaemonMetrics, DaemonStatus, + EpochData, + FeeTransfer, + GenesisConstants, PeerInfo, + PooledUserCommand, SendDelegationResult, SendPaymentResult, + SignatureInput, + SubmittedCommand, + TrackedAccount, + TransactionStatus, + VerificationKeyPermission, + ZkappCommandResult, + ZkappFailure, + ZkappFeePayer, ) __all__ = [ "AccountBalance", "AccountData", + "AccountNotFoundError", + "AccountPermissions", + "AccountTiming", + "AddrsAndPorts", "BlockInfo", + "BlockTransaction", + "CompletedWork", "Currency", "CurrencyFormat", "CurrencyUnderflow", "DaemonConnectionError", + "DaemonMetrics", "DaemonStatus", + "EpochData", + "FeeTransfer", + "GenesisConstants", "GraphQLError", "MinaDaemonClient", "PeerInfo", + "PooledUserCommand", "SendDelegationResult", "SendPaymentResult", + "SignatureInput", + "SubmittedCommand", + "TrackedAccount", + "TransactionStatus", + "VerificationKeyPermission", + "ZkappCommandResult", + "ZkappFailure", + "ZkappFeePayer", ] __version__ = "0.1.0" diff --git a/src/mina_sdk/daemon/client.py b/src/mina_sdk/daemon/client.py index 644a44a..d46f3da 100644 --- a/src/mina_sdk/daemon/client.py +++ b/src/mina_sdk/daemon/client.py @@ -12,12 +12,30 @@ from mina_sdk.types import ( AccountBalance, AccountData, + AccountPermissions, + AccountTiming, + AddrsAndPorts, BlockInfo, + BlockTransaction, + CompletedWork, Currency, + DaemonMetrics, DaemonStatus, + EpochData, + FeeTransfer, + GenesisConstants, PeerInfo, + PooledUserCommand, SendDelegationResult, SendPaymentResult, + SignatureInput, + SubmittedCommand, + TrackedAccount, + TransactionStatus, + VerificationKeyPermission, + ZkappCommandResult, + ZkappFailure, + ZkappFeePayer, _parse_response, ) @@ -53,6 +71,13 @@ class DaemonConnectionError(Exception): ConnectionError = DaemonConnectionError +class AccountNotFoundError(ValueError): + """Raised by ``get_account`` when the account does not exist on the ledger. + + It is a ``ValueError``, which ``get_account`` raised before. + """ + + class MinaDaemonClient: """Client for interacting with a Mina daemon via its GraphQL API. @@ -178,21 +203,15 @@ def get_sync_status(self) -> str: return data["syncStatus"] def get_daemon_status(self) -> DaemonStatus: - """Get comprehensive daemon status including sync state, chain height, - uptime, commit hash, and connected peers.""" + """Get comprehensive daemon status: sync state, chain height, uptime, + commit hash, connected peers, addresses and block production keys.""" data = self._request(queries.DAEMON_STATUS, query_name="get_daemon_status") status = data["daemonStatus"] peers = None if status.get("peers"): - peers = [ - PeerInfo( - peer_id=p["peerId"], - host=p["host"], - port=p["libp2pPort"], - ) - for p in status["peers"] - ] + peers = [_parse_peer(p) for p in status["peers"]] + addrs = status.get("addrsAndPorts") return DaemonStatus( sync_status=status["syncStatus"], @@ -202,6 +221,39 @@ def get_daemon_status(self) -> DaemonStatus: state_hash=status.get("stateHash"), commit_id=status.get("commitId"), peers=peers, + highest_unvalidated_block_length_received=status.get( + "highestUnvalidatedBlockLengthReceived" + ), + num_accounts=status.get("numAccounts"), + ledger_merkle_root=status.get("ledgerMerkleRoot"), + chain_id=status.get("chainId"), + catchup_status=status.get("catchupStatus"), + block_production_keys=status.get("blockProductionKeys"), + coinbase_receiver=status.get("coinbaseReceiver"), + addrs_and_ports=AddrsAndPorts( + external_ip=addrs["externalIp"], + bind_ip=addrs["bindIp"], + client_port=addrs["clientPort"], + libp2p_port=addrs["libp2pPort"], + ) + if addrs + else None, + ) + + def get_daemon_metrics(self) -> DaemonMetrics: + """Get the daemon's transaction pool, snark pool and block production metrics.""" + data = self._request(queries.DAEMON_METRICS, query_name="get_daemon_metrics") + m = _parse_response(data, ["daemonStatus", "metrics"]) + return DaemonMetrics( + block_production_delay=list(m["blockProductionDelay"]), + transaction_pool_diff_received=m["transactionPoolDiffReceived"], + transaction_pool_diff_broadcasted=m["transactionPoolDiffBroadcasted"], + transactions_added_to_pool=m["transactionsAddedToPool"], + transaction_pool_size=m["transactionPoolSize"], + snark_pool_diff_received=m["snarkPoolDiffReceived"], + snark_pool_diff_broadcasted=m["snarkPoolDiffBroadcasted"], + pending_snark_work=m["pendingSnarkWork"], + snark_pool_size=m["snarkPoolSize"], ) def get_network_id(self) -> str: @@ -217,32 +269,20 @@ def get_account(self, public_key: str, token_id: str | None = None) -> AccountDa token_id: Optional token ID (defaults to MINA token). Raises: - ValueError: If the account does not exist on the ledger. + AccountNotFoundError: If the account does not exist on the ledger. + It is a ``ValueError``. """ - if token_id is not None: - variables: dict[str, Any] = {"publicKey": public_key, "token": token_id} - data = self._request( - queries.GET_ACCOUNT_WITH_TOKEN, variables=variables, query_name="get_account" - ) - else: - variables = {"publicKey": public_key} - data = self._request(queries.GET_ACCOUNT, variables=variables, query_name="get_account") + # $token is nullable: null selects the default MINA token. Every + # declared variable is sent, because the daemon rejects a missing one. + data = self._request( + queries.GET_ACCOUNT, + variables={"publicKey": public_key, "token": token_id}, + query_name="get_account", + ) acc = data.get("account") if acc is None: - raise ValueError(f"account not found: {public_key}") - - balance = acc["balance"] - return AccountData( - public_key=acc["publicKey"], - nonce=int(acc["nonce"]), - delegate=acc.get("delegate"), - token_id=acc.get("tokenId"), - balance=AccountBalance( - total=Currency.from_graphql(balance["total"]), - liquid=Currency.from_graphql(balance["liquid"]) if balance.get("liquid") else None, - locked=Currency.from_graphql(balance["locked"]) if balance.get("locked") else None, - ), - ) + raise AccountNotFoundError(f"account not found: {public_key}") + return _parse_account(acc) def get_best_chain(self, max_length: int | None = None) -> list[BlockInfo]: """Get blocks from the best chain, ordered from highest to lowest. @@ -251,69 +291,133 @@ def get_best_chain(self, max_length: int | None = None) -> list[BlockInfo]: max_length: Maximum number of blocks to return. ``None`` uses the daemon's default. """ - variables: dict[str, Any] = {} - if max_length is not None: - variables["maxLength"] = max_length + data = self._request( + queries.BEST_CHAIN, variables={"maxLength": max_length}, query_name="get_best_chain" + ) + return [_parse_block(b) for b in data.get("bestChain") or []] + + def get_genesis_block(self) -> BlockInfo: + """Get the network's genesis block.""" + data = self._request(queries.GENESIS_BLOCK, query_name="get_genesis_block") + return _parse_block(_parse_response(data, ["genesisBlock"])) + def get_block(self, state_hash: str | None = None, height: int | None = None) -> BlockInfo: + """Get one block, by state hash or by height. + + Raises: + ValueError: If not exactly one of ``state_hash`` and ``height`` is given. + """ + if (state_hash is None) == (height is None): + raise ValueError("get_block: pass exactly one of state_hash and height") data = self._request( - queries.BEST_CHAIN, variables=variables or None, query_name="get_best_chain" + queries.BLOCK, + variables={"stateHash": state_hash, "height": height}, + query_name="get_block", ) - chain = data.get("bestChain") - if not chain: - return [] - - blocks = [] - for block in chain: - consensus = block["protocolState"]["consensusState"] - creator = block.get("creatorAccount", {}) - creator_pk = creator.get("publicKey", "unknown") - if isinstance(creator_pk, dict): - creator_pk = str(creator_pk) - - blocks.append( - BlockInfo( - state_hash=block["stateHash"], - height=int(consensus["blockHeight"]), - global_slot_since_hard_fork=int(consensus["slot"]), - global_slot_since_genesis=int(consensus["slotSinceGenesis"]), - creator_pk=creator_pk, - command_transaction_count=block["commandTransactionCount"], - ) - ) - return blocks + block = data.get("block") + if block is None: + raise ValueError("missing field 'block' in response") + return _parse_block(block) def get_peers(self) -> list[PeerInfo]: """Get the list of connected peers.""" data = self._request(queries.GET_PEERS, query_name="get_peers") - return [ - PeerInfo(peer_id=p["peerId"], host=p["host"], port=p["libp2pPort"]) - for p in data.get("getPeers", []) - ] + return [_parse_peer(p) for p in data.get("getPeers", [])] - def get_pooled_user_commands(self, public_key: str | None = None) -> list[dict[str, Any]]: - """Get pending user commands from the transaction pool. + def get_pooled_user_commands(self, public_key: str | None = None) -> list[PooledUserCommand]: + """Get pending payments and delegations from the transaction pool. Args: public_key: Filter by sender public key. If ``None``, returns all pending commands. + """ + data = self._request( + queries.POOLED_USER_COMMANDS, + variables={"publicKey": public_key}, + query_name="get_pooled_user_commands", + ) + return [ + PooledUserCommand( + id=c["id"], + hash=c["hash"], + kind=c["kind"], + nonce=str(c["nonce"]), + amount=str(c["amount"]), + fee=str(c["fee"]), + from_=c["from"], + to=c["to"], + source=(c.get("source") or {}).get("publicKey", ""), + receiver=(c.get("receiver") or {}).get("publicKey", ""), + memo=c.get("memo") or "", + failure_reason=c.get("failureReason"), + ) + for c in data.get("pooledUserCommands") or [] + ] - Returns: - Raw list of transaction dictionaries from the mempool. Each dict - contains keys: ``id``, ``hash``, ``kind``, ``nonce``, ``amount``, - ``fee``, ``from``, ``to``. + def get_pooled_zkapp_commands(self, public_key: str | None = None) -> list[ZkappCommandResult]: + """Get pending zkApp commands; ``None`` for the commands of every fee payer.""" + data = self._request( + queries.POOLED_ZKAPP_COMMANDS, + variables={"publicKey": public_key}, + query_name="get_pooled_zkapp_commands", + ) + return [_parse_zkapp(z) for z in data.get("pooledZkappCommands") or []] + + def get_transaction_status( + self, payment: str | None = None, zkapp_transaction: str | None = None + ) -> TransactionStatus: + """Get the status of a payment or delegation (``payment``) or of a zkApp + command (``zkapp_transaction``), by its ID. + + Raises: + ValueError: If not exactly one of the two IDs is given. """ - if public_key is not None: - data = self._request( - queries.POOLED_USER_COMMANDS, - variables={"publicKey": public_key}, - query_name="get_pooled_user_commands", + if (payment is None) == (zkapp_transaction is None): + raise ValueError( + "get_transaction_status: pass exactly one of payment and zkapp_transaction" ) - else: - data = self._request( - queries.POOLED_USER_COMMANDS_ALL, - query_name="get_pooled_user_commands", + data = self._request( + queries.TRANSACTION_STATUS, + variables={"payment": payment, "zkappTransaction": zkapp_transaction}, + query_name="get_transaction_status", + ) + return TransactionStatus(_parse_response(data, ["transactionStatus"])) + + def get_genesis_constants(self) -> GenesisConstants: + """Get the network's genesis constants.""" + data = self._request(queries.GENESIS_CONSTANTS, query_name="get_genesis_constants") + c = _parse_response(data, ["genesisConstants"]) + return GenesisConstants( + genesis_timestamp=c["genesisTimestamp"], + coinbase=_currency(c["coinbase"]), + account_creation_fee=_currency(c["accountCreationFee"]), + ) + + def get_tracked_accounts(self) -> list[TrackedAccount]: + """Get the accounts the daemon tracks (its wallet keys).""" + data = self._request(queries.TRACKED_ACCOUNTS, query_name="get_tracked_accounts") + return [ + TrackedAccount(public_key=a["publicKey"], balance=_currency(a["balance"]["total"])) + for a in data.get("trackedAccounts") or [] + ] + + def get_snark_pool(self) -> list[CompletedWork]: + """Get the completed snark work in the snark pool.""" + data = self._request(queries.SNARK_POOL, query_name="get_snark_pool") + return [ + CompletedWork( + prover=w["prover"], + fee=_currency(w["fee"]), + work_ids=[int(i) for i in w["workIds"]], ) - return data.get("pooledUserCommands", []) + for w in data.get("snarkPool") or [] + ] + + def get_fork_config(self) -> Any: + """Get the daemon's fork configuration: the configuration used to seed a + hardfork's genesis ledger, as JSON.""" + data = self._request(queries.FORK_CONFIG, query_name="get_fork_config") + return _parse_response(data, ["fork_config"]) # -- Mutations -- @@ -325,10 +429,12 @@ def send_payment( fee: Currency | str, memo: str | None = None, nonce: int | None = None, + signature: SignatureInput | None = None, ) -> SendPaymentResult: """Send a payment transaction. - Requires the sender's account to be unlocked on the node. + Without ``signature``, the daemon signs with the sender's key, which must + be unlocked on the node (see ``unlock_account``). Args: sender: Sender public key (base58). @@ -337,6 +443,7 @@ def send_payment( fee: Transaction fee (``Currency`` or MINA string). memo: Optional transaction memo (max 32 bytes). nonce: Optional explicit nonce. If omitted the daemon auto-increments. + signature: Optional signature made outside the daemon. Raises: GraphQLError: If the daemon rejects the transaction. @@ -358,14 +465,11 @@ def send_payment( input_obj["nonce"] = str(nonce) data = self._request( - queries.SEND_PAYMENT, variables={"input": input_obj}, query_name="send_payment" - ) - payment = _parse_response(data, ["sendPayment", "payment"]) - return SendPaymentResult( - id=payment["id"], - hash=payment["hash"], - nonce=int(payment["nonce"]), + queries.SEND_PAYMENT, + variables={"input": input_obj, "signature": _signature(signature)}, + query_name="send_payment", ) + return _parse_submitted(_parse_response(data, ["sendPayment", "payment"])) def send_delegation( self, @@ -374,10 +478,12 @@ def send_delegation( fee: Currency | str, memo: str | None = None, nonce: int | None = None, + signature: SignatureInput | None = None, ) -> SendDelegationResult: """Send a stake delegation transaction. - Requires the sender's account to be unlocked on the node. + Without ``signature``, the daemon signs with the sender's key, which must + be unlocked on the node. Args: sender: Delegator public key (base58). @@ -385,6 +491,7 @@ def send_delegation( fee: Transaction fee (``Currency`` or MINA string). memo: Optional transaction memo. nonce: Optional explicit nonce. + signature: Optional signature made outside the daemon. """ if isinstance(fee, str): fee = Currency(fee) @@ -400,14 +507,31 @@ def send_delegation( input_obj["nonce"] = str(nonce) data = self._request( - queries.SEND_DELEGATION, variables={"input": input_obj}, query_name="send_delegation" + queries.SEND_DELEGATION, + variables={"input": input_obj, "signature": _signature(signature)}, + query_name="send_delegation", ) - delegation = _parse_response(data, ["sendDelegation", "delegation"]) - return SendDelegationResult( - id=delegation["id"], - hash=delegation["hash"], - nonce=int(delegation["nonce"]), + return _parse_submitted(_parse_response(data, ["sendDelegation", "delegation"])) + + def send_zkapp(self, zkapp_command: Any) -> ZkappCommandResult: + """Send a signed zkApp command, as JSON in the daemon's + ``ZkappCommandInput`` form (for example from o1js ``toJSON()``).""" + data = self._request( + queries.SEND_ZKAPP, + variables={"input": {"zkappCommand": zkapp_command}}, + query_name="send_zkapp", + ) + return _parse_zkapp(_parse_response(data, ["sendZkapp", "zkapp"])) + + def unlock_account(self, public_key: str, password: str) -> str: + """Unlock an account in the daemon's keystore, so that the daemon can sign + payments and delegations from it. Returns its public key.""" + data = self._request( + queries.UNLOCK_ACCOUNT, + variables={"input": {"publicKey": public_key, "password": password}}, + query_name="unlock_account", ) + return _parse_response(data, ["unlockAccount", "publicKey"]) def set_snark_worker(self, public_key: str | None) -> str | None: """Set or unset the SNARK worker key. @@ -442,3 +566,184 @@ def set_snark_work_fee(self, fee: Currency | str) -> str: query_name="set_snark_work_fee", ) return _parse_response(data, ["setSnarkWorkFee", "lastFee"]) + + +# -- Parsing -- +# +# The daemon sends most integers (UInt32, UInt64, Length, Slot) as strings and +# amounts as nanomina strings; these helpers accept a string or a number. + + +def _int(v: Any) -> int: + return int(v) if v is not None and v != "" else 0 + + +def _opt_int(v: Any) -> int | None: + return int(v) if v is not None and v != "" else None + + +def _currency(v: Any) -> Currency: + return Currency.from_graphql(str(v)) + + +def _opt_currency(v: Any) -> Currency | None: + return Currency.from_graphql(str(v)) if v is not None and v != "" else None + + +def _signature(s: SignatureInput | None) -> dict[str, str] | None: + return {"field": s.field, "scalar": s.scalar} if s is not None else None + + +def _parse_peer(p: dict[str, Any]) -> PeerInfo: + return PeerInfo(peer_id=p["peerId"], host=p["host"], port=p["libp2pPort"]) + + +def _parse_account(acc: dict[str, Any]) -> AccountData: + balance = acc["balance"] + timing = acc.get("timing") or {} + perms = acc.get("permissions") + vk = (perms or {}).get("setVerificationKey") + parsed_timing = AccountTiming( + initial_minimum_balance=_opt_currency(timing.get("initialMinimumBalance")), + cliff_time=_opt_int(timing.get("cliffTime")), + cliff_amount=_opt_currency(timing.get("cliffAmount")), + vesting_period=_opt_int(timing.get("vestingPeriod")), + vesting_increment=_opt_currency(timing.get("vestingIncrement")), + ) + return AccountData( + public_key=acc["publicKey"], + nonce=int(acc["nonce"]), + delegate=acc.get("delegate"), + token_id=acc.get("tokenId"), + balance=AccountBalance( + total=_currency(balance["total"]), + liquid=_opt_currency(balance.get("liquid")), + locked=_opt_currency(balance.get("locked")), + block_height=_opt_int(balance.get("blockHeight")), + ), + token_symbol=acc.get("tokenSymbol"), + voting_for=acc.get("votingFor"), + receipt_chain_hash=acc.get("receiptChainHash"), + # The daemon sends a timing object with every field null for an + # untimed account; that is no timing. + timing=parsed_timing if parsed_timing != AccountTiming() else None, + permissions=AccountPermissions( + edit_state=perms.get("editState"), + send=perms.get("send"), + receive=perms.get("receive"), + access=perms.get("access"), + set_delegate=perms.get("setDelegate"), + set_permissions=perms.get("setPermissions"), + set_verification_key=VerificationKeyPermission( + auth=vk["auth"], txn_version=str(vk["txnVersion"]) + ) + if vk + else None, + set_zkapp_uri=perms.get("setZkappUri"), + edit_action_state=perms.get("editActionState"), + set_token_symbol=perms.get("setTokenSymbol"), + increment_nonce=perms.get("incrementNonce"), + set_voting_for=perms.get("setVotingFor"), + set_timing=perms.get("setTiming"), + ) + if perms + else None, + zkapp_state=acc.get("zkappState"), + proved_state=acc.get("provedState"), + zkapp_uri=acc.get("zkappUri"), + ) + + +def _parse_epoch(e: dict[str, Any] | None) -> EpochData | None: + if not e: + return None + return EpochData( + seed=e.get("seed") or "", + ledger_hash=(e.get("ledger") or {}).get("hash") or "", + length=_opt_int(e.get("epochLength")), + ) + + +def _parse_block(block: dict[str, Any]) -> BlockInfo: + """Parse a block of the common block selection (BestChain, GenesisBlock, Block).""" + protocol = block["protocolState"] + consensus = protocol["consensusState"] + chain = protocol.get("blockchainState") or {} + txs = block.get("transactions") or {} + creator_pk = (block.get("creatorAccount") or {}).get("publicKey") or "unknown" + return BlockInfo( + state_hash=block["stateHash"], + height=_int(consensus["blockHeight"]), + global_slot_since_hard_fork=_int(consensus["slot"]), + global_slot_since_genesis=_int(consensus["slotSinceGenesis"]), + creator_pk=creator_pk, + command_transaction_count=block["commandTransactionCount"], + previous_state_hash=protocol.get("previousStateHash") or "", + epoch=_int(consensus.get("epoch")), + block_creator=consensus.get("blockCreator") or "", + coinbase_receiver=consensus.get("coinbaseReceiever"), + staking_epoch=_parse_epoch(consensus.get("stakingEpochData")), + next_epoch=_parse_epoch(consensus.get("nextEpochData")), + date=str(chain.get("date") or ""), + utc_date=str(chain.get("utcDate") or ""), + snarked_ledger_hash=chain.get("snarkedLedgerHash") or "", + staged_ledger_hash=chain.get("stagedLedgerHash") or "", + coinbase=_opt_currency(txs.get("coinbase")), + coinbase_receiver_account=(txs.get("coinbaseReceiverAccount") or {}).get("publicKey"), + fee_transfers=[ + FeeTransfer(recipient=f["recipient"], fee=_currency(f["fee"]), transfer_type=f["type"]) + for f in txs.get("feeTransfer") or [] + ], + user_commands=[ + BlockTransaction( + id=c["id"], + hash=c["hash"], + kind=c["kind"], + nonce=_int(c["nonce"]), + source=c["source"]["publicKey"], + receiver=c["receiver"]["publicKey"], + amount=_currency(c["amount"]), + fee=_currency(c["fee"]), + memo=c["memo"], + failure_reason=c.get("failureReason"), + ) + for c in txs.get("userCommands") or [] + ], + ) + + +def _parse_submitted(c: dict[str, Any]) -> SubmittedCommand: + return SubmittedCommand( + id=c["id"], + hash=c["hash"], + nonce=_int(c["nonce"]), + kind=c.get("kind") or "", + source=(c.get("source") or {}).get("publicKey", ""), + receiver=(c.get("receiver") or {}).get("publicKey", ""), + amount=_opt_currency(c.get("amount")), + fee=_opt_currency(c.get("fee")), + memo=c.get("memo") or "", + ) + + +def _parse_zkapp(z: dict[str, Any]) -> ZkappCommandResult: + command = z["zkappCommand"] + body = command["feePayer"]["body"] + failures = z.get("failureReason") + return ZkappCommandResult( + id=z["id"], + hash=z["hash"], + memo=command.get("memo") or "", + fee_payer=ZkappFeePayer( + public_key=body["publicKey"], + fee=_currency(body["fee"]), + nonce=_int(body["nonce"]), + valid_until=_opt_int(body.get("validUntil")), + ), + failure_reason=[ + ZkappFailure(index=_opt_int(f.get("index")), failures=list(f.get("failures") or [])) + for f in failures + ] + if failures is not None + else None, + ) diff --git a/src/mina_sdk/daemon/queries.py b/src/mina_sdk/daemon/queries.py index 5115740..38bc1ea 100644 --- a/src/mina_sdk/daemon/queries.py +++ b/src/mina_sdk/daemon/queries.py @@ -1,162 +1,504 @@ -"""GraphQL query and mutation strings for the Mina daemon.""" +"""GraphQL documents for the Mina daemon API. -SYNC_STATUS = """ -query { - syncStatus -} +These are the documents of ``spec/operations.graphql``, the common API of the +Mina SDKs (see ``spec/SPEC.md``). ``spec/`` is a copy of o1-labs/mina-sdk-spec +at the tag in ``spec/VERSION``; ``tests/test_spec.py`` checks that these +documents stay identical. Change the specification first. """ -DAEMON_STATUS = """ -query { - daemonStatus { - syncStatus - blockchainLength - highestBlockLengthReceived - uptimeSecs - stateHash - commitId - peers { - peerId - host - libp2pPort - } +SYNC_STATUS = """query SyncStatus { + syncStatus +}""" + +DAEMON_STATUS = """query DaemonStatus { + daemonStatus { + syncStatus + blockchainLength + highestBlockLengthReceived + highestUnvalidatedBlockLengthReceived + uptimeSecs + stateHash + commitId + numAccounts + ledgerMerkleRoot + chainId + catchupStatus + blockProductionKeys + coinbaseReceiver + peers { + peerId + host + libp2pPort } -} -""" + addrsAndPorts { + externalIp + bindIp + clientPort + libp2pPort + } + } +}""" -NETWORK_ID = """ -query { - networkID -} -""" +DAEMON_METRICS = """query DaemonMetrics { + daemonStatus { + metrics { + blockProductionDelay + transactionPoolDiffReceived + transactionPoolDiffBroadcasted + transactionsAddedToPool + transactionPoolSize + snarkPoolDiffReceived + snarkPoolDiffBroadcasted + pendingSnarkWork + snarkPoolSize + } + } +}""" -GET_ACCOUNT = """ -query ($publicKey: PublicKey!) { - account(publicKey: $publicKey) { - publicKey - nonce - delegate - tokenId - balance { - total - liquid - locked - } +NETWORK_ID = """query NetworkId { + networkID +}""" + +GET_ACCOUNT = """query Account($publicKey: PublicKey!, $token: TokenId) { + account(publicKey: $publicKey, token: $token) { + publicKey + nonce + delegate + tokenId + tokenSymbol + votingFor + receiptChainHash + balance { + total + liquid + locked + blockHeight } -} -""" + timing { + initialMinimumBalance + cliffTime + cliffAmount + vestingPeriod + vestingIncrement + } + permissions { + editState + send + receive + access + setDelegate + setPermissions + setVerificationKey { + auth + txnVersion + } + setZkappUri + editActionState + setTokenSymbol + incrementNonce + setVotingFor + setTiming + } + zkappState + provedState + zkappUri + } +}""" -GET_ACCOUNT_WITH_TOKEN = """ -query ($publicKey: PublicKey!, $token: TokenId!) { - account(publicKey: $publicKey, token: $token) { +BEST_CHAIN = """query BestChain($maxLength: Int) { + bestChain(maxLength: $maxLength) { + stateHash + commandTransactionCount + creatorAccount { + publicKey + } + protocolState { + previousStateHash + consensusState { + blockHeight + epoch + slot + slotSinceGenesis + blockCreator + coinbaseReceiever + stakingEpochData { + epochLength + seed + ledger { + hash + } + } + nextEpochData { + seed + ledger { + hash + } + } + } + blockchainState { + date + utcDate + snarkedLedgerHash + stagedLedgerHash + } + } + transactions { + coinbase + coinbaseReceiverAccount { publicKey + } + feeTransfer { + recipient + fee + type + } + userCommands { + id + hash + kind nonce - delegate - tokenId - balance { - total - liquid - locked + source { + publicKey } + receiver { + publicKey + } + amount + fee + memo + failureReason + } } -} -""" + } +}""" -BEST_CHAIN = """ -query ($maxLength: Int) { - bestChain(maxLength: $maxLength) { - stateHash - commandTransactionCount - creatorAccount { - publicKey +GENESIS_BLOCK = """query GenesisBlock { + genesisBlock { + stateHash + commandTransactionCount + creatorAccount { + publicKey + } + protocolState { + previousStateHash + consensusState { + blockHeight + epoch + slot + slotSinceGenesis + blockCreator + coinbaseReceiever + stakingEpochData { + epochLength + seed + ledger { + hash + } } - protocolState { - consensusState { - blockHeight - slotSinceGenesis - slot - } + nextEpochData { + seed + ledger { + hash + } } + } + blockchainState { + date + utcDate + snarkedLedgerHash + stagedLedgerHash + } } -} -""" - -GET_PEERS = """ -query { - getPeers { - peerId - host - libp2pPort - } -} -""" - -POOLED_USER_COMMANDS = """ -query ($publicKey: PublicKey!) { - pooledUserCommands(publicKey: $publicKey) { + transactions { + coinbase + coinbaseReceiverAccount { + publicKey + } + feeTransfer { + recipient + fee + type + } + userCommands { id hash kind nonce + source { + publicKey + } + receiver { + publicKey + } amount fee - from - to + memo + failureReason + } } -} -""" + } +}""" -POOLED_USER_COMMANDS_ALL = """ -query { - pooledUserCommands { +BLOCK = """query Block($stateHash: String, $height: Int) { + block(stateHash: $stateHash, height: $height) { + stateHash + commandTransactionCount + creatorAccount { + publicKey + } + protocolState { + previousStateHash + consensusState { + blockHeight + epoch + slot + slotSinceGenesis + blockCreator + coinbaseReceiever + stakingEpochData { + epochLength + seed + ledger { + hash + } + } + nextEpochData { + seed + ledger { + hash + } + } + } + blockchainState { + date + utcDate + snarkedLedgerHash + stagedLedgerHash + } + } + transactions { + coinbase + coinbaseReceiverAccount { + publicKey + } + feeTransfer { + recipient + fee + type + } + userCommands { id hash kind nonce + source { + publicKey + } + receiver { + publicKey + } amount fee - from - to + memo + failureReason + } } -} -""" + } +}""" -SEND_PAYMENT = """ -mutation ($input: SendPaymentInput!) { - sendPayment(input: $input) { - payment { - id - hash - nonce - } +GET_PEERS = """query Peers { + getPeers { + peerId + host + libp2pPort + } +}""" + +POOLED_USER_COMMANDS = """query PooledUserCommands($publicKey: PublicKey) { + pooledUserCommands(publicKey: $publicKey) { + id + hash + kind + nonce + amount + fee + from + to + source { + publicKey } -} -""" + receiver { + publicKey + } + memo + failureReason + } +}""" -SEND_DELEGATION = """ -mutation ($input: SendDelegationInput!) { - sendDelegation(input: $input) { - delegation { - id - hash - nonce +POOLED_ZKAPP_COMMANDS = """query PooledZkappCommands($publicKey: PublicKey) { + pooledZkappCommands(publicKey: $publicKey) { + id + hash + zkappCommand { + memo + feePayer { + body { + publicKey + fee + nonce + validUntil } + } } -} -""" + failureReason { + index + failures + } + } +}""" + +TRANSACTION_STATUS = """query TransactionStatus($payment: ID, $zkappTransaction: ID) { + transactionStatus(payment: $payment, zkappTransaction: $zkappTransaction) +}""" -SET_SNARK_WORKER = """ -mutation ($input: SetSnarkWorkerInput!) { - setSnarkWorker(input: $input) { - lastSnarkWorker +GENESIS_CONSTANTS = """query GenesisConstants { + genesisConstants { + genesisTimestamp + coinbase + accountCreationFee + } +}""" + +TRACKED_ACCOUNTS = """query TrackedAccounts { + trackedAccounts { + publicKey + balance { + total } -} -""" + } +}""" + +SNARK_POOL = """query SnarkPool { + snarkPool { + fee + prover + workIds + } +}""" -SET_SNARK_WORK_FEE = """ -mutation ($fee: UInt64!) { - setSnarkWorkFee(input: {fee: $fee}) { - lastFee +FORK_CONFIG = """query ForkConfig { + fork_config +}""" + +SEND_PAYMENT = """mutation SendPayment($input: SendPaymentInput!, $signature: SignatureInput) { + sendPayment(input: $input, signature: $signature) { + payment { + id + hash + kind + nonce + source { + publicKey + } + receiver { + publicKey + } + amount + fee + memo } -} -""" + } +}""" + +SEND_DELEGATION = """mutation SendDelegation($input: SendDelegationInput!, $signature: SignatureInput) { + sendDelegation(input: $input, signature: $signature) { + delegation { + id + hash + kind + nonce + source { + publicKey + } + receiver { + publicKey + } + amount + fee + memo + } + } +}""" + +SEND_ZKAPP = """mutation SendZkapp($input: SendZkappInput!) { + sendZkapp(input: $input) { + zkapp { + id + hash + zkappCommand { + memo + feePayer { + body { + publicKey + fee + nonce + validUntil + } + } + } + failureReason { + index + failures + } + } + } +}""" + +UNLOCK_ACCOUNT = """mutation UnlockAccount($input: UnlockInput!) { + unlockAccount(input: $input) { + publicKey + } +}""" + +SET_SNARK_WORKER = """mutation SetSnarkWorker($input: SetSnarkWorkerInput!) { + setSnarkWorker(input: $input) { + lastSnarkWorker + } +}""" + +SET_SNARK_WORK_FEE = """mutation SetSnarkWorkFee($fee: UInt64!) { + setSnarkWorkFee(input: {fee: $fee}) { + lastFee + } +}""" + +# Deprecated aliases: GET_ACCOUNT takes an optional $token, and +# POOLED_USER_COMMANDS an optional $publicKey. +GET_ACCOUNT_WITH_TOKEN = GET_ACCOUNT +POOLED_USER_COMMANDS_ALL = POOLED_USER_COMMANDS + +# Every document of the specification, for the conformance test. +ALL_DOCUMENTS = [ + SYNC_STATUS, + DAEMON_STATUS, + DAEMON_METRICS, + NETWORK_ID, + GET_ACCOUNT, + BEST_CHAIN, + GENESIS_BLOCK, + BLOCK, + GET_PEERS, + POOLED_USER_COMMANDS, + POOLED_ZKAPP_COMMANDS, + TRANSACTION_STATUS, + GENESIS_CONSTANTS, + TRACKED_ACCOUNTS, + SNARK_POOL, + FORK_CONFIG, + SEND_PAYMENT, + SEND_DELEGATION, + SEND_ZKAPP, + UNLOCK_ACCOUNT, + SET_SNARK_WORKER, + SET_SNARK_WORK_FEE, +] diff --git a/src/mina_sdk/schema/.gitkeep b/src/mina_sdk/schema/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/mina_sdk/schema/graphql_schema.json b/src/mina_sdk/schema/graphql_schema.json deleted file mode 100644 index 507a81b..0000000 --- a/src/mina_sdk/schema/graphql_schema.json +++ /dev/null @@ -1,16377 +0,0 @@ -{ - "data": { - "__schema": { - "queryType": { - "name": "query" - }, - "mutationType": { - "name": "mutation" - }, - "subscriptionType": { - "name": "subscription" - }, - "types": [ - { - "kind": "ENUM", - "name": "ChainReorganizationStatus", - "description": "Status for whenever the blockchain is reorganized", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "CHANGED", - "description": null, - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "subscription", - "description": null, - "fields": [ - { - "name": "newSyncUpdate", - "description": "Event that triggers when the network sync status changes", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "SyncStatus", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "newBlock", - "description": "Event that triggers when a new block is created that either contains a transaction with the specified public key, or was produced by it. If no public key is provided, then the event will trigger for every new block received", - "args": [ - { - "name": "publicKey", - "description": "Public key that is included in the block", - "type": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Block", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "chainReorganization", - "description": "Event that triggers when the best tip changes in a way that is not a trivial extension of the existing one", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "ChainReorganizationStatus", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "ProofBundleInput", - "description": "Proof bundle for a given spec in json format", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "RosettaTransaction", - "description": "A transaction encoded in the Rosetta format", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "SendRosettaTransactionPayload", - "description": null, - "fields": [ - { - "name": "userCommand", - "description": "Command that was sent", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INTERFACE", - "name": "UserCommand", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "ExtensionalBlock", - "description": "Block encoded in extensional block format", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "PrecomputedBlock", - "description": "Block encoded in precomputed block format", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Applied", - "description": null, - "fields": [ - { - "name": "applied", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "NetworkPeer", - "description": "Network identifiers for another protocol participant", - "fields": [ - { - "name": "libp2pPort", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "host", - "description": "IP address of the remote host", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "peerId", - "description": "base58-encoded peer ID", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "libp2pPort", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "host", - "description": "IP address of the remote host", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "peerId", - "description": "base58-encoded peer ID", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "SetConnectionGatingConfigInput", - "description": null, - "fields": [ - { - "name": "cleanAddedPeers", - "description": "If true, resets added peers to an empty list (including seeds)", - "args": [], - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "isolate", - "description": "If true, no connections will be allowed unless they are from a trusted peer", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "bannedPeers", - "description": "Peers we will never allow connections from (unless they are also trusted!)", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "NetworkPeer" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "trustedPeers", - "description": "Peers we will always allow connections from", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "NetworkPeer" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "cleanAddedPeers", - "description": "If true, resets added peers to an empty list (including seeds)", - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "isolate", - "description": "If true, no connections will be allowed unless they are from a trusted peer", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "bannedPeers", - "description": "Peers we will never allow connections from (unless they are also trusted!)", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "NetworkPeer" - } - } - } - }, - "defaultValue": null - }, - { - "name": "trustedPeers", - "description": "Peers we will always allow connections from", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "NetworkPeer" - } - } - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "SetSnarkWorkFee", - "description": null, - "fields": [ - { - "name": "fee", - "description": "Fee to get rewarded for producing snark work", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt64", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "fee", - "description": "Fee to get rewarded for producing snark work", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt64", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "SetSnarkWorkFeePayload", - "description": null, - "fields": [ - { - "name": "lastFee", - "description": "Returns the last fee set to do snark work", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Fee", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "SetSnarkWorkerInput", - "description": null, - "fields": [ - { - "name": "publicKey", - "description": "Public key you wish to start snark-working on; null to stop doing any snark work. Warning: If the key is from a zkApp account, the account's receive permission must be None.", - "args": [], - "type": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "publicKey", - "description": "Public key you wish to start snark-working on; null to stop doing any snark work. Warning: If the key is from a zkApp account, the account's receive permission must be None.", - "type": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "SetSnarkWorkerPayload", - "description": null, - "fields": [ - { - "name": "lastSnarkWorker", - "description": "Returns the last public key that was designated for snark work", - "args": [], - "type": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "SetCoinbaseReceiverInput", - "description": null, - "fields": [ - { - "name": "publicKey", - "description": "Public key of the account to receive coinbases. Block production keys will receive the coinbases if omitted. Warning: If the key is from a zkApp account, the account's receive permission must be None.", - "args": [], - "type": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "publicKey", - "description": "Public key of the account to receive coinbases. Block production keys will receive the coinbases if omitted. Warning: If the key is from a zkApp account, the account's receive permission must be None.", - "type": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "SetCoinbaseReceiverPayload", - "description": null, - "fields": [ - { - "name": "lastCoinbaseReceiver", - "description": "Returns the public key that was receiving coinbases previously, or none if it was the block producer", - "args": [], - "type": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "currentCoinbaseReceiver", - "description": "Returns the public key that will receive coinbase, or none if it will be the block producer", - "args": [], - "type": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "TarFile", - "description": null, - "fields": [ - { - "name": "tarfile", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ExportLogsPayload", - "description": null, - "fields": [ - { - "name": "exportLogs", - "description": "Tar archive containing logs", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "TarFile", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "SendTestZkappInput", - "description": "zkApp command for a test zkApp", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "FeePayerBodyInput", - "description": null, - "fields": [ - { - "name": "publicKey", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "fee", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Fee", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "validUntil", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "GlobalSlotSinceGenesis", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nonce", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "publicKey", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "fee", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Fee", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "validUntil", - "description": null, - "type": { - "kind": "SCALAR", - "name": "GlobalSlotSinceGenesis", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "nonce", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "ZkappFeePayerInput", - "description": null, - "fields": [ - { - "name": "body", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "FeePayerBodyInput", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "authorization", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Signature", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "body", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "FeePayerBodyInput", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "authorization", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Signature", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "VerificationKeyWithHashInput", - "description": null, - "fields": [ - { - "name": "data", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "VerificationKey", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "hash", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "data", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "VerificationKey", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "hash", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "VerificationKeyPermissionInput", - "description": null, - "fields": [ - { - "name": "auth", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "txnVersion", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "auth", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "txnVersion", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "PermissionsInput", - "description": null, - "fields": [ - { - "name": "editState", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "access", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "send", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "receive", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "setDelegate", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "setPermissions", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "setVerificationKey", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "VerificationKeyPermissionInput", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "setZkappUri", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "editActionState", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "setTokenSymbol", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "incrementNonce", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "setVotingFor", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "setTiming", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "editState", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "access", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "send", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "receive", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "setDelegate", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "setPermissions", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "setVerificationKey", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "VerificationKeyPermissionInput", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "setZkappUri", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "editActionState", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "setTokenSymbol", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "incrementNonce", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "setVotingFor", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "setTiming", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "TimingInput", - "description": null, - "fields": [ - { - "name": "initialMinimumBalance", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Balance", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "cliffTime", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "GlobalSlotSinceGenesis", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "cliffAmount", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "CurrencyAmount", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "vestingPeriod", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "GlobalSlotSpan", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "vestingIncrement", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "CurrencyAmount", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "initialMinimumBalance", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Balance", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "cliffTime", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "GlobalSlotSinceGenesis", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "cliffAmount", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "CurrencyAmount", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "vestingPeriod", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "GlobalSlotSpan", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "vestingIncrement", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "CurrencyAmount", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "AccountUpdateModificationInput", - "description": null, - "fields": [ - { - "name": "appState", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "delegate", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "verificationKey", - "description": null, - "args": [], - "type": { - "kind": "INPUT_OBJECT", - "name": "VerificationKeyWithHashInput", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "permissions", - "description": null, - "args": [], - "type": { - "kind": "INPUT_OBJECT", - "name": "PermissionsInput", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "zkappUri", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "tokenSymbol", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "timing", - "description": null, - "args": [], - "type": { - "kind": "INPUT_OBJECT", - "name": "TimingInput", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "votingFor", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "StateHash", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "appState", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - } - } - }, - "defaultValue": null - }, - { - "name": "delegate", - "description": null, - "type": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "verificationKey", - "description": null, - "type": { - "kind": "INPUT_OBJECT", - "name": "VerificationKeyWithHashInput", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "permissions", - "description": null, - "type": { - "kind": "INPUT_OBJECT", - "name": "PermissionsInput", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "zkappUri", - "description": null, - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "tokenSymbol", - "description": null, - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "timing", - "description": null, - "type": { - "kind": "INPUT_OBJECT", - "name": "TimingInput", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "votingFor", - "description": null, - "type": { - "kind": "SCALAR", - "name": "StateHash", - "ofType": null - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "BalanceChangeInput", - "description": null, - "fields": [ - { - "name": "magnitude", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "CurrencyAmount", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "sgn", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Sign", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "magnitude", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "CurrencyAmount", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "sgn", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Sign", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "CurrencyAmountIntervalInput", - "description": null, - "fields": [ - { - "name": "lower", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "CurrencyAmount", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "upper", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "CurrencyAmount", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "lower", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "CurrencyAmount", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "upper", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "CurrencyAmount", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "EpochLedgerPreconditionInput", - "description": null, - "fields": [ - { - "name": "hash", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "totalCurrency", - "description": null, - "args": [], - "type": { - "kind": "INPUT_OBJECT", - "name": "CurrencyAmountIntervalInput", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "hash", - "description": null, - "type": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "totalCurrency", - "description": null, - "type": { - "kind": "INPUT_OBJECT", - "name": "CurrencyAmountIntervalInput", - "ofType": null - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "LengthIntervalInput", - "description": null, - "fields": [ - { - "name": "lower", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "upper", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "lower", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "upper", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "EpochDataPreconditionInput", - "description": null, - "fields": [ - { - "name": "ledger", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "EpochLedgerPreconditionInput", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "seed", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "startCheckpoint", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "lockCheckpoint", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "epochLength", - "description": null, - "args": [], - "type": { - "kind": "INPUT_OBJECT", - "name": "LengthIntervalInput", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "ledger", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "EpochLedgerPreconditionInput", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "seed", - "description": null, - "type": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "startCheckpoint", - "description": null, - "type": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "lockCheckpoint", - "description": null, - "type": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "epochLength", - "description": null, - "type": { - "kind": "INPUT_OBJECT", - "name": "LengthIntervalInput", - "ofType": null - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "NetworkPreconditionInput", - "description": null, - "fields": [ - { - "name": "snarkedLedgerHash", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "blockchainLength", - "description": null, - "args": [], - "type": { - "kind": "INPUT_OBJECT", - "name": "LengthIntervalInput", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "minWindowDensity", - "description": null, - "args": [], - "type": { - "kind": "INPUT_OBJECT", - "name": "LengthIntervalInput", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "totalCurrency", - "description": null, - "args": [], - "type": { - "kind": "INPUT_OBJECT", - "name": "CurrencyAmountIntervalInput", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "globalSlotSinceGenesis", - "description": null, - "args": [], - "type": { - "kind": "INPUT_OBJECT", - "name": "GlobalSlotSinceGenesisIntervalInput", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "stakingEpochData", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "EpochDataPreconditionInput", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nextEpochData", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "EpochDataPreconditionInput", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "snarkedLedgerHash", - "description": null, - "type": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "blockchainLength", - "description": null, - "type": { - "kind": "INPUT_OBJECT", - "name": "LengthIntervalInput", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "minWindowDensity", - "description": null, - "type": { - "kind": "INPUT_OBJECT", - "name": "LengthIntervalInput", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "totalCurrency", - "description": null, - "type": { - "kind": "INPUT_OBJECT", - "name": "CurrencyAmountIntervalInput", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "globalSlotSinceGenesis", - "description": null, - "type": { - "kind": "INPUT_OBJECT", - "name": "GlobalSlotSinceGenesisIntervalInput", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "stakingEpochData", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "EpochDataPreconditionInput", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "nextEpochData", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "EpochDataPreconditionInput", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "BalanceIntervalInput", - "description": null, - "fields": [ - { - "name": "lower", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Balance", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "upper", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Balance", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "lower", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Balance", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "upper", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Balance", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "NonceIntervalInput", - "description": null, - "fields": [ - { - "name": "lower", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "upper", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "lower", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "upper", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "AccountPreconditionInput", - "description": null, - "fields": [ - { - "name": "balance", - "description": null, - "args": [], - "type": { - "kind": "INPUT_OBJECT", - "name": "BalanceIntervalInput", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nonce", - "description": null, - "args": [], - "type": { - "kind": "INPUT_OBJECT", - "name": "NonceIntervalInput", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "receiptChainHash", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "delegate", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "state", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "actionState", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "provedState", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "isNew", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "balance", - "description": null, - "type": { - "kind": "INPUT_OBJECT", - "name": "BalanceIntervalInput", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "nonce", - "description": null, - "type": { - "kind": "INPUT_OBJECT", - "name": "NonceIntervalInput", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "receiptChainHash", - "description": null, - "type": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "delegate", - "description": null, - "type": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "state", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - } - } - }, - "defaultValue": null - }, - { - "name": "actionState", - "description": null, - "type": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "provedState", - "description": null, - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "isNew", - "description": null, - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "GlobalSlotSinceGenesisIntervalInput", - "description": null, - "fields": [ - { - "name": "lower", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "GlobalSlotSinceGenesis", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "upper", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "GlobalSlotSinceGenesis", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "lower", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "GlobalSlotSinceGenesis", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "upper", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "GlobalSlotSinceGenesis", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "PreconditionsInput", - "description": null, - "fields": [ - { - "name": "network", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "NetworkPreconditionInput", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "account", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "AccountPreconditionInput", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "validWhile", - "description": null, - "args": [], - "type": { - "kind": "INPUT_OBJECT", - "name": "GlobalSlotSinceGenesisIntervalInput", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "network", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "NetworkPreconditionInput", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "account", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "AccountPreconditionInput", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "validWhile", - "description": null, - "type": { - "kind": "INPUT_OBJECT", - "name": "GlobalSlotSinceGenesisIntervalInput", - "ofType": null - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "MayUseTokenInput", - "description": null, - "fields": [ - { - "name": "parentsOwnToken", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "inheritFromParent", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "parentsOwnToken", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "inheritFromParent", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "AuthorizationKindStructuredInput", - "description": null, - "fields": [ - { - "name": "isSigned", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "isProved", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "verificationKeyHash", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "isSigned", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "isProved", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "verificationKeyHash", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "AccountUpdateBodyInput", - "description": null, - "fields": [ - { - "name": "publicKey", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "tokenId", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "TokenId", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "update", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "AccountUpdateModificationInput", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "balanceChange", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "BalanceChangeInput", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "incrementNonce", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "events", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "actions", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "callData", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "callDepth", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "preconditions", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "PreconditionsInput", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "useFullCommitment", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "implicitAccountCreationFee", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "mayUseToken", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "MayUseTokenInput", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "authorizationKind", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "AuthorizationKindStructuredInput", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "publicKey", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "tokenId", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "TokenId", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "update", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "AccountUpdateModificationInput", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "balanceChange", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "BalanceChangeInput", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "incrementNonce", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "events", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null - } - } - } - }, - "defaultValue": null - }, - { - "name": "actions", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null - } - } - } - }, - "defaultValue": null - }, - { - "name": "callData", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "callDepth", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "preconditions", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "PreconditionsInput", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "useFullCommitment", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "implicitAccountCreationFee", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "mayUseToken", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "MayUseTokenInput", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "authorizationKind", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "AuthorizationKindStructuredInput", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "ControlInput", - "description": null, - "fields": [ - { - "name": "proof", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "ZkappProof", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "signature", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "Signature", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "proof", - "description": null, - "type": { - "kind": "SCALAR", - "name": "ZkappProof", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "signature", - "description": null, - "type": { - "kind": "SCALAR", - "name": "Signature", - "ofType": null - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "ZkappAccountUpdateInput", - "description": "An account update in a zkApp transaction", - "fields": [ - { - "name": "body", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "AccountUpdateBodyInput", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "authorization", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "ControlInput", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "body", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "AccountUpdateBodyInput", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "authorization", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "ControlInput", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "ZkappCommandInput", - "description": null, - "fields": [ - { - "name": "feePayer", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "ZkappFeePayerInput", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "accountUpdates", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "ZkappAccountUpdateInput" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "memo", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Memo", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "feePayer", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "ZkappFeePayerInput", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "accountUpdates", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "ZkappAccountUpdateInput" - } - } - } - }, - "defaultValue": null - }, - { - "name": "memo", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Memo", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "SendZkappInput", - "description": null, - "fields": [ - { - "name": "zkappCommand", - "description": "zkApp command structure representing the transaction", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "ZkappCommandInput", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "zkappCommand", - "description": "zkApp command structure representing the transaction", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "ZkappCommandInput", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "SendZkappPayload", - "description": null, - "fields": [ - { - "name": "zkapp", - "description": "zkApp transaction that was sent", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "ZkappCommandResult", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "SendDelegationInput", - "description": null, - "fields": [ - { - "name": "nonce", - "description": "Should only be set when cancelling transactions, otherwise a nonce is determined automatically", - "args": [], - "type": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "memo", - "description": "Short arbitrary message provided by the sender", - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "validUntil", - "description": "The global slot since genesis after which this transaction cannot be applied", - "args": [], - "type": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "fee", - "description": "Fee amount in order to send a stake delegation", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt64", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "to", - "description": "Public key of the account being delegated to", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "from", - "description": "Public key of sender of a stake delegation", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "nonce", - "description": "Should only be set when cancelling transactions, otherwise a nonce is determined automatically", - "type": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "memo", - "description": "Short arbitrary message provided by the sender", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "validUntil", - "description": "The global slot since genesis after which this transaction cannot be applied", - "type": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "fee", - "description": "Fee amount in order to send a stake delegation", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt64", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "to", - "description": "Public key of the account being delegated to", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "from", - "description": "Public key of sender of a stake delegation", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "SendDelegationPayload", - "description": null, - "fields": [ - { - "name": "delegation", - "description": "Delegation change that was sent", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INTERFACE", - "name": "UserCommand", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "PrivateKey", - "description": "Base58Check-encoded private key", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "SendPaymentPayload", - "description": null, - "fields": [ - { - "name": "payment", - "description": "Payment that was sent", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INTERFACE", - "name": "UserCommand", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ImportAccountPayload", - "description": null, - "fields": [ - { - "name": "publicKey", - "description": "The public key of the imported account", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "alreadyImported", - "description": "True if the account had already been imported", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "success", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ReloadAccountsPayload", - "description": null, - "fields": [ - { - "name": "success", - "description": "True when the reload was successful", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "DeleteAccountInput", - "description": null, - "fields": [ - { - "name": "publicKey", - "description": "Public key of account to be deleted", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "publicKey", - "description": "Public key of account to be deleted", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "DeleteAccountPayload", - "description": null, - "fields": [ - { - "name": "publicKey", - "description": "Public key of the deleted account", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "LockInput", - "description": null, - "fields": [ - { - "name": "publicKey", - "description": "Public key specifying which account to lock", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "publicKey", - "description": "Public key specifying which account to lock", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "LockPayload", - "description": null, - "fields": [ - { - "name": "publicKey", - "description": "Public key of the locked account", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "account", - "description": "Details of locked account", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Account", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "UnlockInput", - "description": null, - "fields": [ - { - "name": "publicKey", - "description": "Public key specifying which account to unlock", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "password", - "description": "Password for the account to be unlocked", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "publicKey", - "description": "Public key specifying which account to unlock", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "password", - "description": "Password for the account to be unlocked", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "UnlockPayload", - "description": null, - "fields": [ - { - "name": "publicKey", - "description": "Public key of the unlocked account", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": true, - "deprecationReason": "use account field instead" - }, - { - "name": "account", - "description": "Details of unlocked account", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Account", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "CreateHDAccountInput", - "description": null, - "fields": [ - { - "name": "index", - "description": "Index of the account in hardware wallet", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "index", - "description": "Index of the account in hardware wallet", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "AddAccountInput", - "description": null, - "fields": [ - { - "name": "password", - "description": "Password used to encrypt the new account", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "password", - "description": "Password used to encrypt the new account", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "AddAccountPayload", - "description": null, - "fields": [ - { - "name": "publicKey", - "description": "Public key of the created account", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": true, - "deprecationReason": "use account field instead" - }, - { - "name": "account", - "description": "Details of created account", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Account", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "mutation", - "description": null, - "fields": [ - { - "name": "addWallet", - "description": "Add a wallet - this will create a new keypair and store it in the daemon", - "args": [ - { - "name": "input", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "AddAccountInput", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "AddAccountPayload", - "ofType": null - } - }, - "isDeprecated": true, - "deprecationReason": "use createAccount instead" - }, - { - "name": "startFilteredLog", - "description": "TESTING ONLY: Start filtering and recording all structured events in memory", - "args": [ - { - "name": "filter", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String" - } - } - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "createAccount", - "description": "Create a new account - this will create a new keypair and store it in the daemon", - "args": [ - { - "name": "input", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "AddAccountInput", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "AddAccountPayload", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "createHDAccount", - "description": "Create an account with hardware wallet - this will let the hardware wallet generate a keypair corresponds to the HD-index you give and store this HD-index and the generated public key in the daemon. Calling this command with the same HD-index and the same hardware wallet will always generate the same keypair.", - "args": [ - { - "name": "input", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "CreateHDAccountInput", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "AddAccountPayload", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "unlockAccount", - "description": "Allow transactions to be sent from the unlocked account", - "args": [ - { - "name": "input", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "UnlockInput", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "UnlockPayload", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "unlockWallet", - "description": "Allow transactions to be sent from the unlocked account", - "args": [ - { - "name": "input", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "UnlockInput", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "UnlockPayload", - "ofType": null - } - }, - "isDeprecated": true, - "deprecationReason": "use unlockAccount instead" - }, - { - "name": "lockAccount", - "description": "Lock an unlocked account to prevent transaction being sent from it", - "args": [ - { - "name": "input", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "LockInput", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "LockPayload", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "lockWallet", - "description": "Lock an unlocked account to prevent transaction being sent from it", - "args": [ - { - "name": "input", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "LockInput", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "LockPayload", - "ofType": null - } - }, - "isDeprecated": true, - "deprecationReason": "use lockAccount instead" - }, - { - "name": "deleteAccount", - "description": "Delete the private key for an account that you track", - "args": [ - { - "name": "input", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "DeleteAccountInput", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "DeleteAccountPayload", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "deleteWallet", - "description": "Delete the private key for an account that you track", - "args": [ - { - "name": "input", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "DeleteAccountInput", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "DeleteAccountPayload", - "ofType": null - } - }, - "isDeprecated": true, - "deprecationReason": "use deleteAccount instead" - }, - { - "name": "reloadAccounts", - "description": "Reload tracked account information from disk", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "ReloadAccountsPayload", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "importAccount", - "description": "Reload tracked account information from disk", - "args": [ - { - "name": "password", - "description": "Password for the account to import", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "path", - "description": "Path to the wallet file, relative to the daemon's current working directory.", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "ImportAccountPayload", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "reloadWallets", - "description": "Reload tracked account information from disk", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "ReloadAccountsPayload", - "ofType": null - } - }, - "isDeprecated": true, - "deprecationReason": "use reloadAccounts instead" - }, - { - "name": "sendPayment", - "description": "Send a payment", - "args": [ - { - "name": "signature", - "description": "If a signature is provided, this transaction is considered signed and will be broadcasted to the network without requiring a private key", - "type": { - "kind": "INPUT_OBJECT", - "name": "SignatureInput", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "input", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "SendPaymentInput", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "SendPaymentPayload", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "sendTestPayments", - "description": "Send a series of test payments", - "args": [ - { - "name": "repeat_delay_ms", - "description": "Delay with which a transaction shall be repeated", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "repeat_count", - "description": "How many times shall transaction be repeated", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "fee", - "description": "The fee of each payment", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt64", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "amount", - "description": "The amount of each payment", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt64", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "receiver", - "description": "The receiver of the payments", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "senders", - "description": "The private keys from which to sign the payments", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PrivateKey" - } - } - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "sendDelegation", - "description": "Change your delegate by sending a transaction", - "args": [ - { - "name": "signature", - "description": "If a signature is provided, this transaction is considered signed and will be broadcasted to the network without requiring a private key", - "type": { - "kind": "INPUT_OBJECT", - "name": "SignatureInput", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "input", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "SendDelegationInput", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "SendDelegationPayload", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "sendZkapp", - "description": "Send a zkApp transaction", - "args": [ - { - "name": "input", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "SendZkappInput", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "SendZkappPayload", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "mockZkapp", - "description": "Mock a zkApp transaction, no effect on blockchain", - "args": [ - { - "name": "input", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "SendZkappInput", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "SendZkappPayload", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "internalSendZkapp", - "description": "Send zkApp transactions (for internal testing purposes)", - "args": [ - { - "name": "zkappCommands", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "SendTestZkappInput" - } - } - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "SendZkappPayload" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "exportLogs", - "description": "Export daemon logs to tar archive", - "args": [ - { - "name": "basename", - "description": null, - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "ExportLogsPayload", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "setCoinbaseReceiver", - "description": "Set the key to receive coinbases", - "args": [ - { - "name": "input", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "SetCoinbaseReceiverInput", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "SetCoinbaseReceiverPayload", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "setSnarkWorker", - "description": "Set key you wish to snark work with or disable snark working", - "args": [ - { - "name": "input", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "SetSnarkWorkerInput", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "SetSnarkWorkerPayload", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "setSnarkWorkFee", - "description": "Set fee that you will like to receive for doing snark work", - "args": [ - { - "name": "input", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "SetSnarkWorkFee", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "SetSnarkWorkFeePayload", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "setConnectionGatingConfig", - "description": "Set the connection gating config, returning the current config after the application (which may have failed)", - "args": [ - { - "name": "input", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "SetConnectionGatingConfigInput", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "SetConnectionGatingConfigPayload", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "addPeers", - "description": "Connect to the given peers", - "args": [ - { - "name": "seed", - "description": null, - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "peers", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "NetworkPeer" - } - } - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Peer" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "archivePrecomputedBlock", - "description": null, - "args": [ - { - "name": "block", - "description": "Block encoded in precomputed block format", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PrecomputedBlock", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Applied", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "archiveExtensionalBlock", - "description": null, - "args": [ - { - "name": "block", - "description": "Block encoded in extensional block format", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ExtensionalBlock", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Applied", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "sendRosettaTransaction", - "description": "Send a transaction in Rosetta format", - "args": [ - { - "name": "input", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "RosettaTransaction", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "SendRosettaTransactionPayload", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "sendProofBundle", - "description": "Transaction SNARKs for a given spec", - "args": [ - { - "name": "input", - "description": "Proof bundle for a given spec in json format including fees and prover public key", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ProofBundleInput", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ActionState", - "description": "", - "fields": [ - { - "name": "action", - "description": "", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "transactionSequenceNo", - "description": "", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "actionSequenceNo", - "description": "", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "blockNumber", - "description": "", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "Encoding", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "JSON", - "description": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "BASE64", - "description": null, - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "VrfEvaluationInput", - "description": "The witness to a vrf evaluation", - "fields": [ - { - "name": "vrfThreshold", - "description": null, - "args": [], - "type": { - "kind": "INPUT_OBJECT", - "name": "VrfThresholdInput", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "scaledMessageHash", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "s", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "c", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "publicKey", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "message", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "VrfMessageInput", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "vrfThreshold", - "description": null, - "type": { - "kind": "INPUT_OBJECT", - "name": "VrfThresholdInput", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "scaledMessageHash", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String" - } - } - } - }, - "defaultValue": null - }, - { - "name": "s", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "c", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "publicKey", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "message", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "VrfMessageInput", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "VrfMessageInput", - "description": "The inputs to a vrf evaluation", - "fields": [ - { - "name": "delegatorIndex", - "description": "Position in the ledger of the delegator's account", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "epochSeed", - "description": "Formatted with base58check", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "globalSlot", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "delegatorIndex", - "description": "Position in the ledger of the delegator's account", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "epochSeed", - "description": "Formatted with base58check", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "globalSlot", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "VrfThresholdInput", - "description": "The amount of stake delegated, used to determine the threshold for a vrf evaluation producing a block", - "fields": [ - { - "name": "totalStake", - "description": "The total amount of stake across all accounts in the epoch's staking ledger.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt64", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "delegatedStake", - "description": "The amount of stake delegated to the vrf evaluator by the delegating account. This should match the amount in the epoch's staking ledger, which may be different to the amount in the current ledger.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt64", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "totalStake", - "description": "The total amount of stake across all accounts in the epoch's staking ledger.", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt64", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "delegatedStake", - "description": "The amount of stake delegated to the vrf evaluator by the delegating account. This should match the amount in the epoch's staking ledger, which may be different to the amount in the current ledger.", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt64", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "VrfOutputTruncated", - "description": "truncated vrf output", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "VrfThreshold", - "description": "The amount of stake delegated, used to determine the threshold for a vrf evaluation winning a slot", - "fields": [ - { - "name": "delegatedStake", - "description": "The amount of stake delegated to the vrf evaluator by the delegating account. This should match the amount in the epoch's staking ledger, which may be different to the amount in the current ledger.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Balance", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "totalStake", - "description": "The total amount of stake across all accounts in the epoch's staking ledger.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Amount", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "VrfScalar", - "description": "consensus vrf scalar", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "VrfMessage", - "description": "The inputs to a vrf evaluation", - "fields": [ - { - "name": "globalSlot", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "GlobalSlotSinceHardFork", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "epochSeed", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "EpochSeed", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "delegatorIndex", - "description": "Position in the ledger of the delegator's account", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "VrfEvaluation", - "description": "A witness to a vrf evaluation, which may be externally verified", - "fields": [ - { - "name": "message", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "VrfMessage", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "publicKey", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "c", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "VrfScalar", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "s", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "VrfScalar", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "scaledMessageHash", - "description": "A group element represented as 2 field elements", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "vrfThreshold", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "VrfThreshold", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "vrfOutput", - "description": "The vrf output derived from the evaluation witness. If null, the vrf witness was invalid.", - "args": [], - "type": { - "kind": "SCALAR", - "name": "VrfOutputTruncated", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "vrfOutputFractional", - "description": "The vrf output derived from the evaluation witness, as a fraction. This represents a won slot if vrfOutputFractional <= (1 - (1 / 4)^(delegated_balance / total_stake)). If null, the vrf witness was invalid.", - "args": [], - "type": { - "kind": "SCALAR", - "name": "Float", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "thresholdMet", - "description": "Whether the threshold to produce a block was met, if specified", - "args": [ - { - "name": "input", - "description": "Override for delegation threshold", - "type": { - "kind": "INPUT_OBJECT", - "name": "VrfThresholdInput", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "SignatureInput", - "description": "A cryptographic signature -- you must provide either field+scalar or rawSignature", - "fields": [ - { - "name": "rawSignature", - "description": "Raw encoded signature", - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "scalar", - "description": "Scalar component of signature", - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "field", - "description": "Field component of signature", - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "rawSignature", - "description": "Raw encoded signature", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "scalar", - "description": "Scalar component of signature", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "field", - "description": "Field component of signature", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "UInt64", - "description": "String or Integer representation of a uint64 number. If the input is a string, it must represent the number in base 10", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "SendPaymentInput", - "description": null, - "fields": [ - { - "name": "nonce", - "description": "Should only be set when cancelling transactions, otherwise a nonce is determined automatically", - "args": [], - "type": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "memo", - "description": "Short arbitrary message provided by the sender", - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "validUntil", - "description": "The global slot since genesis after which this transaction cannot be applied", - "args": [], - "type": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "fee", - "description": "Fee amount in order to send payment", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt64", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "amount", - "description": "Amount of MINA to send to receiver", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt64", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "to", - "description": "Public key of recipient of payment", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "from", - "description": "Public key of sender of payment", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "nonce", - "description": "Should only be set when cancelling transactions, otherwise a nonce is determined automatically", - "type": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "memo", - "description": "Short arbitrary message provided by the sender", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "validUntil", - "description": "The global slot since genesis after which this transaction cannot be applied", - "type": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "fee", - "description": "Fee amount in order to send payment", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt64", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "amount", - "description": "Amount of MINA to send to receiver", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt64", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "to", - "description": "Public key of recipient of payment", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "from", - "description": "Public key of sender of payment", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "GenesisConstants", - "description": null, - "fields": [ - { - "name": "accountCreationFee", - "description": "The fee charged to create a new account", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Fee", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "coinbase", - "description": "The amount received as a coinbase reward for producing a block", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Amount", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "genesisTimestamp", - "description": "The genesis timestamp in ISO 8601 format", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "EncodedAccount", - "description": null, - "fields": [ - { - "name": "account", - "description": "Base64 encoded account as binable wire type", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "merklePath", - "description": "Membership proof in the snarked ledger", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "MerklePathElement" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INPUT_OBJECT", - "name": "AccountInput", - "description": "An account with a public key and a token id", - "fields": [ - { - "name": "token", - "description": "Token id of the account", - "args": [], - "type": { - "kind": "SCALAR", - "name": "TokenId", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "publicKey", - "description": "Public key of the account", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": [ - { - "name": "token", - "description": "Token id of the account", - "type": { - "kind": "SCALAR", - "name": "TokenId", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "publicKey", - "description": "Public key of the account", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "defaultValue": null - } - ], - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "MembershipInfo", - "description": null, - "fields": [ - { - "name": "accountBalance", - "description": "Account balance for a pk and token pair", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Balance", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "timingInfo", - "description": "Account timing according to chain state", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "AccountTiming", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nonce", - "description": "current nonce related to the account", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "merklePath", - "description": "Membership proof in the snarked ledger", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "MerklePathElement" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "WorkBundleSpec", - "description": "Witnesses and statements for snark work bundles. Includes optional fees and prover public keys for ones that have proofs in the snark pool", - "fields": [ - { - "name": "spec", - "description": "Snark work specification in json format", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "snarkFee", - "description": "Fee if proof for the spec exists in snark pool", - "args": [], - "type": { - "kind": "SCALAR", - "name": "Fee", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "snarkProverKey", - "description": "Prover public key if proof for the spec exists in snark pool", - "args": [], - "type": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "workIds", - "description": "Unique identifier for a snark work", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "PendingSnarkWorkSpec", - "description": "Snark work witnesses and statements that are yet to be proven or included in blocks", - "fields": [ - { - "name": "workBundleSpec", - "description": "Work bundle spec with one or two snark work", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "WorkBundleSpec", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "WorkDescription", - "description": "Transition from a source ledger to a target ledger with some fee excess and increase in supply ", - "fields": [ - { - "name": "sourceFirstPassLedgerHash", - "description": "Base58Check-encoded hash of the source first-pass ledger", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "LedgerHash", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "targetFirstPassLedgerHash", - "description": "Base58Check-encoded hash of the target first-pass ledger", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "LedgerHash", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "sourceSecondPassLedgerHash", - "description": "Base58Check-encoded hash of the source second-pass ledger", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "LedgerHash", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "targetSecondPassLedgerHash", - "description": "Base58Check-encoded hash of the target second-pass ledger", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "LedgerHash", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "feeExcess", - "description": "Total transaction fee that is not accounted for in the transition from source ledger to target ledger", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "FeeExcess", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "supplyIncrease", - "description": "Increase in total supply", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Amount", - "ofType": null - } - }, - "isDeprecated": true, - "deprecationReason": "Use supplyChange" - }, - { - "name": "supplyChange", - "description": "Increase/Decrease in total supply", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "SignedAmount", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "workId", - "description": "Unique identifier for a snark work", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "PendingSnarkWork", - "description": "Snark work bundles that are not available in the pool yet", - "fields": [ - { - "name": "workBundle", - "description": "Work bundle with one or two snark work", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "WorkDescription" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "Float", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "TrustStatusPayload", - "description": null, - "fields": [ - { - "name": "ipAddr", - "description": "IP address", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "InetAddr", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "peerId", - "description": "libp2p Peer ID", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "trust", - "description": "Trust score", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Float", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "bannedStatus", - "description": "Banned status", - "args": [], - "type": { - "kind": "SCALAR", - "name": "Time", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "TransactionStatus", - "description": "Status of a transaction", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "INCLUDED", - "description": "A transaction that is on the longest chain", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "PENDING", - "description": "A transaction either in the transition frontier or in transaction pool but is not on the longest chain", - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "UNKNOWN", - "description": "The transaction has either been snarked, reached finality through consensus or has been dropped", - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "ID", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "CompletedWork", - "description": "Completed snark works", - "fields": [ - { - "name": "prover", - "description": "Public key of the prover", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "fee", - "description": "Amount the prover is paid for the snark work", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Fee", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "workIds", - "description": "Unique identifier for the snark work purchased", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "FeeTransferType", - "description": "fee transfer type", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "FeeTransfer", - "description": null, - "fields": [ - { - "name": "recipient", - "description": "Public key of fee transfer recipient", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "fee", - "description": "Amount that the recipient is paid in this fee transfer", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Fee", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "type", - "description": "Fee_transfer|Fee_transfer_via_coinbase Snark worker fees deducted from the coinbase amount are of type 'Fee_transfer_via_coinbase', rest are deducted from transaction fees", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "FeeTransferType", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "Index", - "description": "ocaml integer as a string", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ZkappCommandFailureReason", - "description": null, - "fields": [ - { - "name": "index", - "description": "List index of the account update that failed", - "args": [], - "type": { - "kind": "SCALAR", - "name": "Index", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "failures", - "description": "Failure reason for the account update or any nested zkapp command", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "TransactionStatusFailure" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "Memo", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "ZkappProof", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Control", - "description": null, - "fields": [ - { - "name": "proof", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "ZkappProof", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "signature", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "Signature", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "AuthorizationKindStructured", - "description": null, - "fields": [ - { - "name": "isSigned", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "isProved", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "verificationKeyHash", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "MayUseToken", - "description": null, - "fields": [ - { - "name": "parentsOwnToken", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "inheritFromParent", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "NonceInterval", - "description": null, - "fields": [ - { - "name": "lower", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "upper", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "BalanceInterval", - "description": null, - "fields": [ - { - "name": "lower", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Balance", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "upper", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Balance", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "AccountPrecondition", - "description": null, - "fields": [ - { - "name": "balance", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "BalanceInterval", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nonce", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "NonceInterval", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "receiptChainHash", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "delegate", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "state", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "actionState", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "provedState", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "isNew", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "EpochLedgerPrecondition", - "description": null, - "fields": [ - { - "name": "hash", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "totalCurrency", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "CurrencyAmountInterval", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "EpochDataPrecondition", - "description": null, - "fields": [ - { - "name": "ledger", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "EpochLedgerPrecondition", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "seed", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "startCheckpoint", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "lockCheckpoint", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "epochLength", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "LengthInterval", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "GlobalSlotSinceGenesisInterval", - "description": null, - "fields": [ - { - "name": "lower", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "GlobalSlotSinceGenesis", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "upper", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "GlobalSlotSinceGenesis", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "CurrencyAmountInterval", - "description": null, - "fields": [ - { - "name": "lower", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "CurrencyAmount", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "upper", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "CurrencyAmount", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "LengthInterval", - "description": null, - "fields": [ - { - "name": "lower", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "upper", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "NetworkPrecondition", - "description": null, - "fields": [ - { - "name": "snarkedLedgerHash", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "blockchainLength", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "LengthInterval", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "minWindowDensity", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "LengthInterval", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "totalCurrency", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "CurrencyAmountInterval", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "globalSlotSinceGenesis", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "GlobalSlotSinceGenesisInterval", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "stakingEpochData", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "EpochDataPrecondition", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nextEpochData", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "EpochDataPrecondition", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Preconditions", - "description": null, - "fields": [ - { - "name": "network", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "NetworkPrecondition", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "account", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "AccountPrecondition", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "validWhile", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "GlobalSlotSinceGenesisInterval", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "Sign", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "BalanceChange", - "description": null, - "fields": [ - { - "name": "magnitude", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "CurrencyAmount", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "sgn", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Sign", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "CurrencyAmount", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Timing", - "description": null, - "fields": [ - { - "name": "initialMinimumBalance", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Balance", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "cliffTime", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "GlobalSlotSinceGenesis", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "cliffAmount", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "CurrencyAmount", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "vestingPeriod", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "GlobalSlotSpan", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "vestingIncrement", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "CurrencyAmount", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "AuthRequired", - "description": "Kind of authorization required", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Permissions", - "description": null, - "fields": [ - { - "name": "editState", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "access", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "send", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "receive", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "setDelegate", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "setPermissions", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "setVerificationKey", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "VerificationKeyPermission", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "setZkappUri", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "editActionState", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "setTokenSymbol", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "incrementNonce", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "setVotingFor", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "setTiming", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "AuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "VerificationKeyWithHash", - "description": null, - "fields": [ - { - "name": "data", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "VerificationKey", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "hash", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "Field", - "description": "String representing an Fp Field element", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "AccountUpdateModification", - "description": null, - "fields": [ - { - "name": "appState", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "delegate", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "verificationKey", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "VerificationKeyWithHash", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "permissions", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "Permissions", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "zkappUri", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "tokenSymbol", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "timing", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "Timing", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "votingFor", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "StateHash", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "AccountUpdateBody", - "description": null, - "fields": [ - { - "name": "publicKey", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "tokenId", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "TokenId", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "update", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "AccountUpdateModification", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "balanceChange", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "BalanceChange", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "incrementNonce", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "events", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "actions", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "callData", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Field", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "callDepth", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "preconditions", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Preconditions", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "useFullCommitment", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "implicitAccountCreationFee", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "mayUseToken", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "MayUseToken", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "authorizationKind", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "AuthorizationKindStructured", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ZkappAccountUpdate", - "description": "An account update in a zkApp transaction", - "fields": [ - { - "name": "body", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "AccountUpdateBody", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "authorization", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Control", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "Signature", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "GlobalSlotSinceGenesis", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "FeePayerBody", - "description": null, - "fields": [ - { - "name": "publicKey", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "fee", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Fee", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "validUntil", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "GlobalSlotSinceGenesis", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nonce", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ZkappFeePayer", - "description": null, - "fields": [ - { - "name": "body", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "FeePayerBody", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "authorization", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Signature", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ZkappCommand", - "description": null, - "fields": [ - { - "name": "feePayer", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "ZkappFeePayer", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "accountUpdates", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "ZkappAccountUpdate" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "memo", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Memo", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ZkappCommandResult", - "description": null, - "fields": [ - { - "name": "id", - "description": "A Base64 string representing the zkApp command", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "TransactionId", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "hash", - "description": "A cryptographic hash of the zkApp command", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "TransactionHash", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "zkappCommand", - "description": "zkApp command representing the transaction", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "ZkappCommand", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "failureReason", - "description": "The reason for the zkApp transaction failure; null means success or the status is unknown", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "ZkappCommandFailureReason", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "UserCommandPayment", - "description": null, - "fields": [ - { - "name": "id", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "TransactionId", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "hash", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "TransactionHash", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "kind", - "description": "String describing the kind of user command", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UserCommandKind", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nonce", - "description": "Sequence number of command for the fee-payer's account", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "source", - "description": "Account that the command is sent from", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Account", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "receiver", - "description": "Account that the command applies to", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Account", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "feePayer", - "description": "Account that pays the fees for the command", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Account", - "ofType": null - } - }, - "isDeprecated": true, - "deprecationReason": "use source field instead" - }, - { - "name": "validUntil", - "description": "The global slot number after which this transaction cannot be applied", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Globalslot", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "token", - "description": "Token used for the transaction", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "TokenId", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "amount", - "description": "Amount that the source is sending to receiver; 0 for commands without an associated amount", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Amount", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "feeToken", - "description": "Token used to pay the fee", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "TokenId", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "fee", - "description": "Fee that the fee-payer is willing to pay for making the transaction", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Fee", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "memo", - "description": "A short message from the sender, encoded with Base58Check, version byte=0x14; byte 2 of the decoding is the message length", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "isDelegation", - "description": "If true, this command represents a delegation of stake", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": true, - "deprecationReason": "use kind field instead" - }, - { - "name": "from", - "description": "Public key of the sender", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": true, - "deprecationReason": "use feePayer field instead" - }, - { - "name": "fromAccount", - "description": "Account of the sender", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Account", - "ofType": null - } - }, - "isDeprecated": true, - "deprecationReason": "use feePayer field instead" - }, - { - "name": "to", - "description": "Public key of the receiver", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": true, - "deprecationReason": "use receiver field instead" - }, - { - "name": "toAccount", - "description": "Account of the receiver", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Account", - "ofType": null - } - }, - "isDeprecated": true, - "deprecationReason": "use receiver field instead" - }, - { - "name": "failureReason", - "description": "null is no failure or status unknown, reason for failure otherwise.", - "args": [], - "type": { - "kind": "SCALAR", - "name": "TransactionStatusFailure", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [ - { - "kind": "INTERFACE", - "name": "UserCommand", - "ofType": null - } - ], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "TransactionStatusFailure", - "description": "transaction status failure", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "UserCommandKind", - "description": "The kind of user command", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "TransactionHash", - "description": "Base58Check-encoded transaction hash", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "TransactionId", - "description": "Base64-encoded transaction", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "UserCommandDelegation", - "description": null, - "fields": [ - { - "name": "delegator", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Account", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "delegatee", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Account", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "id", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "TransactionId", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "hash", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "TransactionHash", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "kind", - "description": "String describing the kind of user command", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UserCommandKind", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nonce", - "description": "Sequence number of command for the fee-payer's account", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "source", - "description": "Account that the command is sent from", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Account", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "receiver", - "description": "Account that the command applies to", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Account", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "feePayer", - "description": "Account that pays the fees for the command", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Account", - "ofType": null - } - }, - "isDeprecated": true, - "deprecationReason": "use source field instead" - }, - { - "name": "validUntil", - "description": "The global slot number after which this transaction cannot be applied", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Globalslot", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "token", - "description": "Token used for the transaction", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "TokenId", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "amount", - "description": "Amount that the source is sending to receiver; 0 for commands without an associated amount", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Amount", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "feeToken", - "description": "Token used to pay the fee", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "TokenId", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "fee", - "description": "Fee that the fee-payer is willing to pay for making the transaction", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Fee", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "memo", - "description": "A short message from the sender, encoded with Base58Check, version byte=0x14; byte 2 of the decoding is the message length", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "isDelegation", - "description": "If true, this command represents a delegation of stake", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": true, - "deprecationReason": "use kind field instead" - }, - { - "name": "from", - "description": "Public key of the sender", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": true, - "deprecationReason": "use feePayer field instead" - }, - { - "name": "fromAccount", - "description": "Account of the sender", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Account", - "ofType": null - } - }, - "isDeprecated": true, - "deprecationReason": "use feePayer field instead" - }, - { - "name": "to", - "description": "Public key of the receiver", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": true, - "deprecationReason": "use receiver field instead" - }, - { - "name": "toAccount", - "description": "Account of the receiver", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Account", - "ofType": null - } - }, - "isDeprecated": true, - "deprecationReason": "use receiver field instead" - }, - { - "name": "failureReason", - "description": "null is no failure or status unknown, reason for failure otherwise.", - "args": [], - "type": { - "kind": "SCALAR", - "name": "TransactionStatusFailure", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [ - { - "kind": "INTERFACE", - "name": "UserCommand", - "ofType": null - } - ], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "INTERFACE", - "name": "UserCommand", - "description": "Common interface for user commands", - "fields": [ - { - "name": "id", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "TransactionId", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "hash", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "TransactionHash", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "kind", - "description": "String describing the kind of user command", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UserCommandKind", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nonce", - "description": "Sequence number of command for the fee-payer's account", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "source", - "description": "Account that the command is sent from", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Account", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "receiver", - "description": "Account that the command applies to", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Account", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "feePayer", - "description": "Account that pays the fees for the command", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Account", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "validUntil", - "description": "The global slot number after which this transaction cannot be applied", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Globalslot", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "token", - "description": "Token used by the command", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "TokenId", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "amount", - "description": "Amount that the source is sending to receiver - 0 for commands that are not associated with an amount", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Amount", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "feeToken", - "description": "Token used to pay the fee", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "TokenId", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "fee", - "description": "Fee that the fee-payer is willing to pay for making the transaction", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Fee", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "memo", - "description": "Short arbitrary message provided by the sender", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "isDelegation", - "description": "If true, this represents a delegation of stake, otherwise it is a payment", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": true, - "deprecationReason": "use kind field instead" - }, - { - "name": "from", - "description": "Public key of the sender", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": true, - "deprecationReason": "use feePayer field instead" - }, - { - "name": "fromAccount", - "description": "Account of the sender", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Account", - "ofType": null - } - }, - "isDeprecated": true, - "deprecationReason": "use feePayer field instead" - }, - { - "name": "to", - "description": "Public key of the receiver", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": true, - "deprecationReason": "use receiver field instead" - }, - { - "name": "toAccount", - "description": "Account of the receiver", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Account", - "ofType": null - } - }, - "isDeprecated": true, - "deprecationReason": "use receiver field instead" - }, - { - "name": "failureReason", - "description": "null is no failure, reason for failure otherwise.", - "args": [], - "type": { - "kind": "SCALAR", - "name": "TransactionStatusFailure", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": [ - { - "kind": "OBJECT", - "name": "UserCommandDelegation" - }, - { - "kind": "OBJECT", - "name": "UserCommandPayment" - } - ] - }, - { - "kind": "OBJECT", - "name": "Transactions", - "description": "Different types of transactions in a block", - "fields": [ - { - "name": "userCommands", - "description": "List of user commands (payments and stake delegations) included in this block", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INTERFACE", - "name": "UserCommand" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "zkappCommands", - "description": "List of zkApp commands included in this block", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "ZkappCommandResult" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "feeTransfer", - "description": "List of fee transfers included in this block", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "FeeTransfer" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "coinbase", - "description": "Amount of MINA granted to the producer of this block", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Amount", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "coinbaseReceiverAccount", - "description": "Account to which the coinbase for this block was granted", - "args": [], - "type": { - "kind": "OBJECT", - "name": "Account", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "JSON", - "description": "Arbitrary JSON", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "PrecomputedBlockProof", - "description": "Base-64 encoded proof", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "protocolStateProof", - "description": null, - "fields": [ - { - "name": "base64", - "description": "Base-64 encoded proof", - "args": [], - "type": { - "kind": "SCALAR", - "name": "PrecomputedBlockProof", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "json", - "description": "JSON-encoded proof", - "args": [], - "type": { - "kind": "SCALAR", - "name": "JSON", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "Epoch", - "description": "epoch", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "Slot", - "description": "slot", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "NextEpochData", - "description": null, - "fields": [ - { - "name": "ledger", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "epochLedger", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "seed", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "EpochSeed", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "startCheckpoint", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "StateHash", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "lockCheckpoint", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "epochLength", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Length", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "EpochSeed", - "description": "Base58Check-encoded epoch seed", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "epochLedger", - "description": null, - "fields": [ - { - "name": "hash", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "LedgerHash", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "totalCurrency", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Amount", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "StakingEpochData", - "description": null, - "fields": [ - { - "name": "ledger", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "epochLedger", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "seed", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "EpochSeed", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "startCheckpoint", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "StateHash", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "lockCheckpoint", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "epochLength", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Length", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ConsensusState", - "description": null, - "fields": [ - { - "name": "blockchainLength", - "description": "Length of the blockchain at this block", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Length", - "ofType": null - } - }, - "isDeprecated": true, - "deprecationReason": "use blockHeight instead" - }, - { - "name": "blockHeight", - "description": "Height of the blockchain at this block", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Length", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "epochCount", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Length", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "minWindowDensity", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Length", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "lastVrfOutput", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "totalCurrency", - "description": "Total currency in circulation at this block", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Amount", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "stakingEpochData", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "StakingEpochData", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nextEpochData", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "NextEpochData", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "hasAncestorInSameCheckpointWindow", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "slot", - "description": "Slot in which this block was created", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Slot", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "slotSinceGenesis", - "description": "Slot since genesis (across all hard-forks)", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Globalslot", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "epoch", - "description": "Epoch in which this block was created", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Epoch", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "superchargedCoinbase", - "description": "Whether or not this coinbase was \"supercharged\", ie. created by an account that has no locked tokens", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "blockStakeWinner", - "description": "The public key that is responsible for winning this block (including delegations)", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "blockCreator", - "description": "The block producer public key that created this block", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "coinbaseReceiever", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "BodyReference", - "description": "A reference to how the block header refers to the body of the block as a hex-encoded string", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "SignedFee", - "description": "Signed fee", - "fields": [ - { - "name": "sign", - "description": "+/-", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "sign", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "feeMagnitude", - "description": "Fee", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Fee", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "FeeExcess", - "description": "Fee excess divided into left, right components", - "fields": [ - { - "name": "feeTokenLeft", - "description": "Token id for left component of fee excess", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "TokenId", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "feeExcessLeft", - "description": "Fee for left component of fee excess", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "SignedFee", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "feeTokenRight", - "description": "Token id for right component of fee excess", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "TokenId", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "feeExcessRight", - "description": "Fee for right component of fee excess", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "SignedFee", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "sign", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "PLUS", - "description": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "MINUS", - "description": null, - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "SignedAmount", - "description": "Signed amount", - "fields": [ - { - "name": "sign", - "description": "+/-", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "sign", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "amountMagnitude", - "description": "Amount", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Amount", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "LocalState", - "description": null, - "fields": [ - { - "name": "stackFrame", - "description": "Stack frame component of local state", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "FieldElem", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "callStack", - "description": "Call stack component of local state", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "FieldElem", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "transactionCommitment", - "description": "Transaction commitment component of local state", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "FieldElem", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "fullTransactionCommitment", - "description": "Full transaction commitment component of local state", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "FieldElem", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "excess", - "description": "Excess component of local state", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "SignedAmount", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "supplyIncrease", - "description": "Supply increase component of local state", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "SignedAmount", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "ledger", - "description": "Ledger component of local state", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "LedgerHash", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "success", - "description": "Success component of local state", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "accountUpdateIndex", - "description": "Account update index component of local state", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "failureStatusTable", - "description": "Failure status table component of local state", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "willSucceed", - "description": "Will-succeed component of local state", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "StateStack", - "description": null, - "fields": [ - { - "name": "initial", - "description": "Initial hash", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "FieldElem", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "current", - "description": "Current hash", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "FieldElem", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "PendingCoinbaseStack", - "description": null, - "fields": [ - { - "name": "dataStack", - "description": "Data component of pending coinbase stack", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "FieldElem", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "stateStack", - "description": "State component of pending coinbase stack", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "StateStack", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Registers", - "description": null, - "fields": [ - { - "name": "firstPassLedger", - "description": "First pass ledger hash", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "LedgerHash", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "secondPassLedger", - "description": "Second pass ledger hash", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "LedgerHash", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "pendingCoinbaseStack", - "description": "Pending coinbase stack", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "PendingCoinbaseStack", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "localState", - "description": "Local state", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "LocalState", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "SnarkedLedgerState", - "description": null, - "fields": [ - { - "name": "sourceRegisters", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Registers", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "targetRegisters", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Registers", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "connectingLedgerLeft", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "LedgerHash", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "connectingLedgerRight", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "LedgerHash", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "supplyIncrease", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "SignedAmount", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "feeExcess", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "FeeExcess", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "sokDigest", - "description": "Placeholder for SOK digest", - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "PendingCoinbaseHash", - "description": "Base58Check-encoded hash of a pending coinbase hash", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "PendingCoinbaseAuxHash", - "description": "Base58Check-encoded hash of a pending coinbase auxiliary hash", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "StagedLedgerAuxHash", - "description": "Base58Check-encoded hash of the staged ledger hash's aux_hash", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "LedgerHash", - "description": "Base58Check-encoded ledger hash", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "BlockchainState", - "description": null, - "fields": [ - { - "name": "date", - "description": "date (stringified Unix time - number of milliseconds since January 1, 1970)", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "BlockTime", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "utcDate", - "description": "utcDate (stringified Unix time - number of milliseconds since January 1, 1970). Time offsets are adjusted to reflect true wall-clock time instead of genesis time.", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "BlockTime", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "snarkedLedgerHash", - "description": "Base58Check-encoded hash of the snarked ledger", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "LedgerHash", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "stagedLedgerHash", - "description": "Base58Check-encoded hash of the staged ledger hash's main ledger hash", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "LedgerHash", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "stagedLedgerAuxHash", - "description": "Base58Check-encoded hash of the staged ledger hash's aux_hash", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "StagedLedgerAuxHash", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "stagedLedgerPendingCoinbaseAux", - "description": "Base58Check-encoded staged ledger hash's pending_coinbase_aux", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PendingCoinbaseAuxHash", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "stagedLedgerPendingCoinbaseHash", - "description": "Base58Check-encoded hash of the staged ledger hash's pending_coinbase_hash", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PendingCoinbaseHash", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "stagedLedgerProofEmitted", - "description": "Block finished a staged ledger, and a proof was emitted from it and included into this block's proof. If there is no transition frontier available or no block found, this will return null.", - "args": [], - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "ledgerProofStatement", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "SnarkedLedgerState", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "bodyReference", - "description": "A reference to how the block header refers to the body of the block as a hex-encoded string", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "BodyReference", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ProtocolState", - "description": null, - "fields": [ - { - "name": "previousStateHash", - "description": "Base58Check-encoded hash of the previous state", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "StateHash", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "blockchainState", - "description": "State which is agnostic of a particular consensus algorithm", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "BlockchainState", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "consensusState", - "description": "State specific to the minaboros Proof of Stake consensus algorithm", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "ConsensusState", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "StateHashAsDecimal", - "description": "Experimental: Bigint field-element representation of stateHash", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Block", - "description": null, - "fields": [ - { - "name": "creator", - "description": "Public key of account that produced this block", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": true, - "deprecationReason": "use creatorAccount field instead" - }, - { - "name": "creatorAccount", - "description": "Account that produced this block", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Account", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "winnerAccount", - "description": "Account that won the slot (Delegator/Staker)", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Account", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "stateHash", - "description": "Base58Check-encoded hash of the state after this block", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "StateHash", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "stateHashField", - "description": "Experimental: Bigint field-element representation of stateHash", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "StateHashAsDecimal", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "protocolState", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "ProtocolState", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "protocolStateProof", - "description": "Snark proof of blockchain state", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "protocolStateProof", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "transactions", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Transactions", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "commandTransactionCount", - "description": "Count of user command transactions in the block", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "snarkJobs", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "CompletedWork" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "Fee", - "description": "fee", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "SnarkWorker", - "description": null, - "fields": [ - { - "name": "key", - "description": "Public key of current snark worker", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": true, - "deprecationReason": "use account field instead" - }, - { - "name": "account", - "description": "Account of the current snark worker", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Account", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "fee", - "description": "Fee that snark worker is charging to generate a snark proof", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Fee", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "InetAddr", - "description": "network address", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "NetworkPeerPayload", - "description": null, - "fields": [ - { - "name": "peerId", - "description": "base58-encoded peer ID", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "host", - "description": "IP address of the remote host", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "InetAddr", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "libp2pPort", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "SetConnectionGatingConfigPayload", - "description": null, - "fields": [ - { - "name": "trustedPeers", - "description": "Peers we will always allow connections from", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "NetworkPeerPayload" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "bannedPeers", - "description": "Peers we will never allow connections from (unless they are also trusted!)", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "NetworkPeerPayload" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "isolate", - "description": "If true, no connections will be allowed unless they are from a trusted peer", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "MerklePathElement", - "description": null, - "fields": [ - { - "name": "left", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "FieldElem", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "right", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "FieldElem", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "Action", - "description": "action", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "VerificationKeyHash", - "description": "Hash of verification key", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "VerificationKey", - "description": "verification key in Base64 format", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "AccountVerificationKeyWithHash", - "description": "Verification key with hash", - "fields": [ - { - "name": "verificationKey", - "description": "verification key in Base64 format", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "VerificationKey", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "hash", - "description": "Hash of verification key", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "VerificationKeyHash", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "VerificationKeyPermission", - "description": null, - "fields": [ - { - "name": "auth", - "description": "Authorization required to set the verification key of the zkApp associated with the account", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "AccountAuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "txnVersion", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "AccountAuthRequired", - "description": "Kind of authorization required", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "None", - "description": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "Either", - "description": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "Proof", - "description": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "Signature", - "description": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "Impossible", - "description": null, - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "AccountPermissions", - "description": null, - "fields": [ - { - "name": "editState", - "description": "Authorization required to edit zkApp state", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "AccountAuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "send", - "description": "Authorization required to send tokens", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "AccountAuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "receive", - "description": "Authorization required to receive tokens", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "AccountAuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "access", - "description": "Authorization required to access the account", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "AccountAuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "setDelegate", - "description": "Authorization required to set the delegate", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "AccountAuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "setPermissions", - "description": "Authorization required to change permissions", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "AccountAuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "setVerificationKey", - "description": "Authorization required to set the verification key of the zkApp associated with the account", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "VerificationKeyPermission", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "setZkappUri", - "description": "Authorization required to change the URI of the zkApp associated with the account ", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "AccountAuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "editActionState", - "description": "Authorization required to edit the action state", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "AccountAuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "setTokenSymbol", - "description": "Authorization required to set the token symbol", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "AccountAuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "incrementNonce", - "description": "Authorization required to increment the nonce", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "AccountAuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "setVotingFor", - "description": "Authorization required to set the state hash the account is voting for", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "AccountAuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "setTiming", - "description": "Authorization required to set the timing of the account", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "AccountAuthRequired", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "FieldElem", - "description": "field element", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "ChainHash", - "description": "Base58Check-encoded chain hash", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "AccountNonce", - "description": "account nonce", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "StateHash", - "description": "Base58Check-encoded state hash", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "Length", - "description": "length", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "AnnotatedBalance", - "description": "A total balance annotated with the amount that is currently unknown with the invariant unknown <= total, as well as the currently liquid and locked balances.", - "fields": [ - { - "name": "total", - "description": "The amount of MINA owned by the account", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Balance", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "unknown", - "description": "The amount of MINA owned by the account whose origin is currently unknown", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Balance", - "ofType": null - } - }, - "isDeprecated": true, - "deprecationReason": null - }, - { - "name": "liquid", - "description": "The amount of MINA owned by the account which is currently available. Can be null if bootstrapping.", - "args": [], - "type": { - "kind": "SCALAR", - "name": "Balance", - "ofType": null - }, - "isDeprecated": true, - "deprecationReason": null - }, - { - "name": "locked", - "description": "The amount of MINA owned by the account which is currently locked. Can be null if bootstrapping.", - "args": [], - "type": { - "kind": "SCALAR", - "name": "Balance", - "ofType": null - }, - "isDeprecated": true, - "deprecationReason": null - }, - { - "name": "blockHeight", - "description": "Block height at which balance was measured", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Length", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "stateHash", - "description": "Hash of block at which balance was measured. Can be null if bootstrapping. Guaranteed to be non-null for direct account lookup queries when not bootstrapping. Can also be null when accessed as nested properties (eg. via delegators). ", - "args": [], - "type": { - "kind": "SCALAR", - "name": "StateHash", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "GlobalSlotSpan", - "description": "global slot span", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "Amount", - "description": "amount", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "Balance", - "description": "balance", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "AccountTiming", - "description": null, - "fields": [ - { - "name": "initialMinimumBalance", - "description": "The initial minimum balance for a time-locked account", - "args": [], - "type": { - "kind": "SCALAR", - "name": "Balance", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "cliffTime", - "description": "The cliff time for a time-locked account", - "args": [], - "type": { - "kind": "SCALAR", - "name": "Globalslot", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "cliffAmount", - "description": "The cliff amount for a time-locked account", - "args": [], - "type": { - "kind": "SCALAR", - "name": "Amount", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "vestingPeriod", - "description": "The vesting period for a time-locked account", - "args": [], - "type": { - "kind": "SCALAR", - "name": "GlobalSlotSpan", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "vestingIncrement", - "description": "The vesting increment for a time-locked account", - "args": [], - "type": { - "kind": "SCALAR", - "name": "Amount", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "TokenId", - "description": "String representation of a token's UInt64 identifier", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "PublicKey", - "description": "Base58Check-encoded public key string", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Account", - "description": "An account record according to the daemon", - "fields": [ - { - "name": "publicKey", - "description": "The public identity of the account", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "tokenId", - "description": "The token associated with this account", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "TokenId", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "token", - "description": "The token associated with this account", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "TokenId", - "ofType": null - } - }, - "isDeprecated": true, - "deprecationReason": "Use tokenId" - }, - { - "name": "timing", - "description": "The timing associated with this account", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "AccountTiming", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "balance", - "description": "The amount of MINA owned by the account", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "AnnotatedBalance", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nonce", - "description": "A natural number that increases with each transaction (stringified uint32)", - "args": [], - "type": { - "kind": "SCALAR", - "name": "AccountNonce", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "inferredNonce", - "description": "Like the `nonce` field, except it includes the scheduled transactions (transactions not yet included in a block) (stringified uint32)", - "args": [], - "type": { - "kind": "SCALAR", - "name": "AccountNonce", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "epochDelegateAccount", - "description": "The account that you delegated on the staking ledger of the current block's epoch", - "args": [], - "type": { - "kind": "OBJECT", - "name": "Account", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "receiptChainHash", - "description": "Top hash of the receipt chain Merkle-list", - "args": [], - "type": { - "kind": "SCALAR", - "name": "ChainHash", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "delegate", - "description": "The public key to which you are delegating - if you are not delegating to anybody, this would return your public key", - "args": [], - "type": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - }, - "isDeprecated": true, - "deprecationReason": "use delegateAccount instead" - }, - { - "name": "delegateAccount", - "description": "The account to which you are delegating - if you are not delegating to anybody, this would return your public key", - "args": [], - "type": { - "kind": "OBJECT", - "name": "Account", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "delegators", - "description": "The list of accounts which are delegating to you (note that the info is recorded in the last epoch so it might not be up to date with the current account status)", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Account", - "ofType": null - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "lastEpochDelegators", - "description": "The list of accounts which are delegating to you in the last epoch (note that the info is recorded in the one before last epoch so it might not be up to date with the current account status)", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Account", - "ofType": null - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "votingFor", - "description": "The previous epoch lock hash of the chain which you are voting for", - "args": [], - "type": { - "kind": "SCALAR", - "name": "ChainHash", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "stakingActive", - "description": "True if you are actively staking with this account on the current daemon - this may not yet have been updated if the staking key was changed recently", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "privateKeyPath", - "description": "Path of the private key file for this account", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "locked", - "description": "True if locked, false if unlocked, null if the account isn't tracked by the queried daemon", - "args": [], - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "index", - "description": "The index of this account in the ledger, or null if this account does not yet have a known position in the best tip ledger", - "args": [], - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "zkappUri", - "description": "The URI associated with this account, usually pointing to the zkApp source code", - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "zkappState", - "description": "The 8 field elements comprising the zkApp state associated with this account encoded as bignum strings", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "FieldElem", - "ofType": null - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "provedState", - "description": "Boolean indicating whether all 8 fields on zkAppState were last set by a proof-authorized account update", - "args": [], - "type": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "permissions", - "description": "Permissions for updating certain fields of this account", - "args": [], - "type": { - "kind": "OBJECT", - "name": "AccountPermissions", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "tokenSymbol", - "description": "The symbol for the token owned by this account, if there is one", - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "verificationKey", - "description": "Verification key associated with this account", - "args": [], - "type": { - "kind": "OBJECT", - "name": "AccountVerificationKeyWithHash", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "actionState", - "description": "Action state associated with this account", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Action", - "ofType": null - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "leafHash", - "description": "The base58Check-encoded hash of this account to bootstrap the merklePath", - "args": [], - "type": { - "kind": "SCALAR", - "name": "FieldElem", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "merklePath", - "description": "Merkle path is a list of path elements that are either the left or right hashes up to the root", - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "MerklePathElement", - "ofType": null - } - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "Boolean", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "GetFilteredLogEntries", - "description": null, - "fields": [ - { - "name": "logMessages", - "description": "Structured log messages since the given offset", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "isCapturing", - "description": "Whether we are capturing structured log messages", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Metrics", - "description": null, - "fields": [ - { - "name": "blockProductionDelay", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "transactionPoolDiffReceived", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "transactionPoolDiffBroadcasted", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "transactionsAddedToPool", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "transactionPoolSize", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "snarkPoolDiffReceived", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "snarkPoolDiffBroadcasted", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "pendingSnarkWork", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "snarkPoolSize", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "AddrsAndPorts", - "description": null, - "fields": [ - { - "name": "externalIp", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "bindIp", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "peer", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "Peer", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "libp2pPort", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "clientPort", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "Time", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ConsensusConfiguration", - "description": null, - "fields": [ - { - "name": "delta", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "k", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "slotsPerEpoch", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "slotDuration", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "epochDuration", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "genesisStateTimestamp", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Time", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "acceptableNetworkDelay", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ConsensusTimeGlobalSlot", - "description": "Consensus time and the corresponding global slot since genesis", - "fields": [ - { - "name": "consensusTime", - "description": "Time in terms of slot number in an epoch, start and end time of the slot since UTC epoch", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "ConsensusTime", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "globalSlotSinceGenesis", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Globalslot", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "Globalslot", - "description": "global slot", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "BlockProducerTimings", - "description": null, - "fields": [ - { - "name": "times", - "description": "Next block production time", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "ConsensusTime" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "globalSlotSinceGenesis", - "description": "Next block production global-slot-since-genesis ", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Globalslot" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "generatedFromConsensusAt", - "description": "Consensus time of the block that was used to determine the next block production time", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "ConsensusTimeGlobalSlot", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "BlockTime", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "GlobalSlotSinceHardFork", - "description": "global slot since hard fork", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "UInt32", - "description": "String representing a uint32 number in base 10", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "ConsensusTime", - "description": null, - "fields": [ - { - "name": "epoch", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "slot", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "globalSlot", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "GlobalSlotSinceHardFork", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "startTime", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "BlockTime", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "endTime", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "BlockTime", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "Span", - "description": "span", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Interval", - "description": null, - "fields": [ - { - "name": "start", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Span", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "stop", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Span", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Histogram", - "description": null, - "fields": [ - { - "name": "values", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "intervals", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Interval" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "underflow", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "overflow", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "RpcPair", - "description": null, - "fields": [ - { - "name": "dispatch", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "Histogram", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "impl", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "Histogram", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "RpcTimings", - "description": null, - "fields": [ - { - "name": "getStagedLedgerAux", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "RpcPair", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "answerSyncLedgerQuery", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "RpcPair", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "getAncestry", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "RpcPair", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "getTransitionChainProof", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "RpcPair", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "getTransitionChain", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "RpcPair", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Histograms", - "description": null, - "fields": [ - { - "name": "rpcTimings", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "RpcTimings", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "externalTransitionLatency", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "Histogram", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "acceptedTransitionLocalLatency", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "Histogram", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "acceptedTransitionRemoteLatency", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "Histogram", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "snarkWorkerZkappTransitionTime", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "Histogram", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "snarkWorkerNonzkappTransitionTime", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "Histogram", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "snarkWorkerMergeTime", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "Histogram", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "Peer", - "description": null, - "fields": [ - { - "name": "host", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "libp2pPort", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "peerId", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "String", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "SCALAR", - "name": "Int", - "description": null, - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "DaemonStatus", - "description": null, - "fields": [ - { - "name": "numAccounts", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "blockchainLength", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "highestBlockLengthReceived", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "highestUnvalidatedBlockLengthReceived", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "uptimeSecs", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "ledgerMerkleRoot", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "stateHash", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "chainId", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "commitId", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "confDir", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "peers", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Peer" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "userCommandsSent", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "snarkWorker", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "snarkWorkFee", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "syncStatus", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "SyncStatus", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "catchupStatus", - "description": null, - "args": [], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "blockProductionKeys", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "coinbaseReceiver", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "histograms", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "Histograms", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "consensusTimeBestTip", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "ConsensusTime", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "globalSlotSinceGenesisBestTip", - "description": null, - "args": [], - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "nextBlockProduction", - "description": null, - "args": [], - "type": { - "kind": "OBJECT", - "name": "BlockProducerTimings", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "consensusTimeNow", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "ConsensusTime", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "consensusMechanism", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "consensusConfiguration", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "ConsensusConfiguration", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "addrsAndPorts", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "AddrsAndPorts", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "metrics", - "description": null, - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Metrics", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - }, - { - "kind": "ENUM", - "name": "SyncStatus", - "description": "Sync status of daemon", - "fields": null, - "inputFields": null, - "interfaces": null, - "enumValues": [ - { - "name": "CONNECTING", - "description": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "LISTENING", - "description": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "OFFLINE", - "description": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "BOOTSTRAP", - "description": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "SYNCED", - "description": null, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "CATCHUP", - "description": null, - "isDeprecated": false, - "deprecationReason": null - } - ], - "possibleTypes": null - }, - { - "kind": "OBJECT", - "name": "query", - "description": null, - "fields": [ - { - "name": "syncStatus", - "description": "Network sync status", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "SyncStatus", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "daemonStatus", - "description": "Get running daemon status", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "DaemonStatus", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "version", - "description": "The version of the node (git commit hash)", - "args": [], - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "getFilteredLogEntries", - "description": "TESTING ONLY: Retrieve all new structured events in memory", - "args": [ - { - "name": "offset", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "GetFilteredLogEntries", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "ownedWallets", - "description": "Wallets for which the daemon knows the private key", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Account" - } - } - } - }, - "isDeprecated": true, - "deprecationReason": "use trackedAccounts instead" - }, - { - "name": "trackedAccounts", - "description": "Accounts for which the daemon tracks the private key", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Account" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "wallet", - "description": "Find any wallet via a public key", - "args": [ - { - "name": "publicKey", - "description": "Public key of account being retrieved", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "Account", - "ofType": null - }, - "isDeprecated": true, - "deprecationReason": "use account instead" - }, - { - "name": "connectionGatingConfig", - "description": "The rules that the libp2p helper will use to determine which connections to permit", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "SetConnectionGatingConfigPayload", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "account", - "description": "Find any account via a public key and token", - "args": [ - { - "name": "token", - "description": "Token of account being retrieved (defaults to MINA)", - "type": { - "kind": "SCALAR", - "name": "TokenId", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "publicKey", - "description": "Public key of account being retrieved", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "Account", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "accounts", - "description": "Find all accounts for a public key", - "args": [ - { - "name": "publicKey", - "description": "Public key to find accounts for", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Account" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "tokenOwner", - "description": "Find the account that owns a given token", - "args": [ - { - "name": "tokenId", - "description": "Token ID to find the owning account for", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "TokenId", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "OBJECT", - "name": "Account", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "tokenAccounts", - "description": "Find all accounts for a token ID", - "args": [ - { - "name": "tokenId", - "description": "Token ID to find accounts for", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "TokenId", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Account" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "currentSnarkWorker", - "description": "Get information about the current snark worker", - "args": [], - "type": { - "kind": "OBJECT", - "name": "SnarkWorker", - "ofType": null - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "bestChain", - "description": "Retrieve a list of blocks from transition frontier's root to the current best tip. Returns an error if the system is bootstrapping.", - "args": [ - { - "name": "maxLength", - "description": "The maximum number of blocks to return. If there are more blocks in the transition frontier from root to tip, the maxLength blocks closest to the best tip will be returned", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Block", - "ofType": null - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "block", - "description": "Retrieve a block with the given state hash or height, if contained in the transition frontier.", - "args": [ - { - "name": "height", - "description": "The height of the desired block in the best chain", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "stateHash", - "description": "The state hash of the desired block", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Block", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "genesisBlock", - "description": "Get the genesis block", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Block", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "initialPeers", - "description": "List of peers that the daemon first used to connect to the network", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "getPeers", - "description": "List of peers that the daemon is currently connected to", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "Peer" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "pooledUserCommands", - "description": "Retrieve all the scheduled user commands for a specified sender that the current daemon sees in its transaction pool. All scheduled commands are queried if no sender is specified", - "args": [ - { - "name": "ids", - "description": "Ids of User commands", - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - } - } - }, - "defaultValue": null - }, - { - "name": "hashes", - "description": "Hashes of the commands to find in the pool", - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - } - }, - "defaultValue": null - }, - { - "name": "publicKey", - "description": "Public key of sender of pooled user commands", - "type": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INTERFACE", - "name": "UserCommand" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "pooledZkappCommands", - "description": "Retrieve all the scheduled zkApp commands for a specified sender that the current daemon sees in its transaction pool. All scheduled commands are queried if no sender is specified", - "args": [ - { - "name": "ids", - "description": "Ids of zkApp commands", - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - } - } - }, - "defaultValue": null - }, - { - "name": "hashes", - "description": "Hashes of the zkApp commands to find in the pool", - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - } - }, - "defaultValue": null - }, - { - "name": "publicKey", - "description": "Public key of sender of pooled zkApp commands", - "type": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "ZkappCommandResult" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "transactionStatus", - "description": "Get the status of a transaction", - "args": [ - { - "name": "zkappTransaction", - "description": "Id of a zkApp transaction", - "type": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "payment", - "description": "Id of a Payment", - "type": { - "kind": "SCALAR", - "name": "ID", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "ENUM", - "name": "TransactionStatus", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "trustStatus", - "description": "Trust status for an IPv4 or IPv6 address", - "args": [ - { - "name": "ipAddress", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "TrustStatusPayload", - "ofType": null - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "trustStatusAll", - "description": "IP address and trust status for all peers", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "TrustStatusPayload" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "snarkPool", - "description": "List of completed snark works that have the lowest fee so far", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "CompletedWork" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "pendingSnarkWork", - "description": "List of snark works that are yet to be done", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "PendingSnarkWork" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "snarkWorkRange", - "description": "Find any sequence of snark work between two indexes in all available snark work. Returns both completed and uncompleted work.", - "args": [ - { - "name": "endingIndex", - "description": "The last index to be taken from all available snark work (exclusive). If not specified or greater than the available snark work list,all elements from index [startingIndex] will be returned. An empty list will be returned if startingIndex is not a valid index or if startingIndex >= endingIndex.", - "type": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "startingIndex", - "description": "The first index to be taken from all available snark work", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "UInt32", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "PendingSnarkWorkSpec" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "snarkedLedgerAccountMembership", - "description": "obtain a membership proof for an account in the snarked ledger along with the account's balance, timing information, and nonce", - "args": [ - { - "name": "stateHash", - "description": "Hash of the snarked ledger to check", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "accountInfos", - "description": "Token id of the account to check", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "AccountInput" - } - } - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "MembershipInfo" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "encodedSnarkedLedgerAccountMembership", - "description": "obtain a membership proof for an account in the snarked ledger along with the accounts full information encoded as base64 binable type", - "args": [ - { - "name": "stateHash", - "description": "Hash of the snarked ledger to check", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "accountInfos", - "description": "Token id of the account to check", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "AccountInput" - } - } - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "EncodedAccount" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "genesisConstants", - "description": "The constants used to determine the configuration of the genesis block and all of its transitive dependencies", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "GenesisConstants", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "timeOffset", - "description": "The time offset in seconds used to convert real times into blockchain times", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "validatePayment", - "description": "Validate the format and signature of a payment", - "args": [ - { - "name": "signature", - "description": "If a signature is provided, this transaction is considered signed and will be broadcasted to the network without requiring a private key", - "type": { - "kind": "INPUT_OBJECT", - "name": "SignatureInput", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "input", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "SendPaymentInput", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "Boolean", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "evaluateVrf", - "description": "Evaluate a vrf for the given public key. This includes a witness which may be verified without access to the private key for this vrf evaluation.", - "args": [ - { - "name": "vrfThreshold", - "description": null, - "type": { - "kind": "INPUT_OBJECT", - "name": "VrfThresholdInput", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "publicKey", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "defaultValue": null - }, - { - "name": "message", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "VrfMessageInput", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "VrfEvaluation", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "checkVrf", - "description": "Check a vrf evaluation commitment. This can be used to check vrf evaluations without needing to reveal the private key, in the format returned by evaluateVrf", - "args": [ - { - "name": "input", - "description": null, - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "INPUT_OBJECT", - "name": "VrfEvaluationInput", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "VrfEvaluation", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "runtimeConfig", - "description": "The runtime configuration passed to the daemon at start-up", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "JSON", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "fork_config", - "description": "The runtime configuration for a blockchain fork intended to be a continuation of the current one. By default, this returns the newest block that appeared before the transaction stop slot provided in the configuration, or the best tip if no such block exists.", - "args": [ - { - "name": "height", - "description": "The height of the desired block in the best chain", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "stateHash", - "description": "The state hash of the desired block", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "JSON", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "threadGraph", - "description": "A graphviz dot format representation of the deamon's internal thread graph", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "blockchainVerificationKey", - "description": "The pickles verification key for the protocol state proof", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "JSON", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "networkID", - "description": "The chain-agnostic identifier of the network this daemon is participating in", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "signatureKind", - "description": "The signature kind that this daemon instance is using", - "args": [], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "protocolState", - "description": "Get the protocol state for a given block, optionally encoded in Base64", - "args": [ - { - "name": "encoding", - "description": "Encoding format (JSON or BASE64)", - "type": { - "kind": "ENUM", - "name": "Encoding", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "height", - "description": "The height of the desired block in the best chain", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "stateHash", - "description": "The state hash of the desired block", - "type": { - "kind": "SCALAR", - "name": "String", - "ofType": null - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "String", - "ofType": null - } - }, - "isDeprecated": false, - "deprecationReason": null - }, - { - "name": "accountActions", - "description": "Find all the actions associated to an account from the current best tip.", - "args": [ - { - "name": "maxLength", - "description": "The maximum number of blocks to search for actions. If there are more blocks in the transition frontier from root to tip, the maxLength blocks closest to the best tip will be returned", - "type": { - "kind": "SCALAR", - "name": "Int", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "token", - "description": "Token of account being retrieved (defaults to MINA)", - "type": { - "kind": "SCALAR", - "name": "TokenId", - "ofType": null - }, - "defaultValue": null - }, - { - "name": "publicKey", - "description": "Public key of account being retrieved", - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "SCALAR", - "name": "PublicKey", - "ofType": null - } - }, - "defaultValue": null - } - ], - "type": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "LIST", - "name": null, - "ofType": { - "kind": "NON_NULL", - "name": null, - "ofType": { - "kind": "OBJECT", - "name": "ActionState" - } - } - } - }, - "isDeprecated": false, - "deprecationReason": null - } - ], - "inputFields": null, - "interfaces": [], - "enumValues": null, - "possibleTypes": null - } - ] - } - } -} diff --git a/src/mina_sdk/types.py b/src/mina_sdk/types.py index fbd4c28..de7317e 100644 --- a/src/mina_sdk/types.py +++ b/src/mina_sdk/types.py @@ -3,7 +3,7 @@ from __future__ import annotations import random -from dataclasses import dataclass +from dataclasses import dataclass, field from enum import Enum from typing import Any @@ -202,11 +202,52 @@ class AccountBalance: total: Total balance (liquid + locked). liquid: Available balance for transactions. locked: Balance locked by a vesting schedule. + block_height: Height of the block the balance was read at. """ total: Currency liquid: Currency | None = None locked: Currency | None = None + block_height: int | None = None + + +@dataclass(frozen=True) +class AccountTiming: + """Vesting schedule of a timed account.""" + + initial_minimum_balance: Currency | None = None + cliff_time: int | None = None + cliff_amount: Currency | None = None + vesting_period: int | None = None + vesting_increment: Currency | None = None + + +@dataclass(frozen=True) +class VerificationKeyPermission: + """The ``setVerificationKey`` permission: an auth level and a transaction version.""" + + auth: str + txn_version: str + + +@dataclass(frozen=True) +class AccountPermissions: + """An account's permissions, as the daemon names the authorization levels + (for example ``Signature``, ``Proof``, ``None``).""" + + edit_state: str | None = None + send: str | None = None + receive: str | None = None + access: str | None = None + set_delegate: str | None = None + set_permissions: str | None = None + set_verification_key: VerificationKeyPermission | None = None + set_zkapp_uri: str | None = None + edit_action_state: str | None = None + set_token_symbol: str | None = None + increment_nonce: str | None = None + set_voting_for: str | None = None + set_timing: str | None = None @dataclass(frozen=True) @@ -219,6 +260,8 @@ class AccountData: balance: Balance breakdown. delegate: Public key this account delegates stake to. token_id: Token identifier (default token for MINA). + timing: Vesting schedule; ``None`` for an untimed account. + zkapp_state: zkApp state; ``None`` for an account that is not a zkApp. """ public_key: str @@ -226,6 +269,14 @@ class AccountData: balance: AccountBalance delegate: str | None = None token_id: str | None = None + token_symbol: str | None = None + voting_for: str | None = None + receipt_chain_hash: str | None = None + timing: AccountTiming | None = None + permissions: AccountPermissions | None = None + zkapp_state: list[str] | None = None + proved_state: bool | None = None + zkapp_uri: str | None = None @dataclass(frozen=True) @@ -243,6 +294,16 @@ class PeerInfo: port: int +@dataclass(frozen=True) +class AddrsAndPorts: + """The daemon's network addresses and ports.""" + + external_ip: str + bind_ip: str + client_port: int + libp2p_port: int + + @dataclass(frozen=True) class DaemonStatus: """Comprehensive daemon status. @@ -264,11 +325,68 @@ class DaemonStatus: peers: list[PeerInfo] | None = None commit_id: str | None = None state_hash: str | None = None + highest_unvalidated_block_length_received: int | None = None + num_accounts: int | None = None + ledger_merkle_root: str | None = None + chain_id: str | None = None + catchup_status: list[str] | None = None + block_production_keys: list[str] | None = None + coinbase_receiver: str | None = None + addrs_and_ports: AddrsAndPorts | None = None + + +@dataclass(frozen=True) +class DaemonMetrics: + """Transaction pool, snark pool and block production metrics of the daemon.""" + + block_production_delay: list[int] + transaction_pool_diff_received: int + transaction_pool_diff_broadcasted: int + transactions_added_to_pool: int + transaction_pool_size: int + snark_pool_diff_received: int + snark_pool_diff_broadcasted: int + pending_snark_work: int + snark_pool_size: int + + +@dataclass(frozen=True) +class EpochData: + """Seed and ledger hash of an epoch; ``length`` only for the staking epoch.""" + + seed: str + ledger_hash: str + length: int | None = None + + +@dataclass(frozen=True) +class FeeTransfer: + """A fee transfer in a block. ``transfer_type`` is the daemon's ``type``.""" + + recipient: str + fee: Currency + transfer_type: str + + +@dataclass(frozen=True) +class BlockTransaction: + """A user command in a block.""" + + id: str + hash: str + kind: str + nonce: int + source: str + receiver: str + amount: Currency + fee: Currency + memo: str + failure_reason: str | None = None @dataclass(frozen=True) class BlockInfo: - """A block in the best chain. + """A block (from ``get_best_chain``, ``get_genesis_block`` or ``get_block``). Attributes: state_hash: Base58-encoded state hash. @@ -277,6 +395,7 @@ class BlockInfo: global_slot_since_genesis: Absolute slot number since genesis. creator_pk: Block producer's public key. command_transaction_count: Number of user commands in this block. + coinbase_receiver: The consensus state's ``coinbaseReceiever``. """ state_hash: str @@ -285,26 +404,75 @@ class BlockInfo: global_slot_since_genesis: int creator_pk: str command_transaction_count: int + previous_state_hash: str = "" + epoch: int = 0 + block_creator: str = "" + coinbase_receiver: str | None = None + staking_epoch: EpochData | None = None + next_epoch: EpochData | None = None + date: str = "" + utc_date: str = "" + snarked_ledger_hash: str = "" + staged_ledger_hash: str = "" + coinbase: Currency | None = None + coinbase_receiver_account: str | None = None + fee_transfers: list[FeeTransfer] = field(default_factory=list) + user_commands: list[BlockTransaction] = field(default_factory=list) + + +# The keys of the dictionaries that get_pooled_user_commands returned before +# it returned PooledUserCommand, and the attribute of each. +_POOLED_COMMAND_KEYS = { + "id": "id", + "hash": "hash", + "kind": "kind", + "nonce": "nonce", + "amount": "amount", + "fee": "fee", + "from": "from_", + "to": "to", +} @dataclass(frozen=True) -class SendPaymentResult: - """Result of a successful payment transaction. +class PooledUserCommand: + """A pending payment or delegation in the transaction pool. - Attributes: - id: Opaque transaction identifier. - hash: Base58-encoded transaction hash. - nonce: The nonce used for this transaction. + ``from_`` is the daemon's ``from``. For compatibility with the dictionaries + that earlier versions returned, ``command["from"]``, ``command.get("from")`` + and the other keys ``id``, ``hash``, ``kind``, ``nonce``, ``amount``, + ``fee`` and ``to`` also work. """ id: str hash: str - nonce: int + kind: str + nonce: str + amount: str + fee: str + from_: str + to: str + source: str = "" + receiver: str = "" + memo: str = "" + failure_reason: str | None = None + + def __getitem__(self, key: str) -> Any: + if key not in _POOLED_COMMAND_KEYS: + raise KeyError(key) + return getattr(self, _POOLED_COMMAND_KEYS[key]) + + def get(self, key: str, default: Any = None) -> Any: + """Like ``dict.get``, for the keys of earlier versions.""" + try: + return self[key] + except KeyError: + return default @dataclass(frozen=True) -class SendDelegationResult: - """Result of a successful delegation transaction. +class SubmittedCommand: + """A payment or delegation that the daemon accepted into its pool. Attributes: id: Opaque transaction identifier. @@ -315,6 +483,92 @@ class SendDelegationResult: id: str hash: str nonce: int + kind: str = "" + source: str = "" + receiver: str = "" + amount: Currency | None = None + fee: Currency | None = None + memo: str = "" + + +# The results of send_payment and send_delegation. +SendPaymentResult = SubmittedCommand +SendDelegationResult = SubmittedCommand + + +@dataclass(frozen=True) +class SignatureInput: + """A signature made outside the daemon, for example with mina-signer.""" + + field: str + scalar: str + + +@dataclass(frozen=True) +class ZkappFeePayer: + """The fee payer of a zkApp command.""" + + public_key: str + fee: Currency + nonce: int + valid_until: int | None = None + + +@dataclass(frozen=True) +class ZkappFailure: + """Why an account update of a zkApp command failed.""" + + index: int | None + failures: list[str] + + +@dataclass(frozen=True) +class ZkappCommandResult: + """A zkApp command in the pool, or one just sent. + + ``failure_reason`` has one entry for each failing account update, and is + ``None`` if the command did not fail. + """ + + id: str + hash: str + memo: str + fee_payer: ZkappFeePayer + failure_reason: list[ZkappFailure] | None = None + + +@dataclass(frozen=True) +class CompletedWork: + """Completed snark work in the snark pool.""" + + prover: str + fee: Currency + work_ids: list[int] + + +class TransactionStatus(str, Enum): + """The status of a transaction. Members compare equal to the daemon's strings.""" + + PENDING = "PENDING" + INCLUDED = "INCLUDED" + UNKNOWN = "UNKNOWN" + + +@dataclass(frozen=True) +class GenesisConstants: + """The network's genesis constants.""" + + genesis_timestamp: str + coinbase: Currency + account_creation_fee: Currency + + +@dataclass(frozen=True) +class TrackedAccount: + """An account the daemon tracks (one of its wallet keys).""" + + public_key: str + balance: Currency def _parse_response(data: dict[str, Any], path: list[str]) -> Any: diff --git a/tests/test_common_api.py b/tests/test_common_api.py new file mode 100644 index 0000000..d615205 --- /dev/null +++ b/tests/test_common_api.py @@ -0,0 +1,433 @@ +"""Tests of the common API (spec/SPEC.md) against a mock daemon: the methods +this SDK did not have, the new result fields, and the variables sent.""" + +from __future__ import annotations + +import json + +import httpx +import pytest +import respx + +from mina_sdk import ( + AccountNotFoundError, + Currency, + EpochData, + FeeTransfer, + MinaDaemonClient, + SignatureInput, + TransactionStatus, + ZkappFailure, +) + +GRAPHQL_URL = "http://localhost:3085/graphql" + + +@pytest.fixture +def client(): + c = MinaDaemonClient(graphql_uri=GRAPHQL_URL, retries=1, retry_delay=0.0, timeout=5.0) + yield c + c.close() + + +def _mock(data): + """Answer every request with ``data``; return the route, whose calls record the requests.""" + return respx.post(GRAPHQL_URL).mock(return_value=httpx.Response(200, json={"data": data})) + + +def _sent(route, n=-1): + return json.loads(route.calls[n].request.content) + + +def _block_json(): + def epoch(seed, ledger_hash): + return {"seed": seed, "ledger": {"hash": ledger_hash}} + + return { + "stateHash": "3NKblock", + "commandTransactionCount": 1, + "creatorAccount": {"publicKey": "B62qcreator"}, + "protocolState": { + "previousStateHash": "3NKprev", + "consensusState": { + "blockHeight": "12", + "epoch": "1", + "slot": "30", + "slotSinceGenesis": "40", + "blockCreator": "B62qcreator", + "coinbaseReceiever": "B62qcoinbase", + "stakingEpochData": {"epochLength": "7", **epoch("seedS", "jxS")}, + "nextEpochData": epoch("seedN", "jxN"), + }, + "blockchainState": { + "date": "1700000000000", + "utcDate": "1700000000001", + "snarkedLedgerHash": "jxSnarked", + "stagedLedgerHash": "jxStaged", + }, + }, + "transactions": { + "coinbase": "720000000000", + "coinbaseReceiverAccount": {"publicKey": "B62qcoinbase"}, + "feeTransfer": [{"recipient": "B62qfee", "fee": "5", "type": "Fee_transfer"}], + "userCommands": [ + { + "id": "Cmd1", + "hash": "5Jhash", + "kind": "PAYMENT", + "nonce": 3, + "source": {"publicKey": "B62qsrc"}, + "receiver": {"publicKey": "B62qdst"}, + "amount": "1000", + "fee": "10", + "memo": "E4Y", + "failureReason": None, + } + ], + }, + } + + +def _zkapp_json(valid_until, failure_reason): + return { + "id": "Zk", + "hash": "5Jz", + "zkappCommand": { + "memo": "E4Y", + "feePayer": { + "body": { + "publicKey": "B62qpayer", + "fee": "100", + "nonce": "7", + "validUntil": valid_until, + } + }, + }, + "failureReason": failure_reason, + } + + +@respx.mock +def test_best_chain_sends_a_null_max_length_and_reads_the_common_block_selection(client): + route = _mock({"bestChain": [_block_json()]}) + (b,) = client.get_best_chain() + sent = _sent(route) + assert sent["query"].startswith("query BestChain(") + assert sent["variables"] == {"maxLength": None} + assert (b.height, b.global_slot_since_hard_fork, b.global_slot_since_genesis, b.epoch) == ( + 12, + 30, + 40, + 1, + ) + assert b.previous_state_hash == "3NKprev" + assert b.block_creator == "B62qcreator" + assert b.coinbase_receiver == "B62qcoinbase" + assert b.staking_epoch == EpochData(seed="seedS", ledger_hash="jxS", length=7) + assert b.next_epoch == EpochData(seed="seedN", ledger_hash="jxN") + assert (b.date, b.utc_date) == ("1700000000000", "1700000000001") + assert b.coinbase == Currency.from_nanomina(720000000000) + assert b.coinbase_receiver_account == "B62qcoinbase" + assert b.fee_transfers == [ + FeeTransfer( + recipient="B62qfee", fee=Currency.from_nanomina(5), transfer_type="Fee_transfer" + ) + ] + u = b.user_commands[0] + assert (u.id, u.nonce, u.source, u.receiver) == ("Cmd1", 3, "B62qsrc", "B62qdst") + assert (u.amount, u.fee, u.failure_reason) == ( + Currency.from_nanomina(1000), + Currency.from_nanomina(10), + None, + ) + + +@respx.mock +def test_genesis_block_and_block_by_hash_or_height(client): + _mock({"genesisBlock": _block_json()}) + assert client.get_genesis_block().state_hash == "3NKblock" + + route = _mock({"block": _block_json()}) + client.get_block(height=12) + assert _sent(route)["variables"] == {"stateHash": None, "height": 12} + client.get_block(state_hash="3NKblock") + assert _sent(route)["variables"] == {"stateHash": "3NKblock", "height": None} + with pytest.raises(ValueError): + client.get_block() + with pytest.raises(ValueError): + client.get_block(state_hash="3NK", height=1) + + +@respx.mock +def test_daemon_status_new_fields_and_metrics(client): + _mock( + { + "daemonStatus": { + "syncStatus": "SYNCED", + "highestUnvalidatedBlockLengthReceived": 9, + "numAccounts": 5, + "ledgerMerkleRoot": "jxRoot", + "chainId": "chain", + "catchupStatus": None, + "blockProductionKeys": ["B62qbp"], + "coinbaseReceiver": "B62qcb", + "peers": [], + "addrsAndPorts": { + "externalIp": "1.2.3.4", + "bindIp": "0.0.0.0", # noqa: S104 - test data + "clientPort": 8301, + "libp2pPort": 8302, + }, + } + } + ) + s = client.get_daemon_status() + assert s.highest_unvalidated_block_length_received == 9 + assert (s.num_accounts, s.ledger_merkle_root, s.chain_id) == (5, "jxRoot", "chain") + assert s.catchup_status is None + assert s.block_production_keys == ["B62qbp"] + assert s.coinbase_receiver == "B62qcb" + assert s.addrs_and_ports is not None + assert (s.addrs_and_ports.client_port, s.addrs_and_ports.libp2p_port) == (8301, 8302) + + _mock( + { + "daemonStatus": { + "metrics": { + "blockProductionDelay": [1, 2], + "transactionPoolDiffReceived": 3, + "transactionPoolDiffBroadcasted": 4, + "transactionsAddedToPool": 5, + "transactionPoolSize": 6, + "snarkPoolDiffReceived": 7, + "snarkPoolDiffBroadcasted": 8, + "pendingSnarkWork": 9, + "snarkPoolSize": 10, + } + } + } + ) + m = client.get_daemon_metrics() + assert m.block_production_delay == [1, 2] + assert (m.transaction_pool_size, m.pending_snark_work, m.snark_pool_size) == (6, 9, 10) + + +@respx.mock +def test_account_sends_a_null_token_and_reads_new_fields(client): + route = _mock( + { + "account": { + "publicKey": "B62qacc", + "nonce": "4", + "delegate": None, + "tokenId": "wSHV", + "tokenSymbol": "MINA", + "votingFor": "3NKvote", + "receiptChainHash": "2mzReceipt", + "balance": {"total": "100", "liquid": "60", "locked": "40", "blockHeight": "12"}, + "timing": { + "initialMinimumBalance": "50", + "cliffTime": "10", + "cliffAmount": "5", + "vestingPeriod": "2", + "vestingIncrement": "1", + }, + "permissions": { + "editState": "Signature", + "send": "Signature", + "receive": "None", + "setVerificationKey": {"auth": "Signature", "txnVersion": "3"}, + }, + "zkappState": ["0", "1"], + "provedState": False, + "zkappUri": "", + } + } + ) + a = client.get_account("B62qacc") + assert _sent(route)["variables"] == {"publicKey": "B62qacc", "token": None} + assert (a.nonce, a.token_symbol, a.voting_for) == (4, "MINA", "3NKvote") + assert a.balance.block_height == 12 + assert a.balance.locked == Currency.from_nanomina(40) + assert a.timing is not None + assert a.timing.initial_minimum_balance == Currency.from_nanomina(50) + assert (a.timing.cliff_time, a.timing.vesting_period) == (10, 2) + assert a.permissions is not None + assert a.permissions.receive == "None" + assert a.permissions.set_verification_key is not None + assert a.permissions.set_verification_key.txn_version == "3" + assert a.zkapp_state == ["0", "1"] + assert a.proved_state is False + + # An untimed account: the daemon sends a timing object of nulls. + _mock( + { + "account": { + "publicKey": "B62qacc", + "nonce": "0", + "tokenId": "wSHV", + "balance": {"total": "1"}, + "timing": dict.fromkeys( + [ + "initialMinimumBalance", + "cliffTime", + "cliffAmount", + "vestingPeriod", + "vestingIncrement", + ] + ), + } + } + ) + a = client.get_account("B62qacc") + assert a.timing is None + assert a.permissions is None + + _mock({"account": None}) + with pytest.raises(AccountNotFoundError): + client.get_account("B62qnone") + + +@respx.mock +def test_pooled_commands(client): + route = _mock( + { + "pooledUserCommands": [ + { + "id": "Cmd", + "hash": "5J", + "kind": "PAYMENT", + "nonce": 2, + "amount": "1", + "fee": "2", + "from": "B62qa", + "to": "B62qb", + "source": {"publicKey": "B62qa"}, + "receiver": {"publicKey": "B62qb"}, + "memo": "E4Y", + "failureReason": None, + } + ] + } + ) + (c,) = client.get_pooled_user_commands() + assert _sent(route)["variables"] == {"publicKey": None} + assert (c.nonce, c.from_, c.source, c.receiver, c.memo) == ( + "2", + "B62qa", + "B62qa", + "B62qb", + "E4Y", + ) + # The dictionary keys of earlier versions still work. + assert (c["from"], c["to"], c["nonce"]) == ("B62qa", "B62qb", "2") + assert c.get("hash") == "5J" + assert c.get("memo", "none") == "none" + with pytest.raises(KeyError): + c["memo"] + + route = _mock( + { + "pooledZkappCommands": [ + _zkapp_json(None, [{"index": "1", "failures": ["Invalid_fee_excess"]}]) + ] + } + ) + (z,) = client.get_pooled_zkapp_commands("B62qpayer") + assert _sent(route)["variables"] == {"publicKey": "B62qpayer"} + assert z.fee_payer.fee == Currency.from_nanomina(100) + assert (z.fee_payer.nonce, z.fee_payer.valid_until) == (7, None) + assert z.failure_reason == [ZkappFailure(index=1, failures=["Invalid_fee_excess"])] + + +@respx.mock +def test_send_payment_with_and_without_signature(client): + route = _mock( + { + "sendPayment": { + "payment": { + "id": "Cmd", + "hash": "5J", + "kind": "PAYMENT", + "nonce": "3", + "source": {"publicKey": "B62qa"}, + "receiver": {"publicKey": "B62qb"}, + "amount": "1000", + "fee": "10", + "memo": "E4Y", + } + } + } + ) + amount, fee = Currency.from_nanomina(1000), Currency.from_nanomina(10) + r = client.send_payment("B62qa", "B62qb", amount, fee) + assert _sent(route)["variables"]["signature"] is None + assert (r.nonce, r.kind, r.source, r.receiver, r.amount, r.fee) == ( + 3, + "PAYMENT", + "B62qa", + "B62qb", + amount, + fee, + ) + client.send_payment("B62qa", "B62qb", amount, fee, signature=SignatureInput("1", "2")) + assert _sent(route)["variables"]["signature"] == {"field": "1", "scalar": "2"} + + route = _mock( + { + "sendDelegation": { + "delegation": {"id": "Del", "hash": "5Jd", "nonce": "4", "amount": None} + } + } + ) + d = client.send_delegation("B62qa", "B62qbp", fee) + assert "signature" in _sent(route)["variables"] + assert (d.nonce, d.amount) == (4, None) + + +@respx.mock +def test_send_zkapp_and_unlock_account(client): + route = _mock({"sendZkapp": {"zkapp": _zkapp_json("99", None)}}) + command = {"feePayer": {}, "accountUpdates": [], "memo": ""} + z = client.send_zkapp(command) + assert _sent(route)["variables"] == {"input": {"zkappCommand": command}} + assert z.fee_payer.valid_until == 99 + assert z.failure_reason is None + + route = _mock({"unlockAccount": {"publicKey": "B62qacc"}}) + assert client.unlock_account("B62qacc", "pw") == "B62qacc" + assert _sent(route)["variables"] == {"input": {"publicKey": "B62qacc", "password": "pw"}} + + +@respx.mock +def test_transaction_status_and_small_queries(client): + route = _mock({"transactionStatus": "INCLUDED"}) + assert client.get_transaction_status(zkapp_transaction="5Jz") == TransactionStatus.INCLUDED + assert _sent(route)["variables"] == {"payment": None, "zkappTransaction": "5Jz"} + assert client.get_transaction_status(payment="Cmd") == "INCLUDED" + with pytest.raises(ValueError): + client.get_transaction_status() + + _mock( + { + "genesisConstants": { + "genesisTimestamp": "2024-01-01T00:00:00Z", + "coinbase": "720000000000", + "accountCreationFee": "1000000000", + } + } + ) + g = client.get_genesis_constants() + assert g.coinbase == Currency.from_nanomina(720000000000) + assert g.account_creation_fee == Currency.from_nanomina(1000000000) + + _mock({"trackedAccounts": [{"publicKey": "B62qt", "balance": {"total": "42"}}]}) + (t,) = client.get_tracked_accounts() + assert (t.public_key, t.balance) == ("B62qt", Currency.from_nanomina(42)) + + _mock({"snarkPool": [{"fee": "10", "prover": "B62qp", "workIds": [3, "4"]}]}) + (w,) = client.get_snark_pool() + assert (w.prover, w.fee, w.work_ids) == ("B62qp", Currency.from_nanomina(10), [3, 4]) + + _mock({"fork_config": {"proof": {"fork": None}}}) + assert client.get_fork_config() == {"proof": {"fork": None}} diff --git a/tests/test_integration.py b/tests/test_integration.py index c537654..f1ef33d 100644 --- a/tests/test_integration.py +++ b/tests/test_integration.py @@ -24,7 +24,7 @@ import pytest -from mina_sdk import Currency, MinaDaemonClient +from mina_sdk import Currency, GraphQLError, MinaDaemonClient GRAPHQL_URI = os.environ.get("MINA_GRAPHQL_URI", "") SENDER_KEY = os.environ.get("MINA_TEST_SENDER_KEY", "") @@ -173,5 +173,52 @@ def test_payment_appears_in_pool(self, synced_client): # Give the pool a moment to accept it time.sleep(2) cmds = synced_client.get_pooled_user_commands(SENDER_KEY) - hashes = [cmd.get("hash") for cmd in cmds] + hashes = [cmd.hash for cmd in cmds] assert result.hash in hashes, f"Transaction {result.hash} not found in pool" + + +# -- Common API (spec/SPEC.md) -- + + +@skip_no_daemon +def test_daemon_metrics(synced_client): + metrics = synced_client.get_daemon_metrics() + assert metrics.transaction_pool_size >= 0 + + +@skip_no_daemon +def test_genesis_block_and_block_lookups(synced_client): + genesis = synced_client.get_genesis_block() + assert genesis.state_hash + assert genesis.staking_epoch is not None + assert genesis.staking_epoch.ledger_hash + + # The best tip is in the transition frontier, so it can be read back by + # state hash and by height. The daemon does not find the frontier's root + # by height, so wait until the tip is above the root of a new chain + # (height 1). + tip = synced_client.get_best_chain(max_length=1)[0] + for _ in range(60): + if tip.height > 1: + break + time.sleep(5) + tip = synced_client.get_best_chain(max_length=1)[0] + assert tip.height > 1, "no block after the genesis block" + by_hash = synced_client.get_block(state_hash=tip.state_hash) + assert (by_hash.height, by_hash.previous_state_hash) == (tip.height, tip.previous_state_hash) + assert synced_client.get_block(height=tip.height).state_hash == tip.state_hash + + +@skip_no_daemon +def test_genesis_constants_and_pools(synced_client): + assert synced_client.get_genesis_constants().genesis_timestamp + synced_client.get_snark_pool() + synced_client.get_pooled_zkapp_commands() + synced_client.get_tracked_accounts() + + +@skip_no_daemon +def test_transaction_status_of_an_unknown_payment(synced_client): + # An ID that does not decode is a GraphQL error, not a transport one. + with pytest.raises(GraphQLError): + synced_client.get_transaction_status(payment="not-an-id") diff --git a/tests/test_spec.py b/tests/test_spec.py new file mode 100644 index 0000000..cb1f267 --- /dev/null +++ b/tests/test_spec.py @@ -0,0 +1,68 @@ +"""Conformance to the specification in spec/ (a copy of o1-labs/mina-sdk-spec +at the tag in spec/VERSION): the query strings of mina_sdk.daemon.queries are +exactly the documents of spec/operations.graphql, up to white space, and every +document has one. mina-sdk-spec's CI validates the documents against the +daemon's schema. +""" + +from __future__ import annotations + +import re +from pathlib import Path + +from mina_sdk.daemon import queries + +ROOT = Path(__file__).resolve().parent.parent + + +def _tokenize(doc: str) -> list[str]: + return re.findall(r"[A-Za-z0-9_$]+|[(){}:!,\[\]]", re.sub(r"#[^\n]*", "", doc)) + + +def _operations(doc: str) -> dict[str, list[str]]: + """The operations of a document, by name, as tokens.""" + toks = _tokenize(doc) + ops: dict[str, list[str]] = {} + i = 0 + while i < len(toks): + name, start = toks[i + 1], i + depth, seen_body = 0, False + while True: + if toks[i] == "{": + depth += 1 + seen_body = True + elif toks[i] == "}": + depth -= 1 + i += 1 + if seen_body and depth == 0: + break + assert name not in ops, f"operation {name} twice" + ops[name] = toks[start:i] + return ops + + +def _assert_documents_are_the_spec(spec_file: str, documents: list[str]) -> None: + spec = _operations((ROOT / spec_file).read_text()) + covered = [] + for doc in documents: + ops = _operations(doc) + assert len(ops) == 1, f"one named operation per query string:\n{doc}" + ((name, toks),) = ops.items() + assert name in spec, f"{name} is not in {spec_file}" + assert toks == spec[name], f"{name} differs from {spec_file}" + covered.append(name) + assert sorted(covered) == sorted(spec), f"every operation of {spec_file} has one query string" + + +def test_daemon_queries_are_the_spec_documents(): + _assert_documents_are_the_spec("spec/operations.graphql", queries.ALL_DOCUMENTS) + + +def test_checker_catches_a_changed_document(): + changed = [d.replace("workIds", "workIdz") for d in queries.ALL_DOCUMENTS] + try: + _assert_documents_are_the_spec("spec/operations.graphql", changed) + except AssertionError as e: + assert "SnarkPool differs" in str(e) + else: + raise AssertionError("a changed document was not found")