// @generated by protoc-gen-es v2.4.0 with parameter "target=ts"
// @generated from file cabal.proto (package cabal, syntax proto3)
/* eslint-disable */

import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv1";
import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv1";
import type { DeleteOrdersSchema, PlaceLimitOrdersResponceSchema, TokenLimitOrdersSchema } from "./orders_pb";
import { file_orders } from "./orders_pb";
import type { LandedTxnState } from "./txncb_pb";
import { file_txncb } from "./txncb_pb";
import type { QuoteKind, TokenAddressSchema, UnixTimestamp } from "./common_pb";
import { file_common } from "./common_pb";
import type { Message } from "@bufbuild/protobuf";

/**
 * Describes the file cabal.proto.
 */
export const file_cabal: GenFile = /*@__PURE__*/
  fileDesc("CgtjYWJhbC5wcm90bxIFY2FiYWwixwEKClVzZXJBY3Rpb24SGQoDYnV5GAEgASgLMgouY2FiYWwuQnV5SAASGwoEc2VsbBgCIAEoCzILLmNhYmFsLlNlbGxIABIzChF0b2tlbl90cmFkZV9zdGF0cxgDIAEoCzIWLmNhYmFsLlRva2VuVHJhZGVTdGF0c0gAEhsKBHBpbmcYBCABKAsyCy5jYWJhbC5QaW5nSAASGwoEcG9uZxgFIAEoCzILLmNhYmFsLlBvbmdIAEISChB1c2VyX2FjdGlvbl9raW5kIg8KDVRyYWRlRXZlbnRTdWIiDwoNVXNlckFjdGlvblN1YiIeCgtFY2hvUmVxdWVzdBIPCgdtZXNzYWdlGAEgASgJIh8KDEVjaG9SZXNwb25zZRIPCgdtZXNzYWdlGAEgASgJIpMBChFUcmFkZUV2ZW50UmVxdWVzdBIoCgNzdWIYASABKAsyGS5jYWJhbC5Ub2tlblRyYWRlRXZlbnRTdWJIABIbCgRwaW5nGAIgASgLMgsuY2FiYWwuUGluZ0gAEhsKBHBvbmcYAyABKAsyCy5jYWJhbC5Qb25nSABCGgoYdHJhZGVfZXZlbnRfcmVxdWVzdF9raW5kIiIKElRva2VuVHJhZGVFdmVudFN1YhIMCgRtaW50GAEgASgJIiIKElRva2VuU3RhdHVzUmVxdWVzdBIMCgRtaW50GAEgASgJIsEBChJUcmFkZUV2ZW50UmVzcG9uc2USKAoLdHJhZGVfZXZlbnQYASABKAsyES5jYWJhbC5UcmFkZUV2ZW50SAASKgoMdG9rZW5fc3RhdHVzGAIgASgLMhIuY2FiYWwuVG9rZW5TdGF0dXNIABIbCgRwaW5nGAMgASgLMgsuY2FiYWwuUGluZ0gAEhsKBHBvbmcYBCABKAsyCy5jYWJhbC5Qb25nSABCGwoZdHJhZGVfZXZlbnRfcmVzcG9uc2Vfa2luZCIVCgRQaW5nEg0KBWNvdW50GAEgASgEIhUKBFBvbmcSDQoFY291bnQYASABKAQi5AEKDFVzZXJSZXNwb25zZRIsCgx0cmFkZV9zdGF0dXMYASABKAsyFC5jYWJhbC5UcmFkZVJlc3BvbnNlSAASLQoLdHJhZGVfc3RhdHMYAiABKAsyFi5jYWJhbC5Ub2tlblRyYWRlU3RhdHNIABInCgZ0eG5fY2IYAyABKAsyFS50eG5jYi5MYW5kZWRUeG5TdGF0ZUgAEhsKBHBpbmcYBCABKAsyCy5jYWJhbC5QaW5nSAASGwoEcG9uZxgFIAEoCzILLmNhYmFsLlBvbmdIAEIUChJ1c2VyX3Jlc3BvbnNlX2tpbmQiIwoTVG9rZW5UcmFkZVN0YXRzQ2FsbBIMCgRtaW50GAEgASgJIh0KDVRyYWRlUmVzcG9uc2USDAoEc2xvdBgCIAEoBCKQAgoLVG9rZW5TdGF0dXMSDAoEbWludBgBIAEoCRIPCgdwb29sX2lkGAIgASgJEiIKCXBvb2xfa2luZBgDIAEoDjIPLmNhYmFsLlBvb2xLaW5kEjAKEG1pZ3JhdGlvbl9zdGF0dXMYBCABKA4yFi5jYWJhbC5NaWdyYXRpb25TdGF0dXMSDgoGc3VwcGx5GAUgASgEEhAKCGJhc2VfbGlxGAYgASgEEhEKCXF1b3RlX2xpcRgHIAEoBBIlCgpxb3V0ZV9raW5kGAggASgOMhEuY29tbW9uLlF1b3RlS2luZBIUCgd0YXhfYnBzGAkgASgNSACIAQESDgoGdGlja2VyGAogASgJQgoKCF90YXhfYnBzIo0CCg9Ub2tlblRyYWRlU3RhdHMSDAoEbWludBgBIAEoCRIVCg10b2tlbl9iYWxhbmNlGAIgASgEEhEKCWJ1eV9xb3V0ZRgDIAEoBBISCgpzZWxsX3FvdXRlGAQgASgEEhAKCGJ1eV9iYXNlGAUgASgEEhEKCXNlbGxfYmFzZRgGIAEoBBIMCgRidXlzGAcgASgNEg0KBXNlbGxzGAggASgNEhMKC3NvbF9iYWxhbmNlGAkgASgEEhgKEGxhc3RfdHJhZGVkX3Nsb3QYCiABKAQSFgoOdG9rZW5fZGVjaW1hbHMYCyABKA0SJQoKcW91dGVfa2luZBgMIAEoDjIRLmNvbW1vbi5RdW90ZUtpbmQi+QIKClRyYWRlRXZlbnQSJAoDYnV5GAEgASgLMhUuY2FiYWwuVHJhZGVFdmVudERhdGFIABIlCgRzZWxsGAIgASgLMhUuY2FiYWwuVHJhZGVFdmVudERhdGFIABIoCgdkZXBvc2l0GAMgASgLMhUuY2FiYWwuVHJhZGVFdmVudERhdGFIABIpCgh3aXRoZHJhdxgEIAEoCzIVLmNhYmFsLlRyYWRlRXZlbnREYXRhSAASMAoPbWlncmF0aW9uX3N0YXJ0GAUgASgLMhUuY2FiYWwuVHJhZGVFdmVudERhdGFIABIuCg1taWdyYXRpb25fZW5kGAYgASgLMhUuY2FiYWwuVHJhZGVFdmVudERhdGFIABIoCghidXJuX2xpcRgHIAEoCzIULmNhYmFsLkJ1cm5FdmVudERhdGFIABIpCglidXJuX21pbnQYCCABKAsyFC5jYWJhbC5CdXJuRXZlbnREYXRhSABCEgoQdHJhZGVfZXZlbnRfa2luZCJtCg5UcmFkZUV2ZW50RGF0YRISCgphbW91bnRfc29sGAEgASgEEhAKCGJhc2VfbGlxGAIgASgEEhEKCXF1b3RlX2xpcRgDIAEoBBIiCglwb29sX2tpbmQYBCABKA4yDy5jYWJhbC5Qb29sS2luZCItCg1CdXJuRXZlbnREYXRhEg4KBmFtb3VudBgBIAEoBBIMCgRsZWZ0GAIgASgEIrQCCgNCdXkSDgoGYW1vdW50GAEgASgEEgwKBG1pbnQYAiABKAkSFAoMc2xpcHBhZ2VfYnBzGAMgASgNEgsKA3RpcBgEIAEoBBIZCgxwcmlvcml0eV9mZWUYBSABKARIAIgBARISCgVub25jZRgGIAEoBEgBiAEBEhkKDHNsb3RfbGF0ZW5jeRgHIAEoDUgCiAEBEi0KCWV4cGlyZV9hdBgIIAEoCzIVLmNvbW1vbi5Vbml4VGltZXN0YW1wSAOIAQESKgoKcW91dGVfa2luZBgJIAEoDjIRLmNvbW1vbi5RdW90ZUtpbmRIBIgBAUIPCg1fcHJpb3JpdHlfZmVlQggKBl9ub25jZUIPCg1fc2xvdF9sYXRlbmN5QgwKCl9leHBpcmVfYXRCDQoLX3FvdXRlX2tpbmQi/gEKBFNlbGwSEgoKYW1vdW50X2JwcxgBIAEoDRIMCgRtaW50GAIgASgJEhQKDHNsaXBwYWdlX2JwcxgDIAEoDRILCgN0aXAYBCABKAQSGQoMcHJpb3JpdHlfZmVlGAUgASgESACIAQESEgoFbm9uY2UYBiABKARIAYgBARIZCgxzbG90X2xhdGVuY3kYByABKA1IAogBARItCglleHBpcmVfYXQYCCABKAsyFS5jb21tb24uVW5peFRpbWVzdGFtcEgDiAEBQg8KDV9wcmlvcml0eV9mZWVCCAoGX25vbmNlQg8KDV9zbG90X2xhdGVuY3lCDAoKX2V4cGlyZV9hdCotCg9Vc2VyVHJhZGVTdGF0dXMSDAoIYWNjZXB0ZWQQABIMCghyZWplY3RlZBABKlUKD01pZ3JhdGlvblN0YXR1cxIMCghtaWdyYXRlZBAAEg0KCW1pZ3JhdGluZxABEhEKDXByZV9taWdyYXRpb24QAhISCg5ub25fbWlncmF0YWJsZRADKnIKCFBvb2xLaW5kEggKBHB1bXAQABILCgdyYXlfYW1tEAESDAoIbW9vbnNob3QQAhILCgdtZXRlb3JhEAMSDAoIcmF5X2NsbW0QBBIMCghyYXlfY3BtbRAFEgwKCHB1bXBfYW1tEAYSCgoGcmF5X2xsEAcy8gQKCENhYmFsUnBjEkAKD1VzZXJBY3Rpdml0eVVuaRIULmNhYmFsLlVzZXJBY3Rpb25TdWIaEy5jYWJhbC5Vc2VyUmVzcG9uc2UiADABEkAKCVRyYWRlc1VuaRIULmNhYmFsLlRyYWRlRXZlbnRTdWIaGS5jYWJhbC5UcmFkZUV2ZW50UmVzcG9uc2UiADABEkMKDlN1YnNjcmliZVRva2VuEhkuY2FiYWwuVG9rZW5UcmFkZUV2ZW50U3ViGhQuY2FiYWwuVHJhZGVSZXNwb25zZSIAEicKCVRyYWRlUGluZxILLmNhYmFsLlBpbmcaCy5jYWJhbC5Qb25nIgASJgoIVXNlclBpbmcSCy5jYWJhbC5QaW5nGgsuY2FiYWwuUG9uZyIAEjEKCk1hcmtldFNlbGwSCy5jYWJhbC5TZWxsGhQuY2FiYWwuVHJhZGVSZXNwb25zZSIAEi8KCU1hcmtldEJ1eRIKLmNhYmFsLkJ1eRoULmNhYmFsLlRyYWRlUmVzcG9uc2UiABJHChNHZXRUb2tlbkxpbWl0T3JkZXJzEhQuY29tbW9uLlRva2VuQWRkcmVzcxoYLm9yZGVycy5Ub2tlbkxpbWl0T3JkZXJzIgASUAoQUGxhY2VMaW1pdE9yZGVycxIYLm9yZGVycy5Ub2tlbkxpbWl0T3JkZXJzGiAub3JkZXJzLlBsYWNlTGltaXRPcmRlcnNSZXNwb25jZSIAEk0KEURlbGV0ZUxpbWl0T3JkZXJzEhQub3JkZXJzLkRlbGV0ZU9yZGVycxogLm9yZGVycy5QbGFjZUxpbWl0T3JkZXJzUmVzcG9uY2UiAGIGcHJvdG8z", [file_orders, file_txncb, file_common]);

/**
 * @generated from message cabal.UserAction
 */
export type UserAction = Message<"cabal.UserAction"> & {
  /**
   * @generated from oneof cabal.UserAction.user_action_kind
   */
  userActionKind: {
    /**
     * @generated from field: cabal.Buy buy = 1;
     */
    value: Buy;
    case: "buy";
  } | {
    /**
     * @generated from field: cabal.Sell sell = 2;
     */
    value: Sell;
    case: "sell";
  } | {
    /**
     * @generated from field: cabal.TokenTradeStats token_trade_stats = 3;
     */
    value: TokenTradeStats;
    case: "tokenTradeStats";
  } | {
    /**
     * @generated from field: cabal.Ping ping = 4;
     */
    value: Ping;
    case: "ping";
  } | {
    /**
     * @generated from field: cabal.Pong pong = 5;
     */
    value: Pong;
    case: "pong";
  } | { case: undefined; value?: undefined };
};

/**
 * Describes the message cabal.UserAction.
 * Use `create(UserActionSchema)` to create a new message.
 */
export const UserActionSchema: GenMessage<UserAction> = /*@__PURE__*/
  messageDesc(file_cabal, 0);

/**
 * @generated from message cabal.TradeEventSub
 */
export type TradeEventSub = Message<"cabal.TradeEventSub"> & {
};

/**
 * Describes the message cabal.TradeEventSub.
 * Use `create(TradeEventSubSchema)` to create a new message.
 */
export const TradeEventSubSchema: GenMessage<TradeEventSub> = /*@__PURE__*/
  messageDesc(file_cabal, 1);

/**
 * @generated from message cabal.UserActionSub
 */
export type UserActionSub = Message<"cabal.UserActionSub"> & {
};

/**
 * Describes the message cabal.UserActionSub.
 * Use `create(UserActionSubSchema)` to create a new message.
 */
export const UserActionSubSchema: GenMessage<UserActionSub> = /*@__PURE__*/
  messageDesc(file_cabal, 2);

/**
 * @generated from message cabal.EchoRequest
 */
export type EchoRequest = Message<"cabal.EchoRequest"> & {
  /**
   * @generated from field: string message = 1;
   */
  message: string;
};

/**
 * Describes the message cabal.EchoRequest.
 * Use `create(EchoRequestSchema)` to create a new message.
 */
export const EchoRequestSchema: GenMessage<EchoRequest> = /*@__PURE__*/
  messageDesc(file_cabal, 3);

/**
 * @generated from message cabal.EchoResponse
 */
export type EchoResponse = Message<"cabal.EchoResponse"> & {
  /**
   * @generated from field: string message = 1;
   */
  message: string;
};

/**
 * Describes the message cabal.EchoResponse.
 * Use `create(EchoResponseSchema)` to create a new message.
 */
export const EchoResponseSchema: GenMessage<EchoResponse> = /*@__PURE__*/
  messageDesc(file_cabal, 4);

/**
 * @generated from message cabal.TradeEventRequest
 */
export type TradeEventRequest = Message<"cabal.TradeEventRequest"> & {
  /**
   * @generated from oneof cabal.TradeEventRequest.trade_event_request_kind
   */
  tradeEventRequestKind: {
    /**
     * @generated from field: cabal.TokenTradeEventSub sub = 1;
     */
    value: TokenTradeEventSub;
    case: "sub";
  } | {
    /**
     * @generated from field: cabal.Ping ping = 2;
     */
    value: Ping;
    case: "ping";
  } | {
    /**
     * @generated from field: cabal.Pong pong = 3;
     */
    value: Pong;
    case: "pong";
  } | { case: undefined; value?: undefined };
};

/**
 * Describes the message cabal.TradeEventRequest.
 * Use `create(TradeEventRequestSchema)` to create a new message.
 */
export const TradeEventRequestSchema: GenMessage<TradeEventRequest> = /*@__PURE__*/
  messageDesc(file_cabal, 5);

/**
 * @generated from message cabal.TokenTradeEventSub
 */
export type TokenTradeEventSub = Message<"cabal.TokenTradeEventSub"> & {
  /**
   * @generated from field: string mint = 1;
   */
  mint: string;
};

/**
 * Describes the message cabal.TokenTradeEventSub.
 * Use `create(TokenTradeEventSubSchema)` to create a new message.
 */
export const TokenTradeEventSubSchema: GenMessage<TokenTradeEventSub> = /*@__PURE__*/
  messageDesc(file_cabal, 6);

/**
 * @generated from message cabal.TokenStatusRequest
 */
export type TokenStatusRequest = Message<"cabal.TokenStatusRequest"> & {
  /**
   * @generated from field: string mint = 1;
   */
  mint: string;
};

/**
 * Describes the message cabal.TokenStatusRequest.
 * Use `create(TokenStatusRequestSchema)` to create a new message.
 */
export const TokenStatusRequestSchema: GenMessage<TokenStatusRequest> = /*@__PURE__*/
  messageDesc(file_cabal, 7);

/**
 * @generated from message cabal.TradeEventResponse
 */
export type TradeEventResponse = Message<"cabal.TradeEventResponse"> & {
  /**
   * @generated from oneof cabal.TradeEventResponse.trade_event_response_kind
   */
  tradeEventResponseKind: {
    /**
     * @generated from field: cabal.TradeEvent trade_event = 1;
     */
    value: TradeEvent;
    case: "tradeEvent";
  } | {
    /**
     * @generated from field: cabal.TokenStatus token_status = 2;
     */
    value: TokenStatus;
    case: "tokenStatus";
  } | {
    /**
     * @generated from field: cabal.Ping ping = 3;
     */
    value: Ping;
    case: "ping";
  } | {
    /**
     * @generated from field: cabal.Pong pong = 4;
     */
    value: Pong;
    case: "pong";
  } | { case: undefined; value?: undefined };
};

/**
 * Describes the message cabal.TradeEventResponse.
 * Use `create(TradeEventResponseSchema)` to create a new message.
 */
export const TradeEventResponseSchema: GenMessage<TradeEventResponse> = /*@__PURE__*/
  messageDesc(file_cabal, 8);

/**
 * @generated from message cabal.Ping
 */
export type Ping = Message<"cabal.Ping"> & {
  /**
   * @generated from field: uint64 count = 1;
   */
  count: bigint;
};

/**
 * Describes the message cabal.Ping.
 * Use `create(PingSchema)` to create a new message.
 */
export const PingSchema: GenMessage<Ping> = /*@__PURE__*/
  messageDesc(file_cabal, 9);

/**
 * @generated from message cabal.Pong
 */
export type Pong = Message<"cabal.Pong"> & {
  /**
   * @generated from field: uint64 count = 1;
   */
  count: bigint;
};

/**
 * Describes the message cabal.Pong.
 * Use `create(PongSchema)` to create a new message.
 */
export const PongSchema: GenMessage<Pong> = /*@__PURE__*/
  messageDesc(file_cabal, 10);

/**
 * @generated from message cabal.UserResponse
 */
export type UserResponse = Message<"cabal.UserResponse"> & {
  /**
   * @generated from oneof cabal.UserResponse.user_response_kind
   */
  userResponseKind: {
    /**
     * @generated from field: cabal.TradeResponse trade_status = 1;
     */
    value: TradeResponse;
    case: "tradeStatus";
  } | {
    /**
     * @generated from field: cabal.TokenTradeStats trade_stats = 2;
     */
    value: TokenTradeStats;
    case: "tradeStats";
  } | {
    /**
     * @generated from field: txncb.LandedTxnState txn_cb = 3;
     */
    value: LandedTxnState;
    case: "txnCb";
  } | {
    /**
     * @generated from field: cabal.Ping ping = 4;
     */
    value: Ping;
    case: "ping";
  } | {
    /**
     * @generated from field: cabal.Pong pong = 5;
     */
    value: Pong;
    case: "pong";
  } | { case: undefined; value?: undefined };
};

/**
 * Describes the message cabal.UserResponse.
 * Use `create(UserResponseSchema)` to create a new message.
 */
export const UserResponseSchema: GenMessage<UserResponse> = /*@__PURE__*/
  messageDesc(file_cabal, 11);

/**
 * @generated from message cabal.TokenTradeStatsCall
 */
export type TokenTradeStatsCall = Message<"cabal.TokenTradeStatsCall"> & {
  /**
   * @generated from field: string mint = 1;
   */
  mint: string;
};

/**
 * Describes the message cabal.TokenTradeStatsCall.
 * Use `create(TokenTradeStatsCallSchema)` to create a new message.
 */
export const TokenTradeStatsCallSchema: GenMessage<TokenTradeStatsCall> = /*@__PURE__*/
  messageDesc(file_cabal, 12);

/**
 * @generated from message cabal.TradeResponse
 */
export type TradeResponse = Message<"cabal.TradeResponse"> & {
  /**
   * @generated from field: uint64 slot = 2;
   */
  slot: bigint;
};

/**
 * Describes the message cabal.TradeResponse.
 * Use `create(TradeResponseSchema)` to create a new message.
 */
export const TradeResponseSchema: GenMessage<TradeResponse> = /*@__PURE__*/
  messageDesc(file_cabal, 13);

/**
 * @generated from message cabal.TokenStatus
 */
export type TokenStatus = Message<"cabal.TokenStatus"> & {
  /**
   * @generated from field: string mint = 1;
   */
  mint: string;

  /**
   * @generated from field: string pool_id = 2;
   */
  poolId: string;

  /**
   * @generated from field: cabal.PoolKind pool_kind = 3;
   */
  poolKind: PoolKind;

  /**
   * @generated from field: cabal.MigrationStatus migration_status = 4;
   */
  migrationStatus: MigrationStatus;

  /**
   * @generated from field: uint64 supply = 5;
   */
  supply: bigint;

  /**
   * @generated from field: uint64 base_liq = 6;
   */
  baseLiq: bigint;

  /**
   * @generated from field: uint64 quote_liq = 7;
   */
  quoteLiq: bigint;

  /**
   * @generated from field: common.QuoteKind qoute_kind = 8;
   */
  qouteKind: QuoteKind;

  /**
   * @generated from field: optional uint32 tax_bps = 9;
   */
  taxBps?: number;

  /**
   * @generated from field: string ticker = 10;
   */
  ticker: string;
};

/**
 * Describes the message cabal.TokenStatus.
 * Use `create(TokenStatusSchema)` to create a new message.
 */
export const TokenStatusSchema: GenMessage<TokenStatus> = /*@__PURE__*/
  messageDesc(file_cabal, 14);

/**
 * @generated from message cabal.TokenTradeStats
 */
export type TokenTradeStats = Message<"cabal.TokenTradeStats"> & {
  /**
   * @generated from field: string mint = 1;
   */
  mint: string;

  /**
   * @generated from field: uint64 token_balance = 2;
   */
  tokenBalance: bigint;

  /**
   * @generated from field: uint64 buy_qoute = 3;
   */
  buyQoute: bigint;

  /**
   * @generated from field: uint64 sell_qoute = 4;
   */
  sellQoute: bigint;

  /**
   * @generated from field: uint64 buy_base = 5;
   */
  buyBase: bigint;

  /**
   * @generated from field: uint64 sell_base = 6;
   */
  sellBase: bigint;

  /**
   * @generated from field: uint32 buys = 7;
   */
  buys: number;

  /**
   * @generated from field: uint32 sells = 8;
   */
  sells: number;

  /**
   * @generated from field: uint64 sol_balance = 9;
   */
  solBalance: bigint;

  /**
   * @generated from field: uint64 last_traded_slot = 10;
   */
  lastTradedSlot: bigint;

  /**
   * @generated from field: uint32 token_decimals = 11;
   */
  tokenDecimals: number;

  /**
   * @generated from field: common.QuoteKind qoute_kind = 12;
   */
  qouteKind: QuoteKind;
};

/**
 * Describes the message cabal.TokenTradeStats.
 * Use `create(TokenTradeStatsSchema)` to create a new message.
 */
export const TokenTradeStatsSchema: GenMessage<TokenTradeStats> = /*@__PURE__*/
  messageDesc(file_cabal, 15);

/**
 * @generated from message cabal.TradeEvent
 */
export type TradeEvent = Message<"cabal.TradeEvent"> & {
  /**
   * @generated from oneof cabal.TradeEvent.trade_event_kind
   */
  tradeEventKind: {
    /**
     * @generated from field: cabal.TradeEventData buy = 1;
     */
    value: TradeEventData;
    case: "buy";
  } | {
    /**
     * @generated from field: cabal.TradeEventData sell = 2;
     */
    value: TradeEventData;
    case: "sell";
  } | {
    /**
     * @generated from field: cabal.TradeEventData deposit = 3;
     */
    value: TradeEventData;
    case: "deposit";
  } | {
    /**
     * @generated from field: cabal.TradeEventData withdraw = 4;
     */
    value: TradeEventData;
    case: "withdraw";
  } | {
    /**
     * @generated from field: cabal.TradeEventData migration_start = 5;
     */
    value: TradeEventData;
    case: "migrationStart";
  } | {
    /**
     * @generated from field: cabal.TradeEventData migration_end = 6;
     */
    value: TradeEventData;
    case: "migrationEnd";
  } | {
    /**
     * @generated from field: cabal.BurnEventData burn_liq = 7;
     */
    value: BurnEventData;
    case: "burnLiq";
  } | {
    /**
     * @generated from field: cabal.BurnEventData burn_mint = 8;
     */
    value: BurnEventData;
    case: "burnMint";
  } | { case: undefined; value?: undefined };
};

/**
 * Describes the message cabal.TradeEvent.
 * Use `create(TradeEventSchema)` to create a new message.
 */
export const TradeEventSchema: GenMessage<TradeEvent> = /*@__PURE__*/
  messageDesc(file_cabal, 16);

/**
 * @generated from message cabal.TradeEventData
 */
export type TradeEventData = Message<"cabal.TradeEventData"> & {
  /**
   * @generated from field: uint64 amount_sol = 1;
   */
  amountSol: bigint;

  /**
   * @generated from field: uint64 base_liq = 2;
   */
  baseLiq: bigint;

  /**
   * @generated from field: uint64 quote_liq = 3;
   */
  quoteLiq: bigint;

  /**
   * @generated from field: cabal.PoolKind pool_kind = 4;
   */
  poolKind: PoolKind;
};

/**
 * Describes the message cabal.TradeEventData.
 * Use `create(TradeEventDataSchema)` to create a new message.
 */
export const TradeEventDataSchema: GenMessage<TradeEventData> = /*@__PURE__*/
  messageDesc(file_cabal, 17);

/**
 * @generated from message cabal.BurnEventData
 */
export type BurnEventData = Message<"cabal.BurnEventData"> & {
  /**
   * @generated from field: uint64 amount = 1;
   */
  amount: bigint;

  /**
   * @generated from field: uint64 left = 2;
   */
  left: bigint;
};

/**
 * Describes the message cabal.BurnEventData.
 * Use `create(BurnEventDataSchema)` to create a new message.
 */
export const BurnEventDataSchema: GenMessage<BurnEventData> = /*@__PURE__*/
  messageDesc(file_cabal, 18);

/**
 * @generated from message cabal.Buy
 */
export type Buy = Message<"cabal.Buy"> & {
  /**
   * @generated from field: uint64 amount = 1;
   */
  amount: bigint;

  /**
   * @generated from field: string mint = 2;
   */
  mint: string;

  /**
   * fract 0 - 1
   *
   * @generated from field: uint32 slippage_bps = 3;
   */
  slippageBps: number;

  /**
   * @generated from field: uint64 tip = 4;
   */
  tip: bigint;

  /**
   * lamports
   *
   * @generated from field: optional uint64 priority_fee = 5;
   */
  priorityFee?: bigint;

  /**
   * @generated from field: optional uint64 nonce = 6;
   */
  nonce?: bigint;

  /**
   * @generated from field: optional uint32 slot_latency = 7;
   */
  slotLatency?: number;

  /**
   * Utc timestamp in seconds
   *
   * @generated from field: optional common.UnixTimestamp expire_at = 8;
   */
  expireAt?: UnixTimestamp;

  /**
   * @generated from field: optional common.QuoteKind qoute_kind = 9;
   */
  qouteKind?: QuoteKind;
};

/**
 * Describes the message cabal.Buy.
 * Use `create(BuySchema)` to create a new message.
 */
export const BuySchema: GenMessage<Buy> = /*@__PURE__*/
  messageDesc(file_cabal, 19);

/**
 * @generated from message cabal.Sell
 */
export type Sell = Message<"cabal.Sell"> & {
  /**
   * fract 0 - 1
   *
   * @generated from field: uint32 amount_bps = 1;
   */
  amountBps: number;

  /**
   * @generated from field: string mint = 2;
   */
  mint: string;

  /**
   * fract 0 - 1
   *
   * @generated from field: uint32 slippage_bps = 3;
   */
  slippageBps: number;

  /**
   * @generated from field: uint64 tip = 4;
   */
  tip: bigint;

  /**
   * lamports
   *
   * @generated from field: optional uint64 priority_fee = 5;
   */
  priorityFee?: bigint;

  /**
   * @generated from field: optional uint64 nonce = 6;
   */
  nonce?: bigint;

  /**
   * @generated from field: optional uint32 slot_latency = 7;
   */
  slotLatency?: number;

  /**
   * Utc timestamp in seconds
   *
   * @generated from field: optional common.UnixTimestamp expire_at = 8;
   */
  expireAt?: UnixTimestamp;
};

/**
 * Describes the message cabal.Sell.
 * Use `create(SellSchema)` to create a new message.
 */
export const SellSchema: GenMessage<Sell> = /*@__PURE__*/
  messageDesc(file_cabal, 20);

/**
 * @generated from enum cabal.UserTradeStatus
 */
export enum UserTradeStatus {
  /**
   * @generated from enum value: accepted = 0;
   */
  accepted = 0,

  /**
   * @generated from enum value: rejected = 1;
   */
  rejected = 1,
}

/**
 * Describes the enum cabal.UserTradeStatus.
 */
export const UserTradeStatusSchema: GenEnum<UserTradeStatus> = /*@__PURE__*/
  enumDesc(file_cabal, 0);

/**
 * @generated from enum cabal.MigrationStatus
 */
export enum MigrationStatus {
  /**
   * @generated from enum value: migrated = 0;
   */
  migrated = 0,

  /**
   * @generated from enum value: migrating = 1;
   */
  migrating = 1,

  /**
   * @generated from enum value: pre_migration = 2;
   */
  pre_migration = 2,

  /**
   * @generated from enum value: non_migratable = 3;
   */
  non_migratable = 3,
}

/**
 * Describes the enum cabal.MigrationStatus.
 */
export const MigrationStatusSchema: GenEnum<MigrationStatus> = /*@__PURE__*/
  enumDesc(file_cabal, 1);

/**
 * @generated from enum cabal.PoolKind
 */
export enum PoolKind {
  /**
   * @generated from enum value: pump = 0;
   */
  pump = 0,

  /**
   * @generated from enum value: ray_amm = 1;
   */
  ray_amm = 1,

  /**
   * @generated from enum value: moonshot = 2;
   */
  moonshot = 2,

  /**
   * @generated from enum value: meteora = 3;
   */
  meteora = 3,

  /**
   * @generated from enum value: ray_clmm = 4;
   */
  ray_clmm = 4,

  /**
   * @generated from enum value: ray_cpmm = 5;
   */
  ray_cpmm = 5,

  /**
   * @generated from enum value: pump_amm = 6;
   */
  pump_amm = 6,

  /**
   * @generated from enum value: ray_ll = 7;
   */
  ray_ll = 7,
}

/**
 * Describes the enum cabal.PoolKind.
 */
export const PoolKindSchema: GenEnum<PoolKind> = /*@__PURE__*/
  enumDesc(file_cabal, 2);

/**
 * @generated from service cabal.CabalRpc
 */
export const CabalRpc: GenService<{
  /**
   * @generated from rpc cabal.CabalRpc.UserActivityUni
   */
  userActivityUni: {
    methodKind: "server_streaming";
    input: typeof UserActionSubSchema;
    output: typeof UserResponseSchema;
  },
  /**
   * @generated from rpc cabal.CabalRpc.TradesUni
   */
  tradesUni: {
    methodKind: "server_streaming";
    input: typeof TradeEventSubSchema;
    output: typeof TradeEventResponseSchema;
  },
  /**
   * @generated from rpc cabal.CabalRpc.SubscribeToken
   */
  subscribeToken: {
    methodKind: "unary";
    input: typeof TokenTradeEventSubSchema;
    output: typeof TradeResponseSchema;
  },
  /**
   * @generated from rpc cabal.CabalRpc.TradePing
   */
  tradePing: {
    methodKind: "unary";
    input: typeof PingSchema;
    output: typeof PongSchema;
  },
  /**
   * @generated from rpc cabal.CabalRpc.UserPing
   */
  userPing: {
    methodKind: "unary";
    input: typeof PingSchema;
    output: typeof PongSchema;
  },
  /**
   * @generated from rpc cabal.CabalRpc.MarketSell
   */
  marketSell: {
    methodKind: "unary";
    input: typeof SellSchema;
    output: typeof TradeResponseSchema;
  },
  /**
   * @generated from rpc cabal.CabalRpc.MarketBuy
   */
  marketBuy: {
    methodKind: "unary";
    input: typeof BuySchema;
    output: typeof TradeResponseSchema;
  },
  /**
   * @generated from rpc cabal.CabalRpc.GetTokenLimitOrders
   */
  getTokenLimitOrders: {
    methodKind: "unary";
    input: typeof TokenAddressSchema;
    output: typeof TokenLimitOrdersSchema;
  },
  /**
   * @generated from rpc cabal.CabalRpc.PlaceLimitOrders
   */
  placeLimitOrders: {
    methodKind: "unary";
    input: typeof TokenLimitOrdersSchema;
    output: typeof PlaceLimitOrdersResponceSchema;
  },
  /**
   * @generated from rpc cabal.CabalRpc.DeleteLimitOrders
   */
  deleteLimitOrders: {
    methodKind: "unary";
    input: typeof DeleteOrdersSchema;
    output: typeof PlaceLimitOrdersResponceSchema;
  },
}> = /*@__PURE__*/
  serviceDesc(file_cabal, 0);

