{
    "buildInfo": {
        "rustc": {
            "version": "1.94.1",
            "commitHash": "e408947bfd200af42db322daf0fadfe7e26d3bd1",
            "commitDate": "2026-03-25",
            "channel": "Stable",
            "host": "x86_64-pc-windows-msvc",
            "short": "rustc 1.94.1 (e408947bf 2026-03-25)",
            "llvmVersion": "21.1"
        },
        "contractCrate": {
            "name": "corelayer",
            "version": "1.0.0"
        },
        "framework": {
            "name": "multiversx-sc",
            "version": "0.66.2"
        }
    },
    "name": "CoRelayer",
    "constructor": {
        "docs": [
            "Deployed PAUSED. No sync call happens here: the deep venue validation is",
            "`setSwapVenue`, which the launch script must run before the first deposit",
            "(`venue_validated` gates deposits). Arguments come from",
            "`deploy/networks.json` and from nowhere else (D-018)."
        ],
        "inputs": [
            {
                "name": "chain_id",
                "type": "bytes"
            },
            {
                "name": "usdc_token_id",
                "type": "TokenIdentifier"
            },
            {
                "name": "wegld_token_id",
                "type": "TokenIdentifier"
            },
            {
                "name": "pair_address",
                "type": "Address"
            },
            {
                "name": "wrapper_address",
                "type": "Address"
            },
            {
                "name": "initial_tariff",
                "type": "u64"
            },
            {
                "name": "ru_schedule_hash",
                "type": "array32<u8>"
            }
        ],
        "outputs": []
    },
    "upgradeConstructor": {
        "docs": [
            "No arguments, ever. Requires ALL FOUR money scopes paused (K-19): `paused`",
            "alone does not stop `renew*`, `settleUsage` or `try_distribute`, which",
            "would otherwise run on unverified code from the first block after the",
            "upgrade. The contract STAYS paused in all four scopes; the owner unpauses",
            "scope by scope after the post-upgrade verification.",
            "",
            "The owner check is written out rather than declared with `#[only_owner]`:",
            "the derive macro applies that attribute to `#[endpoint]` methods only and",
            "drops it silently on `#[upgrade]`. It is defence in depth",
            "(SPEC-DEVIATIONS DEV-03) — the protocol already refuses an",
            "`upgradeContract` transaction from anyone but the contract owner — but",
            "INV-K7 names `upgrade` as owner-only, and a guard that lives outside the",
            "code cannot be asserted by a test."
        ],
        "inputs": [],
        "outputs": []
    },
    "endpoints": [
        {
            "docs": [
                "Owner, immediate. Clears ANY pending reporter, due or not: a rotated-out",
                "operator leaves nothing behind, and a reporter scheduled by a stolen",
                "operator key is dropped even if the owner reacts after the delay."
            ],
            "name": "setOperator",
            "rustMethodName": "set_operator",
            "onlyOwner": true,
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "operator",
                    "type": "Address"
                }
            ],
            "outputs": []
        },
        {
            "docs": [
                "Owner: immediate. Operator: effective after `REPORTER_CHANGE_DELAY_MS`",
                "(K-20); the operator's instant incident tool is `pauseSettlement()`."
            ],
            "name": "setReporter",
            "rustMethodName": "set_reporter",
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "reporter",
                    "type": "Address"
                }
            ],
            "outputs": []
        },
        {
            "docs": [
                "Owner. EVERY change, including the first, waits `ROLE_CHANGE_NOTICE_MS`;",
                "one pending slot, last call wins and restarts the notice."
            ],
            "name": "setTreasury",
            "rustMethodName": "set_treasury",
            "onlyOwner": true,
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "treasury",
                    "type": "Address"
                }
            ],
            "outputs": []
        },
        {
            "docs": [
                "Owner. A DUE pending treasury is already in force, so it is materialised",
                "first and can no longer be cancelled; cancelling it would be an instant",
                "treasury change that bypasses the notice."
            ],
            "name": "cancelPendingTreasury",
            "rustMethodName": "cancel_pending_treasury",
            "onlyOwner": true,
            "mutability": "mutable",
            "inputs": [],
            "outputs": []
        },
        {
            "docs": [
                "Owner. Published pointer only — the contract never transfers to it; the",
                "signer takes its only non-relayer destination from here."
            ],
            "name": "setRelayerReserve",
            "rustMethodName": "set_relayer_reserve",
            "onlyOwner": true,
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "reserve",
                    "type": "Address"
                }
            ],
            "outputs": []
        },
        {
            "name": "pause",
            "rustMethodName": "pause_endpoint",
            "mutability": "mutable",
            "inputs": [],
            "outputs": []
        },
        {
            "name": "pauseDeposits",
            "rustMethodName": "pause_deposits",
            "mutability": "mutable",
            "inputs": [],
            "outputs": []
        },
        {
            "name": "pauseSettlement",
            "rustMethodName": "pause_settlement",
            "mutability": "mutable",
            "inputs": [],
            "outputs": []
        },
        {
            "name": "pauseDistribution",
            "rustMethodName": "pause_distribution",
            "mutability": "mutable",
            "inputs": [],
            "outputs": []
        },
        {
            "name": "pauseRenewals",
            "rustMethodName": "pause_renewals",
            "mutability": "mutable",
            "inputs": [],
            "outputs": []
        },
        {
            "name": "unpause",
            "rustMethodName": "unpause_endpoint",
            "onlyOwner": true,
            "mutability": "mutable",
            "inputs": [],
            "outputs": []
        },
        {
            "name": "unpauseDeposits",
            "rustMethodName": "unpause_deposits",
            "onlyOwner": true,
            "mutability": "mutable",
            "inputs": [],
            "outputs": []
        },
        {
            "name": "unpauseSettlement",
            "rustMethodName": "unpause_settlement",
            "onlyOwner": true,
            "mutability": "mutable",
            "inputs": [],
            "outputs": []
        },
        {
            "name": "unpauseDistribution",
            "rustMethodName": "unpause_distribution",
            "onlyOwner": true,
            "mutability": "mutable",
            "inputs": [],
            "outputs": []
        },
        {
            "name": "unpauseRenewals",
            "rustMethodName": "unpause_renewals",
            "onlyOwner": true,
            "mutability": "mutable",
            "inputs": [],
            "outputs": []
        },
        {
            "name": "setTariff",
            "rustMethodName": "set_tariff",
            "onlyOwner": true,
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "new_tariff",
                    "type": "u64"
                }
            ],
            "outputs": []
        },
        {
            "docs": [
                "A DUE pending value is materialised first and can no longer be cancelled."
            ],
            "name": "cancelPendingTariff",
            "rustMethodName": "cancel_pending_tariff",
            "onlyOwner": true,
            "mutability": "mutable",
            "inputs": [],
            "outputs": []
        },
        {
            "docs": [
                "Deep validation by read-only sync calls, reduced to what a plain swap",
                "needs: the pair trades exactly {usdc, wegld} and the wrapper unwraps",
                "exactly `wegld`. The pair need NOT be Active (it may be set during a",
                "pause). Requires `paused || depositsPaused`, so a venue switch is always",
                "followed by a canary. Token decimals cannot be read on-chain; the deploy",
                "script asserts `decimals == 6`."
            ],
            "name": "setSwapVenue",
            "rustMethodName": "set_swap_venue",
            "onlyOwner": true,
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "pair",
                    "type": "Address"
                },
                {
                    "name": "wrapper",
                    "type": "Address"
                },
                {
                    "name": "usdc",
                    "type": "TokenIdentifier"
                },
                {
                    "name": "wegld",
                    "type": "TokenIdentifier"
                }
            ],
            "outputs": []
        },
        {
            "name": "setMinDeposit",
            "rustMethodName": "set_min_deposit",
            "onlyOwner": true,
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "value",
                    "type": "u64"
                }
            ],
            "outputs": []
        },
        {
            "docs": [
                "0 = unlimited (D-105). Resets the swap window cells, so a new limit",
                "starts with a fresh window."
            ],
            "name": "setMaxDeposit",
            "rustMethodName": "set_max_deposit",
            "onlyOwner": true,
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "value",
                    "type": "u64"
                }
            ],
            "outputs": []
        },
        {
            "docs": [
                "Affects only plan blocks written afterwards: blocks snapshot the numbers."
            ],
            "name": "setRateClass",
            "rustMethodName": "set_rate_class",
            "onlyOwner": true,
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "class",
                    "type": "u8"
                },
                {
                    "name": "max_ru_per_s",
                    "type": "u32"
                },
                {
                    "name": "burst_ru",
                    "type": "u32"
                }
            ],
            "outputs": []
        },
        {
            "docs": [
                "ALWAYS effective after `RU_SCHEDULE_NOTICE_MS`; one pending slot, last",
                "call wins and restarts the notice."
            ],
            "name": "setRuSchedule",
            "rustMethodName": "set_ru_schedule",
            "onlyOwner": true,
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "version",
                    "type": "u32"
                },
                {
                    "name": "hash",
                    "type": "array32<u8>"
                }
            ],
            "outputs": []
        },
        {
            "docs": [
                "A DUE pending schedule is materialised first and can no longer be cancelled."
            ],
            "name": "cancelPendingRuSchedule",
            "rustMethodName": "cancel_pending_ru_schedule",
            "onlyOwner": true,
            "mutability": "mutable",
            "inputs": [],
            "outputs": []
        },
        {
            "docs": [
                "Creates or overwrites a DRAFT. `version`, `status` and `created_ms`",
                "supplied by the caller are overwritten."
            ],
            "name": "setTier",
            "rustMethodName": "set_tier",
            "onlyOwner": true,
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "tier",
                    "type": "TierV1"
                }
            ],
            "outputs": []
        },
        {
            "docs": [
                "`Draft -> Active`. Invariants are re-checked; the rate class must exist",
                "because every plan block snapshots its numbers (K-09)."
            ],
            "name": "activateTier",
            "rustMethodName": "activate_tier",
            "onlyOwner": true,
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "tier_id",
                    "type": "u32"
                }
            ],
            "outputs": []
        },
        {
            "name": "setTierStatus",
            "rustMethodName": "set_tier_status",
            "onlyOwner": true,
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "tier_id",
                    "type": "u32"
                },
                {
                    "name": "status",
                    "type": "TierStatus"
                },
                {
                    "name": "successor_tier_id",
                    "type": "u32"
                }
            ],
            "outputs": []
        },
        {
            "name": "addCustomBuyer",
            "rustMethodName": "add_custom_buyer",
            "onlyOwner": true,
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "tier_id",
                    "type": "u32"
                },
                {
                    "name": "address",
                    "type": "Address"
                }
            ],
            "outputs": []
        },
        {
            "name": "removeCustomBuyer",
            "rustMethodName": "remove_custom_buyer",
            "onlyOwner": true,
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "tier_id",
                    "type": "u32"
                },
                {
                    "name": "address",
                    "type": "Address"
                }
            ],
            "outputs": []
        },
        {
            "name": "subscribe",
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "tier_id",
                    "type": "u32"
                },
                {
                    "name": "months",
                    "type": "u8"
                },
                {
                    "name": "max_price",
                    "type": "u64"
                },
                {
                    "name": "reference",
                    "type": "optional<bytes>",
                    "multi_arg": true
                }
            ],
            "outputs": []
        },
        {
            "docs": [
                "Permissionless, idempotent, never paused, never reverts for a business",
                "reason. An unknown account answers `NoAccount` instead of reverting."
            ],
            "name": "renew",
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "account",
                    "type": "Address"
                }
            ],
            "outputs": [
                {
                    "type": "RenewOutcome"
                }
            ]
        },
        {
            "docs": [
                "The same, per address, independently. An EMPTY batch is a no-op rather",
                "than a revert: this endpoint is relayed at our own cost.",
                "",
                "`Totals` is read ONCE before the loop and written at most ONCE after it,",
                "the §4.1 cache pattern `settleUsage` already follows. Reading and writing",
                "the one global key per account cost a 50-account batch up to 50 loads and",
                "50 stores (~6.6 M gas at the `02 §6` schedule) that the §13.2 budget does",
                "not carry, and `renewMany` is an INTERNAL free-relay call whose declared",
                "`gasLimit` C-13 caps at 1.5 × the measured figure."
            ],
            "name": "renewMany",
            "rustMethodName": "renew_many",
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "accounts",
                    "type": "variadic<Address>",
                    "multi_arg": true
                }
            ],
            "outputs": [
                {
                    "type": "variadic<RenewOutcome>",
                    "multi_result": true
                }
            ]
        },
        {
            "docs": [
                "Sets the flag and the two guards; it does NOT renew (S §4). Zero never",
                "means \"unlimited\": an autonomous buyer must state its ceiling."
            ],
            "name": "setAutoRenew",
            "rustMethodName": "set_auto_renew",
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "enabled",
                    "type": "bool"
                },
                {
                    "name": "renew_tier_id",
                    "type": "u32"
                },
                {
                    "name": "max_renew_price",
                    "type": "u64"
                }
            ],
            "outputs": []
        },
        {
            "docs": [
                "Four arguments, exactly (K-04): a client that encodes three gets an",
                "argument-decode revert that OUR relayer pays for on the free flow.",
                "",
                "`enabled = false` never releases escrow — it only starts the close.",
                "Disabling twice keeps the FIRST `payg_disabled_at_ms`, so the 1 h and",
                "7 d clocks cannot be restarted by spamming the free call.",
                "",
                "**Split gate** (SPEC-DEVIATIONS DEV-17): turning PAYG ON is subject to",
                "`paused` (`Gate::All`), turning it OFF is not (`Gate::Open`). `setPayg`",
                "is the ONLY way to raise `ACC_FLAG_PAYG_CLOSING` and start the 1 h / 7 d",
                "clocks, and `releaseEscrow` is deliberately never paused so that \"a dead",
                "or hostile reporter can never lock user funds\". With one `Gate::All` for",
                "both directions the operator's warm `pause()` key froze every",
                "`payg_escrow` in the system indefinitely while `settleUsage`",
                "(`Gate::Settlement`) kept debiting it. Closing takes no fee, needs no",
                "venue and only ever moves the account towards release, so it cannot be",
                "used to bypass a pause."
            ],
            "name": "setPayg",
            "rustMethodName": "set_payg",
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "enabled",
                    "type": "bool"
                },
                {
                    "name": "budget",
                    "type": "u64"
                },
                {
                    "name": "auto_topup",
                    "type": "bool"
                },
                {
                    "name": "max_payg_price",
                    "type": "u64"
                }
            ],
            "outputs": []
        },
        {
            "docs": [
                "The fallback release (S §5.3 case 2): permissionless, never paused, and",
                "it can only move the account's OWN escrow into its OWN credits, once per",
                "PAYG close. The normal path is the reporter's closing line.",
                "",
                "An address with no record answers `ERR_RELEASE_NOT_DUE`, not",
                "`ERR_NO_ACCOUNT`: §12.3 gives this endpoint exactly two preconditions and",
                "§12.1's \"the record must exist\" rule is for endpoints whose CALLER is the",
                "account. A permissionless sweeper walking a list of addresses must read",
                "\"nothing to release\" for an unknown one, not a billing failure.",
                "",
                "The lazy block roll runs first, exactly as `setPayg` does, so the",
                "`period_id` of the emitted `escrowMoved` is the period `now` really falls",
                "in and not the last id of a block that already ended."
            ],
            "name": "releaseEscrow",
            "rustMethodName": "release_escrow",
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "account",
                    "type": "Address"
                }
            ],
            "outputs": []
        },
        {
            "name": "settleUsage",
            "rustMethodName": "settle_usage",
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "batch_id",
                    "type": "u64"
                },
                {
                    "name": "window_end_ms",
                    "type": "u64"
                },
                {
                    "name": "usage_root",
                    "type": "array32<u8>"
                },
                {
                    "name": "totals",
                    "type": "BatchTotals"
                },
                {
                    "name": "lines",
                    "type": "bytes"
                }
            ],
            "outputs": []
        },
        {
            "docs": [
                "Operator or owner. K-20: the operator may only LOWER the window cap — a",
                "stolen warm key cannot turn the 50 USDC/h reporter bound into 1 000."
            ],
            "name": "setSettleCaps",
            "rustMethodName": "set_settle_caps",
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "max_settle_per_window",
                    "type": "u64"
                },
                {
                    "name": "sender_fee_ru",
                    "type": "u32"
                }
            ],
            "outputs": []
        },
        {
            "docs": [
                "Owner only: the hard ceiling the operator can never reach past."
            ],
            "name": "setSettleCeiling",
            "rustMethodName": "set_settle_ceiling",
            "onlyOwner": true,
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "ceiling",
                    "type": "u64"
                }
            ],
            "outputs": []
        },
        {
            "name": "addSenders",
            "rustMethodName": "add_senders",
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "max_fee",
                    "type": "u64"
                },
                {
                    "name": "senders",
                    "type": "variadic<Address>",
                    "multi_arg": true
                }
            ],
            "outputs": []
        },
        {
            "docs": [
                "Fee-less, and it never refunds: the slot was paid for when it was taken.",
                "",
                "**Never blocked by `paused`** (`Gate::Open`, SPEC-DEVIATIONS DEV-17).",
                "This is \"the payer's only defence against a compromised sender key\", and",
                "`isAuthorizedSender` — which the relay backend reads to decide whether to",
                "keep serving that key — is a view and is never paused either. Leaving it",
                "under `Gate::All` meant the operator's warm `pause()` key kept a stolen",
                "sender key authorised and burning the customer's quota until the cold",
                "owner key could unpause. It takes no fee and only ever REMOVES state, so",
                "it cannot be used to bypass a pause."
            ],
            "name": "removeSenders",
            "rustMethodName": "remove_senders",
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "senders",
                    "type": "variadic<Address>",
                    "multi_arg": true
                }
            ],
            "outputs": []
        },
        {
            "name": "grantCredits",
            "rustMethodName": "grant_credits",
            "onlyOwner": true,
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "account",
                    "type": "Address"
                },
                {
                    "name": "amount",
                    "type": "u64"
                },
                {
                    "name": "reason",
                    "type": "GrantReason"
                }
            ],
            "outputs": []
        },
        {
            "docs": [
                "Creates the account when it is missing, so a trial can be granted to an",
                "address that has never deposited. Grants are independent of plan blocks",
                "and of credits: they are RU, consumed by the backend before cap and",
                "PAYG, and they vanish at expiry."
            ],
            "name": "grantRu",
            "rustMethodName": "grant_ru",
            "onlyOwner": true,
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "account",
                    "type": "Address"
                },
                {
                    "name": "ru",
                    "type": "u64"
                },
                {
                    "name": "duration_ms",
                    "type": "u64"
                },
                {
                    "name": "reason",
                    "type": "GrantReason"
                }
            ],
            "outputs": []
        },
        {
            "docs": [
                "Registers cold rows with weight 0. `operator_id` and `sla_class` are the",
                "forward hooks of `08 §6.2`; v1 accepts only `OPERATOR_ID_CORELAYER`.",
                "",
                "The shard is COMPUTED here, never supplied, and smart-contract addresses",
                "are refused — a wallet can always receive EGLD, which removes the only",
                "path on which a push could bounce."
            ],
            "name": "addRelayers",
            "rustMethodName": "add_relayers",
            "onlyOwner": true,
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "operator_id",
                    "type": "u32"
                },
                {
                    "name": "sla_class",
                    "type": "u8"
                },
                {
                    "name": "addresses",
                    "type": "variadic<Address>",
                    "multi_arg": true
                }
            ],
            "outputs": []
        },
        {
            "docs": [
                "`Registered -> Active` and `Draining -> Active` (false alarm or planned",
                "maintenance). Pushes start with the very next distribution."
            ],
            "name": "activateRelayers",
            "rustMethodName": "activate_relayers",
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "entries",
                    "type": "variadic<multi<Address,u32>>",
                    "multi_arg": true
                }
            ],
            "outputs": []
        },
        {
            "docs": [
                "`Active -> Draining`: weight 0 and out of `activeSet` in the SAME",
                "transaction, so the very next payment no longer pays it. Deliberately",
                "unguarded — no share bound, no last-in-shard check — because an incident",
                "must never be blocked by a bound."
            ],
            "name": "drainRelayers",
            "rustMethodName": "drain_relayers",
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "addresses",
                    "type": "variadic<Address>",
                    "multi_arg": true
                }
            ],
            "outputs": []
        },
        {
            "docs": [
                "`Draining -> Retired` after `MIN_DRAIN_MS`, or `Registered -> Retired`",
                "immediately (a spare whose cold key is lost or suspect). Terminal, and",
                "the tombstone is permanent."
            ],
            "name": "retireRelayers",
            "rustMethodName": "retire_relayers",
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "addresses",
                    "type": "variadic<Address>",
                    "multi_arg": true
                }
            ],
            "outputs": []
        },
        {
            "docs": [
                "Frees registry capacity 30 days after retirement. The tombstone and the",
                "events remain, so the address stays permanently unregisterable."
            ],
            "name": "removeRelayers",
            "rustMethodName": "remove_relayers",
            "onlyOwner": true,
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "addresses",
                    "type": "variadic<Address>",
                    "multi_arg": true
                }
            ],
            "outputs": []
        },
        {
            "docs": [
                "Active rows only. One `relayerWeightsChanged` event per CALL, never one",
                "per relayer, and one `activeSet` store per call."
            ],
            "name": "setRelayerWeights",
            "rustMethodName": "set_relayer_weights",
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "entries",
                    "type": "variadic<multi<Address,u32>>",
                    "multi_arg": true
                }
            ],
            "outputs": []
        },
        {
            "docs": [
                "Forward hook only (`08 §6.2`): neither field is read by v1 logic beyond",
                "the `operator_id == 1` rule."
            ],
            "name": "setRelayerMeta",
            "rustMethodName": "set_relayer_meta",
            "onlyOwner": true,
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "address",
                    "type": "Address"
                },
                {
                    "name": "operator_id",
                    "type": "u32"
                },
                {
                    "name": "sla_class",
                    "type": "u8"
                }
            ],
            "outputs": []
        },
        {
            "docs": [
                "Permissionless (\"no keeper\" purity): anyone may flush once the gates",
                "pass. A call by the owner or the operator is FORCED and bypasses the",
                "gates — used after a weight change, after draining a compromised relayer,",
                "or to empty the pool before an upgrade. Never reverts when the gates are",
                "closed; it returns `false`."
            ],
            "name": "distributeRelayerPool",
            "rustMethodName": "distribute_relayer_pool",
            "mutability": "mutable",
            "inputs": [],
            "outputs": [
                {
                    "type": "bool"
                }
            ]
        },
        {
            "docs": [
                "Operator or owner. The bounds exist so that a stolen operator key can",
                "delay pushes by at most 7 days / 100 EGLD and never stop them: the owner,",
                "or any caller once the gates pass, can still flush."
            ],
            "name": "setDistributionParams",
            "rustMethodName": "set_distribution_params",
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "min_interval_ms",
                    "type": "u64"
                },
                {
                    "name": "min_amount",
                    "type": "BigUint"
                }
            ],
            "outputs": []
        },
        {
            "docs": [
                "Owner only. Documented footgun (distribution.md §6.2): a value below",
                "`10 000 / n_active` makes every activate and re-weight call revert with",
                "`ERR_SHARE_BOUND` until it is raised again. Draining always keeps",
                "working, so the fleet can still be stopped during an incident.",
                "The change is announced with `maxRelayerShareBpsChanged` and the value is",
                "also readable through `getDistributionState` (SPEC-DEVIATIONS DEV-21):",
                "the admin `tx/prepare` step recomputes the bound off-chain before the",
                "owner signs an activate or a re-weight, and a value that only lives in a",
                "raw storage key is invisible to an event-driven mirror."
            ],
            "name": "setMaxRelayerShareBps",
            "rustMethodName": "set_max_relayer_share_bps",
            "onlyOwner": true,
            "mutability": "mutable",
            "inputs": [
                {
                    "name": "bps",
                    "type": "u32"
                }
            ],
            "outputs": []
        },
        {
            "docs": [
                "Owner only, only while the WHOLE contract is paused AND distribution is",
                "paused, destination is the treasury and nothing else. In launch mode the",
                "pool holds only atto-dust, so this surface is ≈ 0; it becomes relevant",
                "only if batching is ever switched on. Disclosed in the docs.",
                "",
                "**Why `distributionPaused` is required too** (SPEC-DEVIATIONS DEV-16):",
                "`distributeRelayerPool` is permissionless and runs under `Gate::Open`, so",
                "`paused` alone does not stop it. With the launch parameters",
                "(`min_interval_ms = 0`, `min_amount = 0`) a watcher of the mempool could",
                "front-run the rescue with a full permissionless push and make it revert",
                "on `pool > 0`. Requiring `distributionPaused` means the rescue is only",
                "ever reachable from a state in which `try_distribute` is already a",
                "no-op, so the two can never race."
            ],
            "name": "emergencyWithdrawPool",
            "rustMethodName": "emergency_withdraw_pool",
            "onlyOwner": true,
            "mutability": "mutable",
            "inputs": [],
            "outputs": []
        },
        {
            "docs": [
                "Credits the caller's own account. Callable by anyone, smart contracts",
                "included (C-11)."
            ],
            "name": "deposit",
            "mutability": "mutable",
            "payableInTokens": [
                "*"
            ],
            "inputs": [],
            "outputs": []
        },
        {
            "docs": [
                "Credits somebody else's account. The payer gets NO rights on the",
                "beneficiary's account: it is a payment, not a delegation.",
                "",
                "The beneficiary guard is evaluated INSIDE `run_deposit`, as §8.2 step 7,",
                "so the step-1 re-entrancy check and the step-2 pause / venue checks are",
                "answered first: a re-entrant or paused call must say `ERR_REENTRANCY` /",
                "`ERR_PAUSED`, never an argument error that looks like client noise."
            ],
            "name": "depositFor",
            "rustMethodName": "deposit_for",
            "mutability": "mutable",
            "payableInTokens": [
                "*"
            ],
            "inputs": [
                {
                    "name": "beneficiary",
                    "type": "Address"
                }
            ],
            "outputs": []
        },
        {
            "docs": [
                "Deposit, then EXACTLY the `subscribe` logic of §12.2 on the caller's own",
                "account — never `try_renew` (K-17). A failing price, credit, tier or",
                "queue check reverts the whole call BEFORE the swap, so a doomed purchase",
                "burns little gas of our relayer and the payer keeps the USDC."
            ],
            "name": "depositAndSubscribe",
            "rustMethodName": "deposit_and_subscribe",
            "mutability": "mutable",
            "payableInTokens": [
                "*"
            ],
            "inputs": [
                {
                    "name": "tier_id",
                    "type": "u32"
                },
                {
                    "name": "months",
                    "type": "u8"
                },
                {
                    "name": "max_price",
                    "type": "u64"
                },
                {
                    "name": "reference",
                    "type": "optional<bytes>",
                    "multi_arg": true
                }
            ],
            "outputs": []
        },
        {
            "name": "getConfig",
            "rustMethodName": "get_config",
            "mutability": "readonly",
            "inputs": [],
            "outputs": [
                {
                    "type": "ConfigView"
                }
            ]
        },
        {
            "name": "getPauseState",
            "rustMethodName": "get_pause_state",
            "mutability": "readonly",
            "inputs": [],
            "outputs": [
                {
                    "type": "PauseStateView"
                }
            ]
        },
        {
            "docs": [
                "Effective reserve address (lazy activation); zero while never set."
            ],
            "name": "getRelayerReserve",
            "rustMethodName": "get_relayer_reserve",
            "mutability": "readonly",
            "inputs": [
                {
                    "name": "at_ms",
                    "type": "optional<u64>",
                    "multi_arg": true
                }
            ],
            "outputs": [
                {
                    "type": "Address"
                }
            ]
        },
        {
            "docs": [
                "`(max_deposit, used_in_window, window_end_ms)`; `(0, 0, 0)` when unlimited.",
                "",
                "The bucket SLIDES (SPEC-DEVIATIONS DEV-18), so `used_in_window` is the",
                "level after draining it to `at_ms` — exactly what a deposit at `at_ms`",
                "would measure its amount against — and `window_end_ms` is when the level",
                "reaches 0. A fully drained bucket reads as the fresh window a deposit at",
                "`at_ms` would open, which is what the previous tumbling window reported."
            ],
            "name": "getSwapBudget",
            "rustMethodName": "get_swap_budget",
            "mutability": "readonly",
            "inputs": [
                {
                    "name": "at_ms",
                    "type": "optional<u64>",
                    "multi_arg": true
                }
            ],
            "outputs": [
                {
                    "type": "u64"
                },
                {
                    "type": "u64"
                },
                {
                    "type": "u64"
                }
            ]
        },
        {
            "docs": [
                "Raw storage: `(current, pending, pending_effective_ms, version)`."
            ],
            "name": "getTariff",
            "rustMethodName": "get_tariff",
            "mutability": "readonly",
            "inputs": [],
            "outputs": [
                {
                    "type": "u64"
                },
                {
                    "type": "u64"
                },
                {
                    "type": "u64"
                },
                {
                    "type": "u32"
                }
            ]
        },
        {
            "docs": [
                "`(tariff, version)` with the lazy rule applied."
            ],
            "name": "getEffectiveTariff",
            "rustMethodName": "get_effective_tariff",
            "mutability": "readonly",
            "inputs": [
                {
                    "name": "at_ms",
                    "type": "optional<u64>",
                    "multi_arg": true
                }
            ],
            "outputs": [
                {
                    "type": "u64"
                },
                {
                    "type": "u32"
                }
            ]
        },
        {
            "name": "getTariffByVersion",
            "rustMethodName": "get_tariff_by_version",
            "mutability": "readonly",
            "inputs": [
                {
                    "name": "version",
                    "type": "u32"
                }
            ],
            "outputs": [
                {
                    "type": "TariffEntry"
                }
            ]
        },
        {
            "docs": [
                "1-based, at most `TARIFF_HISTORY_PAGE_MAX` entries per call; a range",
                "past the end is clamped."
            ],
            "name": "getTariffHistory",
            "rustMethodName": "get_tariff_history",
            "mutability": "readonly",
            "inputs": [
                {
                    "name": "from_idx",
                    "type": "u32"
                },
                {
                    "name": "count",
                    "type": "u32"
                }
            ],
            "outputs": [
                {
                    "type": "variadic<TariffEntry>",
                    "multi_result": true
                }
            ]
        },
        {
            "name": "getRuSchedule",
            "rustMethodName": "get_ru_schedule",
            "mutability": "readonly",
            "inputs": [
                {
                    "name": "at_ms",
                    "type": "optional<u64>",
                    "multi_arg": true
                }
            ],
            "outputs": [
                {
                    "type": "RuScheduleView"
                }
            ]
        },
        {
            "docs": [
                "One call for `/v1/pricing`."
            ],
            "name": "getPricingConfig",
            "rustMethodName": "get_pricing_config",
            "mutability": "readonly",
            "inputs": [
                {
                    "name": "at_ms",
                    "type": "optional<u64>",
                    "multi_arg": true
                }
            ],
            "outputs": [
                {
                    "type": "PricingConfigView"
                }
            ]
        },
        {
            "name": "getTier",
            "rustMethodName": "get_tier",
            "mutability": "readonly",
            "inputs": [
                {
                    "name": "tier_id",
                    "type": "u32"
                }
            ],
            "outputs": [
                {
                    "type": "TierV1"
                }
            ]
        },
        {
            "docs": [
                "Bounded by `MAX_TIERS`."
            ],
            "name": "getTiers",
            "rustMethodName": "get_tiers",
            "mutability": "readonly",
            "inputs": [],
            "outputs": [
                {
                    "type": "variadic<TierV1>",
                    "multi_result": true
                }
            ]
        },
        {
            "name": "getRateClass",
            "rustMethodName": "get_rate_class",
            "mutability": "readonly",
            "inputs": [
                {
                    "name": "class",
                    "type": "u8"
                }
            ],
            "outputs": [
                {
                    "type": "RateClassV1"
                }
            ]
        },
        {
            "docs": [
                "Probes the whole `u8` class space (1..=255): bounded by the key type, no",
                "index key needed."
            ],
            "name": "getRateClasses",
            "rustMethodName": "get_rate_classes",
            "mutability": "readonly",
            "inputs": [],
            "outputs": [
                {
                    "type": "List<RateClassEntry>"
                }
            ]
        },
        {
            "name": "isCustomBuyer",
            "rustMethodName": "is_custom_buyer",
            "mutability": "readonly",
            "inputs": [
                {
                    "name": "tier_id",
                    "type": "u32"
                },
                {
                    "name": "address",
                    "type": "Address"
                }
            ],
            "outputs": [
                {
                    "type": "bool"
                }
            ]
        },
        {
            "docs": [
                "micro-USDC for `months` of `tier_id` at the effective tariff. Same",
                "`months` rule as `subscribe`: 1..=12 for a period tier, 0 for a",
                "no-period tier."
            ],
            "name": "getPrice",
            "rustMethodName": "get_price",
            "mutability": "readonly",
            "inputs": [
                {
                    "name": "tier_id",
                    "type": "u32"
                },
                {
                    "name": "months",
                    "type": "u8"
                },
                {
                    "name": "at_ms",
                    "type": "optional<u64>",
                    "multi_arg": true
                }
            ],
            "outputs": [
                {
                    "type": "u64"
                }
            ]
        },
        {
            "docs": [
                "micro-USDC per RU at the effective tariff."
            ],
            "name": "getPaygPrice",
            "rustMethodName": "get_payg_price",
            "mutability": "readonly",
            "inputs": [
                {
                    "name": "tier_id",
                    "type": "u32"
                },
                {
                    "name": "at_ms",
                    "type": "optional<u64>",
                    "multi_arg": true
                }
            ],
            "outputs": [
                {
                    "type": "u64"
                }
            ]
        },
        {
            "docs": [
                "The record after a VIRTUAL `advance` at `t = max(at_ms, created_ms)`,",
                "plus the settlement field names of S §3.1 that are derived rather than",
                "stored. Nothing is written: a view always shows what the next",
                "transaction would see."
            ],
            "name": "getAccount",
            "rustMethodName": "get_account",
            "mutability": "readonly",
            "inputs": [
                {
                    "name": "address",
                    "type": "Address"
                },
                {
                    "name": "at_ms",
                    "type": "optional<u64>",
                    "multi_arg": true
                }
            ],
            "outputs": [
                {
                    "type": "optional<AccountView>",
                    "multi_result": true
                }
            ]
        },
        {
            "docs": [
                "The reconciliation direction: id -> address plus the same view."
            ],
            "name": "getAccountById",
            "rustMethodName": "get_account_by_id",
            "mutability": "readonly",
            "inputs": [
                {
                    "name": "account_id",
                    "type": "u32"
                },
                {
                    "name": "at_ms",
                    "type": "optional<u64>",
                    "multi_arg": true
                }
            ],
            "outputs": [
                {
                    "type": "optional<multi<Address,AccountView>>",
                    "multi_result": true
                }
            ]
        },
        {
            "docs": [
                "`added_at_ms`, or 0 when the sender is not authorised by this account."
            ],
            "name": "isAuthorizedSender",
            "rustMethodName": "is_authorized_sender",
            "mutability": "readonly",
            "inputs": [
                {
                    "name": "account",
                    "type": "Address"
                },
                {
                    "name": "sender",
                    "type": "Address"
                }
            ],
            "outputs": [
                {
                    "type": "u64"
                }
            ]
        },
        {
            "docs": [
                "The settler's prediction (S §8): exactly the decision half `renew` runs,",
                "so a quote and the transaction cannot drift apart."
            ],
            "name": "quoteRenew",
            "rustMethodName": "quote_renew",
            "mutability": "readonly",
            "inputs": [
                {
                    "name": "account",
                    "type": "Address"
                },
                {
                    "name": "at_ms",
                    "type": "optional<u64>",
                    "multi_arg": true
                }
            ],
            "outputs": [
                {
                    "type": "RenewQuote"
                }
            ]
        },
        {
            "docs": [
                "The settler's pre-flight: micro-USDC per RU the contract would apply to",
                "this line, 0 when the line would be rejected. Like `settleUsage` itself",
                "it does NOT advance the plan (INV-C3)."
            ],
            "name": "quotePaygPrice",
            "rustMethodName": "quote_payg_price",
            "mutability": "readonly",
            "inputs": [
                {
                    "name": "account",
                    "type": "Address"
                },
                {
                    "name": "period_id",
                    "type": "u32"
                },
                {
                    "name": "tariff_idx",
                    "type": "u16"
                },
                {
                    "name": "at_ms",
                    "type": "optional<u64>",
                    "multi_arg": true
                }
            ],
            "outputs": [
                {
                    "type": "u64"
                }
            ]
        },
        {
            "docs": [
                "`reporter` is the EFFECTIVE address (a due pending reporter is already in",
                "force even though it has not been materialised yet), so the settler sees",
                "the same address `require_reporter` would accept."
            ],
            "name": "getSettlementState",
            "rustMethodName": "get_settlement_state",
            "mutability": "readonly",
            "inputs": [],
            "outputs": [
                {
                    "type": "SettlementStateView"
                }
            ]
        },
        {
            "docs": [
                "`(free_credits, payg_escrow)` — the tariff-down exposure check of",
                "pricing.md §3.6, read by the admin panel on the tariff form."
            ],
            "name": "getTotalOutstandingCredits",
            "rustMethodName": "get_total_outstanding_credits",
            "mutability": "readonly",
            "inputs": [],
            "outputs": [
                {
                    "type": "u64"
                },
                {
                    "type": "u64"
                }
            ]
        },
        {
            "docs": [
                "A bare `u8` with no optional argument on purpose: this is the call",
                "agents make through third-party gateways, so it must stay trivially",
                "encodable. `0` = not ours, `2` = Active = safe to sign for."
            ],
            "name": "getRelayerState",
            "rustMethodName": "get_relayer_state",
            "mutability": "readonly",
            "inputs": [
                {
                    "name": "address",
                    "type": "Address"
                }
            ],
            "outputs": [
                {
                    "type": "u8"
                }
            ]
        },
        {
            "name": "getRelayer",
            "rustMethodName": "get_relayer",
            "mutability": "readonly",
            "inputs": [
                {
                    "name": "address",
                    "type": "Address"
                }
            ],
            "outputs": [
                {
                    "type": "optional<RelayerInfo>",
                    "multi_result": true
                }
            ]
        },
        {
            "docs": [
                "`(address, shard, weight)` per active relayer, from ONE storage read."
            ],
            "name": "getActiveRelayers",
            "rustMethodName": "get_active_relayers",
            "mutability": "readonly",
            "inputs": [],
            "outputs": [
                {
                    "type": "variadic<multi<Address,u8,u32>>",
                    "multi_result": true
                }
            ]
        },
        {
            "docs": [
                "Bounded by `MAX_RELAYERS`. The two trailing optionals are positional and",
                "`255` means \"any\", so a caller can filter by state without naming a",
                "shard."
            ],
            "name": "getRelayers",
            "rustMethodName": "get_relayers",
            "mutability": "readonly",
            "inputs": [
                {
                    "name": "shard",
                    "type": "optional<u8>",
                    "multi_arg": true
                },
                {
                    "name": "state",
                    "type": "optional<u8>",
                    "multi_arg": true
                }
            ],
            "outputs": [
                {
                    "type": "variadic<RelayerRow>",
                    "multi_result": true
                }
            ],
            "allow_multiple_var_args": true
        },
        {
            "name": "getRegistryVersion",
            "rustMethodName": "get_registry_version",
            "mutability": "readonly",
            "inputs": [],
            "outputs": [
                {
                    "type": "u64"
                }
            ]
        },
        {
            "docs": [
                "`(w0, w1, w2, total)` — \"where does the 70 % go\", derived from the same",
                "single blob the push uses."
            ],
            "name": "getShardWeights",
            "rustMethodName": "get_shard_weights",
            "mutability": "readonly",
            "inputs": [],
            "outputs": [
                {
                    "type": "u64"
                },
                {
                    "type": "u64"
                },
                {
                    "type": "u64"
                },
                {
                    "type": "u64"
                }
            ]
        },
        {
            "name": "getDistributionState",
            "rustMethodName": "get_distribution_state",
            "mutability": "readonly",
            "inputs": [],
            "outputs": [
                {
                    "type": "DistributionStateView"
                }
            ]
        }
    ],
    "events": [
        {
            "identifier": "initialized",
            "inputs": [
                {
                    "name": "data",
                    "type": "InitializedData"
                }
            ]
        },
        {
            "identifier": "upgraded",
            "inputs": [
                {
                    "name": "data",
                    "type": "UpgradedData"
                }
            ]
        },
        {
            "docs": [
                "`scope` is `PauseScope` as `u8`: only 0 All, 1 Deposits, 4 Renewals appear here."
            ],
            "identifier": "pauseChanged",
            "inputs": [
                {
                    "name": "scope",
                    "type": "u8",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "PauseChangedData"
                }
            ]
        },
        {
            "identifier": "settlementPaused",
            "inputs": [
                {
                    "name": "data",
                    "type": "ByData"
                }
            ]
        },
        {
            "identifier": "settlementUnpaused",
            "inputs": [
                {
                    "name": "data",
                    "type": "ByData"
                }
            ]
        },
        {
            "identifier": "distributionPauseChanged",
            "inputs": [
                {
                    "name": "data",
                    "type": "PauseChangedData"
                }
            ]
        },
        {
            "identifier": "operatorChanged",
            "inputs": [
                {
                    "name": "data",
                    "type": "RoleChangedData"
                }
            ]
        },
        {
            "identifier": "reporterChanged",
            "inputs": [
                {
                    "name": "data",
                    "type": "RoleChangedData"
                }
            ]
        },
        {
            "identifier": "reporterScheduled",
            "inputs": [
                {
                    "name": "data",
                    "type": "ReporterScheduledData"
                }
            ]
        },
        {
            "identifier": "treasuryScheduled",
            "inputs": [
                {
                    "name": "address",
                    "type": "Address",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "EffectiveMsData"
                }
            ]
        },
        {
            "identifier": "treasuryChanged",
            "inputs": [
                {
                    "name": "address",
                    "type": "Address",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "OldAddressData"
                }
            ]
        },
        {
            "identifier": "treasuryPendingCancelled",
            "inputs": [
                {
                    "name": "address",
                    "type": "Address",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "MetaOnlyData"
                }
            ]
        },
        {
            "identifier": "relayerReserveScheduled",
            "inputs": [
                {
                    "name": "address",
                    "type": "Address",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "EffectiveMsData"
                }
            ]
        },
        {
            "identifier": "relayerReserveChanged",
            "inputs": [
                {
                    "name": "address",
                    "type": "Address",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "MetaOnlyData"
                }
            ]
        },
        {
            "identifier": "swapVenueChanged",
            "inputs": [
                {
                    "name": "data",
                    "type": "SwapVenueChangedData"
                }
            ]
        },
        {
            "identifier": "minDepositChanged",
            "inputs": [
                {
                    "name": "data",
                    "type": "U64ChangedData"
                }
            ]
        },
        {
            "identifier": "maxDepositChanged",
            "inputs": [
                {
                    "name": "data",
                    "type": "U64ChangedData"
                }
            ]
        },
        {
            "identifier": "rateClassSet",
            "inputs": [
                {
                    "name": "rate_class",
                    "type": "u8",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "RateClassSetData"
                }
            ]
        },
        {
            "identifier": "customBuyerChanged",
            "inputs": [
                {
                    "name": "tier_id",
                    "type": "u32",
                    "indexed": true
                },
                {
                    "name": "address",
                    "type": "Address",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "CustomBuyerChangedData"
                }
            ]
        },
        {
            "identifier": "tariffScheduled",
            "inputs": [
                {
                    "name": "data",
                    "type": "TariffScheduledData"
                }
            ]
        },
        {
            "identifier": "tariffActivated",
            "inputs": [
                {
                    "name": "version",
                    "type": "u32",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "TariffActivatedData"
                }
            ]
        },
        {
            "identifier": "tariffPendingCancelled",
            "inputs": [
                {
                    "name": "data",
                    "type": "TariffPendingCancelledData"
                }
            ]
        },
        {
            "identifier": "ruScheduleScheduled",
            "inputs": [
                {
                    "name": "version",
                    "type": "u32",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "RuScheduleScheduledData"
                }
            ]
        },
        {
            "identifier": "ruScheduleActivated",
            "inputs": [
                {
                    "name": "version",
                    "type": "u32",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "MetaOnlyData"
                }
            ]
        },
        {
            "identifier": "ruSchedulePendingCancelled",
            "inputs": [
                {
                    "name": "version",
                    "type": "u32",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "MetaOnlyData"
                }
            ]
        },
        {
            "identifier": "tierSaved",
            "inputs": [
                {
                    "name": "tier_id",
                    "type": "u32",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "TierSavedData"
                }
            ]
        },
        {
            "identifier": "tierActivated",
            "inputs": [
                {
                    "name": "tier_id",
                    "type": "u32",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "MetaOnlyData"
                }
            ]
        },
        {
            "identifier": "tierStatusChanged",
            "inputs": [
                {
                    "name": "tier_id",
                    "type": "u32",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "TierStatusChangedData"
                }
            ]
        },
        {
            "identifier": "deposit",
            "inputs": [
                {
                    "name": "account",
                    "type": "Address",
                    "indexed": true
                },
                {
                    "name": "payer",
                    "type": "Address",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "DepositData"
                }
            ]
        },
        {
            "identifier": "paymentSwapped",
            "inputs": [
                {
                    "name": "payer",
                    "type": "Address",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "PaymentSwappedData"
                }
            ]
        },
        {
            "docs": [
                "`period_id` is the `first_period_id` of the block."
            ],
            "identifier": "subscribed",
            "inputs": [
                {
                    "name": "account",
                    "type": "Address",
                    "indexed": true
                },
                {
                    "name": "tier_id",
                    "type": "u32",
                    "indexed": true
                },
                {
                    "name": "period_id",
                    "type": "u32",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "SubscribedData"
                }
            ]
        },
        {
            "identifier": "renewed",
            "inputs": [
                {
                    "name": "account",
                    "type": "Address",
                    "indexed": true
                },
                {
                    "name": "tier_id",
                    "type": "u32",
                    "indexed": true
                },
                {
                    "name": "period_id",
                    "type": "u32",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "RenewedData"
                }
            ]
        },
        {
            "docs": [
                "`reason` is `SkipReason` as `u8`."
            ],
            "identifier": "autoRenewSkipped",
            "inputs": [
                {
                    "name": "account",
                    "type": "Address",
                    "indexed": true
                },
                {
                    "name": "reason",
                    "type": "u8",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "AutoRenewSkippedData"
                }
            ]
        },
        {
            "identifier": "autoRenewSet",
            "inputs": [
                {
                    "name": "account",
                    "type": "Address",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "AutoRenewSetData"
                }
            ]
        },
        {
            "identifier": "paygSet",
            "inputs": [
                {
                    "name": "account",
                    "type": "Address",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "PaygSetData"
                }
            ]
        },
        {
            "docs": [
                "`cause` is `EscrowCause` as `u8`."
            ],
            "identifier": "escrowMoved",
            "inputs": [
                {
                    "name": "account",
                    "type": "Address",
                    "indexed": true
                },
                {
                    "name": "cause",
                    "type": "u8",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "EscrowMovedData"
                }
            ]
        },
        {
            "identifier": "senderAdded",
            "inputs": [
                {
                    "name": "account",
                    "type": "Address",
                    "indexed": true
                },
                {
                    "name": "sender",
                    "type": "Address",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "SenderChangedData"
                }
            ]
        },
        {
            "identifier": "senderRemoved",
            "inputs": [
                {
                    "name": "account",
                    "type": "Address",
                    "indexed": true
                },
                {
                    "name": "sender",
                    "type": "Address",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "SenderChangedData"
                }
            ]
        },
        {
            "identifier": "creditsGranted",
            "inputs": [
                {
                    "name": "account",
                    "type": "Address",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "CreditsGrantedData"
                }
            ]
        },
        {
            "identifier": "ruGranted",
            "inputs": [
                {
                    "name": "account",
                    "type": "Address",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "RuGrantedData"
                }
            ]
        },
        {
            "identifier": "usageSettled",
            "inputs": [
                {
                    "name": "batch_id",
                    "type": "u64",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "UsageSettledData"
                }
            ]
        },
        {
            "identifier": "paygSettled",
            "inputs": [
                {
                    "name": "account",
                    "type": "Address",
                    "indexed": true
                },
                {
                    "name": "period_id",
                    "type": "u32",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "PaygSettledData"
                }
            ]
        },
        {
            "docs": [
                "`reason` is `RejectReason` as `u8`."
            ],
            "identifier": "settleLineRejected",
            "inputs": [
                {
                    "name": "account_id",
                    "type": "u32",
                    "indexed": true
                },
                {
                    "name": "reason",
                    "type": "u8",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "SettleLineRejectedData"
                }
            ]
        },
        {
            "identifier": "settleConfigChanged",
            "inputs": [
                {
                    "name": "data",
                    "type": "SettleConfigChangedData"
                }
            ]
        },
        {
            "identifier": "relayerAdded",
            "inputs": [
                {
                    "name": "address",
                    "type": "Address",
                    "indexed": true
                },
                {
                    "name": "shard",
                    "type": "u8",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "RelayerAddedData"
                }
            ]
        },
        {
            "identifier": "relayerStateChanged",
            "inputs": [
                {
                    "name": "address",
                    "type": "Address",
                    "indexed": true
                },
                {
                    "name": "shard",
                    "type": "u8",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "RelayerStateChangedData"
                }
            ]
        },
        {
            "identifier": "relayerWeightsChanged",
            "inputs": [
                {
                    "name": "registry_version",
                    "type": "u64",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "RelayerWeightsChangedData"
                }
            ]
        },
        {
            "identifier": "relayerMetaChanged",
            "inputs": [
                {
                    "name": "address",
                    "type": "Address",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "RelayerMetaChangedData"
                }
            ]
        },
        {
            "identifier": "relayerRemoved",
            "inputs": [
                {
                    "name": "address",
                    "type": "Address",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "RelayerRemovedData"
                }
            ]
        },
        {
            "identifier": "poolDistributed",
            "inputs": [
                {
                    "name": "dist_seq",
                    "type": "u64",
                    "indexed": true
                },
                {
                    "name": "data",
                    "type": "PoolDistributedData"
                }
            ]
        },
        {
            "identifier": "distributionDeferred",
            "inputs": [
                {
                    "name": "data",
                    "type": "DistributionDeferredData"
                }
            ]
        },
        {
            "identifier": "distributionParamsChanged",
            "inputs": [
                {
                    "name": "data",
                    "type": "DistributionParamsChangedData"
                }
            ]
        },
        {
            "docs": [
                "Not in contract.md §9 / distribution.md §2.4 (SPEC-DEVIATIONS DEV-21):",
                "without it `setMaxRelayerShareBps` left no log at all, so the",
                "event-driven backend mirror and the `tx/prepare` pre-validation of",
                "distribution.md §342 had no source for the value they must recompute the",
                "share bound against. Name is 25 characters, the §9 maximum."
            ],
            "identifier": "maxRelayerShareBpsChanged",
            "inputs": [
                {
                    "name": "data",
                    "type": "MaxRelayerShareBpsChangedData"
                }
            ]
        },
        {
            "identifier": "poolEmergencyWithdrawn",
            "inputs": [
                {
                    "name": "data",
                    "type": "PoolEmergencyWithdrawnData"
                }
            ]
        }
    ],
    "esdtAttributes": [],
    "hasCallback": false,
    "types": {
        "Account": {
            "type": "struct",
            "docs": [
                "131 B funded with no block, 297 B with current + previous, 406 B with all",
                "three blocks. Every endpoint loads the record once, mutates it in memory and",
                "stores it once."
            ],
            "fields": [
                {
                    "name": "version",
                    "type": "u8"
                },
                {
                    "docs": [
                        "bit0 AUTO_RENEW, bit1 PAYG_ENABLED, bit2 PAYG_AUTO_TOPUP, bit3 PAYG_CLOSING."
                    ],
                    "name": "flags",
                    "type": "u16"
                },
                {
                    "docs": [
                        "micro-USDC."
                    ],
                    "name": "credits",
                    "type": "u64"
                },
                {
                    "docs": [
                        "micro-USDC."
                    ],
                    "name": "payg_escrow",
                    "type": "u64"
                },
                {
                    "docs": [
                        "micro-USDC; `u64::MAX` = \"all credits\"."
                    ],
                    "name": "payg_budget",
                    "type": "u64"
                },
                {
                    "docs": [
                        "micro-USDC per RU, 0 = no ceiling."
                    ],
                    "name": "max_payg_price",
                    "type": "u64"
                },
                {
                    "docs": [
                        "> 0 whenever AUTO_RENEW."
                    ],
                    "name": "max_renew_price",
                    "type": "u64"
                },
                {
                    "docs": [
                        "0 = same tier."
                    ],
                    "name": "renew_tier_id",
                    "type": "u32"
                },
                {
                    "docs": [
                        "0 unless PAYG_CLOSING."
                    ],
                    "name": "payg_disabled_at_ms",
                    "type": "u64"
                },
                {
                    "name": "last_seq",
                    "type": "u32"
                },
                {
                    "docs": [
                        "R5 anchor (K-18): moves forward only on an accepted settlement line."
                    ],
                    "name": "last_line_ms",
                    "type": "u64"
                },
                {
                    "docs": [
                        "K-16."
                    ],
                    "name": "last_topup_period_id",
                    "type": "u32"
                },
                {
                    "name": "sender_count",
                    "type": "u32"
                },
                {
                    "name": "grant_ru",
                    "type": "u64"
                },
                {
                    "name": "grant_expiry_ms",
                    "type": "u64"
                },
                {
                    "name": "created_ms",
                    "type": "u64"
                },
                {
                    "name": "current",
                    "type": "Option<PlanBlockV1>"
                },
                {
                    "name": "queued",
                    "type": "Option<PlanBlockV1>"
                },
                {
                    "name": "previous",
                    "type": "Option<PrevBlockV1>"
                },
                {
                    "name": "used_ru_reported",
                    "type": "u64"
                },
                {
                    "name": "policy_id",
                    "type": "u32"
                },
                {
                    "name": "latency_class",
                    "type": "u8"
                },
                {
                    "name": "agent_id",
                    "type": "u64"
                }
            ]
        },
        "AccountView": {
            "type": "struct",
            "docs": [
                "`getAccount`, `getAccountById`: the derived fields after a virtual `advance`."
            ],
            "fields": [
                {
                    "name": "account_id",
                    "type": "u32"
                },
                {
                    "name": "state",
                    "type": "u8"
                },
                {
                    "name": "at_ms",
                    "type": "u64"
                },
                {
                    "name": "period_id",
                    "type": "u32"
                },
                {
                    "name": "period_start_ms",
                    "type": "u64"
                },
                {
                    "name": "period_end_ms",
                    "type": "u64"
                },
                {
                    "name": "tier_id",
                    "type": "u32"
                },
                {
                    "name": "cap_ru",
                    "type": "u64"
                },
                {
                    "name": "tariff_at_purchase",
                    "type": "u64"
                },
                {
                    "name": "payg_bps",
                    "type": "u32"
                },
                {
                    "name": "payg_price",
                    "type": "u64"
                },
                {
                    "name": "period_flags",
                    "type": "u8"
                },
                {
                    "name": "record",
                    "type": "Account"
                }
            ]
        },
        "AutoRenewSetData": {
            "type": "struct",
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "enabled",
                    "type": "bool"
                },
                {
                    "name": "renew_tier_id",
                    "type": "u32"
                },
                {
                    "name": "max_renew_price",
                    "type": "u64"
                }
            ]
        },
        "AutoRenewSkippedData": {
            "type": "struct",
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "period_id",
                    "type": "u32"
                },
                {
                    "name": "tier_id",
                    "type": "u32"
                },
                {
                    "name": "price",
                    "type": "u64"
                },
                {
                    "name": "max_renew_price",
                    "type": "u64"
                },
                {
                    "name": "credits",
                    "type": "u64"
                }
            ]
        },
        "BatchTotals": {
            "type": "struct",
            "docs": [
                "28 bytes, informational: committed into `usage_chain_head`, never interpreted."
            ],
            "fields": [
                {
                    "name": "rows",
                    "type": "u32"
                },
                {
                    "name": "ru_cap",
                    "type": "u64"
                },
                {
                    "name": "ru_payg",
                    "type": "u64"
                },
                {
                    "name": "ru_other",
                    "type": "u64"
                }
            ]
        },
        "BlockKind": {
            "type": "enum",
            "variants": [
                {
                    "name": "New",
                    "discriminant": 0
                },
                {
                    "name": "Queued",
                    "discriminant": 1
                },
                {
                    "name": "Upgrade",
                    "discriminant": 2
                },
                {
                    "name": "AutoRenew",
                    "discriminant": 3
                }
            ]
        },
        "ByData": {
            "type": "struct",
            "docs": [
                "`settlementPaused`, `settlementUnpaused`."
            ],
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "by",
                    "type": "Address"
                }
            ]
        },
        "ConfigView": {
            "type": "struct",
            "docs": [
                "`getConfig`. `reporter` and `treasury` are the EFFECTIVE addresses; the",
                "pending pair is reported raw so a watcher sees a scheduled change."
            ],
            "fields": [
                {
                    "name": "chain_id",
                    "type": "bytes"
                },
                {
                    "name": "code_version",
                    "type": "bytes"
                },
                {
                    "name": "storage_version",
                    "type": "u32"
                },
                {
                    "name": "owner",
                    "type": "Address"
                },
                {
                    "name": "operator",
                    "type": "Address"
                },
                {
                    "name": "reporter",
                    "type": "Address"
                },
                {
                    "name": "pending_reporter",
                    "type": "Address"
                },
                {
                    "name": "pending_reporter_effective_ms",
                    "type": "u64"
                },
                {
                    "name": "treasury",
                    "type": "Address"
                },
                {
                    "name": "pending_treasury",
                    "type": "Address"
                },
                {
                    "name": "pending_treasury_effective_ms",
                    "type": "u64"
                },
                {
                    "name": "usdc_token_id",
                    "type": "TokenIdentifier"
                },
                {
                    "name": "wegld_token_id",
                    "type": "TokenIdentifier"
                },
                {
                    "name": "pair_address",
                    "type": "Address"
                },
                {
                    "name": "wrapper_address",
                    "type": "Address"
                },
                {
                    "name": "venue_validated",
                    "type": "bool"
                }
            ]
        },
        "CreditsGrantedData": {
            "type": "struct",
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "amount",
                    "type": "u64"
                },
                {
                    "name": "reason_code",
                    "type": "u8"
                },
                {
                    "name": "credits_after",
                    "type": "u64"
                },
                {
                    "name": "escrow_after",
                    "type": "u64"
                }
            ]
        },
        "CustomBuyerChangedData": {
            "type": "struct",
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "added",
                    "type": "bool"
                }
            ]
        },
        "DepositData": {
            "type": "struct",
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "amount",
                    "type": "u64"
                },
                {
                    "name": "credits_after",
                    "type": "u64"
                },
                {
                    "name": "escrow_after",
                    "type": "u64"
                },
                {
                    "name": "account_id",
                    "type": "u32"
                },
                {
                    "name": "is_new",
                    "type": "bool"
                }
            ]
        },
        "DistLedger": {
            "type": "struct",
            "docs": [
                "Storage key `distLedger`. Read once and written once per deposit; every",
                "amount comes from internal accounting, never from the contract balance."
            ],
            "fields": [
                {
                    "name": "version",
                    "type": "u8"
                },
                {
                    "docs": [
                        "Relayer share not yet pushed (atto-EGLD)."
                    ],
                    "name": "pool",
                    "type": "BigUint"
                },
                {
                    "name": "total_egld_in",
                    "type": "BigUint"
                },
                {
                    "name": "total_treasury_paid",
                    "type": "BigUint"
                },
                {
                    "name": "total_distributed",
                    "type": "BigUint"
                },
                {
                    "name": "total_emergency_withdrawn",
                    "type": "BigUint"
                },
                {
                    "name": "last_distribution_ms",
                    "type": "u64"
                },
                {
                    "name": "dist_seq",
                    "type": "u64"
                }
            ]
        },
        "DistParams": {
            "type": "struct",
            "docs": [
                "Storage key `distParams`. A non-forced distribution runs only when BOTH",
                "gates pass (distribution.md §3.3).",
                "",
                "It carries the leading `version: u8` of contract.md §3 and the hand-written",
                "version-byte decoder that goes with it: §3's rule (\"every top-level stored",
                "record starts with `version: u8`\") and §7.3's \"Scalar defaults\" row both name",
                "`DistParams` as a versioned struct, and `distParams` is read on every deposit",
                "inside `try_distribute`, so a later release that adds a third parameter needs",
                "the discriminator to take the lazy per-record migration path (see",
                "SPEC-DEVIATIONS DEV-20)."
            ],
            "fields": [
                {
                    "name": "version",
                    "type": "u8"
                },
                {
                    "name": "min_interval_ms",
                    "type": "u64"
                },
                {
                    "name": "min_amount",
                    "type": "BigUint"
                }
            ]
        },
        "DistributionDeferredData": {
            "type": "struct",
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "pool",
                    "type": "BigUint"
                },
                {
                    "name": "reason",
                    "type": "u8"
                }
            ]
        },
        "DistributionParamsChangedData": {
            "type": "struct",
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "min_interval_ms",
                    "type": "u64"
                },
                {
                    "name": "min_amount",
                    "type": "BigUint"
                }
            ]
        },
        "DistributionStateView": {
            "type": "struct",
            "docs": [
                "`getDistributionState`."
            ],
            "fields": [
                {
                    "name": "ledger",
                    "type": "DistLedger"
                },
                {
                    "name": "params",
                    "type": "DistParams"
                },
                {
                    "name": "paused",
                    "type": "bool"
                },
                {
                    "docs": [
                        "SPEC-DEVIATIONS DEV-21: the share bound the admin `tx/prepare` step must",
                        "recompute against, which distribution.md §2.4 left without any read path."
                    ],
                    "name": "max_relayer_share_bps",
                    "type": "u32"
                }
            ]
        },
        "EffectiveMsData": {
            "type": "struct",
            "docs": [
                "`treasuryScheduled`, `relayerReserveScheduled`: the scheduled address is the topic."
            ],
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "effective_ms",
                    "type": "u64"
                }
            ]
        },
        "EscrowMovedData": {
            "type": "struct",
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "amount",
                    "type": "u64"
                },
                {
                    "name": "to_escrow",
                    "type": "bool"
                },
                {
                    "name": "period_id",
                    "type": "u32"
                },
                {
                    "name": "credits_after",
                    "type": "u64"
                },
                {
                    "name": "escrow_after",
                    "type": "u64"
                }
            ]
        },
        "EventMeta": {
            "type": "struct",
            "docs": [
                "Common header. `event_seq` is contract-wide, +1 per event, gap-free, starts at 1."
            ],
            "fields": [
                {
                    "name": "event_seq",
                    "type": "u64"
                },
                {
                    "name": "timestamp_ms",
                    "type": "u64"
                }
            ]
        },
        "GrantReason": {
            "type": "enum",
            "variants": [
                {
                    "name": "Trial",
                    "discriminant": 1
                },
                {
                    "name": "SlaRemedy",
                    "discriminant": 2
                },
                {
                    "name": "Goodwill",
                    "discriminant": 3
                },
                {
                    "name": "ReporterIncident",
                    "discriminant": 4
                }
            ]
        },
        "InitializedData": {
            "type": "struct",
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "chain_id",
                    "type": "bytes"
                },
                {
                    "name": "code_version",
                    "type": "bytes"
                },
                {
                    "name": "storage_version",
                    "type": "u32"
                }
            ]
        },
        "MaxRelayerShareBpsChangedData": {
            "type": "struct",
            "docs": [
                "`maxRelayerShareBpsChanged` (SPEC-DEVIATIONS DEV-21). `old_bps` is what the",
                "mirror had, `new_bps` what every later `activateRelayers` /",
                "`setRelayerWeights` is measured against."
            ],
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "old_bps",
                    "type": "u32"
                },
                {
                    "name": "new_bps",
                    "type": "u32"
                },
                {
                    "name": "by",
                    "type": "Address"
                }
            ]
        },
        "MetaOnlyData": {
            "type": "struct",
            "docs": [
                "Events whose whole payload is in the topics: `treasuryPendingCancelled`,",
                "`ruScheduleActivated`, `ruSchedulePendingCancelled`, `tierActivated`,",
                "`relayerReserveChanged`."
            ],
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                }
            ]
        },
        "OldAddressData": {
            "type": "struct",
            "docs": [
                "`treasuryChanged`: the new address is the topic."
            ],
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "old",
                    "type": "Address"
                }
            ]
        },
        "PauseChangedData": {
            "type": "struct",
            "docs": [
                "`pauseChanged`, `distributionPauseChanged`."
            ],
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "paused",
                    "type": "bool"
                },
                {
                    "name": "by",
                    "type": "Address"
                }
            ]
        },
        "PauseStateView": {
            "type": "struct",
            "docs": [
                "`getPauseState`."
            ],
            "fields": [
                {
                    "name": "paused",
                    "type": "bool"
                },
                {
                    "name": "deposits_paused",
                    "type": "bool"
                },
                {
                    "name": "settlement_paused",
                    "type": "bool"
                },
                {
                    "name": "distribution_paused",
                    "type": "bool"
                },
                {
                    "name": "renewals_paused",
                    "type": "bool"
                }
            ]
        },
        "PaygSetData": {
            "type": "struct",
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "enabled",
                    "type": "bool"
                },
                {
                    "name": "budget",
                    "type": "u64"
                },
                {
                    "name": "auto_topup",
                    "type": "bool"
                },
                {
                    "name": "max_payg_price",
                    "type": "u64"
                },
                {
                    "name": "disabled_at_ms",
                    "type": "u64"
                },
                {
                    "name": "credits_after",
                    "type": "u64"
                },
                {
                    "name": "escrow_after",
                    "type": "u64"
                }
            ]
        },
        "PaygSettledData": {
            "type": "struct",
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "batch_id",
                    "type": "u64"
                },
                {
                    "name": "seq",
                    "type": "u32"
                },
                {
                    "name": "ru",
                    "type": "u32"
                },
                {
                    "name": "tariff_idx",
                    "type": "u16"
                },
                {
                    "name": "price_per_ru",
                    "type": "u64"
                },
                {
                    "name": "debit",
                    "type": "u64"
                },
                {
                    "name": "closing",
                    "type": "bool"
                },
                {
                    "name": "credits_after",
                    "type": "u64"
                },
                {
                    "name": "escrow_after",
                    "type": "u64"
                }
            ]
        },
        "PaymentSwappedData": {
            "type": "struct",
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "account",
                    "type": "Address"
                },
                {
                    "name": "usdc_in",
                    "type": "u64"
                },
                {
                    "name": "wegld_out",
                    "type": "BigUint"
                },
                {
                    "name": "egld_out",
                    "type": "BigUint"
                },
                {
                    "name": "treasury_part",
                    "type": "BigUint"
                },
                {
                    "name": "relayer_part",
                    "type": "BigUint"
                },
                {
                    "name": "treasury",
                    "type": "Address"
                }
            ]
        },
        "PlanBlockV1": {
            "type": "struct",
            "docs": [
                "109 bytes nested, no managed types."
            ],
            "fields": [
                {
                    "docs": [
                        "Global counter, never a timestamp."
                    ],
                    "name": "block_id",
                    "type": "u64"
                },
                {
                    "name": "tier_id",
                    "type": "u32"
                },
                {
                    "name": "kind",
                    "type": "BlockKind"
                },
                {
                    "name": "start_ms",
                    "type": "u64"
                },
                {
                    "docs": [
                        "`start_ms + months * period_ms` (checked); `u64::MAX` for a no-period block (K-11)."
                    ],
                    "name": "end_ms",
                    "type": "u64"
                },
                {
                    "docs": [
                        "Snapshot; 0 = no period."
                    ],
                    "name": "period_ms",
                    "type": "u64"
                },
                {
                    "docs": [
                        "0 for a no-period block."
                    ],
                    "name": "months",
                    "type": "u8"
                },
                {
                    "docs": [
                        "Period `k` of this block has `period_id = first_period_id + k` (K-01)."
                    ],
                    "name": "first_period_id",
                    "type": "u32"
                },
                {
                    "name": "cap_ru",
                    "type": "u64"
                },
                {
                    "docs": [
                        "RESERVED, always 0 in v1 (K-08)."
                    ],
                    "name": "bonus_ru",
                    "type": "u64"
                },
                {
                    "name": "tariff_at_purchase",
                    "type": "u64"
                },
                {
                    "name": "tariff_version",
                    "type": "u32"
                },
                {
                    "name": "payg_bps",
                    "type": "u32"
                },
                {
                    "docs": [
                        "`tariff_at_purchase * payg_bps / 10_000`, exact; 0 when FLOATING."
                    ],
                    "name": "payg_price",
                    "type": "u64"
                },
                {
                    "name": "max_senders",
                    "type": "u32"
                },
                {
                    "name": "max_ru_per_s",
                    "type": "u32"
                },
                {
                    "name": "burst_ru",
                    "type": "u32"
                },
                {
                    "name": "rate_class",
                    "type": "u8"
                },
                {
                    "name": "sla_class",
                    "type": "u8"
                },
                {
                    "name": "flags",
                    "type": "u32"
                },
                {
                    "docs": [
                        "bit0 FLOATING."
                    ],
                    "name": "period_flags",
                    "type": "u8"
                },
                {
                    "name": "price_paid",
                    "type": "u64"
                }
            ]
        },
        "PoolDistributedData": {
            "type": "struct",
            "docs": [
                "One aggregated event per round: `amount_i = unit * weight_i` with the",
                "weights of `registry_version` reproduces every transfer exactly."
            ],
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "total_sent",
                    "type": "BigUint"
                },
                {
                    "name": "unit",
                    "type": "BigUint"
                },
                {
                    "name": "total_weight",
                    "type": "u64"
                },
                {
                    "name": "n_transfers",
                    "type": "u32"
                },
                {
                    "name": "remainder",
                    "type": "BigUint"
                },
                {
                    "name": "registry_version",
                    "type": "u64"
                },
                {
                    "docs": [
                        "`DistTrigger`: 0 deposit, 1 permissionless, 2 forced."
                    ],
                    "name": "trigger",
                    "type": "u8"
                }
            ]
        },
        "PoolEmergencyWithdrawnData": {
            "type": "struct",
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "amount",
                    "type": "BigUint"
                },
                {
                    "name": "to",
                    "type": "Address"
                }
            ]
        },
        "PrevBlockV1": {
            "type": "struct",
            "docs": [
                "57 bytes: what late settlement lines and the renew path need from the block",
                "that ended."
            ],
            "fields": [
                {
                    "name": "block_id",
                    "type": "u64"
                },
                {
                    "name": "tier_id",
                    "type": "u32"
                },
                {
                    "name": "first_period_id",
                    "type": "u32"
                },
                {
                    "name": "last_period_id",
                    "type": "u32"
                },
                {
                    "name": "end_ms",
                    "type": "u64"
                },
                {
                    "name": "tariff_at_purchase",
                    "type": "u64"
                },
                {
                    "name": "payg_bps",
                    "type": "u32"
                },
                {
                    "name": "payg_price",
                    "type": "u64"
                },
                {
                    "name": "period_flags",
                    "type": "u8"
                },
                {
                    "name": "max_ru_per_s",
                    "type": "u32"
                },
                {
                    "name": "burst_ru",
                    "type": "u32"
                }
            ]
        },
        "PricingConfigView": {
            "type": "struct",
            "docs": [
                "`getPricingConfig`: everything `/v1/pricing` needs in one query."
            ],
            "fields": [
                {
                    "docs": [
                        "Raw storage, as `getTariff`."
                    ],
                    "name": "tariff",
                    "type": "u64"
                },
                {
                    "name": "pending_tariff",
                    "type": "u64"
                },
                {
                    "name": "pending_tariff_effective_ms",
                    "type": "u64"
                },
                {
                    "name": "tariff_version",
                    "type": "u32"
                },
                {
                    "docs": [
                        "Lazy rule applied, as `getEffectiveTariff`."
                    ],
                    "name": "effective_tariff",
                    "type": "u64"
                },
                {
                    "name": "effective_tariff_version",
                    "type": "u32"
                },
                {
                    "name": "ru_schedule",
                    "type": "RuScheduleView"
                },
                {
                    "name": "min_deposit",
                    "type": "u64"
                },
                {
                    "docs": [
                        "0 = unlimited."
                    ],
                    "name": "max_deposit",
                    "type": "u64"
                },
                {
                    "name": "tariff_min",
                    "type": "u64"
                },
                {
                    "name": "tariff_max",
                    "type": "u64"
                },
                {
                    "name": "tariff_granularity",
                    "type": "u64"
                },
                {
                    "name": "tariff_increase_notice_ms",
                    "type": "u64"
                }
            ]
        },
        "RateClassEntry": {
            "type": "struct",
            "docs": [
                "View output of `getRateClasses`."
            ],
            "fields": [
                {
                    "name": "class",
                    "type": "u8"
                },
                {
                    "name": "max_ru_per_s",
                    "type": "u32"
                },
                {
                    "name": "burst_ru",
                    "type": "u32"
                }
            ]
        },
        "RateClassSetData": {
            "type": "struct",
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "max_ru_per_s",
                    "type": "u32"
                },
                {
                    "name": "burst_ru",
                    "type": "u32"
                }
            ]
        },
        "RateClassV1": {
            "type": "struct",
            "docs": [
                "Storage key `rate_class(class)`: the on-chain upper bound the settlement",
                "reject rule R5 uses, snapshotted into every plan block (K-09)."
            ],
            "fields": [
                {
                    "name": "version",
                    "type": "u8"
                },
                {
                    "name": "max_ru_per_s",
                    "type": "u32"
                },
                {
                    "name": "burst_ru",
                    "type": "u32"
                }
            ]
        },
        "RelayerAddedData": {
            "type": "struct",
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "info",
                    "type": "RelayerInfo"
                },
                {
                    "name": "registry_version",
                    "type": "u64"
                }
            ]
        },
        "RelayerInfo": {
            "type": "struct",
            "docs": [
                "Storage key `relayerInfo(addr)`. Cold path: admin calls and views."
            ],
            "fields": [
                {
                    "name": "version",
                    "type": "u8"
                },
                {
                    "docs": [
                        "Forward hook; v1 requires `OPERATOR_ID_CORELAYER`."
                    ],
                    "name": "operator_id",
                    "type": "u32"
                },
                {
                    "docs": [
                        "Forward hook; 0 shared pool, 1 Standard, 2 Priority, 3 Dedicated."
                    ],
                    "name": "sla_class",
                    "type": "u8"
                },
                {
                    "docs": [
                        "Computed on-chain with `get_shard_of_address`; always below 3."
                    ],
                    "name": "shard",
                    "type": "u8"
                },
                {
                    "name": "state",
                    "type": "RelayerState"
                },
                {
                    "docs": [
                        "Non-zero exactly when `state == Active` (invariant I5)."
                    ],
                    "name": "weight",
                    "type": "u32"
                },
                {
                    "docs": [
                        "Forward hook; always 0 in v1."
                    ],
                    "name": "stake",
                    "type": "BigUint"
                },
                {
                    "name": "registered_at_ms",
                    "type": "u64"
                },
                {
                    "docs": [
                        "RESERVED, always equal to `registered_at_ms` in v1 (K-20)."
                    ],
                    "name": "activatable_at_ms",
                    "type": "u64"
                },
                {
                    "name": "state_changed_at_ms",
                    "type": "u64"
                }
            ]
        },
        "RelayerMetaChangedData": {
            "type": "struct",
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "operator_id",
                    "type": "u32"
                },
                {
                    "name": "sla_class",
                    "type": "u8"
                },
                {
                    "name": "registry_version",
                    "type": "u64"
                }
            ]
        },
        "RelayerRemovedData": {
            "type": "struct",
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "registry_version",
                    "type": "u64"
                }
            ]
        },
        "RelayerRow": {
            "type": "struct",
            "docs": [
                "View output of `getRelayers`."
            ],
            "fields": [
                {
                    "name": "address",
                    "type": "Address"
                },
                {
                    "name": "info",
                    "type": "RelayerInfo"
                }
            ]
        },
        "RelayerState": {
            "type": "enum",
            "docs": [
                "`None = 0` is the answer of `getRelayerState` for an address that is not ours."
            ],
            "variants": [
                {
                    "name": "None",
                    "discriminant": 0
                },
                {
                    "name": "Registered",
                    "discriminant": 1
                },
                {
                    "name": "Active",
                    "discriminant": 2
                },
                {
                    "name": "Draining",
                    "discriminant": 3
                },
                {
                    "name": "Retired",
                    "discriminant": 4
                }
            ]
        },
        "RelayerStateChangedData": {
            "type": "struct",
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "old_state",
                    "type": "RelayerState"
                },
                {
                    "name": "new_state",
                    "type": "RelayerState"
                },
                {
                    "name": "weight",
                    "type": "u32"
                },
                {
                    "name": "registry_version",
                    "type": "u64"
                }
            ]
        },
        "RelayerWeightsChangedData": {
            "type": "struct",
            "docs": [
                "One event per call, not per relayer."
            ],
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "entries",
                    "type": "List<WeightEntry>"
                },
                {
                    "name": "total_weight",
                    "type": "u64"
                }
            ]
        },
        "RenewOutcome": {
            "type": "enum",
            "variants": [
                {
                    "name": "Ok",
                    "discriminant": 0
                },
                {
                    "name": "NotDue",
                    "discriminant": 1
                },
                {
                    "name": "NotEnabled",
                    "discriminant": 2
                },
                {
                    "name": "Price",
                    "discriminant": 3
                },
                {
                    "name": "Credits",
                    "discriminant": 4
                },
                {
                    "name": "TierInactive",
                    "discriminant": 5
                },
                {
                    "name": "QueuedStarted",
                    "discriminant": 6
                },
                {
                    "name": "NoAccount",
                    "discriminant": 7
                },
                {
                    "docs": [
                        "`renewals_paused`: nothing charged, no block written, no revert (K-19)."
                    ],
                    "name": "Paused",
                    "discriminant": 8
                }
            ]
        },
        "RenewQuote": {
            "type": "struct",
            "docs": [
                "`quoteRenew`."
            ],
            "fields": [
                {
                    "name": "outcome",
                    "type": "RenewOutcome"
                },
                {
                    "name": "due",
                    "type": "bool"
                },
                {
                    "name": "tier_id",
                    "type": "u32"
                },
                {
                    "name": "price",
                    "type": "u64"
                },
                {
                    "name": "new_start_ms",
                    "type": "u64"
                },
                {
                    "name": "new_end_ms",
                    "type": "u64"
                }
            ]
        },
        "RenewedData": {
            "type": "struct",
            "docs": [
                "`renewed`: every `subscribed` field (`kind = AutoRenew`) plus three."
            ],
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "block_id",
                    "type": "u64"
                },
                {
                    "name": "kind",
                    "type": "BlockKind"
                },
                {
                    "name": "months",
                    "type": "u8"
                },
                {
                    "name": "start_ms",
                    "type": "u64"
                },
                {
                    "name": "end_ms",
                    "type": "u64"
                },
                {
                    "name": "period_ms",
                    "type": "u64"
                },
                {
                    "name": "cap_ru",
                    "type": "u64"
                },
                {
                    "name": "bonus_ru",
                    "type": "u64"
                },
                {
                    "name": "tariff_at_purchase",
                    "type": "u64"
                },
                {
                    "name": "tariff_version",
                    "type": "u32"
                },
                {
                    "name": "payg_bps",
                    "type": "u32"
                },
                {
                    "name": "payg_price",
                    "type": "u64"
                },
                {
                    "name": "floating",
                    "type": "bool"
                },
                {
                    "name": "max_senders",
                    "type": "u32"
                },
                {
                    "name": "rate_class",
                    "type": "u8"
                },
                {
                    "name": "sla_class",
                    "type": "u8"
                },
                {
                    "name": "flags",
                    "type": "u32"
                },
                {
                    "name": "price_paid",
                    "type": "u64"
                },
                {
                    "name": "credited_back",
                    "type": "u64"
                },
                {
                    "name": "reference",
                    "type": "bytes"
                },
                {
                    "name": "credits_after",
                    "type": "u64"
                },
                {
                    "name": "escrow_after",
                    "type": "u64"
                },
                {
                    "name": "gap_ms",
                    "type": "u64"
                },
                {
                    "name": "grid_aligned",
                    "type": "bool"
                },
                {
                    "name": "caller",
                    "type": "Address"
                }
            ]
        },
        "ReporterScheduledData": {
            "type": "struct",
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "current",
                    "type": "Address"
                },
                {
                    "name": "pending",
                    "type": "Address"
                },
                {
                    "name": "effective_ms",
                    "type": "u64"
                },
                {
                    "name": "by",
                    "type": "Address"
                }
            ]
        },
        "RoleChangedData": {
            "type": "struct",
            "docs": [
                "`operatorChanged`, `reporterChanged`."
            ],
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "old",
                    "type": "Address"
                },
                {
                    "name": "new",
                    "type": "Address"
                },
                {
                    "name": "by",
                    "type": "Address"
                }
            ]
        },
        "RuGrantedData": {
            "type": "struct",
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "ru",
                    "type": "u64"
                },
                {
                    "name": "grant_ru_after",
                    "type": "u64"
                },
                {
                    "name": "expiry_ms",
                    "type": "u64"
                },
                {
                    "name": "reason",
                    "type": "GrantReason"
                }
            ]
        },
        "RuScheduleScheduledData": {
            "type": "struct",
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "hash",
                    "type": "array32<u8>"
                },
                {
                    "name": "effective_ms",
                    "type": "u64"
                }
            ]
        },
        "RuScheduleView": {
            "type": "struct",
            "docs": [
                "`getRuSchedule`, with the lazy rule applied at the evaluation time."
            ],
            "fields": [
                {
                    "name": "ru_size_atto",
                    "type": "u64"
                },
                {
                    "name": "version",
                    "type": "u32"
                },
                {
                    "name": "hash",
                    "type": "array32<u8>"
                },
                {
                    "name": "pending_version",
                    "type": "u32"
                },
                {
                    "name": "pending_hash",
                    "type": "array32<u8>"
                },
                {
                    "name": "pending_effective_ms",
                    "type": "u64"
                }
            ]
        },
        "SenderChangedData": {
            "type": "struct",
            "docs": [
                "`senderAdded`, `senderRemoved`."
            ],
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "count_after",
                    "type": "u32"
                },
                {
                    "name": "fee",
                    "type": "u64"
                },
                {
                    "name": "credits_after",
                    "type": "u64"
                },
                {
                    "name": "escrow_after",
                    "type": "u64"
                }
            ]
        },
        "SettleConfigChangedData": {
            "type": "struct",
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "max_settle_per_window",
                    "type": "u64"
                },
                {
                    "name": "ceiling",
                    "type": "u64"
                },
                {
                    "name": "sender_fee_ru",
                    "type": "u32"
                },
                {
                    "name": "pending_sender_fee_ru",
                    "type": "u32"
                },
                {
                    "name": "pending_sender_fee_effective_ms",
                    "type": "u64"
                },
                {
                    "name": "by",
                    "type": "Address"
                }
            ]
        },
        "SettleLineRejectedData": {
            "type": "struct",
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "batch_id",
                    "type": "u64"
                },
                {
                    "name": "seq",
                    "type": "u32"
                },
                {
                    "name": "period_id",
                    "type": "u32"
                },
                {
                    "name": "ru",
                    "type": "u32"
                }
            ]
        },
        "SettleState": {
            "type": "struct",
            "docs": [
                "Storage key `settle_state`: ONE struct, one read and one write per endpoint."
            ],
            "fields": [
                {
                    "name": "version",
                    "type": "u8"
                },
                {
                    "name": "last_batch_id",
                    "type": "u64"
                },
                {
                    "name": "last_window_end_ms",
                    "type": "u64"
                },
                {
                    "name": "usage_chain_head",
                    "type": "array32<u8>"
                },
                {
                    "name": "settle_window_start_ms",
                    "type": "u64"
                },
                {
                    "name": "settle_window_debited",
                    "type": "u64"
                },
                {
                    "name": "max_settle_per_window",
                    "type": "u64"
                },
                {
                    "name": "max_settle_per_window_ceiling",
                    "type": "u64"
                },
                {
                    "name": "sender_fee_ru",
                    "type": "u32"
                },
                {
                    "docs": [
                        "Lazy 48 h activation of a fee INCREASE; an effective time of 0 means none pending."
                    ],
                    "name": "pending_sender_fee_ru",
                    "type": "u32"
                },
                {
                    "name": "pending_sender_fee_effective_ms",
                    "type": "u64"
                }
            ]
        },
        "SettlementStateView": {
            "type": "struct",
            "docs": [
                "`getSettlementState`. `reporter` is the effective address."
            ],
            "fields": [
                {
                    "name": "reporter",
                    "type": "Address"
                },
                {
                    "name": "settlement_paused",
                    "type": "bool"
                },
                {
                    "name": "settle_state",
                    "type": "SettleState"
                },
                {
                    "name": "totals",
                    "type": "Totals"
                }
            ]
        },
        "SubscribedData": {
            "type": "struct",
            "docs": [
                "`subscribed`. The spec names the opaque purchase reference `ref`; that is a",
                "Rust keyword, so the ABI publishes it as `reference`",
                "(SPEC-DEVIATIONS.md DEV-23 — clients, and the `account_blocks.ref` column of",
                "§16.4, map `ref` to this name)."
            ],
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "block_id",
                    "type": "u64"
                },
                {
                    "name": "kind",
                    "type": "BlockKind"
                },
                {
                    "name": "months",
                    "type": "u8"
                },
                {
                    "name": "start_ms",
                    "type": "u64"
                },
                {
                    "name": "end_ms",
                    "type": "u64"
                },
                {
                    "name": "period_ms",
                    "type": "u64"
                },
                {
                    "name": "cap_ru",
                    "type": "u64"
                },
                {
                    "docs": [
                        "Always 0 in v1 (K-08)."
                    ],
                    "name": "bonus_ru",
                    "type": "u64"
                },
                {
                    "name": "tariff_at_purchase",
                    "type": "u64"
                },
                {
                    "name": "tariff_version",
                    "type": "u32"
                },
                {
                    "name": "payg_bps",
                    "type": "u32"
                },
                {
                    "name": "payg_price",
                    "type": "u64"
                },
                {
                    "name": "floating",
                    "type": "bool"
                },
                {
                    "name": "max_senders",
                    "type": "u32"
                },
                {
                    "name": "rate_class",
                    "type": "u8"
                },
                {
                    "name": "sla_class",
                    "type": "u8"
                },
                {
                    "name": "flags",
                    "type": "u32"
                },
                {
                    "name": "price_paid",
                    "type": "u64"
                },
                {
                    "name": "credited_back",
                    "type": "u64"
                },
                {
                    "name": "reference",
                    "type": "bytes"
                },
                {
                    "name": "credits_after",
                    "type": "u64"
                },
                {
                    "name": "escrow_after",
                    "type": "u64"
                }
            ]
        },
        "SwapVenueChangedData": {
            "type": "struct",
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "pair",
                    "type": "Address"
                },
                {
                    "name": "wrapper",
                    "type": "Address"
                },
                {
                    "name": "usdc_token_id",
                    "type": "TokenIdentifier"
                },
                {
                    "name": "wegld_token_id",
                    "type": "TokenIdentifier"
                }
            ]
        },
        "TariffActivatedData": {
            "type": "struct",
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "tariff",
                    "type": "u64"
                },
                {
                    "docs": [
                        "The SCHEDULED time, which is what `tariff_hist` stores."
                    ],
                    "name": "effective_ms",
                    "type": "u64"
                },
                {
                    "docs": [
                        "The block time of the mutation that materialised it."
                    ],
                    "name": "materialised_ms",
                    "type": "u64"
                }
            ]
        },
        "TariffEntry": {
            "type": "struct",
            "docs": [
                "One element of `tariff_hist` (1-based, append-only). `effective_ms` is the",
                "SCHEDULED activation time, not the time of materialisation (K-10)."
            ],
            "fields": [
                {
                    "name": "tariff",
                    "type": "u64"
                },
                {
                    "name": "effective_ms",
                    "type": "u64"
                }
            ]
        },
        "TariffPendingCancelledData": {
            "type": "struct",
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "cancelled_value",
                    "type": "u64"
                },
                {
                    "name": "would_have_been_effective_ms",
                    "type": "u64"
                }
            ]
        },
        "TariffScheduledData": {
            "type": "struct",
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "old",
                    "type": "u64"
                },
                {
                    "name": "new",
                    "type": "u64"
                },
                {
                    "name": "effective_ms",
                    "type": "u64"
                }
            ]
        },
        "TierSavedData": {
            "type": "struct",
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "tier",
                    "type": "TierV1"
                }
            ]
        },
        "TierStatus": {
            "type": "enum",
            "variants": [
                {
                    "name": "Draft",
                    "discriminant": 0
                },
                {
                    "name": "Active",
                    "discriminant": 1
                },
                {
                    "name": "Legacy",
                    "discriminant": 2
                },
                {
                    "name": "Retired",
                    "discriminant": 3
                }
            ]
        },
        "TierStatusChangedData": {
            "type": "struct",
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "old",
                    "type": "TierStatus"
                },
                {
                    "name": "new",
                    "type": "TierStatus"
                },
                {
                    "name": "successor_tier_id",
                    "type": "u32"
                }
            ]
        },
        "TierV1": {
            "type": "struct",
            "docs": [
                "Storage key `tiers(tier_id)`. Editable only while `Draft`; after",
                "`activateTier` only `status` and `successor_tier_id` change (pricing.md §4.2)."
            ],
            "fields": [
                {
                    "name": "version",
                    "type": "u8"
                },
                {
                    "name": "tier_id",
                    "type": "u32"
                },
                {
                    "name": "slug",
                    "type": "bytes"
                },
                {
                    "name": "status",
                    "type": "TierStatus"
                },
                {
                    "name": "cap_ru",
                    "type": "u64"
                },
                {
                    "name": "price_units",
                    "type": "u64"
                },
                {
                    "name": "payg_bps",
                    "type": "u32"
                },
                {
                    "name": "period_ms",
                    "type": "u64"
                },
                {
                    "name": "max_senders",
                    "type": "u32"
                },
                {
                    "name": "rate_class",
                    "type": "u8"
                },
                {
                    "name": "sla_class",
                    "type": "u8"
                },
                {
                    "name": "flags",
                    "type": "u32"
                },
                {
                    "name": "successor_tier_id",
                    "type": "u32"
                },
                {
                    "name": "created_ms",
                    "type": "u64"
                }
            ]
        },
        "Totals": {
            "type": "struct",
            "docs": [
                "Storage key `totals`: the conservation counters, all micro-USDC.",
                "INV-C1: `total_deposited + total_granted ==",
                "total_credits + total_escrow + total_spent_plans + total_settled_payg + total_fees`."
            ],
            "fields": [
                {
                    "name": "version",
                    "type": "u8"
                },
                {
                    "name": "total_deposited",
                    "type": "u64"
                },
                {
                    "name": "total_granted",
                    "type": "u64"
                },
                {
                    "name": "total_credits",
                    "type": "u64"
                },
                {
                    "name": "total_escrow",
                    "type": "u64"
                },
                {
                    "name": "total_spent_plans",
                    "type": "u64"
                },
                {
                    "name": "total_settled_payg",
                    "type": "u64"
                },
                {
                    "name": "total_fees",
                    "type": "u64"
                }
            ]
        },
        "U64ChangedData": {
            "type": "struct",
            "docs": [
                "`minDepositChanged`, `maxDepositChanged`."
            ],
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "old",
                    "type": "u64"
                },
                {
                    "name": "new",
                    "type": "u64"
                }
            ]
        },
        "UpgradedData": {
            "type": "struct",
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "name": "old_storage_version",
                    "type": "u32"
                },
                {
                    "name": "new_storage_version",
                    "type": "u32"
                },
                {
                    "name": "code_version",
                    "type": "bytes"
                }
            ]
        },
        "UsageSettledData": {
            "type": "struct",
            "fields": [
                {
                    "name": "meta",
                    "type": "EventMeta"
                },
                {
                    "docs": [
                        "Always `OPERATOR_ID_CORELAYER` in v1."
                    ],
                    "name": "operator_id",
                    "type": "u32"
                },
                {
                    "name": "window_end_ms",
                    "type": "u64"
                },
                {
                    "name": "usage_root",
                    "type": "array32<u8>"
                },
                {
                    "name": "usage_chain_head",
                    "type": "array32<u8>"
                },
                {
                    "name": "rows",
                    "type": "u32"
                },
                {
                    "name": "ru_cap",
                    "type": "u64"
                },
                {
                    "name": "ru_payg",
                    "type": "u64"
                },
                {
                    "name": "ru_other",
                    "type": "u64"
                },
                {
                    "name": "lines_accepted",
                    "type": "u32"
                },
                {
                    "name": "lines_rejected",
                    "type": "u32"
                },
                {
                    "name": "debit_total",
                    "type": "u64"
                },
                {
                    "name": "window_debited_after",
                    "type": "u64"
                }
            ]
        },
        "WeightEntry": {
            "type": "struct",
            "docs": [
                "One element of `relayerWeightsChanged.entries`."
            ],
            "fields": [
                {
                    "name": "address",
                    "type": "Address"
                },
                {
                    "name": "weight",
                    "type": "u32"
                }
            ]
        }
    }
}
