[
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "validatorSrcAddress",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "validatorDstAddress",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "beginRedelegate",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "completionTime",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "validatorAddress",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "creationHeight",
        "type": "uint256"
      }
    ],
    "name": "cancelUnbondingDelegation",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "string",
            "name": "moniker",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "identity",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "website",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "securityContact",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "details",
            "type": "string"
          }
        ],
        "internalType": "struct Description",
        "name": "description",
        "type": "tuple"
      },
      {
        "components": [
          {
            "internalType": "uint256",
            "name": "rate",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "maxRate",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "maxChangeRate",
            "type": "uint256"
          }
        ],
        "internalType": "struct CommissionRates",
        "name": "commission",
        "type": "tuple"
      },
      {
        "internalType": "uint256",
        "name": "minSelfDelegation",
        "type": "uint256"
      },
      {
        "internalType": "string",
        "name": "pubkey",
        "type": "string"
      },
      {
        "internalType": "uint256",
        "name": "value",
        "type": "uint256"
      }
    ],
    "name": "createValidator",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "validatorAddress",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "delegate",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "delegatorAddr",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "validatorAddr",
        "type": "address"
      }
    ],
    "name": "delegation",
    "outputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "delegatorAddress",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "validatorAddress",
            "type": "address"
          },
          {
            "internalType": "uint256",
            "name": "shares",
            "type": "uint256"
          }
        ],
        "internalType": "struct Delegation",
        "name": "delegation",
        "type": "tuple"
      },
      {
        "internalType": "uint256",
        "name": "balance",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "delegatorAddr",
        "type": "address"
      },
      {
        "components": [
          {
            "internalType": "bytes",
            "name": "key",
            "type": "bytes"
          },
          {
            "internalType": "uint64",
            "name": "offset",
            "type": "uint64"
          },
          {
            "internalType": "uint64",
            "name": "limit",
            "type": "uint64"
          },
          {
            "internalType": "bool",
            "name": "countTotal",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "reverse",
            "type": "bool"
          }
        ],
        "internalType": "struct PageRequest",
        "name": "pagination",
        "type": "tuple"
      }
    ],
    "name": "delegatorDelegations",
    "outputs": [
      {
        "components": [
          {
            "components": [
              {
                "internalType": "address",
                "name": "delegatorAddress",
                "type": "address"
              },
              {
                "internalType": "address",
                "name": "validatorAddress",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "shares",
                "type": "uint256"
              }
            ],
            "internalType": "struct Delegation",
            "name": "delegation",
            "type": "tuple"
          },
          {
            "internalType": "uint256",
            "name": "balance",
            "type": "uint256"
          }
        ],
        "internalType": "struct DelegationResponse[]",
        "name": "delegationResponses",
        "type": "tuple[]"
      },
      {
        "components": [
          {
            "internalType": "bytes",
            "name": "nextKey",
            "type": "bytes"
          },
          {
            "internalType": "uint64",
            "name": "total",
            "type": "uint64"
          }
        ],
        "internalType": "struct PageResponse",
        "name": "paginationResult",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "delegatorAddr",
        "type": "address"
      },
      {
        "components": [
          {
            "internalType": "bytes",
            "name": "key",
            "type": "bytes"
          },
          {
            "internalType": "uint64",
            "name": "offset",
            "type": "uint64"
          },
          {
            "internalType": "uint64",
            "name": "limit",
            "type": "uint64"
          },
          {
            "internalType": "bool",
            "name": "countTotal",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "reverse",
            "type": "bool"
          }
        ],
        "internalType": "struct PageRequest",
        "name": "pagination",
        "type": "tuple"
      }
    ],
    "name": "delegatorUnbondingDelegations",
    "outputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "delegatorAddress",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "validatorAddress",
            "type": "address"
          },
          {
            "components": [
              {
                "internalType": "int64",
                "name": "creationHeight",
                "type": "int64"
              },
              {
                "internalType": "int64",
                "name": "completionTime",
                "type": "int64"
              },
              {
                "internalType": "uint256",
                "name": "initialBalance",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "balance",
                "type": "uint256"
              },
              {
                "internalType": "uint64",
                "name": "unbondingId",
                "type": "uint64"
              },
              {
                "internalType": "int64",
                "name": "unbondingOnHoldRefCount",
                "type": "int64"
              }
            ],
            "internalType": "struct UnbondingDelegationEntry[]",
            "name": "entries",
            "type": "tuple[]"
          }
        ],
        "internalType": "struct UnbondingDelegation[]",
        "name": "unbondingResponses",
        "type": "tuple[]"
      },
      {
        "components": [
          {
            "internalType": "bytes",
            "name": "nextKey",
            "type": "bytes"
          },
          {
            "internalType": "uint64",
            "name": "total",
            "type": "uint64"
          }
        ],
        "internalType": "struct PageResponse",
        "name": "paginationResult",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "delegatorAddr",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "validatorAddr",
        "type": "address"
      }
    ],
    "name": "delegatorValidator",
    "outputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "operatorAddress",
            "type": "address"
          },
          {
            "internalType": "string",
            "name": "consensusPubkey",
            "type": "string"
          },
          {
            "internalType": "bool",
            "name": "jailed",
            "type": "bool"
          },
          {
            "internalType": "enum BondStatus",
            "name": "status",
            "type": "uint8"
          },
          {
            "internalType": "uint256",
            "name": "tokens",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "delegatorShares",
            "type": "uint256"
          },
          {
            "components": [
              {
                "internalType": "string",
                "name": "moniker",
                "type": "string"
              },
              {
                "internalType": "string",
                "name": "identity",
                "type": "string"
              },
              {
                "internalType": "string",
                "name": "website",
                "type": "string"
              },
              {
                "internalType": "string",
                "name": "securityContact",
                "type": "string"
              },
              {
                "internalType": "string",
                "name": "details",
                "type": "string"
              }
            ],
            "internalType": "struct Description",
            "name": "description",
            "type": "tuple"
          },
          {
            "internalType": "int64",
            "name": "unbondingHeight",
            "type": "int64"
          },
          {
            "internalType": "int64",
            "name": "unbondingTime",
            "type": "int64"
          },
          {
            "components": [
              {
                "components": [
                  {
                    "internalType": "uint256",
                    "name": "rate",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "maxRate",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "maxChangeRate",
                    "type": "uint256"
                  }
                ],
                "internalType": "struct CommissionRates",
                "name": "commissionRates",
                "type": "tuple"
              },
              {
                "internalType": "uint256",
                "name": "updateTime",
                "type": "uint256"
              }
            ],
            "internalType": "struct Commission",
            "name": "commission",
            "type": "tuple"
          },
          {
            "internalType": "uint256",
            "name": "minSelfDelegation",
            "type": "uint256"
          },
          {
            "internalType": "int64",
            "name": "unbondingOnHoldRefCount",
            "type": "int64"
          },
          {
            "internalType": "uint64[]",
            "name": "unbondingIds",
            "type": "uint64[]"
          }
        ],
        "internalType": "struct Validator",
        "name": "validator",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "delegatorAddr",
        "type": "address"
      },
      {
        "components": [
          {
            "internalType": "bytes",
            "name": "key",
            "type": "bytes"
          },
          {
            "internalType": "uint64",
            "name": "offset",
            "type": "uint64"
          },
          {
            "internalType": "uint64",
            "name": "limit",
            "type": "uint64"
          },
          {
            "internalType": "bool",
            "name": "countTotal",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "reverse",
            "type": "bool"
          }
        ],
        "internalType": "struct PageRequest",
        "name": "pagination",
        "type": "tuple"
      }
    ],
    "name": "delegatorValidators",
    "outputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "operatorAddress",
            "type": "address"
          },
          {
            "internalType": "string",
            "name": "consensusPubkey",
            "type": "string"
          },
          {
            "internalType": "bool",
            "name": "jailed",
            "type": "bool"
          },
          {
            "internalType": "enum BondStatus",
            "name": "status",
            "type": "uint8"
          },
          {
            "internalType": "uint256",
            "name": "tokens",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "delegatorShares",
            "type": "uint256"
          },
          {
            "components": [
              {
                "internalType": "string",
                "name": "moniker",
                "type": "string"
              },
              {
                "internalType": "string",
                "name": "identity",
                "type": "string"
              },
              {
                "internalType": "string",
                "name": "website",
                "type": "string"
              },
              {
                "internalType": "string",
                "name": "securityContact",
                "type": "string"
              },
              {
                "internalType": "string",
                "name": "details",
                "type": "string"
              }
            ],
            "internalType": "struct Description",
            "name": "description",
            "type": "tuple"
          },
          {
            "internalType": "int64",
            "name": "unbondingHeight",
            "type": "int64"
          },
          {
            "internalType": "int64",
            "name": "unbondingTime",
            "type": "int64"
          },
          {
            "components": [
              {
                "components": [
                  {
                    "internalType": "uint256",
                    "name": "rate",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "maxRate",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "maxChangeRate",
                    "type": "uint256"
                  }
                ],
                "internalType": "struct CommissionRates",
                "name": "commissionRates",
                "type": "tuple"
              },
              {
                "internalType": "uint256",
                "name": "updateTime",
                "type": "uint256"
              }
            ],
            "internalType": "struct Commission",
            "name": "commission",
            "type": "tuple"
          },
          {
            "internalType": "uint256",
            "name": "minSelfDelegation",
            "type": "uint256"
          },
          {
            "internalType": "int64",
            "name": "unbondingOnHoldRefCount",
            "type": "int64"
          },
          {
            "internalType": "uint64[]",
            "name": "unbondingIds",
            "type": "uint64[]"
          }
        ],
        "internalType": "struct Validator[]",
        "name": "validators",
        "type": "tuple[]"
      },
      {
        "components": [
          {
            "internalType": "bytes",
            "name": "nextKey",
            "type": "bytes"
          },
          {
            "internalType": "uint64",
            "name": "total",
            "type": "uint64"
          }
        ],
        "internalType": "struct PageResponse",
        "name": "paginationResult",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "components": [
          {
            "internalType": "string",
            "name": "moniker",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "identity",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "website",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "securityContact",
            "type": "string"
          },
          {
            "internalType": "string",
            "name": "details",
            "type": "string"
          }
        ],
        "internalType": "struct Description",
        "name": "description",
        "type": "tuple"
      },
      {
        "components": [
          {
            "internalType": "bool",
            "name": "isNull",
            "type": "bool"
          },
          {
            "internalType": "uint256",
            "name": "value",
            "type": "uint256"
          }
        ],
        "internalType": "struct NullableUint",
        "name": "commissionRate",
        "type": "tuple"
      },
      {
        "components": [
          {
            "internalType": "bool",
            "name": "isNull",
            "type": "bool"
          },
          {
            "internalType": "uint256",
            "name": "value",
            "type": "uint256"
          }
        ],
        "internalType": "struct NullableUint",
        "name": "minSelfDelegation",
        "type": "tuple"
      }
    ],
    "name": "editValidator",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "params",
    "outputs": [
      {
        "components": [
          {
            "internalType": "int64",
            "name": "unbondingTime",
            "type": "int64"
          },
          {
            "internalType": "uint32",
            "name": "maxValidators",
            "type": "uint32"
          },
          {
            "internalType": "uint32",
            "name": "maxEntries",
            "type": "uint32"
          },
          {
            "internalType": "uint32",
            "name": "historicalEntries",
            "type": "uint32"
          },
          {
            "internalType": "string",
            "name": "bondDenom",
            "type": "string"
          },
          {
            "internalType": "uint256",
            "name": "minCommissionRate",
            "type": "uint256"
          }
        ],
        "internalType": "struct Params",
        "name": "params",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "pool",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "notBondedTokens",
        "type": "uint256"
      },
      {
        "internalType": "uint256",
        "name": "bondedTokens",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "delegatorAddress",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "srcValidatorAddress",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "dstValidatorAddress",
        "type": "address"
      },
      {
        "components": [
          {
            "internalType": "bytes",
            "name": "key",
            "type": "bytes"
          },
          {
            "internalType": "uint64",
            "name": "offset",
            "type": "uint64"
          },
          {
            "internalType": "uint64",
            "name": "limit",
            "type": "uint64"
          },
          {
            "internalType": "bool",
            "name": "countTotal",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "reverse",
            "type": "bool"
          }
        ],
        "internalType": "struct PageRequest",
        "name": "pageRequest",
        "type": "tuple"
      }
    ],
    "name": "redelegations",
    "outputs": [
      {
        "components": [
          {
            "components": [
              {
                "internalType": "address",
                "name": "delegatorAddress",
                "type": "address"
              },
              {
                "internalType": "address",
                "name": "validatorSrcAddress",
                "type": "address"
              },
              {
                "internalType": "address",
                "name": "validatorDstAddress",
                "type": "address"
              },
              {
                "components": [
                  {
                    "internalType": "int64",
                    "name": "creationHeight",
                    "type": "int64"
                  },
                  {
                    "internalType": "int64",
                    "name": "completionTime",
                    "type": "int64"
                  },
                  {
                    "internalType": "uint256",
                    "name": "initialBalance",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "sharesDst",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint64",
                    "name": "unbondingId",
                    "type": "uint64"
                  },
                  {
                    "internalType": "int64",
                    "name": "unbondingOnHoldRefCount",
                    "type": "int64"
                  }
                ],
                "internalType": "struct RedelegationEntry[]",
                "name": "entries",
                "type": "tuple[]"
              }
            ],
            "internalType": "struct Redelegation",
            "name": "redelegation",
            "type": "tuple"
          },
          {
            "components": [
              {
                "components": [
                  {
                    "internalType": "int64",
                    "name": "creationHeight",
                    "type": "int64"
                  },
                  {
                    "internalType": "int64",
                    "name": "completionTime",
                    "type": "int64"
                  },
                  {
                    "internalType": "uint256",
                    "name": "initialBalance",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "sharesDst",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint64",
                    "name": "unbondingId",
                    "type": "uint64"
                  },
                  {
                    "internalType": "int64",
                    "name": "unbondingOnHoldRefCount",
                    "type": "int64"
                  }
                ],
                "internalType": "struct RedelegationEntry",
                "name": "redelegationEntry",
                "type": "tuple"
              },
              {
                "internalType": "uint256",
                "name": "balance",
                "type": "uint256"
              }
            ],
            "internalType": "struct RedelegationEntryResponse[]",
            "name": "entries",
            "type": "tuple[]"
          }
        ],
        "internalType": "struct RedelegationResponse[]",
        "name": "redelegationResponses",
        "type": "tuple[]"
      },
      {
        "components": [
          {
            "internalType": "bytes",
            "name": "nextKey",
            "type": "bytes"
          },
          {
            "internalType": "uint64",
            "name": "total",
            "type": "uint64"
          }
        ],
        "internalType": "struct PageResponse",
        "name": "paginationResult",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "delegatorAddr",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "validatorAddr",
        "type": "address"
      }
    ],
    "name": "unbondingDelegation",
    "outputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "delegatorAddress",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "validatorAddress",
            "type": "address"
          },
          {
            "components": [
              {
                "internalType": "int64",
                "name": "creationHeight",
                "type": "int64"
              },
              {
                "internalType": "int64",
                "name": "completionTime",
                "type": "int64"
              },
              {
                "internalType": "uint256",
                "name": "initialBalance",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "balance",
                "type": "uint256"
              },
              {
                "internalType": "uint64",
                "name": "unbondingId",
                "type": "uint64"
              },
              {
                "internalType": "int64",
                "name": "unbondingOnHoldRefCount",
                "type": "int64"
              }
            ],
            "internalType": "struct UnbondingDelegationEntry[]",
            "name": "entries",
            "type": "tuple[]"
          }
        ],
        "internalType": "struct UnbondingDelegation",
        "name": "unbond",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "validatorAddress",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "amount",
        "type": "uint256"
      }
    ],
    "name": "undelegate",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "completionTime",
        "type": "uint256"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "validatorAddress",
        "type": "address"
      }
    ],
    "name": "validator",
    "outputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "operatorAddress",
            "type": "address"
          },
          {
            "internalType": "string",
            "name": "consensusPubkey",
            "type": "string"
          },
          {
            "internalType": "bool",
            "name": "jailed",
            "type": "bool"
          },
          {
            "internalType": "enum BondStatus",
            "name": "status",
            "type": "uint8"
          },
          {
            "internalType": "uint256",
            "name": "tokens",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "delegatorShares",
            "type": "uint256"
          },
          {
            "components": [
              {
                "internalType": "string",
                "name": "moniker",
                "type": "string"
              },
              {
                "internalType": "string",
                "name": "identity",
                "type": "string"
              },
              {
                "internalType": "string",
                "name": "website",
                "type": "string"
              },
              {
                "internalType": "string",
                "name": "securityContact",
                "type": "string"
              },
              {
                "internalType": "string",
                "name": "details",
                "type": "string"
              }
            ],
            "internalType": "struct Description",
            "name": "description",
            "type": "tuple"
          },
          {
            "internalType": "int64",
            "name": "unbondingHeight",
            "type": "int64"
          },
          {
            "internalType": "int64",
            "name": "unbondingTime",
            "type": "int64"
          },
          {
            "components": [
              {
                "components": [
                  {
                    "internalType": "uint256",
                    "name": "rate",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "maxRate",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "maxChangeRate",
                    "type": "uint256"
                  }
                ],
                "internalType": "struct CommissionRates",
                "name": "commissionRates",
                "type": "tuple"
              },
              {
                "internalType": "uint256",
                "name": "updateTime",
                "type": "uint256"
              }
            ],
            "internalType": "struct Commission",
            "name": "commission",
            "type": "tuple"
          },
          {
            "internalType": "uint256",
            "name": "minSelfDelegation",
            "type": "uint256"
          },
          {
            "internalType": "int64",
            "name": "unbondingOnHoldRefCount",
            "type": "int64"
          },
          {
            "internalType": "uint64[]",
            "name": "unbondingIds",
            "type": "uint64[]"
          }
        ],
        "internalType": "struct Validator",
        "name": "validator",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "validatorAddr",
        "type": "address"
      },
      {
        "components": [
          {
            "internalType": "bytes",
            "name": "key",
            "type": "bytes"
          },
          {
            "internalType": "uint64",
            "name": "offset",
            "type": "uint64"
          },
          {
            "internalType": "uint64",
            "name": "limit",
            "type": "uint64"
          },
          {
            "internalType": "bool",
            "name": "countTotal",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "reverse",
            "type": "bool"
          }
        ],
        "internalType": "struct PageRequest",
        "name": "pagination",
        "type": "tuple"
      }
    ],
    "name": "validatorDelegations",
    "outputs": [
      {
        "components": [
          {
            "components": [
              {
                "internalType": "address",
                "name": "delegatorAddress",
                "type": "address"
              },
              {
                "internalType": "address",
                "name": "validatorAddress",
                "type": "address"
              },
              {
                "internalType": "uint256",
                "name": "shares",
                "type": "uint256"
              }
            ],
            "internalType": "struct Delegation",
            "name": "delegation",
            "type": "tuple"
          },
          {
            "internalType": "uint256",
            "name": "balance",
            "type": "uint256"
          }
        ],
        "internalType": "struct DelegationResponse[]",
        "name": "delegationResponses",
        "type": "tuple[]"
      },
      {
        "components": [
          {
            "internalType": "bytes",
            "name": "nextKey",
            "type": "bytes"
          },
          {
            "internalType": "uint64",
            "name": "total",
            "type": "uint64"
          }
        ],
        "internalType": "struct PageResponse",
        "name": "paginationResult",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "validatorAddr",
        "type": "address"
      },
      {
        "components": [
          {
            "internalType": "bytes",
            "name": "key",
            "type": "bytes"
          },
          {
            "internalType": "uint64",
            "name": "offset",
            "type": "uint64"
          },
          {
            "internalType": "uint64",
            "name": "limit",
            "type": "uint64"
          },
          {
            "internalType": "bool",
            "name": "countTotal",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "reverse",
            "type": "bool"
          }
        ],
        "internalType": "struct PageRequest",
        "name": "pagination",
        "type": "tuple"
      }
    ],
    "name": "validatorUnbondingDelegations",
    "outputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "delegatorAddress",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "validatorAddress",
            "type": "address"
          },
          {
            "components": [
              {
                "internalType": "int64",
                "name": "creationHeight",
                "type": "int64"
              },
              {
                "internalType": "int64",
                "name": "completionTime",
                "type": "int64"
              },
              {
                "internalType": "uint256",
                "name": "initialBalance",
                "type": "uint256"
              },
              {
                "internalType": "uint256",
                "name": "balance",
                "type": "uint256"
              },
              {
                "internalType": "uint64",
                "name": "unbondingId",
                "type": "uint64"
              },
              {
                "internalType": "int64",
                "name": "unbondingOnHoldRefCount",
                "type": "int64"
              }
            ],
            "internalType": "struct UnbondingDelegationEntry[]",
            "name": "entries",
            "type": "tuple[]"
          }
        ],
        "internalType": "struct UnbondingDelegation[]",
        "name": "unbondingResponses",
        "type": "tuple[]"
      },
      {
        "components": [
          {
            "internalType": "bytes",
            "name": "nextKey",
            "type": "bytes"
          },
          {
            "internalType": "uint64",
            "name": "total",
            "type": "uint64"
          }
        ],
        "internalType": "struct PageResponse",
        "name": "paginationResult",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "status",
        "type": "string"
      },
      {
        "components": [
          {
            "internalType": "bytes",
            "name": "key",
            "type": "bytes"
          },
          {
            "internalType": "uint64",
            "name": "offset",
            "type": "uint64"
          },
          {
            "internalType": "uint64",
            "name": "limit",
            "type": "uint64"
          },
          {
            "internalType": "bool",
            "name": "countTotal",
            "type": "bool"
          },
          {
            "internalType": "bool",
            "name": "reverse",
            "type": "bool"
          }
        ],
        "internalType": "struct PageRequest",
        "name": "pagination",
        "type": "tuple"
      }
    ],
    "name": "validators",
    "outputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "operatorAddress",
            "type": "address"
          },
          {
            "internalType": "string",
            "name": "consensusPubkey",
            "type": "string"
          },
          {
            "internalType": "bool",
            "name": "jailed",
            "type": "bool"
          },
          {
            "internalType": "enum BondStatus",
            "name": "status",
            "type": "uint8"
          },
          {
            "internalType": "uint256",
            "name": "tokens",
            "type": "uint256"
          },
          {
            "internalType": "uint256",
            "name": "delegatorShares",
            "type": "uint256"
          },
          {
            "components": [
              {
                "internalType": "string",
                "name": "moniker",
                "type": "string"
              },
              {
                "internalType": "string",
                "name": "identity",
                "type": "string"
              },
              {
                "internalType": "string",
                "name": "website",
                "type": "string"
              },
              {
                "internalType": "string",
                "name": "securityContact",
                "type": "string"
              },
              {
                "internalType": "string",
                "name": "details",
                "type": "string"
              }
            ],
            "internalType": "struct Description",
            "name": "description",
            "type": "tuple"
          },
          {
            "internalType": "int64",
            "name": "unbondingHeight",
            "type": "int64"
          },
          {
            "internalType": "int64",
            "name": "unbondingTime",
            "type": "int64"
          },
          {
            "components": [
              {
                "components": [
                  {
                    "internalType": "uint256",
                    "name": "rate",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "maxRate",
                    "type": "uint256"
                  },
                  {
                    "internalType": "uint256",
                    "name": "maxChangeRate",
                    "type": "uint256"
                  }
                ],
                "internalType": "struct CommissionRates",
                "name": "commissionRates",
                "type": "tuple"
              },
              {
                "internalType": "uint256",
                "name": "updateTime",
                "type": "uint256"
              }
            ],
            "internalType": "struct Commission",
            "name": "commission",
            "type": "tuple"
          },
          {
            "internalType": "uint256",
            "name": "minSelfDelegation",
            "type": "uint256"
          },
          {
            "internalType": "int64",
            "name": "unbondingOnHoldRefCount",
            "type": "int64"
          },
          {
            "internalType": "uint64[]",
            "name": "unbondingIds",
            "type": "uint64[]"
          }
        ],
        "internalType": "struct Validator[]",
        "name": "validators",
        "type": "tuple[]"
      },
      {
        "components": [
          {
            "internalType": "bytes",
            "name": "nextKey",
            "type": "bytes"
          },
          {
            "internalType": "uint64",
            "name": "total",
            "type": "uint64"
          }
        ],
        "internalType": "struct PageResponse",
        "name": "paginationResult",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  }
]