// package: ocap
// file: rpc.proto

import * as enum_pb from "./enum_pb";
import * as type_pb from "./type_pb";
import * as state_pb from "./state_pb";
import * as trace_type_pb from "./trace-type_pb";

export type TRequestEmpty = {
}

export type TRequestPaginated = {
}

export type TRequestGetState = {
  address: string,
  keys: Array<string>,
  height: number,
}

export type TRequestSendTx = {
  tx: string,
  wallet?: type_pb.TWalletInfo,
  token: string,
  commit: boolean,
  extra: string,
}

export type TResponseSendTx = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  hash: string,
}

export type TRequestGetTx = {
  hash: string,
}

export type TResponseGetTx = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  info?: type_pb.TTransactionInfo,
}

export type TRequestGetBlock = {
  height: number,
}

export type TResponseGetBlock = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  block?: type_pb.TBlockInfo,
}

export type TRequestGetBlocks = {
  paging?: trace_type_pb.TPage,
  heightFilter?: trace_type_pb.TRangeFilter,
  emptyExcluded: boolean,
}

export type TResponseGetBlocks = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  page?: trace_type_pb.TPageInfo,
  blocks: Array<type_pb.TBlockInfoSimple>,
}

export type TRequestGetAccountState = {
  address: string,
  keys: Array<string>,
  height: number,
  traceMigration: boolean,
}

export type TResponseGetAccountState = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  state?: state_pb.TAccountState,
}

export type TResponseGetAssetState = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  state?: state_pb.TAssetState,
}

export type TResponseGetForgeState = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  state?: state_pb.TForgeState,
}

export type TResponseGetDelegateState = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  state?: state_pb.TDelegateState,
}

export type TResponseGetChainInfo = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  info?: type_pb.TChainInfo,
}

export type TResponseGetNodeInfo = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  info?: type_pb.TNodeInfo,
}

export type TResponseGetUnconfirmedTxs = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  page?: trace_type_pb.TPageInfo,
  unconfirmedTxs?: type_pb.TUnconfirmedTxs,
}

export type TResponseGetNetInfo = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  netInfo?: type_pb.TNetInfo,
}

export type TResponseGetValidatorsInfo = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  validatorsInfo?: type_pb.TValidatorsInfo,
}

export type TRequestGetConfig = {
  parsed: boolean,
}

export type TResponseGetConfig = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  config: string,
}

export type TRequestListTransactions = {
  paging?: trace_type_pb.TPage,
  timeFilter?: trace_type_pb.TTimeFilter,
  addressFilter?: trace_type_pb.TAddressFilter,
  typeFilter?: trace_type_pb.TTypeFilter,
  validityFilter?: trace_type_pb.TValidityFilter,
  factoryFilter?: trace_type_pb.TFactoryFilter,
  tokenFilter?: trace_type_pb.TTokenFilter,
  assetFilter?: trace_type_pb.TAssetFilter,
  accountFilter?: trace_type_pb.TAccountFilter,
  txFilter?: trace_type_pb.TTxFilter,
  rollupFilter?: trace_type_pb.TRollupFilter,
  stakeFilter?: trace_type_pb.TStakeFilter,
  delegationFilter?: trace_type_pb.TDelegationFilter,
  tokenFactoryFilter?: trace_type_pb.TTokenFactoryFilter,
  includeData: boolean,
}

export type TResponseListTransactions = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  page?: trace_type_pb.TPageInfo,
  transactions: Array<trace_type_pb.TIndexedTransaction>,
}

export type TRequestListAssets = {
  paging?: trace_type_pb.TPage,
  ownerAddress: string,
  factoryAddress: string,
  timeFilter?: trace_type_pb.TTimeFilter,
}

export type TResponseListAssets = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  page?: trace_type_pb.TPageInfo,
  assets: Array<trace_type_pb.TIndexedAssetState>,
}

export type TRequestListTopAccounts = {
  paging?: trace_type_pb.TPage,
  tokenaddress: string,
  timeFilter?: trace_type_pb.TTimeFilter,
}

export type TResponseListTopAccounts = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  page?: trace_type_pb.TPageInfo,
  accounts: Array<trace_type_pb.TIndexedAccountState>,
}

export type TRequestListAssetTransactions = {
  paging?: trace_type_pb.TPage,
  address: string,
}

export type TResponseListAssetTransactions = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  page?: trace_type_pb.TPageInfo,
  transactions: Array<trace_type_pb.TIndexedTransaction>,
}

export type TRequestListBlocks = {
  paging?: trace_type_pb.TPage,
  proposer: string,
  timeFilter?: trace_type_pb.TTimeFilter,
  heightFilter?: trace_type_pb.TRangeFilter,
  numTxsFilter?: trace_type_pb.TRangeFilter,
  numInvalidTxsFilter?: trace_type_pb.TRangeFilter,
}

export type TResponseListBlocks = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  page?: trace_type_pb.TPageInfo,
  blocks: Array<trace_type_pb.TIndexedBlock>,
}

export type TResponseGetTokenState = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  state?: state_pb.TTokenState,
}

export type TRequestListTokens = {
  paging?: trace_type_pb.TPage,
  issuerAddress: string,
  timeFilter?: trace_type_pb.TTimeFilter,
}

export type TResponseListTokens = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  page?: trace_type_pb.TPageInfo,
  tokens: Array<trace_type_pb.TIndexedTokenState>,
}

export type TResponseGetFactoryState = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  state?: state_pb.TAssetFactoryState,
}

export type TRequestListFactories = {
  paging?: trace_type_pb.TPage,
  ownerAddress: string,
  addressList: Array<string>,
  timeFilter?: trace_type_pb.TTimeFilter,
}

export type TResponseListFactories = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  page?: trace_type_pb.TPageInfo,
  factories: Array<trace_type_pb.TIndexedFactoryState>,
}

export type TRequestGetAccountTokens = {
  address: string,
  token: string,
}

export type TResponseGetAccountTokens = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  tokens: Array<trace_type_pb.TAccountToken>,
}

export type TResponseGetStakeState = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  state?: state_pb.TStakeState,
}

export type TRequestListStakes = {
  paging?: trace_type_pb.TPage,
  addressFilter?: trace_type_pb.TAddressFilter,
  timeFilter?: trace_type_pb.TTimeFilter,
  assetFilter?: trace_type_pb.TAssetFilter,
}

export type TResponseListStakes = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  page?: trace_type_pb.TPageInfo,
  stakes: Array<trace_type_pb.TIndexedStakeState>,
}

export type TResponseGetRollupState = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  state?: state_pb.TRollupState,
}

export type TRequestListRollups = {
  paging?: trace_type_pb.TPage,
  tokenAddress: string,
  foreignTokenAddress: string,
  timeFilter?: trace_type_pb.TTimeFilter,
}

export type TResponseListRollups = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  page?: trace_type_pb.TPageInfo,
  rollups: Array<trace_type_pb.TIndexedRollupState>,
}

export type TRequestGetRollupBlock = {
  hash: string,
  height: number,
  rollupAddress: string,
}

export type TResponseGetRollupBlock = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  block?: state_pb.TRollupBlock,
}

export type TRequestListRollupBlocks = {
  paging?: trace_type_pb.TPage,
  rollupAddress: string,
  tokenAddress: string,
  proposer: string,
  validatorFilter?: trace_type_pb.TValidatorFilter,
  txFilter?: trace_type_pb.TTxFilter,
  timeFilter?: trace_type_pb.TTimeFilter,
}

export type TResponseListRollupBlocks = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  page?: trace_type_pb.TPageInfo,
  blocks: Array<trace_type_pb.TIndexedRollupBlock>,
}

export type TRequestListRollupValidators = {
  paging?: trace_type_pb.TPage,
  rollupAddress: string,
}

export type TResponseListRollupValidators = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  page?: trace_type_pb.TPageInfo,
  validators: Array<trace_type_pb.TIndexedRollupValidator>,
}

export type TRequestSearch = {
  paging?: trace_type_pb.TPage,
  keyword: string,
}

export type TResponseSearch = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  page?: trace_type_pb.TPageInfo,
  results: Array<trace_type_pb.TSearchResult>,
}

export type TRequestGetEvidenceState = {
  hash: string,
}

export type TResponseGetEvidenceState = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  state?: state_pb.TEvidenceState,
}

export type TResponseGetForgeStats = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  forgeStats?: type_pb.TForgeStats,
}

export type TRequestEstimateGas = {
  typeUrl: string,
  tx: string,
}

export type TResponseEstimateGas = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  estimate?: type_pb.TGasEstimate,
}

export type TRequestListDelegations = {
  paging?: trace_type_pb.TPage,
  from: string,
  to: string,
  timeFilter?: trace_type_pb.TTimeFilter,
}

export type TResponseListDelegations = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  page?: trace_type_pb.TPageInfo,
  delegations: Array<trace_type_pb.TIndexedDelegationState>,
}

export type TRequestListTokenFlows = {
  paging?: trace_type_pb.TPage,
  accountAddress: string,
  tokenAddress: string,
  depth: number,
  direction: trace_type_pb.TokenFlowDirectionMap[keyof trace_type_pb.TokenFlowDirectionMap],
}

export type TResponseListTokenFlows = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  page?: trace_type_pb.TPageInfo,
  data: Array<trace_type_pb.TIndexedTokenFlow>,
}

export type TRequestVerifyAccountRisk = {
  accountAddress: string,
  tokenAddress: string,
}

export type TResponseVerifyAccountRisk = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  data?: trace_type_pb.TVerifyAccountRiskResult,
}

export type TRequestGetTokenDistribution = {
  tokenAddress: string,
}

export type TResponseGetTokenDistribution = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  data?: trace_type_pb.TTokenDistribution,
}

export type TResponseGetTokenFactoryState = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  state?: state_pb.TTokenFactoryState,
}

export type TRequestListTokenFactories = {
  paging?: trace_type_pb.TPage,
  owner: string,
  reserveAddress: string,
  tokenAddress: string,
  timeFilter?: trace_type_pb.TTimeFilter,
}

export type TResponseListTokenFactories = {
  code: enum_pb.StatusCodeMap[keyof enum_pb.StatusCodeMap],
  page?: trace_type_pb.TPageInfo,
  tokenFactories: Array<trace_type_pb.TIndexedTokenFactoryState>,
}
