// @generated by protoc-gen-es v2.2.2 with parameter "target=ts,import_extension=.js"
// @generated from file gfxcafe/oku/account/v1/wallet.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_timestamp } from "@bufbuild/protobuf/wkt";
import { file_gfxcafe_oku_account_v1_common } from "./common_pb.js";
import type { Message } from "@bufbuild/protobuf";

/**
 * Describes the file gfxcafe/oku/account/v1/wallet.proto.
 */
export const file_gfxcafe_oku_account_v1_wallet: GenFile = /*@__PURE__*/
  fileDesc("CiNnZnhjYWZlL29rdS9hY2NvdW50L3YxL3dhbGxldC5wcm90bxIWZ2Z4Y2FmZS5va3UuYWNjb3VudC52MSKMAQoWQWRkcmVzc0hvbGRpbmdzUmVxdWVzdBJbCgdhZGRyZXNzGAEgASgJQkq6SEfIAQFyQjITXjB4WzAtOWEtZkEtRl17NDB9JJICKjB4NzQyZDM1Q2M2NjM0QzA1MzI5MjVhM2I4NDRCYzllNzU5NWYyQkQ4ORIVCgVjaGFpbhgCIAEoCUIGukgDyAEBImYKDFRva2VuQmFsYW5jZRIVCg10b2tlbl9hZGRyZXNzGAEgASgJEg8KB2JhbGFuY2UYAiABKAkSDgoGc3ltYm9sGAMgASgJEgwKBG5hbWUYBCABKAkSEAoIZGVjaW1hbHMYBSABKAUigwEKF0FkZHJlc3NIb2xkaW5nc1Jlc3BvbnNlEjYKCGJhbGFuY2VzGAEgAygLMiQuZ2Z4Y2FmZS5va3UuYWNjb3VudC52MS5Ub2tlbkJhbGFuY2USMAoMbGFzdF91cGRhdGVkGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcDKDAQoNV2FsbGV0U2VydmljZRJyCg9BZGRyZXNzSG9sZGluZ3MSLi5nZnhjYWZlLm9rdS5hY2NvdW50LnYxLkFkZHJlc3NIb2xkaW5nc1JlcXVlc3QaLy5nZnhjYWZlLm9rdS5hY2NvdW50LnYxLkFkZHJlc3NIb2xkaW5nc1Jlc3BvbnNlQjdaNWdmeC5jYWZlL29rdS9hY2NvdW50L2dlbi9nby9nZnhjYWZlL29rdS9hY2NvdW50L3YxO3YxYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_timestamp, file_gfxcafe_oku_account_v1_common]);

/**
 * AddressHoldingsRequest is the request to get wallet holdings
 *
 * @generated from message gfxcafe.oku.account.v1.AddressHoldingsRequest
 */
export type AddressHoldingsRequest = Message<"gfxcafe.oku.account.v1.AddressHoldingsRequest"> & {
  /**
   * Ethereum address to get holdings for
   *
   * @generated from field: string address = 1;
   */
  address: string;

  /**
   * Chain identifier (e.g., "1", "ethereum", "eip155:1")
   *
   * @generated from field: string chain = 2;
   */
  chain: string;
};

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

/**
 * TokenBalance represents a token balance
 *
 * @generated from message gfxcafe.oku.account.v1.TokenBalance
 */
export type TokenBalance = Message<"gfxcafe.oku.account.v1.TokenBalance"> & {
  /**
   * Token contract address
   *
   * @generated from field: string token_address = 1;
   */
  tokenAddress: string;

  /**
   * Balance amount as a string (to handle large numbers)
   *
   * @generated from field: string balance = 2;
   */
  balance: string;

  /**
   * Token symbol (if available)
   *
   * @generated from field: string symbol = 3;
   */
  symbol: string;

  /**
   * Token name (if available)
   *
   * @generated from field: string name = 4;
   */
  name: string;

  /**
   * Token decimals
   *
   * @generated from field: int32 decimals = 5;
   */
  decimals: number;
};

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

/**
 * AddressHoldingsResponse returns the wallet holdings
 *
 * @generated from message gfxcafe.oku.account.v1.AddressHoldingsResponse
 */
export type AddressHoldingsResponse = Message<"gfxcafe.oku.account.v1.AddressHoldingsResponse"> & {
  /**
   * List of token balances
   *
   * @generated from field: repeated gfxcafe.oku.account.v1.TokenBalance balances = 1;
   */
  balances: TokenBalance[];

  /**
   * When the balance data was last updated
   *
   * @generated from field: google.protobuf.Timestamp last_updated = 2;
   */
  lastUpdated?: Timestamp;
};

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

/**
 * WalletService provides wallet-related functionality
 *
 * @generated from service gfxcafe.oku.account.v1.WalletService
 */
export const WalletService: GenService<{
  /**
   * Get token holdings for a wallet address (/wallet/{address}/holdings)
   *
   * @generated from rpc gfxcafe.oku.account.v1.WalletService.AddressHoldings
   */
  addressHoldings: {
    methodKind: "unary";
    input: typeof AddressHoldingsRequestSchema;
    output: typeof AddressHoldingsResponseSchema;
  },
}> = /*@__PURE__*/
  serviceDesc(file_gfxcafe_oku_account_v1_wallet, 0);

