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

/**
 * Describes the file gfxcafe/oku/account/v1/search.proto.
 */
export const file_gfxcafe_oku_account_v1_search: GenFile = /*@__PURE__*/
  fileDesc("CiNnZnhjYWZlL29rdS9hY2NvdW50L3YxL3NlYXJjaC5wcm90bxIWZ2Z4Y2FmZS5va3UuYWNjb3VudC52MSJaChNTZWFyY2hUb2tlbnNSZXF1ZXN0EhYKBXF1ZXJ5GAEgASgJQge6SARyAhABEhEKCWNoYWluX2lkcxgCIAMoBRIYCgVsaW1pdBgDIAEoBUIJukgGGgQYMigBIksKFFNlYXJjaFRva2Vuc1Jlc3BvbnNlEjMKBnRva2VucxgBIAMoCzIjLmdmeGNhZmUub2t1LmFjY291bnQudjEuVG9rZW5SZXN1bHQicgoLVG9rZW5SZXN1bHQSDwoHYWRkcmVzcxgBIAEoCRIOCgZzeW1ib2wYAiABKAkSDAoEbmFtZRgDIAEoCRIQCghkZWNpbWFscxgEIAEoBRIQCghjaGFpbl9pZBgFIAEoBRIQCghsb2dvX3VybBgGIAEoCSJZChJTZWFyY2hQb29sc1JlcXVlc3QSFgoFcXVlcnkYASABKAlCB7pIBHICEAESEQoJY2hhaW5faWRzGAIgAygFEhgKBWxpbWl0GAMgASgFQgm6SAYaBBgyKAEiSAoTU2VhcmNoUG9vbHNSZXNwb25zZRIxCgVwb29scxgBIAMoCzIiLmdmeGNhZmUub2t1LmFjY291bnQudjEuUG9vbFJlc3VsdCJ7CgpQb29sUmVzdWx0Eg8KB2FkZHJlc3MYASABKAkSFQoNdG9rZW4wX3N5bWJvbBgCIAEoCRIVCg10b2tlbjFfc3ltYm9sGAMgASgJEgsKA2ZlZRgEIAEoBRIQCghjaGFpbl9pZBgFIAEoBRIPCgd0dmxfdXNkGAYgASgBMuIBCg1TZWFyY2hTZXJ2aWNlEmkKDFNlYXJjaFRva2VucxIrLmdmeGNhZmUub2t1LmFjY291bnQudjEuU2VhcmNoVG9rZW5zUmVxdWVzdBosLmdmeGNhZmUub2t1LmFjY291bnQudjEuU2VhcmNoVG9rZW5zUmVzcG9uc2USZgoLU2VhcmNoUG9vbHMSKi5nZnhjYWZlLm9rdS5hY2NvdW50LnYxLlNlYXJjaFBvb2xzUmVxdWVzdBorLmdmeGNhZmUub2t1LmFjY291bnQudjEuU2VhcmNoUG9vbHNSZXNwb25zZUI3WjVnZnguY2FmZS9va3UvYWNjb3VudC9nZW4vZ28vZ2Z4Y2FmZS9va3UvYWNjb3VudC92MTt2MWIGcHJvdG8z", [file_buf_validate_validate]);

/**
 * SearchTokensRequest for token search
 *
 * @generated from message gfxcafe.oku.account.v1.SearchTokensRequest
 */
export type SearchTokensRequest = Message<"gfxcafe.oku.account.v1.SearchTokensRequest"> & {
  /**
   * Search query string (required)
   *
   * @generated from field: string query = 1;
   */
  query: string;

  /**
   * Optional chain IDs to filter results
   *
   * @generated from field: repeated int32 chain_ids = 2;
   */
  chainIds: number[];

  /**
   * Maximum number of results (default 10, max 50)
   *
   * @generated from field: int32 limit = 3;
   */
  limit: number;
};

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

/**
 * SearchTokensResponse with token results
 *
 * @generated from message gfxcafe.oku.account.v1.SearchTokensResponse
 */
export type SearchTokensResponse = Message<"gfxcafe.oku.account.v1.SearchTokensResponse"> & {
  /**
   * List of matching tokens
   *
   * @generated from field: repeated gfxcafe.oku.account.v1.TokenResult tokens = 1;
   */
  tokens: TokenResult[];
};

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

/**
 * TokenResult represents a search result for a token
 *
 * @generated from message gfxcafe.oku.account.v1.TokenResult
 */
export type TokenResult = Message<"gfxcafe.oku.account.v1.TokenResult"> & {
  /**
   * Token address
   *
   * @generated from field: string address = 1;
   */
  address: string;

  /**
   * Token symbol
   *
   * @generated from field: string symbol = 2;
   */
  symbol: string;

  /**
   * Token name
   *
   * @generated from field: string name = 3;
   */
  name: string;

  /**
   * Number of decimals
   *
   * @generated from field: int32 decimals = 4;
   */
  decimals: number;

  /**
   * Chain ID
   *
   * @generated from field: int32 chain_id = 5;
   */
  chainId: number;

  /**
   * Token logo URL (optional)
   *
   * @generated from field: string logo_url = 6;
   */
  logoUrl: string;
};

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

/**
 * SearchPoolsRequest for pool search
 *
 * @generated from message gfxcafe.oku.account.v1.SearchPoolsRequest
 */
export type SearchPoolsRequest = Message<"gfxcafe.oku.account.v1.SearchPoolsRequest"> & {
  /**
   * Search query string (required)
   *
   * @generated from field: string query = 1;
   */
  query: string;

  /**
   * Optional chain IDs to filter results
   *
   * @generated from field: repeated int32 chain_ids = 2;
   */
  chainIds: number[];

  /**
   * Maximum number of results (default 10, max 50)
   *
   * @generated from field: int32 limit = 3;
   */
  limit: number;
};

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

/**
 * SearchPoolsResponse with pool results
 *
 * @generated from message gfxcafe.oku.account.v1.SearchPoolsResponse
 */
export type SearchPoolsResponse = Message<"gfxcafe.oku.account.v1.SearchPoolsResponse"> & {
  /**
   * List of matching pools
   *
   * @generated from field: repeated gfxcafe.oku.account.v1.PoolResult pools = 1;
   */
  pools: PoolResult[];
};

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

/**
 * PoolResult represents a search result for a pool
 *
 * @generated from message gfxcafe.oku.account.v1.PoolResult
 */
export type PoolResult = Message<"gfxcafe.oku.account.v1.PoolResult"> & {
  /**
   * Pool address
   *
   * @generated from field: string address = 1;
   */
  address: string;

  /**
   * Token0 symbol
   *
   * @generated from field: string token0_symbol = 2;
   */
  token0Symbol: string;

  /**
   * Token1 symbol
   *
   * @generated from field: string token1_symbol = 3;
   */
  token1Symbol: string;

  /**
   * Fee tier (in basis points)
   *
   * @generated from field: int32 fee = 4;
   */
  fee: number;

  /**
   * Chain ID
   *
   * @generated from field: int32 chain_id = 5;
   */
  chainId: number;

  /**
   * Total value locked in USD
   *
   * @generated from field: double tvl_usd = 6;
   */
  tvlUsd: number;
};

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

/**
 * SearchService provides token and pool search functionality
 *
 * @generated from service gfxcafe.oku.account.v1.SearchService
 */
export const SearchService: GenService<{
  /**
   * SearchTokens searches for tokens across supported chains
   *
   * @generated from rpc gfxcafe.oku.account.v1.SearchService.SearchTokens
   */
  searchTokens: {
    methodKind: "unary";
    input: typeof SearchTokensRequestSchema;
    output: typeof SearchTokensResponseSchema;
  },
  /**
   * SearchPools searches for liquidity pools
   *
   * @generated from rpc gfxcafe.oku.account.v1.SearchService.SearchPools
   */
  searchPools: {
    methodKind: "unary";
    input: typeof SearchPoolsRequestSchema;
    output: typeof SearchPoolsResponseSchema;
  },
}> = /*@__PURE__*/
  serviceDesc(file_gfxcafe_oku_account_v1_search, 0);

