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

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

/**
 * SwapHistoryRequest for retrieving swap history
 *
 * @generated from message gfxcafe.oku.account.v1.SwapHistoryRequest
 */
export type SwapHistoryRequest = Message<"gfxcafe.oku.account.v1.SwapHistoryRequest"> & {
  /**
   * User address
   *
   * @generated from field: gfxcafe.oku.account.v1.Address address = 1;
   */
  address?: Address;

  /**
   * Optional chain ID filter (0 for all chains)
   *
   * @generated from field: int32 chain_id = 2;
   */
  chainId: number;
};

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

/**
 * SwapHistoryResponse with swap history data
 *
 * @generated from message gfxcafe.oku.account.v1.SwapHistoryResponse
 */
export type SwapHistoryResponse = Message<"gfxcafe.oku.account.v1.SwapHistoryResponse"> & {
  /**
   * Successful trades
   *
   * @generated from field: repeated gfxcafe.oku.account.v1.Trade successful_trades = 1;
   */
  successfulTrades: Trade[];

  /**
   * Withdrawals
   *
   * @generated from field: repeated gfxcafe.oku.account.v1.WithdrawalOrDeposit withdrawals = 2;
   */
  withdrawals: WithdrawalOrDeposit[];

  /**
   * Deposits
   *
   * @generated from field: repeated gfxcafe.oku.account.v1.WithdrawalOrDeposit deposits = 3;
   */
  deposits: WithdrawalOrDeposit[];

  /**
   * Failed trades
   *
   * @generated from field: repeated gfxcafe.oku.account.v1.Trade failed_trades = 4;
   */
  failedTrades: Trade[];

  /**
   * Cancelled trades
   *
   * @generated from field: repeated gfxcafe.oku.account.v1.Trade cancelled_trades = 5;
   */
  cancelledTrades: Trade[];

  /**
   * Successful bridges
   *
   * @generated from field: repeated gfxcafe.oku.account.v1.SuccessfulBridge successful_bridges = 6;
   */
  successfulBridges: SuccessfulBridge[];
};

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

/**
 * Chain information
 *
 * @generated from message gfxcafe.oku.account.v1.Chain
 */
export type Chain = Message<"gfxcafe.oku.account.v1.Chain"> & {
  /**
   * Chain ID
   *
   * @generated from field: int32 id = 1;
   */
  id: number;

  /**
   * Chain name
   *
   * @generated from field: string name = 2;
   */
  name: string;
};

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

/**
 * SwapToken information
 *
 * @generated from message gfxcafe.oku.account.v1.SwapToken
 */
export type SwapToken = Message<"gfxcafe.oku.account.v1.SwapToken"> & {
  /**
   * Chain info
   *
   * @generated from field: gfxcafe.oku.account.v1.Chain chain = 1;
   */
  chain?: Chain;

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

  /**
   * Token address
   *
   * @generated from field: gfxcafe.oku.account.v1.Address address = 3;
   */
  address?: Address;

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

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

/**
 * TokenWithValues includes token info with amounts and values
 *
 * @generated from message gfxcafe.oku.account.v1.TokenWithValues
 */
export type TokenWithValues = Message<"gfxcafe.oku.account.v1.TokenWithValues"> & {
  /**
   * Token info
   *
   * @generated from field: gfxcafe.oku.account.v1.SwapToken token = 1;
   */
  token?: SwapToken;

  /**
   * Amount
   *
   * @generated from field: double amount = 2;
   */
  amount: number;

  /**
   * Price
   *
   * @generated from field: double price = 3;
   */
  price: number;

  /**
   * Value
   *
   * @generated from field: double value = 4;
   */
  value: number;
};

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

/**
 * CoreData represents common fields for trades
 *
 * @generated from message gfxcafe.oku.account.v1.CoreData
 */
export type CoreData = Message<"gfxcafe.oku.account.v1.CoreData"> & {
  /**
   * Transaction type
   *
   * @generated from field: string type = 1;
   */
  type: string;

  /**
   * Transaction hash
   *
   * @generated from field: string hash = 2;
   */
  hash: string;

  /**
   * Sender address
   *
   * @generated from field: gfxcafe.oku.account.v1.Address sender = 3;
   */
  sender?: Address;

  /**
   * Router used
   *
   * @generated from field: string router = 4;
   */
  router: string;

  /**
   * When the transaction was mined
   *
   * @generated from field: google.protobuf.Timestamp mined_at = 5;
   */
  minedAt?: Timestamp;
};

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

/**
 * CoreTradeData includes quote ID
 *
 * @generated from message gfxcafe.oku.account.v1.CoreTradeData
 */
export type CoreTradeData = Message<"gfxcafe.oku.account.v1.CoreTradeData"> & {
  /**
   * Core data
   *
   * @generated from field: gfxcafe.oku.account.v1.CoreData core_data = 1;
   */
  coreData?: CoreData;

  /**
   * Quote ID
   *
   * @generated from field: string quote_id = 2;
   */
  quoteId: string;
};

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

/**
 * Trade represents a swap transaction
 *
 * @generated from message gfxcafe.oku.account.v1.Trade
 */
export type Trade = Message<"gfxcafe.oku.account.v1.Trade"> & {
  /**
   * Core trade data
   *
   * @generated from field: gfxcafe.oku.account.v1.CoreTradeData core_trade_data = 1;
   */
  coreTradeData?: CoreTradeData;

  /**
   * Input chain
   *
   * @generated from field: gfxcafe.oku.account.v1.Chain in_chain = 2;
   */
  inChain?: Chain;

  /**
   * Output chain
   *
   * @generated from field: gfxcafe.oku.account.v1.Chain out_chain = 3;
   */
  outChain?: Chain;

  /**
   * Input token with values
   *
   * @generated from field: gfxcafe.oku.account.v1.TokenWithValues in_token = 4;
   */
  inToken?: TokenWithValues;

  /**
   * Output token with values
   *
   * @generated from field: gfxcafe.oku.account.v1.TokenWithValues out_token = 5;
   */
  outToken?: TokenWithValues;
};

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

/**
 * SuccessfulBridge represents a bridge transaction
 *
 * @generated from message gfxcafe.oku.account.v1.SuccessfulBridge
 */
export type SuccessfulBridge = Message<"gfxcafe.oku.account.v1.SuccessfulBridge"> & {
  /**
   * Trade info
   *
   * @generated from field: gfxcafe.oku.account.v1.Trade trade = 1;
   */
  trade?: Trade;

  /**
   * Bridge used
   *
   * @generated from field: string bridge = 2;
   */
  bridge: string;

  /**
   * Input chain
   *
   * @generated from field: gfxcafe.oku.account.v1.Chain in_chain = 3;
   */
  inChain?: Chain;

  /**
   * Output chain
   *
   * @generated from field: gfxcafe.oku.account.v1.Chain out_chain = 4;
   */
  outChain?: Chain;
};

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

/**
 * WithdrawalOrDeposit represents a withdrawal or deposit
 *
 * @generated from message gfxcafe.oku.account.v1.WithdrawalOrDeposit
 */
export type WithdrawalOrDeposit = Message<"gfxcafe.oku.account.v1.WithdrawalOrDeposit"> & {
  /**
   * Core trade data
   *
   * @generated from field: gfxcafe.oku.account.v1.CoreTradeData core_trade_data = 1;
   */
  coreTradeData?: CoreTradeData;

  /**
   * Token with values
   *
   * @generated from field: gfxcafe.oku.account.v1.TokenWithValues token = 2;
   */
  token?: TokenWithValues;

  /**
   * Chain
   *
   * @generated from field: gfxcafe.oku.account.v1.Chain chain = 3;
   */
  chain?: Chain;
};

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

/**
 * SwapHistoryService provides swap history functionality
 *
 * @generated from service gfxcafe.oku.account.v1.SwapHistoryService
 */
export const SwapHistoryService: GenService<{
  /**
   * Get the swap history for a user (/swap/history)
   *
   * @generated from rpc gfxcafe.oku.account.v1.SwapHistoryService.History
   */
  history: {
    methodKind: "unary";
    input: typeof SwapHistoryRequestSchema;
    output: typeof SwapHistoryResponseSchema;
  },
}> = /*@__PURE__*/
  serviceDesc(file_gfxcafe_oku_account_v1_swaphistory, 0);

