syntax = "proto3";
package cosmos.circuit.v1;

option go_package = "cosmossdk.io/x/circuit/types";

import "cosmos/base/query/v1beta1/pagination.proto";
import "cosmos/circuit/v1/types.proto";
import "google/api/annotations.proto";
import "cosmos/query/v1/query.proto";

// Query defines the circuit gRPC querier service.
service Query {
  // Account returns account permissions.
  rpc Account(QueryAccountRequest) returns (AccountResponse) {
    option (cosmos.query.v1.module_query_safe) = true;
    option (google.api.http).get               = "/cosmos/circuit/v1/accounts/{address}";
  }

  // Account returns account permissions.
  rpc Accounts(QueryAccountsRequest) returns (AccountsResponse) {
    option (cosmos.query.v1.module_query_safe) = true;
    option (google.api.http).get               = "/cosmos/circuit/v1/accounts";
  }

  // DisabledList returns a list of disabled message urls
  rpc DisabledList(QueryDisabledListRequest) returns (DisabledListResponse) {
    option (cosmos.query.v1.module_query_safe) = true;
    option (google.api.http).get               = "/cosmos/circuit/v1/disable_list";
  }
}

// QueryAccountRequest is the request type for the Query/Account RPC method.
message QueryAccountRequest {
  string address = 1;
}

// AccountResponse is the response type for the Query/Account RPC method.
message AccountResponse {
  Permissions permission = 1;
}

// QueryAccountsRequest is the request type for the Query/Accounts RPC method.
message QueryAccountsRequest {
  // pagination defines an optional pagination for the request.
  cosmos.base.query.v1beta1.PageRequest pagination = 1;
}

// AccountsResponse is the response type for the Query/Accounts RPC method.
message AccountsResponse {
  repeated GenesisAccountPermissions accounts = 1;
  // pagination defines the pagination in the response.
  cosmos.base.query.v1beta1.PageResponse pagination = 2;
}

// QueryDisableListRequest is the request type for the Query/DisabledList RPC method.
message QueryDisabledListRequest {}

// DisabledListResponse is the response type for the Query/DisabledList RPC method.
message DisabledListResponse {
  repeated string disabled_list = 1;
}
