// @generated by protoc-gen-es v2.2.2 with parameter "target=ts,import_extension=.js"
// @generated from file gfxcafe/oku/account/v1/rewards.proto (package gfxcafe.oku.account.v1, syntax proto3)
/* eslint-disable */

import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv1";
import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv1";
import { file_buf_validate_validate } from "../../../../buf/validate/validate_pb.js";
import type { Timestamp } from "@bufbuild/protobuf/wkt";
import { file_google_protobuf_struct, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
import type { Message } from "@bufbuild/protobuf";

/**
 * Describes the file gfxcafe/oku/account/v1/rewards.proto.
 */
export const file_gfxcafe_oku_account_v1_rewards: GenFile = /*@__PURE__*/
  fileDesc("CiRnZnhjYWZlL29rdS9hY2NvdW50L3YxL3Jld2FyZHMucHJvdG8SFmdmeGNhZmUub2t1LmFjY291bnQudjEiXQoVQ2hhaW5UaW1lc3RhbXBSZXF1ZXN0EhUKBWNoYWluGAEgASgJQga6SAPIAQESLQoJdGltZXN0YW1wGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJSCgxVc2VyQXNzZXRUdmwSFAoMdXNlcl9hZGRyZXNzGAEgASgJEhUKDXRva2VuX2FkZHJlc3MYAiABKAkSFQoNdG9rZW5fYmFsYW5jZRgDIAEoCSIsCgdVc2VyVHZsEhQKDHVzZXJfYWRkcmVzcxgBIAEoCRILCgN0dmwYAiABKAEiiwEKFkNoYWluVGltZXN0YW1wUmVzcG9uc2USPQoPdXNlcl9hc3NldF90dmxzGAEgAygLMiQuZ2Z4Y2FmZS5va3UuYWNjb3VudC52MS5Vc2VyQXNzZXRUdmwSMgoJdXNlcl90dmxzGAIgAygLMh8uZ2Z4Y2FmZS5va3UuYWNjb3VudC52MS5Vc2VyVHZsIm8KGVNvbHZDaGFpblRpbWVzdGFtcFJlcXVlc3QSFQoFY2hhaW4YASABKAlCBrpIA8gBARItCgl0aW1lc3RhbXAYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEgwKBHBvb2wYAyABKAkixQEKDFNvbHZQb3NpdGlvbhINCgVibG9jaxgBIAEoBBImCgJ0cxgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFAoMdXNlcl9hZGRyZXNzGAMgASgJEhQKDHBvb2xfYWRkcmVzcxgEIAEoCRIQCgh0b2tlbl9pZBgFIAEoBRIOCgZ0b2tlbjAYBiABKAkSDgoGdG9rZW4xGAcgASgJEg8KB2Ftb3VudDAYCCABKAESDwoHYW1vdW50MRgJIAEoASJVChpTb2x2Q2hhaW5UaW1lc3RhbXBSZXNwb25zZRI3Cglwb3NpdGlvbnMYASADKAsyJC5nZnhjYWZlLm9rdS5hY2NvdW50LnYxLlNvbHZQb3NpdGlvbiJkChxCZWRyb2NrQ2hhaW5UaW1lc3RhbXBSZXF1ZXN0EhUKBWNoYWluGAEgASgJQga6SAPIAQESLQoJdGltZXN0YW1wGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCIpCglVc2VyVG90YWwSDAoEdXNlchgBIAEoCRIOCgZhbW91bnQYAiABKAkiVwodQmVkcm9ja0NoYWluVGltZXN0YW1wUmVzcG9uc2USNgoLdXNlcl90b3RhbHMYASADKAsyIS5nZnhjYWZlLm9rdS5hY2NvdW50LnYxLlVzZXJUb3RhbCKZAQoSVm9sdW1lQ2hhaW5SZXF1ZXN0EhUKBWNoYWluGAEgASgJQga6SAPIAQESNgoKc3RhcnRfdGltZRgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBARI0CghlbmRfdGltZRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCBrpIA8gBASIqCgpVc2VyVm9sdW1lEgwKBHVzZXIYASABKAkSDgoGdm9sdW1lGAIgASgBIkoKE1ZvbHVtZUNoYWluUmVzcG9uc2USMwoHdm9sdW1lcxgBIAMoCzIiLmdmeGNhZmUub2t1LmFjY291bnQudjEuVXNlclZvbHVtZTLtAwoOUmV3YXJkc1NlcnZpY2USewoSU29sdkNoYWluVGltZXN0YW1wEjEuZ2Z4Y2FmZS5va3UuYWNjb3VudC52MS5Tb2x2Q2hhaW5UaW1lc3RhbXBSZXF1ZXN0GjIuZ2Z4Y2FmZS5va3UuYWNjb3VudC52MS5Tb2x2Q2hhaW5UaW1lc3RhbXBSZXNwb25zZRKEAQoVQmVkcm9ja0NoYWluVGltZXN0YW1wEjQuZ2Z4Y2FmZS5va3UuYWNjb3VudC52MS5CZWRyb2NrQ2hhaW5UaW1lc3RhbXBSZXF1ZXN0GjUuZ2Z4Y2FmZS5va3UuYWNjb3VudC52MS5CZWRyb2NrQ2hhaW5UaW1lc3RhbXBSZXNwb25zZRJvCg5DaGFpblRpbWVzdGFtcBItLmdmeGNhZmUub2t1LmFjY291bnQudjEuQ2hhaW5UaW1lc3RhbXBSZXF1ZXN0Gi4uZ2Z4Y2FmZS5va3UuYWNjb3VudC52MS5DaGFpblRpbWVzdGFtcFJlc3BvbnNlEmYKC1ZvbHVtZUNoYWluEiouZ2Z4Y2FmZS5va3UuYWNjb3VudC52MS5Wb2x1bWVDaGFpblJlcXVlc3QaKy5nZnhjYWZlLm9rdS5hY2NvdW50LnYxLlZvbHVtZUNoYWluUmVzcG9uc2VCN1o1Z2Z4LmNhZmUvb2t1L2FjY291bnQvZ2VuL2dvL2dmeGNhZmUvb2t1L2FjY291bnQvdjE7djFiBnByb3RvMw", [file_buf_validate_validate, file_google_protobuf_struct, file_google_protobuf_timestamp]);

/**
 * ChainTimestampRequest for general rewards
 *
 * @generated from message gfxcafe.oku.account.v1.ChainTimestampRequest
 */
export type ChainTimestampRequest = Message<"gfxcafe.oku.account.v1.ChainTimestampRequest"> & {
  /**
   * Chain identifier (e.g., "linea", "bob")
   *
   * @generated from field: string chain = 1;
   */
  chain: string;

  /**
   * Timestamp - if not provided, returns latest data
   *
   * @generated from field: google.protobuf.Timestamp timestamp = 2;
   */
  timestamp?: Timestamp;
};

/**
 * Describes the message gfxcafe.oku.account.v1.ChainTimestampRequest.
 * Use `create(ChainTimestampRequestSchema)` to create a new message.
 */
export const ChainTimestampRequestSchema: GenMessage<ChainTimestampRequest> = /*@__PURE__*/
  messageDesc(file_gfxcafe_oku_account_v1_rewards, 0);

/**
 * User asset TVL data
 *
 * @generated from message gfxcafe.oku.account.v1.UserAssetTvl
 */
export type UserAssetTvl = Message<"gfxcafe.oku.account.v1.UserAssetTvl"> & {
  /**
   * User address
   *
   * @generated from field: string user_address = 1;
   */
  userAddress: string;

  /**
   * Token address
   *
   * @generated from field: string token_address = 2;
   */
  tokenAddress: string;

  /**
   * Token balance
   *
   * @generated from field: string token_balance = 3;
   */
  tokenBalance: string;
};

/**
 * Describes the message gfxcafe.oku.account.v1.UserAssetTvl.
 * Use `create(UserAssetTvlSchema)` to create a new message.
 */
export const UserAssetTvlSchema: GenMessage<UserAssetTvl> = /*@__PURE__*/
  messageDesc(file_gfxcafe_oku_account_v1_rewards, 1);

/**
 * User TVL data
 *
 * @generated from message gfxcafe.oku.account.v1.UserTvl
 */
export type UserTvl = Message<"gfxcafe.oku.account.v1.UserTvl"> & {
  /**
   * User address
   *
   * @generated from field: string user_address = 1;
   */
  userAddress: string;

  /**
   * Total value locked
   *
   * @generated from field: double tvl = 2;
   */
  tvl: number;
};

/**
 * Describes the message gfxcafe.oku.account.v1.UserTvl.
 * Use `create(UserTvlSchema)` to create a new message.
 */
export const UserTvlSchema: GenMessage<UserTvl> = /*@__PURE__*/
  messageDesc(file_gfxcafe_oku_account_v1_rewards, 2);

/**
 * ChainTimestampResponse with rewards data
 *
 * @generated from message gfxcafe.oku.account.v1.ChainTimestampResponse
 */
export type ChainTimestampResponse = Message<"gfxcafe.oku.account.v1.ChainTimestampResponse"> & {
  /**
   * List of user asset TVLs (for Linea)
   *
   * @generated from field: repeated gfxcafe.oku.account.v1.UserAssetTvl user_asset_tvls = 1;
   */
  userAssetTvls: UserAssetTvl[];

  /**
   * List of user TVLs (for Bob)
   *
   * @generated from field: repeated gfxcafe.oku.account.v1.UserTvl user_tvls = 2;
   */
  userTvls: UserTvl[];
};

/**
 * Describes the message gfxcafe.oku.account.v1.ChainTimestampResponse.
 * Use `create(ChainTimestampResponseSchema)` to create a new message.
 */
export const ChainTimestampResponseSchema: GenMessage<ChainTimestampResponse> = /*@__PURE__*/
  messageDesc(file_gfxcafe_oku_account_v1_rewards, 3);

/**
 * SolvChainTimestampRequest for Solv rewards
 *
 * @generated from message gfxcafe.oku.account.v1.SolvChainTimestampRequest
 */
export type SolvChainTimestampRequest = Message<"gfxcafe.oku.account.v1.SolvChainTimestampRequest"> & {
  /**
   * Chain identifier (e.g., "bob", "rootstock")
   *
   * @generated from field: string chain = 1;
   */
  chain: string;

  /**
   * Timestamp - if not provided, returns latest data
   *
   * @generated from field: google.protobuf.Timestamp timestamp = 2;
   */
  timestamp?: Timestamp;

  /**
   * Optional pool address filter
   *
   * @generated from field: string pool = 3;
   */
  pool: string;
};

/**
 * Describes the message gfxcafe.oku.account.v1.SolvChainTimestampRequest.
 * Use `create(SolvChainTimestampRequestSchema)` to create a new message.
 */
export const SolvChainTimestampRequestSchema: GenMessage<SolvChainTimestampRequest> = /*@__PURE__*/
  messageDesc(file_gfxcafe_oku_account_v1_rewards, 4);

/**
 * Position data for Solv rewards
 *
 * @generated from message gfxcafe.oku.account.v1.SolvPosition
 */
export type SolvPosition = Message<"gfxcafe.oku.account.v1.SolvPosition"> & {
  /**
   * Block number
   *
   * @generated from field: uint64 block = 1;
   */
  block: bigint;

  /**
   * Timestamp
   *
   * @generated from field: google.protobuf.Timestamp ts = 2;
   */
  ts?: Timestamp;

  /**
   * User address
   *
   * @generated from field: string user_address = 3;
   */
  userAddress: string;

  /**
   * Pool address
   *
   * @generated from field: string pool_address = 4;
   */
  poolAddress: string;

  /**
   * Token ID (for NFT positions)
   *
   * @generated from field: int32 token_id = 5;
   */
  tokenId: number;

  /**
   * Token addresses
   *
   * @generated from field: string token0 = 6;
   */
  token0: string;

  /**
   * @generated from field: string token1 = 7;
   */
  token1: string;

  /**
   * Token amounts
   *
   * @generated from field: double amount0 = 8;
   */
  amount0: number;

  /**
   * @generated from field: double amount1 = 9;
   */
  amount1: number;
};

/**
 * Describes the message gfxcafe.oku.account.v1.SolvPosition.
 * Use `create(SolvPositionSchema)` to create a new message.
 */
export const SolvPositionSchema: GenMessage<SolvPosition> = /*@__PURE__*/
  messageDesc(file_gfxcafe_oku_account_v1_rewards, 5);

/**
 * SolvChainTimestampResponse with Solv rewards data
 *
 * @generated from message gfxcafe.oku.account.v1.SolvChainTimestampResponse
 */
export type SolvChainTimestampResponse = Message<"gfxcafe.oku.account.v1.SolvChainTimestampResponse"> & {
  /**
   * List of positions
   *
   * @generated from field: repeated gfxcafe.oku.account.v1.SolvPosition positions = 1;
   */
  positions: SolvPosition[];
};

/**
 * Describes the message gfxcafe.oku.account.v1.SolvChainTimestampResponse.
 * Use `create(SolvChainTimestampResponseSchema)` to create a new message.
 */
export const SolvChainTimestampResponseSchema: GenMessage<SolvChainTimestampResponse> = /*@__PURE__*/
  messageDesc(file_gfxcafe_oku_account_v1_rewards, 6);

/**
 * BedrockChainTimestampRequest for Bedrock rewards
 *
 * @generated from message gfxcafe.oku.account.v1.BedrockChainTimestampRequest
 */
export type BedrockChainTimestampRequest = Message<"gfxcafe.oku.account.v1.BedrockChainTimestampRequest"> & {
  /**
   * Chain identifier (e.g., "bob")
   *
   * @generated from field: string chain = 1;
   */
  chain: string;

  /**
   * Timestamp - if not provided, returns latest data
   *
   * @generated from field: google.protobuf.Timestamp timestamp = 2;
   */
  timestamp?: Timestamp;
};

/**
 * Describes the message gfxcafe.oku.account.v1.BedrockChainTimestampRequest.
 * Use `create(BedrockChainTimestampRequestSchema)` to create a new message.
 */
export const BedrockChainTimestampRequestSchema: GenMessage<BedrockChainTimestampRequest> = /*@__PURE__*/
  messageDesc(file_gfxcafe_oku_account_v1_rewards, 7);

/**
 * User totals for Bedrock rewards
 *
 * @generated from message gfxcafe.oku.account.v1.UserTotal
 */
export type UserTotal = Message<"gfxcafe.oku.account.v1.UserTotal"> & {
  /**
   * User address
   *
   * @generated from field: string user = 1;
   */
  user: string;

  /**
   * Total amount
   *
   * @generated from field: string amount = 2;
   */
  amount: string;
};

/**
 * Describes the message gfxcafe.oku.account.v1.UserTotal.
 * Use `create(UserTotalSchema)` to create a new message.
 */
export const UserTotalSchema: GenMessage<UserTotal> = /*@__PURE__*/
  messageDesc(file_gfxcafe_oku_account_v1_rewards, 8);

/**
 * BedrockChainTimestampResponse with Bedrock rewards data
 *
 * @generated from message gfxcafe.oku.account.v1.BedrockChainTimestampResponse
 */
export type BedrockChainTimestampResponse = Message<"gfxcafe.oku.account.v1.BedrockChainTimestampResponse"> & {
  /**
   * List of user totals
   *
   * @generated from field: repeated gfxcafe.oku.account.v1.UserTotal user_totals = 1;
   */
  userTotals: UserTotal[];
};

/**
 * Describes the message gfxcafe.oku.account.v1.BedrockChainTimestampResponse.
 * Use `create(BedrockChainTimestampResponseSchema)` to create a new message.
 */
export const BedrockChainTimestampResponseSchema: GenMessage<BedrockChainTimestampResponse> = /*@__PURE__*/
  messageDesc(file_gfxcafe_oku_account_v1_rewards, 9);

/**
 * VolumeChainRequest for user volume
 *
 * @generated from message gfxcafe.oku.account.v1.VolumeChainRequest
 */
export type VolumeChainRequest = Message<"gfxcafe.oku.account.v1.VolumeChainRequest"> & {
  /**
   * Chain identifier (e.g., "bob")
   *
   * @generated from field: string chain = 1;
   */
  chain: string;

  /**
   * Start time
   *
   * @generated from field: google.protobuf.Timestamp start_time = 2;
   */
  startTime?: Timestamp;

  /**
   * End time
   *
   * @generated from field: google.protobuf.Timestamp end_time = 3;
   */
  endTime?: Timestamp;
};

/**
 * Describes the message gfxcafe.oku.account.v1.VolumeChainRequest.
 * Use `create(VolumeChainRequestSchema)` to create a new message.
 */
export const VolumeChainRequestSchema: GenMessage<VolumeChainRequest> = /*@__PURE__*/
  messageDesc(file_gfxcafe_oku_account_v1_rewards, 10);

/**
 * User volume data
 *
 * @generated from message gfxcafe.oku.account.v1.UserVolume
 */
export type UserVolume = Message<"gfxcafe.oku.account.v1.UserVolume"> & {
  /**
   * User address
   *
   * @generated from field: string user = 1;
   */
  user: string;

  /**
   * Volume
   *
   * @generated from field: double volume = 2;
   */
  volume: number;
};

/**
 * Describes the message gfxcafe.oku.account.v1.UserVolume.
 * Use `create(UserVolumeSchema)` to create a new message.
 */
export const UserVolumeSchema: GenMessage<UserVolume> = /*@__PURE__*/
  messageDesc(file_gfxcafe_oku_account_v1_rewards, 11);

/**
 * VolumeChainResponse with volume data
 *
 * @generated from message gfxcafe.oku.account.v1.VolumeChainResponse
 */
export type VolumeChainResponse = Message<"gfxcafe.oku.account.v1.VolumeChainResponse"> & {
  /**
   * List of user volumes
   *
   * @generated from field: repeated gfxcafe.oku.account.v1.UserVolume volumes = 1;
   */
  volumes: UserVolume[];
};

/**
 * Describes the message gfxcafe.oku.account.v1.VolumeChainResponse.
 * Use `create(VolumeChainResponseSchema)` to create a new message.
 */
export const VolumeChainResponseSchema: GenMessage<VolumeChainResponse> = /*@__PURE__*/
  messageDesc(file_gfxcafe_oku_account_v1_rewards, 12);

/**
 * RewardsService provides rewards data
 *
 * @generated from service gfxcafe.oku.account.v1.RewardsService
 */
export const RewardsService: GenService<{
  /**
   * Get Solv protocol rewards (/rewards/solv/{chain}/{timestamp})
   *
   * @generated from rpc gfxcafe.oku.account.v1.RewardsService.SolvChainTimestamp
   */
  solvChainTimestamp: {
    methodKind: "unary";
    input: typeof SolvChainTimestampRequestSchema;
    output: typeof SolvChainTimestampResponseSchema;
  },
  /**
   * Get Bedrock rewards (/rewards/bedrock/{chain}/{timestamp})
   *
   * @generated from rpc gfxcafe.oku.account.v1.RewardsService.BedrockChainTimestamp
   */
  bedrockChainTimestamp: {
    methodKind: "unary";
    input: typeof BedrockChainTimestampRequestSchema;
    output: typeof BedrockChainTimestampResponseSchema;
  },
  /**
   * Get general rewards data (/rewards/{chain}/{timestamp})
   *
   * @generated from rpc gfxcafe.oku.account.v1.RewardsService.ChainTimestamp
   */
  chainTimestamp: {
    methodKind: "unary";
    input: typeof ChainTimestampRequestSchema;
    output: typeof ChainTimestampResponseSchema;
  },
  /**
   * Get user volume data (/rewards/volume/{chain})
   *
   * @generated from rpc gfxcafe.oku.account.v1.RewardsService.VolumeChain
   */
  volumeChain: {
    methodKind: "unary";
    input: typeof VolumeChainRequestSchema;
    output: typeof VolumeChainResponseSchema;
  },
}> = /*@__PURE__*/
  serviceDesc(file_gfxcafe_oku_account_v1_rewards, 0);

