// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.11
// 	protoc        v6.32.0
// source: solana/dex_block_message.proto

package solana_messages

import (
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

type DexOrderEventType int32

const (
	DexOrderEventType_OPEN   DexOrderEventType = 0
	DexOrderEventType_UPDATE DexOrderEventType = 1
	DexOrderEventType_CANCEL DexOrderEventType = 2
)

// Enum value maps for DexOrderEventType.
var (
	DexOrderEventType_name = map[int32]string{
		0: "OPEN",
		1: "UPDATE",
		2: "CANCEL",
	}
	DexOrderEventType_value = map[string]int32{
		"OPEN":   0,
		"UPDATE": 1,
		"CANCEL": 2,
	}
)

func (x DexOrderEventType) Enum() *DexOrderEventType {
	p := new(DexOrderEventType)
	*p = x
	return p
}

func (x DexOrderEventType) String() string {
	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
}

func (DexOrderEventType) Descriptor() protoreflect.EnumDescriptor {
	return file_solana_dex_block_message_proto_enumTypes[0].Descriptor()
}

func (DexOrderEventType) Type() protoreflect.EnumType {
	return &file_solana_dex_block_message_proto_enumTypes[0]
}

func (x DexOrderEventType) Number() protoreflect.EnumNumber {
	return protoreflect.EnumNumber(x)
}

// Deprecated: Use DexOrderEventType.Descriptor instead.
func (DexOrderEventType) EnumDescriptor() ([]byte, []int) {
	return file_solana_dex_block_message_proto_rawDescGZIP(), []int{0}
}

type DexInfo struct {
	state          protoimpl.MessageState `protogen:"open.v1"`
	ProgramAddress []byte                 `protobuf:"bytes,1,opt,name=ProgramAddress,proto3" json:"ProgramAddress,omitempty"`
	ProtocolName   string                 `protobuf:"bytes,2,opt,name=ProtocolName,proto3" json:"ProtocolName,omitempty"`
	ProtocolFamily string                 `protobuf:"bytes,3,opt,name=ProtocolFamily,proto3" json:"ProtocolFamily,omitempty"`
	unknownFields  protoimpl.UnknownFields
	sizeCache      protoimpl.SizeCache
}

func (x *DexInfo) Reset() {
	*x = DexInfo{}
	mi := &file_solana_dex_block_message_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DexInfo) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DexInfo) ProtoMessage() {}

func (x *DexInfo) ProtoReflect() protoreflect.Message {
	mi := &file_solana_dex_block_message_proto_msgTypes[0]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DexInfo.ProtoReflect.Descriptor instead.
func (*DexInfo) Descriptor() ([]byte, []int) {
	return file_solana_dex_block_message_proto_rawDescGZIP(), []int{0}
}

func (x *DexInfo) GetProgramAddress() []byte {
	if x != nil {
		return x.ProgramAddress
	}
	return nil
}

func (x *DexInfo) GetProtocolName() string {
	if x != nil {
		return x.ProtocolName
	}
	return ""
}

func (x *DexInfo) GetProtocolFamily() string {
	if x != nil {
		return x.ProtocolFamily
	}
	return ""
}

type DexMarket struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	MarketAddress []byte                 `protobuf:"bytes,1,opt,name=MarketAddress,proto3" json:"MarketAddress,omitempty"`
	BaseCurrency  *Currency              `protobuf:"bytes,2,opt,name=BaseCurrency,proto3" json:"BaseCurrency,omitempty"`
	QuoteCurrency *Currency              `protobuf:"bytes,3,opt,name=QuoteCurrency,proto3" json:"QuoteCurrency,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DexMarket) Reset() {
	*x = DexMarket{}
	mi := &file_solana_dex_block_message_proto_msgTypes[1]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DexMarket) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DexMarket) ProtoMessage() {}

func (x *DexMarket) ProtoReflect() protoreflect.Message {
	mi := &file_solana_dex_block_message_proto_msgTypes[1]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DexMarket.ProtoReflect.Descriptor instead.
func (*DexMarket) Descriptor() ([]byte, []int) {
	return file_solana_dex_block_message_proto_rawDescGZIP(), []int{1}
}

func (x *DexMarket) GetMarketAddress() []byte {
	if x != nil {
		return x.MarketAddress
	}
	return nil
}

func (x *DexMarket) GetBaseCurrency() *Currency {
	if x != nil {
		return x.BaseCurrency
	}
	return nil
}

func (x *DexMarket) GetQuoteCurrency() *Currency {
	if x != nil {
		return x.QuoteCurrency
	}
	return nil
}

type DexOrder struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	OrderId       []byte                 `protobuf:"bytes,1,opt,name=OrderId,proto3" json:"OrderId,omitempty"`
	BuySide       bool                   `protobuf:"varint,2,opt,name=BuySide,proto3" json:"BuySide,omitempty"`
	LimitPrice    uint64                 `protobuf:"varint,3,opt,name=LimitPrice,proto3" json:"LimitPrice,omitempty"`
	LimitAmount   uint64                 `protobuf:"varint,4,opt,name=LimitAmount,proto3" json:"LimitAmount,omitempty"`
	Account       []byte                 `protobuf:"bytes,5,opt,name=Account,proto3" json:"Account,omitempty"`
	Owner         []byte                 `protobuf:"bytes,6,opt,name=Owner,proto3" json:"Owner,omitempty"`
	Payer         []byte                 `protobuf:"bytes,7,opt,name=Payer,proto3" json:"Payer,omitempty"`
	Mint          []byte                 `protobuf:"bytes,8,opt,name=Mint,proto3" json:"Mint,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DexOrder) Reset() {
	*x = DexOrder{}
	mi := &file_solana_dex_block_message_proto_msgTypes[2]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DexOrder) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DexOrder) ProtoMessage() {}

func (x *DexOrder) ProtoReflect() protoreflect.Message {
	mi := &file_solana_dex_block_message_proto_msgTypes[2]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DexOrder.ProtoReflect.Descriptor instead.
func (*DexOrder) Descriptor() ([]byte, []int) {
	return file_solana_dex_block_message_proto_rawDescGZIP(), []int{2}
}

func (x *DexOrder) GetOrderId() []byte {
	if x != nil {
		return x.OrderId
	}
	return nil
}

func (x *DexOrder) GetBuySide() bool {
	if x != nil {
		return x.BuySide
	}
	return false
}

func (x *DexOrder) GetLimitPrice() uint64 {
	if x != nil {
		return x.LimitPrice
	}
	return 0
}

func (x *DexOrder) GetLimitAmount() uint64 {
	if x != nil {
		return x.LimitAmount
	}
	return 0
}

func (x *DexOrder) GetAccount() []byte {
	if x != nil {
		return x.Account
	}
	return nil
}

func (x *DexOrder) GetOwner() []byte {
	if x != nil {
		return x.Owner
	}
	return nil
}

func (x *DexOrder) GetPayer() []byte {
	if x != nil {
		return x.Payer
	}
	return nil
}

func (x *DexOrder) GetMint() []byte {
	if x != nil {
		return x.Mint
	}
	return nil
}

type ParsedPoolLiquidityChange struct {
	state         protoimpl.MessageState      `protogen:"open.v1"`
	Index         uint32                      `protobuf:"varint,1,opt,name=Index,proto3" json:"Index,omitempty"`
	Signature     []byte                      `protobuf:"bytes,2,opt,name=Signature,proto3" json:"Signature,omitempty"`
	Status        *TransactionStatus          `protobuf:"bytes,3,opt,name=Status,proto3" json:"Status,omitempty"`
	Header        *TransactionHeader          `protobuf:"bytes,4,opt,name=Header,proto3" json:"Header,omitempty"`
	Changes       []*PoolLiquidityChangeEvent `protobuf:"bytes,5,rep,name=Changes,proto3" json:"Changes,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ParsedPoolLiquidityChange) Reset() {
	*x = ParsedPoolLiquidityChange{}
	mi := &file_solana_dex_block_message_proto_msgTypes[3]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ParsedPoolLiquidityChange) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParsedPoolLiquidityChange) ProtoMessage() {}

func (x *ParsedPoolLiquidityChange) ProtoReflect() protoreflect.Message {
	mi := &file_solana_dex_block_message_proto_msgTypes[3]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParsedPoolLiquidityChange.ProtoReflect.Descriptor instead.
func (*ParsedPoolLiquidityChange) Descriptor() ([]byte, []int) {
	return file_solana_dex_block_message_proto_rawDescGZIP(), []int{3}
}

func (x *ParsedPoolLiquidityChange) GetIndex() uint32 {
	if x != nil {
		return x.Index
	}
	return 0
}

func (x *ParsedPoolLiquidityChange) GetSignature() []byte {
	if x != nil {
		return x.Signature
	}
	return nil
}

func (x *ParsedPoolLiquidityChange) GetStatus() *TransactionStatus {
	if x != nil {
		return x.Status
	}
	return nil
}

func (x *ParsedPoolLiquidityChange) GetHeader() *TransactionHeader {
	if x != nil {
		return x.Header
	}
	return nil
}

func (x *ParsedPoolLiquidityChange) GetChanges() []*PoolLiquidityChangeEvent {
	if x != nil {
		return x.Changes
	}
	return nil
}

type PoolLiquidityChangeEvent struct {
	state            protoimpl.MessageState `protogen:"open.v1"`
	InstructionIndex uint32                 `protobuf:"varint,1,opt,name=InstructionIndex,proto3" json:"InstructionIndex,omitempty"`
	Dex              *DexInfo               `protobuf:"bytes,2,opt,name=Dex,proto3" json:"Dex,omitempty"`
	Market           *DexMarket             `protobuf:"bytes,3,opt,name=Market,proto3" json:"Market,omitempty"`
	BaseCurrency     *PoolSide              `protobuf:"bytes,4,opt,name=BaseCurrency,proto3" json:"BaseCurrency,omitempty"`
	QuoteCurrency    *PoolSide              `protobuf:"bytes,5,opt,name=QuoteCurrency,proto3" json:"QuoteCurrency,omitempty"`
	Instruction      *ParsedIdlInstruction  `protobuf:"bytes,6,opt,name=Instruction,proto3" json:"Instruction,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *PoolLiquidityChangeEvent) Reset() {
	*x = PoolLiquidityChangeEvent{}
	mi := &file_solana_dex_block_message_proto_msgTypes[4]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PoolLiquidityChangeEvent) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PoolLiquidityChangeEvent) ProtoMessage() {}

func (x *PoolLiquidityChangeEvent) ProtoReflect() protoreflect.Message {
	mi := &file_solana_dex_block_message_proto_msgTypes[4]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PoolLiquidityChangeEvent.ProtoReflect.Descriptor instead.
func (*PoolLiquidityChangeEvent) Descriptor() ([]byte, []int) {
	return file_solana_dex_block_message_proto_rawDescGZIP(), []int{4}
}

func (x *PoolLiquidityChangeEvent) GetInstructionIndex() uint32 {
	if x != nil {
		return x.InstructionIndex
	}
	return 0
}

func (x *PoolLiquidityChangeEvent) GetDex() *DexInfo {
	if x != nil {
		return x.Dex
	}
	return nil
}

func (x *PoolLiquidityChangeEvent) GetMarket() *DexMarket {
	if x != nil {
		return x.Market
	}
	return nil
}

func (x *PoolLiquidityChangeEvent) GetBaseCurrency() *PoolSide {
	if x != nil {
		return x.BaseCurrency
	}
	return nil
}

func (x *PoolLiquidityChangeEvent) GetQuoteCurrency() *PoolSide {
	if x != nil {
		return x.QuoteCurrency
	}
	return nil
}

func (x *PoolLiquidityChangeEvent) GetInstruction() *ParsedIdlInstruction {
	if x != nil {
		return x.Instruction
	}
	return nil
}

type PoolSide struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	ChangeAmount  int64                  `protobuf:"varint,2,opt,name=ChangeAmount,proto3" json:"ChangeAmount,omitempty"`
	PostAmount    uint64                 `protobuf:"varint,3,opt,name=PostAmount,proto3" json:"PostAmount,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *PoolSide) Reset() {
	*x = PoolSide{}
	mi := &file_solana_dex_block_message_proto_msgTypes[5]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *PoolSide) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*PoolSide) ProtoMessage() {}

func (x *PoolSide) ProtoReflect() protoreflect.Message {
	mi := &file_solana_dex_block_message_proto_msgTypes[5]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use PoolSide.ProtoReflect.Descriptor instead.
func (*PoolSide) Descriptor() ([]byte, []int) {
	return file_solana_dex_block_message_proto_rawDescGZIP(), []int{5}
}

func (x *PoolSide) GetChangeAmount() int64 {
	if x != nil {
		return x.ChangeAmount
	}
	return 0
}

func (x *PoolSide) GetPostAmount() uint64 {
	if x != nil {
		return x.PostAmount
	}
	return 0
}

type DexOrderEvent struct {
	state            protoimpl.MessageState `protogen:"open.v1"`
	InstructionIndex uint32                 `protobuf:"varint,1,opt,name=InstructionIndex,proto3" json:"InstructionIndex,omitempty"`
	Type             DexOrderEventType      `protobuf:"varint,2,opt,name=Type,proto3,enum=solana_messages.DexOrderEventType" json:"Type,omitempty"`
	Dex              *DexInfo               `protobuf:"bytes,3,opt,name=Dex,proto3" json:"Dex,omitempty"`
	Market           *DexMarket             `protobuf:"bytes,4,opt,name=Market,proto3" json:"Market,omitempty"`
	Order            *DexOrder              `protobuf:"bytes,5,opt,name=Order,proto3" json:"Order,omitempty"`
	Instruction      *ParsedIdlInstruction  `protobuf:"bytes,6,opt,name=Instruction,proto3" json:"Instruction,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *DexOrderEvent) Reset() {
	*x = DexOrderEvent{}
	mi := &file_solana_dex_block_message_proto_msgTypes[6]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DexOrderEvent) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DexOrderEvent) ProtoMessage() {}

func (x *DexOrderEvent) ProtoReflect() protoreflect.Message {
	mi := &file_solana_dex_block_message_proto_msgTypes[6]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DexOrderEvent.ProtoReflect.Descriptor instead.
func (*DexOrderEvent) Descriptor() ([]byte, []int) {
	return file_solana_dex_block_message_proto_rawDescGZIP(), []int{6}
}

func (x *DexOrderEvent) GetInstructionIndex() uint32 {
	if x != nil {
		return x.InstructionIndex
	}
	return 0
}

func (x *DexOrderEvent) GetType() DexOrderEventType {
	if x != nil {
		return x.Type
	}
	return DexOrderEventType_OPEN
}

func (x *DexOrderEvent) GetDex() *DexInfo {
	if x != nil {
		return x.Dex
	}
	return nil
}

func (x *DexOrderEvent) GetMarket() *DexMarket {
	if x != nil {
		return x.Market
	}
	return nil
}

func (x *DexOrderEvent) GetOrder() *DexOrder {
	if x != nil {
		return x.Order
	}
	return nil
}

func (x *DexOrderEvent) GetInstruction() *ParsedIdlInstruction {
	if x != nil {
		return x.Instruction
	}
	return nil
}

type DexTradeSide struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Amount        uint64                 `protobuf:"varint,1,opt,name=Amount,proto3" json:"Amount,omitempty"`
	Currency      *Currency              `protobuf:"bytes,2,opt,name=Currency,proto3" json:"Currency,omitempty"`
	Account       *Account               `protobuf:"bytes,3,opt,name=Account,proto3" json:"Account,omitempty"`
	Order         *DexOrder              `protobuf:"bytes,4,opt,name=Order,proto3" json:"Order,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DexTradeSide) Reset() {
	*x = DexTradeSide{}
	mi := &file_solana_dex_block_message_proto_msgTypes[7]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DexTradeSide) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DexTradeSide) ProtoMessage() {}

func (x *DexTradeSide) ProtoReflect() protoreflect.Message {
	mi := &file_solana_dex_block_message_proto_msgTypes[7]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DexTradeSide.ProtoReflect.Descriptor instead.
func (*DexTradeSide) Descriptor() ([]byte, []int) {
	return file_solana_dex_block_message_proto_rawDescGZIP(), []int{7}
}

func (x *DexTradeSide) GetAmount() uint64 {
	if x != nil {
		return x.Amount
	}
	return 0
}

func (x *DexTradeSide) GetCurrency() *Currency {
	if x != nil {
		return x.Currency
	}
	return nil
}

func (x *DexTradeSide) GetAccount() *Account {
	if x != nil {
		return x.Account
	}
	return nil
}

func (x *DexTradeSide) GetOrder() *DexOrder {
	if x != nil {
		return x.Order
	}
	return nil
}

type DexTradeEvent struct {
	state            protoimpl.MessageState `protogen:"open.v1"`
	InstructionIndex uint32                 `protobuf:"varint,1,opt,name=InstructionIndex,proto3" json:"InstructionIndex,omitempty"`
	Dex              *DexInfo               `protobuf:"bytes,2,opt,name=Dex,proto3" json:"Dex,omitempty"`
	Market           *DexMarket             `protobuf:"bytes,3,opt,name=Market,proto3" json:"Market,omitempty"`
	Buy              *DexTradeSide          `protobuf:"bytes,4,opt,name=Buy,proto3" json:"Buy,omitempty"`
	Sell             *DexTradeSide          `protobuf:"bytes,5,opt,name=Sell,proto3" json:"Sell,omitempty"`
	Royalty          uint64                 `protobuf:"varint,6,opt,name=Royalty,proto3" json:"Royalty,omitempty"`
	Fee              uint64                 `protobuf:"varint,7,opt,name=Fee,proto3" json:"Fee,omitempty"`
	Instruction      *ParsedIdlInstruction  `protobuf:"bytes,8,opt,name=Instruction,proto3" json:"Instruction,omitempty"`
	unknownFields    protoimpl.UnknownFields
	sizeCache        protoimpl.SizeCache
}

func (x *DexTradeEvent) Reset() {
	*x = DexTradeEvent{}
	mi := &file_solana_dex_block_message_proto_msgTypes[8]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DexTradeEvent) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DexTradeEvent) ProtoMessage() {}

func (x *DexTradeEvent) ProtoReflect() protoreflect.Message {
	mi := &file_solana_dex_block_message_proto_msgTypes[8]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DexTradeEvent.ProtoReflect.Descriptor instead.
func (*DexTradeEvent) Descriptor() ([]byte, []int) {
	return file_solana_dex_block_message_proto_rawDescGZIP(), []int{8}
}

func (x *DexTradeEvent) GetInstructionIndex() uint32 {
	if x != nil {
		return x.InstructionIndex
	}
	return 0
}

func (x *DexTradeEvent) GetDex() *DexInfo {
	if x != nil {
		return x.Dex
	}
	return nil
}

func (x *DexTradeEvent) GetMarket() *DexMarket {
	if x != nil {
		return x.Market
	}
	return nil
}

func (x *DexTradeEvent) GetBuy() *DexTradeSide {
	if x != nil {
		return x.Buy
	}
	return nil
}

func (x *DexTradeEvent) GetSell() *DexTradeSide {
	if x != nil {
		return x.Sell
	}
	return nil
}

func (x *DexTradeEvent) GetRoyalty() uint64 {
	if x != nil {
		return x.Royalty
	}
	return 0
}

func (x *DexTradeEvent) GetFee() uint64 {
	if x != nil {
		return x.Fee
	}
	return 0
}

func (x *DexTradeEvent) GetInstruction() *ParsedIdlInstruction {
	if x != nil {
		return x.Instruction
	}
	return nil
}

type ParsedDexTransaction struct {
	state         protoimpl.MessageState      `protogen:"open.v1"`
	Index         uint32                      `protobuf:"varint,1,opt,name=Index,proto3" json:"Index,omitempty"`
	Signature     []byte                      `protobuf:"bytes,2,opt,name=Signature,proto3" json:"Signature,omitempty"`
	Status        *TransactionStatus          `protobuf:"bytes,3,opt,name=Status,proto3" json:"Status,omitempty"`
	Header        *TransactionHeader          `protobuf:"bytes,4,opt,name=Header,proto3" json:"Header,omitempty"`
	Trades        []*DexTradeEvent            `protobuf:"bytes,5,rep,name=Trades,proto3" json:"Trades,omitempty"`
	OrderEvents   []*DexOrderEvent            `protobuf:"bytes,6,rep,name=OrderEvents,proto3" json:"OrderEvents,omitempty"`
	PoolEvents    []*PoolLiquidityChangeEvent `protobuf:"bytes,7,rep,name=PoolEvents,proto3" json:"PoolEvents,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ParsedDexTransaction) Reset() {
	*x = ParsedDexTransaction{}
	mi := &file_solana_dex_block_message_proto_msgTypes[9]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *ParsedDexTransaction) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*ParsedDexTransaction) ProtoMessage() {}

func (x *ParsedDexTransaction) ProtoReflect() protoreflect.Message {
	mi := &file_solana_dex_block_message_proto_msgTypes[9]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use ParsedDexTransaction.ProtoReflect.Descriptor instead.
func (*ParsedDexTransaction) Descriptor() ([]byte, []int) {
	return file_solana_dex_block_message_proto_rawDescGZIP(), []int{9}
}

func (x *ParsedDexTransaction) GetIndex() uint32 {
	if x != nil {
		return x.Index
	}
	return 0
}

func (x *ParsedDexTransaction) GetSignature() []byte {
	if x != nil {
		return x.Signature
	}
	return nil
}

func (x *ParsedDexTransaction) GetStatus() *TransactionStatus {
	if x != nil {
		return x.Status
	}
	return nil
}

func (x *ParsedDexTransaction) GetHeader() *TransactionHeader {
	if x != nil {
		return x.Header
	}
	return nil
}

func (x *ParsedDexTransaction) GetTrades() []*DexTradeEvent {
	if x != nil {
		return x.Trades
	}
	return nil
}

func (x *ParsedDexTransaction) GetOrderEvents() []*DexOrderEvent {
	if x != nil {
		return x.OrderEvents
	}
	return nil
}

func (x *ParsedDexTransaction) GetPoolEvents() []*PoolLiquidityChangeEvent {
	if x != nil {
		return x.PoolEvents
	}
	return nil
}

type DexParsedBlockMessage struct {
	state         protoimpl.MessageState  `protogen:"open.v1"`
	Header        *BlockHeader            `protobuf:"bytes,1,opt,name=Header,proto3" json:"Header,omitempty"`
	Transactions  []*ParsedDexTransaction `protobuf:"bytes,2,rep,name=Transactions,proto3" json:"Transactions,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *DexParsedBlockMessage) Reset() {
	*x = DexParsedBlockMessage{}
	mi := &file_solana_dex_block_message_proto_msgTypes[10]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *DexParsedBlockMessage) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*DexParsedBlockMessage) ProtoMessage() {}

func (x *DexParsedBlockMessage) ProtoReflect() protoreflect.Message {
	mi := &file_solana_dex_block_message_proto_msgTypes[10]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use DexParsedBlockMessage.ProtoReflect.Descriptor instead.
func (*DexParsedBlockMessage) Descriptor() ([]byte, []int) {
	return file_solana_dex_block_message_proto_rawDescGZIP(), []int{10}
}

func (x *DexParsedBlockMessage) GetHeader() *BlockHeader {
	if x != nil {
		return x.Header
	}
	return nil
}

func (x *DexParsedBlockMessage) GetTransactions() []*ParsedDexTransaction {
	if x != nil {
		return x.Transactions
	}
	return nil
}

var File_solana_dex_block_message_proto protoreflect.FileDescriptor

const file_solana_dex_block_message_proto_rawDesc = "" +
	"\n" +
	"\x1esolana/dex_block_message.proto\x12\x0fsolana_messages\x1a\x1asolana/block_message.proto\x1a solana/token_block_message.proto\x1a%solana/parsed_idl_block_message.proto\"}\n" +
	"\aDexInfo\x12&\n" +
	"\x0eProgramAddress\x18\x01 \x01(\fR\x0eProgramAddress\x12\"\n" +
	"\fProtocolName\x18\x02 \x01(\tR\fProtocolName\x12&\n" +
	"\x0eProtocolFamily\x18\x03 \x01(\tR\x0eProtocolFamily\"\xb1\x01\n" +
	"\tDexMarket\x12$\n" +
	"\rMarketAddress\x18\x01 \x01(\fR\rMarketAddress\x12=\n" +
	"\fBaseCurrency\x18\x02 \x01(\v2\x19.solana_messages.CurrencyR\fBaseCurrency\x12?\n" +
	"\rQuoteCurrency\x18\x03 \x01(\v2\x19.solana_messages.CurrencyR\rQuoteCurrency\"\xda\x01\n" +
	"\bDexOrder\x12\x18\n" +
	"\aOrderId\x18\x01 \x01(\fR\aOrderId\x12\x18\n" +
	"\aBuySide\x18\x02 \x01(\bR\aBuySide\x12\x1e\n" +
	"\n" +
	"LimitPrice\x18\x03 \x01(\x04R\n" +
	"LimitPrice\x12 \n" +
	"\vLimitAmount\x18\x04 \x01(\x04R\vLimitAmount\x12\x18\n" +
	"\aAccount\x18\x05 \x01(\fR\aAccount\x12\x14\n" +
	"\x05Owner\x18\x06 \x01(\fR\x05Owner\x12\x14\n" +
	"\x05Payer\x18\a \x01(\fR\x05Payer\x12\x12\n" +
	"\x04Mint\x18\b \x01(\fR\x04Mint\"\x8c\x02\n" +
	"\x19ParsedPoolLiquidityChange\x12\x14\n" +
	"\x05Index\x18\x01 \x01(\rR\x05Index\x12\x1c\n" +
	"\tSignature\x18\x02 \x01(\fR\tSignature\x12:\n" +
	"\x06Status\x18\x03 \x01(\v2\".solana_messages.TransactionStatusR\x06Status\x12:\n" +
	"\x06Header\x18\x04 \x01(\v2\".solana_messages.TransactionHeaderR\x06Header\x12C\n" +
	"\aChanges\x18\x05 \x03(\v2).solana_messages.PoolLiquidityChangeEventR\aChanges\"\xef\x02\n" +
	"\x18PoolLiquidityChangeEvent\x12*\n" +
	"\x10InstructionIndex\x18\x01 \x01(\rR\x10InstructionIndex\x12*\n" +
	"\x03Dex\x18\x02 \x01(\v2\x18.solana_messages.DexInfoR\x03Dex\x122\n" +
	"\x06Market\x18\x03 \x01(\v2\x1a.solana_messages.DexMarketR\x06Market\x12=\n" +
	"\fBaseCurrency\x18\x04 \x01(\v2\x19.solana_messages.PoolSideR\fBaseCurrency\x12?\n" +
	"\rQuoteCurrency\x18\x05 \x01(\v2\x19.solana_messages.PoolSideR\rQuoteCurrency\x12G\n" +
	"\vInstruction\x18\x06 \x01(\v2%.solana_messages.ParsedIdlInstructionR\vInstruction\"N\n" +
	"\bPoolSide\x12\"\n" +
	"\fChangeAmount\x18\x02 \x01(\x03R\fChangeAmount\x12\x1e\n" +
	"\n" +
	"PostAmount\x18\x03 \x01(\x04R\n" +
	"PostAmount\"\xcd\x02\n" +
	"\rDexOrderEvent\x12*\n" +
	"\x10InstructionIndex\x18\x01 \x01(\rR\x10InstructionIndex\x126\n" +
	"\x04Type\x18\x02 \x01(\x0e2\".solana_messages.DexOrderEventTypeR\x04Type\x12*\n" +
	"\x03Dex\x18\x03 \x01(\v2\x18.solana_messages.DexInfoR\x03Dex\x122\n" +
	"\x06Market\x18\x04 \x01(\v2\x1a.solana_messages.DexMarketR\x06Market\x12/\n" +
	"\x05Order\x18\x05 \x01(\v2\x19.solana_messages.DexOrderR\x05Order\x12G\n" +
	"\vInstruction\x18\x06 \x01(\v2%.solana_messages.ParsedIdlInstructionR\vInstruction\"\xc2\x01\n" +
	"\fDexTradeSide\x12\x16\n" +
	"\x06Amount\x18\x01 \x01(\x04R\x06Amount\x125\n" +
	"\bCurrency\x18\x02 \x01(\v2\x19.solana_messages.CurrencyR\bCurrency\x122\n" +
	"\aAccount\x18\x03 \x01(\v2\x18.solana_messages.AccountR\aAccount\x12/\n" +
	"\x05Order\x18\x04 \x01(\v2\x19.solana_messages.DexOrderR\x05Order\"\xf4\x02\n" +
	"\rDexTradeEvent\x12*\n" +
	"\x10InstructionIndex\x18\x01 \x01(\rR\x10InstructionIndex\x12*\n" +
	"\x03Dex\x18\x02 \x01(\v2\x18.solana_messages.DexInfoR\x03Dex\x122\n" +
	"\x06Market\x18\x03 \x01(\v2\x1a.solana_messages.DexMarketR\x06Market\x12/\n" +
	"\x03Buy\x18\x04 \x01(\v2\x1d.solana_messages.DexTradeSideR\x03Buy\x121\n" +
	"\x04Sell\x18\x05 \x01(\v2\x1d.solana_messages.DexTradeSideR\x04Sell\x12\x18\n" +
	"\aRoyalty\x18\x06 \x01(\x04R\aRoyalty\x12\x10\n" +
	"\x03Fee\x18\a \x01(\x04R\x03Fee\x12G\n" +
	"\vInstruction\x18\b \x01(\v2%.solana_messages.ParsedIdlInstructionR\vInstruction\"\x87\x03\n" +
	"\x14ParsedDexTransaction\x12\x14\n" +
	"\x05Index\x18\x01 \x01(\rR\x05Index\x12\x1c\n" +
	"\tSignature\x18\x02 \x01(\fR\tSignature\x12:\n" +
	"\x06Status\x18\x03 \x01(\v2\".solana_messages.TransactionStatusR\x06Status\x12:\n" +
	"\x06Header\x18\x04 \x01(\v2\".solana_messages.TransactionHeaderR\x06Header\x126\n" +
	"\x06Trades\x18\x05 \x03(\v2\x1e.solana_messages.DexTradeEventR\x06Trades\x12@\n" +
	"\vOrderEvents\x18\x06 \x03(\v2\x1e.solana_messages.DexOrderEventR\vOrderEvents\x12I\n" +
	"\n" +
	"PoolEvents\x18\a \x03(\v2).solana_messages.PoolLiquidityChangeEventR\n" +
	"PoolEvents\"\x98\x01\n" +
	"\x15DexParsedBlockMessage\x124\n" +
	"\x06Header\x18\x01 \x01(\v2\x1c.solana_messages.BlockHeaderR\x06Header\x12I\n" +
	"\fTransactions\x18\x02 \x03(\v2%.solana_messages.ParsedDexTransactionR\fTransactions*5\n" +
	"\x11DexOrderEventType\x12\b\n" +
	"\x04OPEN\x10\x00\x12\n" +
	"\n" +
	"\x06UPDATE\x10\x01\x12\n" +
	"\n" +
	"\x06CANCEL\x10\x02b\x06proto3"

var (
	file_solana_dex_block_message_proto_rawDescOnce sync.Once
	file_solana_dex_block_message_proto_rawDescData []byte
)

func file_solana_dex_block_message_proto_rawDescGZIP() []byte {
	file_solana_dex_block_message_proto_rawDescOnce.Do(func() {
		file_solana_dex_block_message_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_solana_dex_block_message_proto_rawDesc), len(file_solana_dex_block_message_proto_rawDesc)))
	})
	return file_solana_dex_block_message_proto_rawDescData
}

var file_solana_dex_block_message_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_solana_dex_block_message_proto_msgTypes = make([]protoimpl.MessageInfo, 11)
var file_solana_dex_block_message_proto_goTypes = []any{
	(DexOrderEventType)(0),            // 0: solana_messages.DexOrderEventType
	(*DexInfo)(nil),                   // 1: solana_messages.DexInfo
	(*DexMarket)(nil),                 // 2: solana_messages.DexMarket
	(*DexOrder)(nil),                  // 3: solana_messages.DexOrder
	(*ParsedPoolLiquidityChange)(nil), // 4: solana_messages.ParsedPoolLiquidityChange
	(*PoolLiquidityChangeEvent)(nil),  // 5: solana_messages.PoolLiquidityChangeEvent
	(*PoolSide)(nil),                  // 6: solana_messages.PoolSide
	(*DexOrderEvent)(nil),             // 7: solana_messages.DexOrderEvent
	(*DexTradeSide)(nil),              // 8: solana_messages.DexTradeSide
	(*DexTradeEvent)(nil),             // 9: solana_messages.DexTradeEvent
	(*ParsedDexTransaction)(nil),      // 10: solana_messages.ParsedDexTransaction
	(*DexParsedBlockMessage)(nil),     // 11: solana_messages.DexParsedBlockMessage
	(*Currency)(nil),                  // 12: solana_messages.Currency
	(*TransactionStatus)(nil),         // 13: solana_messages.TransactionStatus
	(*TransactionHeader)(nil),         // 14: solana_messages.TransactionHeader
	(*ParsedIdlInstruction)(nil),      // 15: solana_messages.ParsedIdlInstruction
	(*Account)(nil),                   // 16: solana_messages.Account
	(*BlockHeader)(nil),               // 17: solana_messages.BlockHeader
}
var file_solana_dex_block_message_proto_depIdxs = []int32{
	12, // 0: solana_messages.DexMarket.BaseCurrency:type_name -> solana_messages.Currency
	12, // 1: solana_messages.DexMarket.QuoteCurrency:type_name -> solana_messages.Currency
	13, // 2: solana_messages.ParsedPoolLiquidityChange.Status:type_name -> solana_messages.TransactionStatus
	14, // 3: solana_messages.ParsedPoolLiquidityChange.Header:type_name -> solana_messages.TransactionHeader
	5,  // 4: solana_messages.ParsedPoolLiquidityChange.Changes:type_name -> solana_messages.PoolLiquidityChangeEvent
	1,  // 5: solana_messages.PoolLiquidityChangeEvent.Dex:type_name -> solana_messages.DexInfo
	2,  // 6: solana_messages.PoolLiquidityChangeEvent.Market:type_name -> solana_messages.DexMarket
	6,  // 7: solana_messages.PoolLiquidityChangeEvent.BaseCurrency:type_name -> solana_messages.PoolSide
	6,  // 8: solana_messages.PoolLiquidityChangeEvent.QuoteCurrency:type_name -> solana_messages.PoolSide
	15, // 9: solana_messages.PoolLiquidityChangeEvent.Instruction:type_name -> solana_messages.ParsedIdlInstruction
	0,  // 10: solana_messages.DexOrderEvent.Type:type_name -> solana_messages.DexOrderEventType
	1,  // 11: solana_messages.DexOrderEvent.Dex:type_name -> solana_messages.DexInfo
	2,  // 12: solana_messages.DexOrderEvent.Market:type_name -> solana_messages.DexMarket
	3,  // 13: solana_messages.DexOrderEvent.Order:type_name -> solana_messages.DexOrder
	15, // 14: solana_messages.DexOrderEvent.Instruction:type_name -> solana_messages.ParsedIdlInstruction
	12, // 15: solana_messages.DexTradeSide.Currency:type_name -> solana_messages.Currency
	16, // 16: solana_messages.DexTradeSide.Account:type_name -> solana_messages.Account
	3,  // 17: solana_messages.DexTradeSide.Order:type_name -> solana_messages.DexOrder
	1,  // 18: solana_messages.DexTradeEvent.Dex:type_name -> solana_messages.DexInfo
	2,  // 19: solana_messages.DexTradeEvent.Market:type_name -> solana_messages.DexMarket
	8,  // 20: solana_messages.DexTradeEvent.Buy:type_name -> solana_messages.DexTradeSide
	8,  // 21: solana_messages.DexTradeEvent.Sell:type_name -> solana_messages.DexTradeSide
	15, // 22: solana_messages.DexTradeEvent.Instruction:type_name -> solana_messages.ParsedIdlInstruction
	13, // 23: solana_messages.ParsedDexTransaction.Status:type_name -> solana_messages.TransactionStatus
	14, // 24: solana_messages.ParsedDexTransaction.Header:type_name -> solana_messages.TransactionHeader
	9,  // 25: solana_messages.ParsedDexTransaction.Trades:type_name -> solana_messages.DexTradeEvent
	7,  // 26: solana_messages.ParsedDexTransaction.OrderEvents:type_name -> solana_messages.DexOrderEvent
	5,  // 27: solana_messages.ParsedDexTransaction.PoolEvents:type_name -> solana_messages.PoolLiquidityChangeEvent
	17, // 28: solana_messages.DexParsedBlockMessage.Header:type_name -> solana_messages.BlockHeader
	10, // 29: solana_messages.DexParsedBlockMessage.Transactions:type_name -> solana_messages.ParsedDexTransaction
	30, // [30:30] is the sub-list for method output_type
	30, // [30:30] is the sub-list for method input_type
	30, // [30:30] is the sub-list for extension type_name
	30, // [30:30] is the sub-list for extension extendee
	0,  // [0:30] is the sub-list for field type_name
}

func init() { file_solana_dex_block_message_proto_init() }
func file_solana_dex_block_message_proto_init() {
	if File_solana_dex_block_message_proto != nil {
		return
	}
	file_solana_block_message_proto_init()
	file_solana_token_block_message_proto_init()
	file_solana_parsed_idl_block_message_proto_init()
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_solana_dex_block_message_proto_rawDesc), len(file_solana_dex_block_message_proto_rawDesc)),
			NumEnums:      1,
			NumMessages:   11,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_solana_dex_block_message_proto_goTypes,
		DependencyIndexes: file_solana_dex_block_message_proto_depIdxs,
		EnumInfos:         file_solana_dex_block_message_proto_enumTypes,
		MessageInfos:      file_solana_dex_block_message_proto_msgTypes,
	}.Build()
	File_solana_dex_block_message_proto = out.File
	file_solana_dex_block_message_proto_goTypes = nil
	file_solana_dex_block_message_proto_depIdxs = nil
}
