// package: ocap
// file: state.proto

import * as jspb from "google-protobuf";
import * as google_protobuf_any_pb from "google-protobuf/google/protobuf/any_pb";
import * as google_protobuf_timestamp_pb from "google-protobuf/google/protobuf/timestamp_pb";
import * as type_pb from "./type_pb";
import * as tx_pb from "./tx_pb";

export class AccountState extends jspb.Message {
  hasBalance(): boolean;
  clearBalance(): void;
  getBalance(): type_pb.TBigUint | undefined;
  setBalance(value?: type_pb.TBigUint): void;

  getNonce(): string;
  setNonce(value: string): void;

  getNumTxs(): string;
  setNumTxs(value: string): void;

  getAddress(): string;
  setAddress(value: string): void;

  getPk(): Uint8Array | string;
  getPk_asU8(): Uint8Array;
  getPk_asB64(): string;
  setPk(value: Uint8Array | string): void;

  hasType(): boolean;
  clearType(): void;
  getType(): type_pb.TWalletType | undefined;
  setType(value?: type_pb.TWalletType): void;

  getMoniker(): string;
  setMoniker(value: string): void;

  hasContext(): boolean;
  clearContext(): void;
  getContext(): type_pb.TStateContext | undefined;
  setContext(value?: type_pb.TStateContext): void;

  getIssuer(): string;
  setIssuer(value: string): void;

  hasGasBalance(): boolean;
  clearGasBalance(): void;
  getGasBalance(): type_pb.TBigUint | undefined;
  setGasBalance(value?: type_pb.TBigUint): void;

  clearMigratedToList(): void;
  getMigratedToList(): Array<string>;
  setMigratedToList(value: Array<string>): void;
  addMigratedTo(value: string, index?: number): string;

  clearMigratedFromList(): void;
  getMigratedFromList(): Array<string>;
  setMigratedFromList(value: Array<string>): void;
  addMigratedFrom(value: string, index?: number): string;

  getNumAssets(): string;
  setNumAssets(value: string): void;

  clearTokensList(): void;
  getTokensList(): Array<type_pb.TIndexedTokenInput>;
  setTokensList(value: Array<type_pb.TIndexedTokenInput>): void;
  addTokens(value?: type_pb.IndexedTokenInput, index?: number): type_pb.IndexedTokenInput;

  hasData(): boolean;
  clearData(): void;
  getData(): google_protobuf_any_pb.Any | undefined;
  setData(value?: google_protobuf_any_pb.Any): void;

  serializeBinary(): Uint8Array;
  toObject(includeInstance?: boolean): TAccountState;
  static toObject(includeInstance: boolean, msg: AccountState): TAccountState;
  static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
  static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
  static serializeBinaryToWriter(message: AccountState, writer: jspb.BinaryWriter): void;
  static deserializeBinary(bytes: Uint8Array): AccountState;
  static deserializeBinaryFromReader(message: AccountState, reader: jspb.BinaryReader): AccountState;
}

export type TAccountState = {
  balance?: type_pb.TBigUint,
  nonce: string,
  numTxs: string,
  address: string,
  pk: Uint8Array | string,
  type?: type_pb.TWalletType,
  moniker: string,
  context?: type_pb.TStateContext,
  issuer: string,
  gasBalance?: type_pb.TBigUint,
  migratedTo: Array<string>,
  migratedFrom: Array<string>,
  numAssets: string,
  tokens: Array<type_pb.TIndexedTokenInput>,
  data?: google_protobuf_any_pb.Any,
}

export class AssetState extends jspb.Message {
  getAddress(): string;
  setAddress(value: string): void;

  getOwner(): string;
  setOwner(value: string): void;

  getMoniker(): string;
  setMoniker(value: string): void;

  getReadonly(): boolean;
  setReadonly(value: boolean): void;

  getTransferrable(): boolean;
  setTransferrable(value: boolean): void;

  getTtl(): number;
  setTtl(value: number): void;

  hasConsumedTime(): boolean;
  clearConsumedTime(): void;
  getConsumedTime(): google_protobuf_timestamp_pb.Timestamp | undefined;
  setConsumedTime(value?: google_protobuf_timestamp_pb.Timestamp): void;

  getIssuer(): string;
  setIssuer(value: string): void;

  getParent(): string;
  setParent(value: string): void;

  hasEndpoint(): boolean;
  clearEndpoint(): void;
  getEndpoint(): type_pb.TNFTEndpoint | undefined;
  setEndpoint(value?: type_pb.TNFTEndpoint): void;

  hasDisplay(): boolean;
  clearDisplay(): void;
  getDisplay(): type_pb.TNFTDisplay | undefined;
  setDisplay(value?: type_pb.TNFTDisplay): void;

  clearTagsList(): void;
  getTagsList(): Array<string>;
  setTagsList(value: Array<string>): void;
  addTags(value: string, index?: number): string;

  hasContext(): boolean;
  clearContext(): void;
  getContext(): type_pb.TStateContext | undefined;
  setContext(value?: type_pb.TStateContext): void;

  hasData(): boolean;
  clearData(): void;
  getData(): google_protobuf_any_pb.Any | undefined;
  setData(value?: google_protobuf_any_pb.Any): void;

  serializeBinary(): Uint8Array;
  toObject(includeInstance?: boolean): TAssetState;
  static toObject(includeInstance: boolean, msg: AssetState): TAssetState;
  static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
  static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
  static serializeBinaryToWriter(message: AssetState, writer: jspb.BinaryWriter): void;
  static deserializeBinary(bytes: Uint8Array): AssetState;
  static deserializeBinaryFromReader(message: AssetState, reader: jspb.BinaryReader): AssetState;
}

export type TAssetState = {
  address: string,
  owner: string,
  moniker: string,
  readonly: boolean,
  transferrable: boolean,
  ttl: number,
  consumedTime?: google_protobuf_timestamp_pb.Timestamp,
  issuer: string,
  parent: string,
  endpoint?: type_pb.TNFTEndpoint,
  display?: type_pb.TNFTDisplay,
  tags: Array<string>,
  context?: type_pb.TStateContext,
  data?: google_protobuf_any_pb.Any,
}

export class ForgeState extends jspb.Message {
  getAddress(): string;
  setAddress(value: string): void;

  hasConsensus(): boolean;
  clearConsensus(): void;
  getConsensus(): type_pb.TConsensusParams | undefined;
  setConsensus(value?: type_pb.TConsensusParams): void;

  getTasksMap(): jspb.Map<number, type_pb.UpgradeTasks>;
  clearTasksMap(): void;
  getVersion(): string;
  setVersion(value: string): void;

  hasToken(): boolean;
  clearToken(): void;
  getToken(): type_pb.TForgeToken | undefined;
  setToken(value?: type_pb.TForgeToken): void;

  hasTxConfig(): boolean;
  clearTxConfig(): void;
  getTxConfig(): type_pb.TTransactionConfig | undefined;
  setTxConfig(value?: type_pb.TTransactionConfig): void;

  hasUpgradeInfo(): boolean;
  clearUpgradeInfo(): void;
  getUpgradeInfo(): type_pb.TUpgradeInfo | undefined;
  setUpgradeInfo(value?: type_pb.TUpgradeInfo): void;

  clearAccountConfigList(): void;
  getAccountConfigList(): Array<type_pb.TAccountConfig>;
  setAccountConfigList(value: Array<type_pb.TAccountConfig>): void;
  addAccountConfig(value?: type_pb.AccountConfig, index?: number): type_pb.AccountConfig;

  hasVaults(): boolean;
  clearVaults(): void;
  getVaults(): type_pb.TVaultConfig | undefined;
  setVaults(value?: type_pb.TVaultConfig): void;

  hasData(): boolean;
  clearData(): void;
  getData(): google_protobuf_any_pb.Any | undefined;
  setData(value?: google_protobuf_any_pb.Any): void;

  serializeBinary(): Uint8Array;
  toObject(includeInstance?: boolean): TForgeState;
  static toObject(includeInstance: boolean, msg: ForgeState): TForgeState;
  static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
  static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
  static serializeBinaryToWriter(message: ForgeState, writer: jspb.BinaryWriter): void;
  static deserializeBinary(bytes: Uint8Array): ForgeState;
  static deserializeBinaryFromReader(message: ForgeState, reader: jspb.BinaryReader): ForgeState;
}

export type TForgeState = {
  address: string,
  consensus?: type_pb.TConsensusParams,
  tasksMap: Array<[number, type_pb.TUpgradeTasks]>,
  version: string,
  token?: type_pb.TForgeToken,
  txConfig?: type_pb.TTransactionConfig,
  upgradeInfo?: type_pb.TUpgradeInfo,
  accountConfig: Array<type_pb.TAccountConfig>,
  vaults?: type_pb.TVaultConfig,
  data?: google_protobuf_any_pb.Any,
}

export class RootState extends jspb.Message {
  getAddress(): string;
  setAddress(value: string): void;

  getAccount(): Uint8Array | string;
  getAccount_asU8(): Uint8Array;
  getAccount_asB64(): string;
  setAccount(value: Uint8Array | string): void;

  getAsset(): Uint8Array | string;
  getAsset_asU8(): Uint8Array;
  getAsset_asB64(): string;
  setAsset(value: Uint8Array | string): void;

  getReceipt(): Uint8Array | string;
  getReceipt_asU8(): Uint8Array;
  getReceipt_asB64(): string;
  setReceipt(value: Uint8Array | string): void;

  getProtocol(): Uint8Array | string;
  getProtocol_asU8(): Uint8Array;
  getProtocol_asB64(): string;
  setProtocol(value: Uint8Array | string): void;

  getGovernance(): Uint8Array | string;
  getGovernance_asU8(): Uint8Array;
  getGovernance_asB64(): string;
  setGovernance(value: Uint8Array | string): void;

  getCustom(): Uint8Array | string;
  getCustom_asU8(): Uint8Array;
  getCustom_asB64(): string;
  setCustom(value: Uint8Array | string): void;

  serializeBinary(): Uint8Array;
  toObject(includeInstance?: boolean): TRootState;
  static toObject(includeInstance: boolean, msg: RootState): TRootState;
  static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
  static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
  static serializeBinaryToWriter(message: RootState, writer: jspb.BinaryWriter): void;
  static deserializeBinary(bytes: Uint8Array): RootState;
  static deserializeBinaryFromReader(message: RootState, reader: jspb.BinaryReader): RootState;
}

export type TRootState = {
  address: string,
  account: Uint8Array | string,
  asset: Uint8Array | string,
  receipt: Uint8Array | string,
  protocol: Uint8Array | string,
  governance: Uint8Array | string,
  custom: Uint8Array | string,
}

export class DelegateOpState extends jspb.Message {
  getRule(): string;
  setRule(value: string): void;

  getNumTxs(): number;
  setNumTxs(value: number): void;

  getNumTxsDelta(): number;
  setNumTxsDelta(value: number): void;

  hasBalance(): boolean;
  clearBalance(): void;
  getBalance(): type_pb.TBigUint | undefined;
  setBalance(value?: type_pb.TBigUint): void;

  hasBalanceDelta(): boolean;
  clearBalanceDelta(): void;
  getBalanceDelta(): type_pb.TBigUint | undefined;
  setBalanceDelta(value?: type_pb.TBigUint): void;

  hasLimit(): boolean;
  clearLimit(): void;
  getLimit(): type_pb.TDelegateLimit | undefined;
  setLimit(value?: type_pb.TDelegateLimit): void;

  serializeBinary(): Uint8Array;
  toObject(includeInstance?: boolean): TDelegateOpState;
  static toObject(includeInstance: boolean, msg: DelegateOpState): TDelegateOpState;
  static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
  static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
  static serializeBinaryToWriter(message: DelegateOpState, writer: jspb.BinaryWriter): void;
  static deserializeBinary(bytes: Uint8Array): DelegateOpState;
  static deserializeBinaryFromReader(message: DelegateOpState, reader: jspb.BinaryReader): DelegateOpState;
}

export type TDelegateOpState = {
  rule: string,
  numTxs: number,
  numTxsDelta: number,
  balance?: type_pb.TBigUint,
  balanceDelta?: type_pb.TBigUint,
  limit?: type_pb.TDelegateLimit,
}

export class DelegateState extends jspb.Message {
  getAddress(): string;
  setAddress(value: string): void;

  getOpsMap(): jspb.Map<string, DelegateOpState>;
  clearOpsMap(): void;
  getFrom(): string;
  setFrom(value: string): void;

  getTo(): string;
  setTo(value: string): void;

  hasContext(): boolean;
  clearContext(): void;
  getContext(): type_pb.TStateContext | undefined;
  setContext(value?: type_pb.TStateContext): void;

  hasData(): boolean;
  clearData(): void;
  getData(): google_protobuf_any_pb.Any | undefined;
  setData(value?: google_protobuf_any_pb.Any): void;

  serializeBinary(): Uint8Array;
  toObject(includeInstance?: boolean): TDelegateState;
  static toObject(includeInstance: boolean, msg: DelegateState): TDelegateState;
  static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
  static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
  static serializeBinaryToWriter(message: DelegateState, writer: jspb.BinaryWriter): void;
  static deserializeBinary(bytes: Uint8Array): DelegateState;
  static deserializeBinaryFromReader(message: DelegateState, reader: jspb.BinaryReader): DelegateState;
}

export type TDelegateState = {
  address: string,
  opsMap: Array<[string, TDelegateOpState]>,
  from: string,
  to: string,
  context?: type_pb.TStateContext,
  data?: google_protobuf_any_pb.Any,
}

export class TokenState extends jspb.Message {
  getAddress(): string;
  setAddress(value: string): void;

  getIssuer(): string;
  setIssuer(value: string): void;

  getName(): string;
  setName(value: string): void;

  getDescription(): string;
  setDescription(value: string): void;

  getSymbol(): string;
  setSymbol(value: string): void;

  getUnit(): string;
  setUnit(value: string): void;

  getDecimal(): number;
  setDecimal(value: number): void;

  getIcon(): string;
  setIcon(value: string): void;

  getTotalSupply(): string;
  setTotalSupply(value: string): void;

  hasForeignToken(): boolean;
  clearForeignToken(): void;
  getForeignToken(): type_pb.TForeignToken | undefined;
  setForeignToken(value?: type_pb.TForeignToken): void;

  hasContext(): boolean;
  clearContext(): void;
  getContext(): type_pb.TStateContext | undefined;
  setContext(value?: type_pb.TStateContext): void;

  hasData(): boolean;
  clearData(): void;
  getData(): google_protobuf_any_pb.Any | undefined;
  setData(value?: google_protobuf_any_pb.Any): void;

  serializeBinary(): Uint8Array;
  toObject(includeInstance?: boolean): TTokenState;
  static toObject(includeInstance: boolean, msg: TokenState): TTokenState;
  static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
  static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
  static serializeBinaryToWriter(message: TokenState, writer: jspb.BinaryWriter): void;
  static deserializeBinary(bytes: Uint8Array): TokenState;
  static deserializeBinaryFromReader(message: TokenState, reader: jspb.BinaryReader): TokenState;
}

export type TTokenState = {
  address: string,
  issuer: string,
  name: string,
  description: string,
  symbol: string,
  unit: string,
  decimal: number,
  icon: string,
  totalSupply: string,
  foreignToken?: type_pb.TForeignToken,
  context?: type_pb.TStateContext,
  data?: google_protobuf_any_pb.Any,
}

export class AssetFactoryState extends jspb.Message {
  getAddress(): string;
  setAddress(value: string): void;

  getOwner(): string;
  setOwner(value: string): void;

  getName(): string;
  setName(value: string): void;

  getDescription(): string;
  setDescription(value: string): void;

  getSettlement(): string;
  setSettlement(value: string): void;

  getLimit(): number;
  setLimit(value: number): void;

  clearTrustedIssuersList(): void;
  getTrustedIssuersList(): Array<string>;
  setTrustedIssuersList(value: Array<string>): void;
  addTrustedIssuers(value: string, index?: number): string;

  hasInput(): boolean;
  clearInput(): void;
  getInput(): type_pb.TIndexedFactoryInput | undefined;
  setInput(value?: type_pb.TIndexedFactoryInput): void;

  hasOutput(): boolean;
  clearOutput(): void;
  getOutput(): tx_pb.TCreateAssetTx | undefined;
  setOutput(value?: tx_pb.TCreateAssetTx): void;

  clearHooksList(): void;
  getHooksList(): Array<type_pb.TAssetFactoryHook>;
  setHooksList(value: Array<type_pb.TAssetFactoryHook>): void;
  addHooks(value?: type_pb.AssetFactoryHook, index?: number): type_pb.AssetFactoryHook;

  hasData(): boolean;
  clearData(): void;
  getData(): google_protobuf_any_pb.Any | undefined;
  setData(value?: google_protobuf_any_pb.Any): void;

  hasContext(): boolean;
  clearContext(): void;
  getContext(): type_pb.TStateContext | undefined;
  setContext(value?: type_pb.TStateContext): void;

  hasBalance(): boolean;
  clearBalance(): void;
  getBalance(): type_pb.TBigUint | undefined;
  setBalance(value?: type_pb.TBigUint): void;

  clearTokensList(): void;
  getTokensList(): Array<type_pb.TIndexedTokenInput>;
  setTokensList(value: Array<type_pb.TIndexedTokenInput>): void;
  addTokens(value?: type_pb.IndexedTokenInput, index?: number): type_pb.IndexedTokenInput;

  getNumMinted(): number;
  setNumMinted(value: number): void;

  hasDisplay(): boolean;
  clearDisplay(): void;
  getDisplay(): type_pb.TNFTDisplay | undefined;
  setDisplay(value?: type_pb.TNFTDisplay): void;

  hasLastSettlement(): boolean;
  clearLastSettlement(): void;
  getLastSettlement(): google_protobuf_timestamp_pb.Timestamp | undefined;
  setLastSettlement(value?: google_protobuf_timestamp_pb.Timestamp): void;

  serializeBinary(): Uint8Array;
  toObject(includeInstance?: boolean): TAssetFactoryState;
  static toObject(includeInstance: boolean, msg: AssetFactoryState): TAssetFactoryState;
  static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
  static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
  static serializeBinaryToWriter(message: AssetFactoryState, writer: jspb.BinaryWriter): void;
  static deserializeBinary(bytes: Uint8Array): AssetFactoryState;
  static deserializeBinaryFromReader(message: AssetFactoryState, reader: jspb.BinaryReader): AssetFactoryState;
}

export type TAssetFactoryState = {
  address: string,
  owner: string,
  name: string,
  description: string,
  settlement: string,
  limit: number,
  trustedIssuers: Array<string>,
  input?: type_pb.TIndexedFactoryInput,
  output?: tx_pb.TCreateAssetTx,
  hooks: Array<type_pb.TAssetFactoryHook>,
  data?: google_protobuf_any_pb.Any,
  context?: type_pb.TStateContext,
  balance?: type_pb.TBigUint,
  tokens: Array<type_pb.TIndexedTokenInput>,
  numMinted: number,
  display?: type_pb.TNFTDisplay,
  lastSettlement?: google_protobuf_timestamp_pb.Timestamp,
}

export class StakeState extends jspb.Message {
  getAddress(): string;
  setAddress(value: string): void;

  getSender(): string;
  setSender(value: string): void;

  getReceiver(): string;
  setReceiver(value: string): void;

  clearTokensList(): void;
  getTokensList(): Array<type_pb.TIndexedTokenInput>;
  setTokensList(value: Array<type_pb.TIndexedTokenInput>): void;
  addTokens(value?: type_pb.IndexedTokenInput, index?: number): type_pb.IndexedTokenInput;

  clearAssetsList(): void;
  getAssetsList(): Array<string>;
  setAssetsList(value: Array<string>): void;
  addAssets(value: string, index?: number): string;

  getRevocable(): boolean;
  setRevocable(value: boolean): void;

  getMessage(): string;
  setMessage(value: string): void;

  getRevokeWaitingPeriod(): number;
  setRevokeWaitingPeriod(value: number): void;

  clearRevokedTokensList(): void;
  getRevokedTokensList(): Array<type_pb.TIndexedTokenInput>;
  setRevokedTokensList(value: Array<type_pb.TIndexedTokenInput>): void;
  addRevokedTokens(value?: type_pb.IndexedTokenInput, index?: number): type_pb.IndexedTokenInput;

  clearRevokedAssetsList(): void;
  getRevokedAssetsList(): Array<string>;
  setRevokedAssetsList(value: Array<string>): void;
  addRevokedAssets(value: string, index?: number): string;

  clearSlashersList(): void;
  getSlashersList(): Array<string>;
  setSlashersList(value: Array<string>): void;
  addSlashers(value: string, index?: number): string;

  getNonce(): string;
  setNonce(value: string): void;

  hasContext(): boolean;
  clearContext(): void;
  getContext(): type_pb.TStateContext | undefined;
  setContext(value?: type_pb.TStateContext): void;

  hasData(): boolean;
  clearData(): void;
  getData(): google_protobuf_any_pb.Any | undefined;
  setData(value?: google_protobuf_any_pb.Any): void;

  serializeBinary(): Uint8Array;
  toObject(includeInstance?: boolean): TStakeState;
  static toObject(includeInstance: boolean, msg: StakeState): TStakeState;
  static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
  static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
  static serializeBinaryToWriter(message: StakeState, writer: jspb.BinaryWriter): void;
  static deserializeBinary(bytes: Uint8Array): StakeState;
  static deserializeBinaryFromReader(message: StakeState, reader: jspb.BinaryReader): StakeState;
}

export type TStakeState = {
  address: string,
  sender: string,
  receiver: string,
  tokens: Array<type_pb.TIndexedTokenInput>,
  assets: Array<string>,
  revocable: boolean,
  message: string,
  revokeWaitingPeriod: number,
  revokedTokens: Array<type_pb.TIndexedTokenInput>,
  revokedAssets: Array<string>,
  slashers: Array<string>,
  nonce: string,
  context?: type_pb.TStateContext,
  data?: google_protobuf_any_pb.Any,
}

export class RollupState extends jspb.Message {
  getAddress(): string;
  setAddress(value: string): void;

  getTokenAddress(): string;
  setTokenAddress(value: string): void;

  getVaultAddress(): string;
  setVaultAddress(value: string): void;

  getContractAddress(): string;
  setContractAddress(value: string): void;

  clearSeedValidatorsList(): void;
  getSeedValidatorsList(): Array<type_pb.TRollupValidator>;
  setSeedValidatorsList(value: Array<type_pb.TRollupValidator>): void;
  addSeedValidators(value?: type_pb.RollupValidator, index?: number): type_pb.RollupValidator;

  clearValidatorsList(): void;
  getValidatorsList(): Array<type_pb.TRollupValidator>;
  setValidatorsList(value: Array<type_pb.TRollupValidator>): void;
  addValidators(value?: type_pb.RollupValidator, index?: number): type_pb.RollupValidator;

  getMinStakeAmount(): string;
  setMinStakeAmount(value: string): void;

  getMaxStakeAmount(): string;
  setMaxStakeAmount(value: string): void;

  getMinSignerCount(): number;
  setMinSignerCount(value: number): void;

  getMaxSignerCount(): number;
  setMaxSignerCount(value: number): void;

  getMinBlockSize(): number;
  setMinBlockSize(value: number): void;

  getMaxBlockSize(): number;
  setMaxBlockSize(value: number): void;

  getMinBlockInterval(): number;
  setMinBlockInterval(value: number): void;

  getMinBlockConfirmation(): number;
  setMinBlockConfirmation(value: number): void;

  getIssuer(): string;
  setIssuer(value: string): void;

  getDepositFeeRate(): number;
  setDepositFeeRate(value: number): void;

  getWithdrawFeeRate(): number;
  setWithdrawFeeRate(value: number): void;

  getProposerFeeShare(): number;
  setProposerFeeShare(value: number): void;

  getPublisherFeeShare(): number;
  setPublisherFeeShare(value: number): void;

  getMinDepositAmount(): string;
  setMinDepositAmount(value: string): void;

  getMinWithdrawAmount(): string;
  setMinWithdrawAmount(value: string): void;

  getBlockHeight(): number;
  setBlockHeight(value: number): void;

  getBlockHash(): string;
  setBlockHash(value: string): void;

  hasTokenInfo(): boolean;
  clearTokenInfo(): void;
  getTokenInfo(): type_pb.TIndexedTokenInput | undefined;
  setTokenInfo(value?: type_pb.TIndexedTokenInput): void;

  getTotalDepositAmount(): string;
  setTotalDepositAmount(value: string): void;

  getTotalWithdrawAmount(): string;
  setTotalWithdrawAmount(value: string): void;

  getMaxDepositAmount(): string;
  setMaxDepositAmount(value: string): void;

  getMaxWithdrawAmount(): string;
  setMaxWithdrawAmount(value: string): void;

  getMinDepositFee(): string;
  setMinDepositFee(value: string): void;

  getMaxDepositFee(): string;
  setMaxDepositFee(value: string): void;

  getMinWithdrawFee(): string;
  setMinWithdrawFee(value: string): void;

  getMaxWithdrawFee(): string;
  setMaxWithdrawFee(value: string): void;

  getPaused(): boolean;
  setPaused(value: boolean): void;

  hasForeignToken(): boolean;
  clearForeignToken(): void;
  getForeignToken(): type_pb.TForeignToken | undefined;
  setForeignToken(value?: type_pb.TForeignToken): void;

  getLeaveWaitingPeriod(): number;
  setLeaveWaitingPeriod(value: number): void;

  getPublishWaitingPeriod(): number;
  setPublishWaitingPeriod(value: number): void;

  getPublishSlashRate(): number;
  setPublishSlashRate(value: number): void;

  clearMigrateHistoryList(): void;
  getMigrateHistoryList(): Array<string>;
  setMigrateHistoryList(value: Array<string>): void;
  addMigrateHistory(value: string, index?: number): string;

  getClosed(): boolean;
  setClosed(value: boolean): void;

  clearVaultHistoryList(): void;
  getVaultHistoryList(): Array<string>;
  setVaultHistoryList(value: Array<string>): void;
  addVaultHistory(value: string, index?: number): string;

  hasContext(): boolean;
  clearContext(): void;
  getContext(): type_pb.TStateContext | undefined;
  setContext(value?: type_pb.TStateContext): void;

  hasData(): boolean;
  clearData(): void;
  getData(): google_protobuf_any_pb.Any | undefined;
  setData(value?: google_protobuf_any_pb.Any): void;

  serializeBinary(): Uint8Array;
  toObject(includeInstance?: boolean): TRollupState;
  static toObject(includeInstance: boolean, msg: RollupState): TRollupState;
  static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
  static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
  static serializeBinaryToWriter(message: RollupState, writer: jspb.BinaryWriter): void;
  static deserializeBinary(bytes: Uint8Array): RollupState;
  static deserializeBinaryFromReader(message: RollupState, reader: jspb.BinaryReader): RollupState;
}

export type TRollupState = {
  address: string,
  tokenAddress: string,
  vaultAddress: string,
  contractAddress: string,
  seedValidators: Array<type_pb.TRollupValidator>,
  validators: Array<type_pb.TRollupValidator>,
  minStakeAmount: string,
  maxStakeAmount: string,
  minSignerCount: number,
  maxSignerCount: number,
  minBlockSize: number,
  maxBlockSize: number,
  minBlockInterval: number,
  minBlockConfirmation: number,
  issuer: string,
  depositFeeRate: number,
  withdrawFeeRate: number,
  proposerFeeShare: number,
  publisherFeeShare: number,
  minDepositAmount: string,
  minWithdrawAmount: string,
  blockHeight: number,
  blockHash: string,
  tokenInfo?: type_pb.TIndexedTokenInput,
  totalDepositAmount: string,
  totalWithdrawAmount: string,
  maxDepositAmount: string,
  maxWithdrawAmount: string,
  minDepositFee: string,
  maxDepositFee: string,
  minWithdrawFee: string,
  maxWithdrawFee: string,
  paused: boolean,
  foreignToken?: type_pb.TForeignToken,
  leaveWaitingPeriod: number,
  publishWaitingPeriod: number,
  publishSlashRate: number,
  migrateHistory: Array<string>,
  closed: boolean,
  vaultHistory: Array<string>,
  context?: type_pb.TStateContext,
  data?: google_protobuf_any_pb.Any,
}

export class RollupBlock extends jspb.Message {
  getHash(): string;
  setHash(value: string): void;

  getHeight(): number;
  setHeight(value: number): void;

  getMerkleRoot(): string;
  setMerkleRoot(value: string): void;

  getPreviousHash(): string;
  setPreviousHash(value: string): void;

  getTxsHash(): string;
  setTxsHash(value: string): void;

  clearTxsList(): void;
  getTxsList(): Array<string>;
  setTxsList(value: Array<string>): void;
  addTxs(value: string, index?: number): string;

  getProposer(): string;
  setProposer(value: string): void;

  clearSignaturesList(): void;
  getSignaturesList(): Array<type_pb.TMultisig>;
  setSignaturesList(value: Array<type_pb.TMultisig>): void;
  addSignatures(value?: type_pb.Multisig, index?: number): type_pb.Multisig;

  getRollup(): string;
  setRollup(value: string): void;

  getMintedAmount(): string;
  setMintedAmount(value: string): void;

  getBurnedAmount(): string;
  setBurnedAmount(value: string): void;

  getRewardAmount(): string;
  setRewardAmount(value: string): void;

  getMinReward(): string;
  setMinReward(value: string): void;

  getGovernance(): boolean;
  setGovernance(value: boolean): void;

  hasContext(): boolean;
  clearContext(): void;
  getContext(): type_pb.TStateContext | undefined;
  setContext(value?: type_pb.TStateContext): void;

  hasData(): boolean;
  clearData(): void;
  getData(): google_protobuf_any_pb.Any | undefined;
  setData(value?: google_protobuf_any_pb.Any): void;

  serializeBinary(): Uint8Array;
  toObject(includeInstance?: boolean): TRollupBlock;
  static toObject(includeInstance: boolean, msg: RollupBlock): TRollupBlock;
  static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
  static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
  static serializeBinaryToWriter(message: RollupBlock, writer: jspb.BinaryWriter): void;
  static deserializeBinary(bytes: Uint8Array): RollupBlock;
  static deserializeBinaryFromReader(message: RollupBlock, reader: jspb.BinaryReader): RollupBlock;
}

export type TRollupBlock = {
  hash: string,
  height: number,
  merkleRoot: string,
  previousHash: string,
  txsHash: string,
  txs: Array<string>,
  proposer: string,
  signatures: Array<type_pb.TMultisig>,
  rollup: string,
  mintedAmount: string,
  burnedAmount: string,
  rewardAmount: string,
  minReward: string,
  governance: boolean,
  context?: type_pb.TStateContext,
  data?: google_protobuf_any_pb.Any,
}

export class EvidenceState extends jspb.Message {
  getHash(): string;
  setHash(value: string): void;

  getData(): string;
  setData(value: string): void;

  hasContext(): boolean;
  clearContext(): void;
  getContext(): type_pb.TStateContext | undefined;
  setContext(value?: type_pb.TStateContext): void;

  serializeBinary(): Uint8Array;
  toObject(includeInstance?: boolean): TEvidenceState;
  static toObject(includeInstance: boolean, msg: EvidenceState): TEvidenceState;
  static extensions: {[key: number]: jspb.ExtensionFieldInfo<jspb.Message>};
  static extensionsBinary: {[key: number]: jspb.ExtensionFieldBinaryInfo<jspb.Message>};
  static serializeBinaryToWriter(message: EvidenceState, writer: jspb.BinaryWriter): void;
  static deserializeBinary(bytes: Uint8Array): EvidenceState;
  static deserializeBinaryFromReader(message: EvidenceState, reader: jspb.BinaryReader): EvidenceState;
}

export type TEvidenceState = {
  hash: string,
  data: string,
  context?: type_pb.TStateContext,
}

