// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.11
// 	protoc        v5.29.3
// source: alt/v1/backtest.proto

package altv1

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 BacktestRunStatus int32

const (
	BacktestRunStatus_BACKTEST_RUN_STATUS_UNSPECIFIED BacktestRunStatus = 0
	BacktestRunStatus_BACKTEST_RUN_STATUS_PENDING     BacktestRunStatus = 1
	BacktestRunStatus_BACKTEST_RUN_STATUS_RUNNING     BacktestRunStatus = 2
	BacktestRunStatus_BACKTEST_RUN_STATUS_SUCCEEDED   BacktestRunStatus = 3
	BacktestRunStatus_BACKTEST_RUN_STATUS_FAILED      BacktestRunStatus = 4
	BacktestRunStatus_BACKTEST_RUN_STATUS_CANCELED    BacktestRunStatus = 5
)

// Enum value maps for BacktestRunStatus.
var (
	BacktestRunStatus_name = map[int32]string{
		0: "BACKTEST_RUN_STATUS_UNSPECIFIED",
		1: "BACKTEST_RUN_STATUS_PENDING",
		2: "BACKTEST_RUN_STATUS_RUNNING",
		3: "BACKTEST_RUN_STATUS_SUCCEEDED",
		4: "BACKTEST_RUN_STATUS_FAILED",
		5: "BACKTEST_RUN_STATUS_CANCELED",
	}
	BacktestRunStatus_value = map[string]int32{
		"BACKTEST_RUN_STATUS_UNSPECIFIED": 0,
		"BACKTEST_RUN_STATUS_PENDING":     1,
		"BACKTEST_RUN_STATUS_RUNNING":     2,
		"BACKTEST_RUN_STATUS_SUCCEEDED":   3,
		"BACKTEST_RUN_STATUS_FAILED":      4,
		"BACKTEST_RUN_STATUS_CANCELED":    5,
	}
)

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

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

func (BacktestRunStatus) Descriptor() protoreflect.EnumDescriptor {
	return file_alt_v1_backtest_proto_enumTypes[0].Descriptor()
}

func (BacktestRunStatus) Type() protoreflect.EnumType {
	return &file_alt_v1_backtest_proto_enumTypes[0]
}

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

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

type BacktestRunSpec struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	StrategyId    string                 `protobuf:"bytes,1,opt,name=strategy_id,json=strategyId,proto3" json:"strategy_id,omitempty"`
	Market        Market                 `protobuf:"varint,2,opt,name=market,proto3,enum=alt.v1.Market" json:"market,omitempty"`
	Timeframe     Timeframe              `protobuf:"varint,3,opt,name=timeframe,proto3,enum=alt.v1.Timeframe" json:"timeframe,omitempty"`
	FromUnixMs    int64                  `protobuf:"varint,4,opt,name=from_unix_ms,json=fromUnixMs,proto3" json:"from_unix_ms,omitempty"`
	ToUnixMs      int64                  `protobuf:"varint,5,opt,name=to_unix_ms,json=toUnixMs,proto3" json:"to_unix_ms,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*BacktestRunSpec) ProtoMessage() {}

func (x *BacktestRunSpec) ProtoReflect() protoreflect.Message {
	mi := &file_alt_v1_backtest_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 BacktestRunSpec.ProtoReflect.Descriptor instead.
func (*BacktestRunSpec) Descriptor() ([]byte, []int) {
	return file_alt_v1_backtest_proto_rawDescGZIP(), []int{0}
}

func (x *BacktestRunSpec) GetStrategyId() string {
	if x != nil {
		return x.StrategyId
	}
	return ""
}

func (x *BacktestRunSpec) GetMarket() Market {
	if x != nil {
		return x.Market
	}
	return Market_MARKET_UNSPECIFIED
}

func (x *BacktestRunSpec) GetTimeframe() Timeframe {
	if x != nil {
		return x.Timeframe
	}
	return Timeframe_TIMEFRAME_UNSPECIFIED
}

func (x *BacktestRunSpec) GetFromUnixMs() int64 {
	if x != nil {
		return x.FromUnixMs
	}
	return 0
}

func (x *BacktestRunSpec) GetToUnixMs() int64 {
	if x != nil {
		return x.ToUnixMs
	}
	return 0
}

type BacktestRun struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	Id              string                 `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Spec            *BacktestRunSpec       `protobuf:"bytes,2,opt,name=spec,proto3" json:"spec,omitempty"`
	Status          BacktestRunStatus      `protobuf:"varint,3,opt,name=status,proto3,enum=alt.v1.BacktestRunStatus" json:"status,omitempty"`
	CreatedAtUnixMs int64                  `protobuf:"varint,4,opt,name=created_at_unix_ms,json=createdAtUnixMs,proto3" json:"created_at_unix_ms,omitempty"`
	UpdatedAtUnixMs int64                  `protobuf:"varint,5,opt,name=updated_at_unix_ms,json=updatedAtUnixMs,proto3" json:"updated_at_unix_ms,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

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

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

func (*BacktestRun) ProtoMessage() {}

func (x *BacktestRun) ProtoReflect() protoreflect.Message {
	mi := &file_alt_v1_backtest_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 BacktestRun.ProtoReflect.Descriptor instead.
func (*BacktestRun) Descriptor() ([]byte, []int) {
	return file_alt_v1_backtest_proto_rawDescGZIP(), []int{1}
}

func (x *BacktestRun) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *BacktestRun) GetSpec() *BacktestRunSpec {
	if x != nil {
		return x.Spec
	}
	return nil
}

func (x *BacktestRun) GetStatus() BacktestRunStatus {
	if x != nil {
		return x.Status
	}
	return BacktestRunStatus_BACKTEST_RUN_STATUS_UNSPECIFIED
}

func (x *BacktestRun) GetCreatedAtUnixMs() int64 {
	if x != nil {
		return x.CreatedAtUnixMs
	}
	return 0
}

func (x *BacktestRun) GetUpdatedAtUnixMs() int64 {
	if x != nil {
		return x.UpdatedAtUnixMs
	}
	return 0
}

type StartBacktestRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Spec          *BacktestRunSpec       `protobuf:"bytes,1,opt,name=spec,proto3" json:"spec,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*StartBacktestRequest) ProtoMessage() {}

func (x *StartBacktestRequest) ProtoReflect() protoreflect.Message {
	mi := &file_alt_v1_backtest_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 StartBacktestRequest.ProtoReflect.Descriptor instead.
func (*StartBacktestRequest) Descriptor() ([]byte, []int) {
	return file_alt_v1_backtest_proto_rawDescGZIP(), []int{2}
}

func (x *StartBacktestRequest) GetSpec() *BacktestRunSpec {
	if x != nil {
		return x.Spec
	}
	return nil
}

type StartBacktestResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Run           *BacktestRun           `protobuf:"bytes,1,opt,name=run,proto3" json:"run,omitempty"`
	Error         *ErrorInfo             `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*StartBacktestResponse) ProtoMessage() {}

func (x *StartBacktestResponse) ProtoReflect() protoreflect.Message {
	mi := &file_alt_v1_backtest_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 StartBacktestResponse.ProtoReflect.Descriptor instead.
func (*StartBacktestResponse) Descriptor() ([]byte, []int) {
	return file_alt_v1_backtest_proto_rawDescGZIP(), []int{3}
}

func (x *StartBacktestResponse) GetRun() *BacktestRun {
	if x != nil {
		return x.Run
	}
	return nil
}

func (x *StartBacktestResponse) GetError() *ErrorInfo {
	if x != nil {
		return x.Error
	}
	return nil
}

type GetBacktestRunRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	RunId         string                 `protobuf:"bytes,1,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetBacktestRunRequest) ProtoMessage() {}

func (x *GetBacktestRunRequest) ProtoReflect() protoreflect.Message {
	mi := &file_alt_v1_backtest_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 GetBacktestRunRequest.ProtoReflect.Descriptor instead.
func (*GetBacktestRunRequest) Descriptor() ([]byte, []int) {
	return file_alt_v1_backtest_proto_rawDescGZIP(), []int{4}
}

func (x *GetBacktestRunRequest) GetRunId() string {
	if x != nil {
		return x.RunId
	}
	return ""
}

type GetBacktestRunResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Run           *BacktestRun           `protobuf:"bytes,1,opt,name=run,proto3" json:"run,omitempty"`
	Error         *ErrorInfo             `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*GetBacktestRunResponse) ProtoMessage() {}

func (x *GetBacktestRunResponse) ProtoReflect() protoreflect.Message {
	mi := &file_alt_v1_backtest_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 GetBacktestRunResponse.ProtoReflect.Descriptor instead.
func (*GetBacktestRunResponse) Descriptor() ([]byte, []int) {
	return file_alt_v1_backtest_proto_rawDescGZIP(), []int{5}
}

func (x *GetBacktestRunResponse) GetRun() *BacktestRun {
	if x != nil {
		return x.Run
	}
	return nil
}

func (x *GetBacktestRunResponse) GetError() *ErrorInfo {
	if x != nil {
		return x.Error
	}
	return nil
}

type BacktestTrade struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	InstrumentId    string                 `protobuf:"bytes,1,opt,name=instrument_id,json=instrumentId,proto3" json:"instrument_id,omitempty"`
	Side            string                 `protobuf:"bytes,2,opt,name=side,proto3" json:"side,omitempty"`
	Quantity        *Quantity              `protobuf:"bytes,3,opt,name=quantity,proto3" json:"quantity,omitempty"`
	Price           *Price                 `protobuf:"bytes,4,opt,name=price,proto3" json:"price,omitempty"`
	TimestampUnixMs int64                  `protobuf:"varint,5,opt,name=timestamp_unix_ms,json=timestampUnixMs,proto3" json:"timestamp_unix_ms,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

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

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

func (*BacktestTrade) ProtoMessage() {}

func (x *BacktestTrade) ProtoReflect() protoreflect.Message {
	mi := &file_alt_v1_backtest_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 BacktestTrade.ProtoReflect.Descriptor instead.
func (*BacktestTrade) Descriptor() ([]byte, []int) {
	return file_alt_v1_backtest_proto_rawDescGZIP(), []int{6}
}

func (x *BacktestTrade) GetInstrumentId() string {
	if x != nil {
		return x.InstrumentId
	}
	return ""
}

func (x *BacktestTrade) GetSide() string {
	if x != nil {
		return x.Side
	}
	return ""
}

func (x *BacktestTrade) GetQuantity() *Quantity {
	if x != nil {
		return x.Quantity
	}
	return nil
}

func (x *BacktestTrade) GetPrice() *Price {
	if x != nil {
		return x.Price
	}
	return nil
}

func (x *BacktestTrade) GetTimestampUnixMs() int64 {
	if x != nil {
		return x.TimestampUnixMs
	}
	return 0
}

type BacktestPosition struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	InstrumentId  string                 `protobuf:"bytes,1,opt,name=instrument_id,json=instrumentId,proto3" json:"instrument_id,omitempty"`
	Quantity      *Quantity              `protobuf:"bytes,2,opt,name=quantity,proto3" json:"quantity,omitempty"`
	LastPrice     *Price                 `protobuf:"bytes,3,opt,name=last_price,json=lastPrice,proto3" json:"last_price,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*BacktestPosition) ProtoMessage() {}

func (x *BacktestPosition) ProtoReflect() protoreflect.Message {
	mi := &file_alt_v1_backtest_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 BacktestPosition.ProtoReflect.Descriptor instead.
func (*BacktestPosition) Descriptor() ([]byte, []int) {
	return file_alt_v1_backtest_proto_rawDescGZIP(), []int{7}
}

func (x *BacktestPosition) GetInstrumentId() string {
	if x != nil {
		return x.InstrumentId
	}
	return ""
}

func (x *BacktestPosition) GetQuantity() *Quantity {
	if x != nil {
		return x.Quantity
	}
	return nil
}

func (x *BacktestPosition) GetLastPrice() *Price {
	if x != nil {
		return x.LastPrice
	}
	return nil
}

type BacktestSummaryMetrics struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	StartingCash  *Price                 `protobuf:"bytes,1,opt,name=starting_cash,json=startingCash,proto3" json:"starting_cash,omitempty"`
	EndingEquity  *Price                 `protobuf:"bytes,2,opt,name=ending_equity,json=endingEquity,proto3" json:"ending_equity,omitempty"`
	TotalReturn   *Decimal               `protobuf:"bytes,3,opt,name=total_return,json=totalReturn,proto3" json:"total_return,omitempty"`
	TradeCount    int32                  `protobuf:"varint,4,opt,name=trade_count,json=tradeCount,proto3" json:"trade_count,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*BacktestSummaryMetrics) ProtoMessage() {}

func (x *BacktestSummaryMetrics) ProtoReflect() protoreflect.Message {
	mi := &file_alt_v1_backtest_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 BacktestSummaryMetrics.ProtoReflect.Descriptor instead.
func (*BacktestSummaryMetrics) Descriptor() ([]byte, []int) {
	return file_alt_v1_backtest_proto_rawDescGZIP(), []int{8}
}

func (x *BacktestSummaryMetrics) GetStartingCash() *Price {
	if x != nil {
		return x.StartingCash
	}
	return nil
}

func (x *BacktestSummaryMetrics) GetEndingEquity() *Price {
	if x != nil {
		return x.EndingEquity
	}
	return nil
}

func (x *BacktestSummaryMetrics) GetTotalReturn() *Decimal {
	if x != nil {
		return x.TotalReturn
	}
	return nil
}

func (x *BacktestSummaryMetrics) GetTradeCount() int32 {
	if x != nil {
		return x.TradeCount
	}
	return 0
}

type BacktestEquityPoint struct {
	state           protoimpl.MessageState `protogen:"open.v1"`
	TimestampUnixMs int64                  `protobuf:"varint,1,opt,name=timestamp_unix_ms,json=timestampUnixMs,proto3" json:"timestamp_unix_ms,omitempty"`
	Equity          *Price                 `protobuf:"bytes,2,opt,name=equity,proto3" json:"equity,omitempty"`
	unknownFields   protoimpl.UnknownFields
	sizeCache       protoimpl.SizeCache
}

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

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

func (*BacktestEquityPoint) ProtoMessage() {}

func (x *BacktestEquityPoint) ProtoReflect() protoreflect.Message {
	mi := &file_alt_v1_backtest_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 BacktestEquityPoint.ProtoReflect.Descriptor instead.
func (*BacktestEquityPoint) Descriptor() ([]byte, []int) {
	return file_alt_v1_backtest_proto_rawDescGZIP(), []int{9}
}

func (x *BacktestEquityPoint) GetTimestampUnixMs() int64 {
	if x != nil {
		return x.TimestampUnixMs
	}
	return 0
}

func (x *BacktestEquityPoint) GetEquity() *Price {
	if x != nil {
		return x.Equity
	}
	return nil
}

type BacktestResult struct {
	state         protoimpl.MessageState  `protogen:"open.v1"`
	RunId         string                  `protobuf:"bytes,1,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"`
	StartingCash  *Price                  `protobuf:"bytes,2,opt,name=starting_cash,json=startingCash,proto3" json:"starting_cash,omitempty"`
	EndingEquity  *Price                  `protobuf:"bytes,3,opt,name=ending_equity,json=endingEquity,proto3" json:"ending_equity,omitempty"`
	Trades        []*BacktestTrade        `protobuf:"bytes,4,rep,name=trades,proto3" json:"trades,omitempty"`
	Positions     []*BacktestPosition     `protobuf:"bytes,5,rep,name=positions,proto3" json:"positions,omitempty"`
	Summary       *BacktestSummaryMetrics `protobuf:"bytes,6,opt,name=summary,proto3" json:"summary,omitempty"`
	EquityCurve   []*BacktestEquityPoint  `protobuf:"bytes,7,rep,name=equity_curve,json=equityCurve,proto3" json:"equity_curve,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

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

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

func (*BacktestResult) ProtoMessage() {}

func (x *BacktestResult) ProtoReflect() protoreflect.Message {
	mi := &file_alt_v1_backtest_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 BacktestResult.ProtoReflect.Descriptor instead.
func (*BacktestResult) Descriptor() ([]byte, []int) {
	return file_alt_v1_backtest_proto_rawDescGZIP(), []int{10}
}

func (x *BacktestResult) GetRunId() string {
	if x != nil {
		return x.RunId
	}
	return ""
}

func (x *BacktestResult) GetStartingCash() *Price {
	if x != nil {
		return x.StartingCash
	}
	return nil
}

func (x *BacktestResult) GetEndingEquity() *Price {
	if x != nil {
		return x.EndingEquity
	}
	return nil
}

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

func (x *BacktestResult) GetPositions() []*BacktestPosition {
	if x != nil {
		return x.Positions
	}
	return nil
}

func (x *BacktestResult) GetSummary() *BacktestSummaryMetrics {
	if x != nil {
		return x.Summary
	}
	return nil
}

func (x *BacktestResult) GetEquityCurve() []*BacktestEquityPoint {
	if x != nil {
		return x.EquityCurve
	}
	return nil
}

type GetBacktestResultRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	RunId         string                 `protobuf:"bytes,1,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetBacktestResultRequest) Reset() {
	*x = GetBacktestResultRequest{}
	mi := &file_alt_v1_backtest_proto_msgTypes[11]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GetBacktestResultRequest) ProtoMessage() {}

func (x *GetBacktestResultRequest) ProtoReflect() protoreflect.Message {
	mi := &file_alt_v1_backtest_proto_msgTypes[11]
	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 GetBacktestResultRequest.ProtoReflect.Descriptor instead.
func (*GetBacktestResultRequest) Descriptor() ([]byte, []int) {
	return file_alt_v1_backtest_proto_rawDescGZIP(), []int{11}
}

func (x *GetBacktestResultRequest) GetRunId() string {
	if x != nil {
		return x.RunId
	}
	return ""
}

type GetBacktestResultResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Result        *BacktestResult        `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"`
	Error         *ErrorInfo             `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetBacktestResultResponse) Reset() {
	*x = GetBacktestResultResponse{}
	mi := &file_alt_v1_backtest_proto_msgTypes[12]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GetBacktestResultResponse) ProtoMessage() {}

func (x *GetBacktestResultResponse) ProtoReflect() protoreflect.Message {
	mi := &file_alt_v1_backtest_proto_msgTypes[12]
	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 GetBacktestResultResponse.ProtoReflect.Descriptor instead.
func (*GetBacktestResultResponse) Descriptor() ([]byte, []int) {
	return file_alt_v1_backtest_proto_rawDescGZIP(), []int{12}
}

func (x *GetBacktestResultResponse) GetResult() *BacktestResult {
	if x != nil {
		return x.Result
	}
	return nil
}

func (x *GetBacktestResultResponse) GetError() *ErrorInfo {
	if x != nil {
		return x.Error
	}
	return nil
}

type ListBacktestRunsRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Status        BacktestRunStatus      `protobuf:"varint,1,opt,name=status,proto3,enum=alt.v1.BacktestRunStatus" json:"status,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListBacktestRunsRequest) Reset() {
	*x = ListBacktestRunsRequest{}
	mi := &file_alt_v1_backtest_proto_msgTypes[13]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ListBacktestRunsRequest) ProtoMessage() {}

func (x *ListBacktestRunsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_alt_v1_backtest_proto_msgTypes[13]
	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 ListBacktestRunsRequest.ProtoReflect.Descriptor instead.
func (*ListBacktestRunsRequest) Descriptor() ([]byte, []int) {
	return file_alt_v1_backtest_proto_rawDescGZIP(), []int{13}
}

func (x *ListBacktestRunsRequest) GetStatus() BacktestRunStatus {
	if x != nil {
		return x.Status
	}
	return BacktestRunStatus_BACKTEST_RUN_STATUS_UNSPECIFIED
}

type ListBacktestRunsResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Runs          []*BacktestRun         `protobuf:"bytes,1,rep,name=runs,proto3" json:"runs,omitempty"`
	Error         *ErrorInfo             `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *ListBacktestRunsResponse) Reset() {
	*x = ListBacktestRunsResponse{}
	mi := &file_alt_v1_backtest_proto_msgTypes[14]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*ListBacktestRunsResponse) ProtoMessage() {}

func (x *ListBacktestRunsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_alt_v1_backtest_proto_msgTypes[14]
	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 ListBacktestRunsResponse.ProtoReflect.Descriptor instead.
func (*ListBacktestRunsResponse) Descriptor() ([]byte, []int) {
	return file_alt_v1_backtest_proto_rawDescGZIP(), []int{14}
}

func (x *ListBacktestRunsResponse) GetRuns() []*BacktestRun {
	if x != nil {
		return x.Runs
	}
	return nil
}

func (x *ListBacktestRunsResponse) GetError() *ErrorInfo {
	if x != nil {
		return x.Error
	}
	return nil
}

type GetBacktestRunDetailRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	RunId         string                 `protobuf:"bytes,1,opt,name=run_id,json=runId,proto3" json:"run_id,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetBacktestRunDetailRequest) Reset() {
	*x = GetBacktestRunDetailRequest{}
	mi := &file_alt_v1_backtest_proto_msgTypes[15]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GetBacktestRunDetailRequest) ProtoMessage() {}

func (x *GetBacktestRunDetailRequest) ProtoReflect() protoreflect.Message {
	mi := &file_alt_v1_backtest_proto_msgTypes[15]
	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 GetBacktestRunDetailRequest.ProtoReflect.Descriptor instead.
func (*GetBacktestRunDetailRequest) Descriptor() ([]byte, []int) {
	return file_alt_v1_backtest_proto_rawDescGZIP(), []int{15}
}

func (x *GetBacktestRunDetailRequest) GetRunId() string {
	if x != nil {
		return x.RunId
	}
	return ""
}

type GetBacktestRunDetailResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Run           *BacktestRun           `protobuf:"bytes,1,opt,name=run,proto3" json:"run,omitempty"`
	Result        *BacktestResult        `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"`
	Error         *ErrorInfo             `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *GetBacktestRunDetailResponse) Reset() {
	*x = GetBacktestRunDetailResponse{}
	mi := &file_alt_v1_backtest_proto_msgTypes[16]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*GetBacktestRunDetailResponse) ProtoMessage() {}

func (x *GetBacktestRunDetailResponse) ProtoReflect() protoreflect.Message {
	mi := &file_alt_v1_backtest_proto_msgTypes[16]
	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 GetBacktestRunDetailResponse.ProtoReflect.Descriptor instead.
func (*GetBacktestRunDetailResponse) Descriptor() ([]byte, []int) {
	return file_alt_v1_backtest_proto_rawDescGZIP(), []int{16}
}

func (x *GetBacktestRunDetailResponse) GetRun() *BacktestRun {
	if x != nil {
		return x.Run
	}
	return nil
}

func (x *GetBacktestRunDetailResponse) GetResult() *BacktestResult {
	if x != nil {
		return x.Result
	}
	return nil
}

func (x *GetBacktestRunDetailResponse) GetError() *ErrorInfo {
	if x != nil {
		return x.Error
	}
	return nil
}

type CompareBacktestRunsRequest struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	RunIds        []string               `protobuf:"bytes,1,rep,name=run_ids,json=runIds,proto3" json:"run_ids,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CompareBacktestRunsRequest) Reset() {
	*x = CompareBacktestRunsRequest{}
	mi := &file_alt_v1_backtest_proto_msgTypes[17]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CompareBacktestRunsRequest) ProtoMessage() {}

func (x *CompareBacktestRunsRequest) ProtoReflect() protoreflect.Message {
	mi := &file_alt_v1_backtest_proto_msgTypes[17]
	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 CompareBacktestRunsRequest.ProtoReflect.Descriptor instead.
func (*CompareBacktestRunsRequest) Descriptor() ([]byte, []int) {
	return file_alt_v1_backtest_proto_rawDescGZIP(), []int{17}
}

func (x *CompareBacktestRunsRequest) GetRunIds() []string {
	if x != nil {
		return x.RunIds
	}
	return nil
}

type CompareBacktestRunsResponse struct {
	state         protoimpl.MessageState `protogen:"open.v1"`
	Results       []*BacktestResult      `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"`
	Error         *ErrorInfo             `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *CompareBacktestRunsResponse) Reset() {
	*x = CompareBacktestRunsResponse{}
	mi := &file_alt_v1_backtest_proto_msgTypes[18]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

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

func (*CompareBacktestRunsResponse) ProtoMessage() {}

func (x *CompareBacktestRunsResponse) ProtoReflect() protoreflect.Message {
	mi := &file_alt_v1_backtest_proto_msgTypes[18]
	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 CompareBacktestRunsResponse.ProtoReflect.Descriptor instead.
func (*CompareBacktestRunsResponse) Descriptor() ([]byte, []int) {
	return file_alt_v1_backtest_proto_rawDescGZIP(), []int{18}
}

func (x *CompareBacktestRunsResponse) GetResults() []*BacktestResult {
	if x != nil {
		return x.Results
	}
	return nil
}

func (x *CompareBacktestRunsResponse) GetError() *ErrorInfo {
	if x != nil {
		return x.Error
	}
	return nil
}

var File_alt_v1_backtest_proto protoreflect.FileDescriptor

const file_alt_v1_backtest_proto_rawDesc = "" +
	"\n" +
	"\x15alt/v1/backtest.proto\x12\x06alt.v1\x1a\x13alt/v1/common.proto\x1a\x13alt/v1/market.proto\"\xcb\x01\n" +
	"\x0fBacktestRunSpec\x12\x1f\n" +
	"\vstrategy_id\x18\x01 \x01(\tR\n" +
	"strategyId\x12&\n" +
	"\x06market\x18\x02 \x01(\x0e2\x0e.alt.v1.MarketR\x06market\x12/\n" +
	"\ttimeframe\x18\x03 \x01(\x0e2\x11.alt.v1.TimeframeR\ttimeframe\x12 \n" +
	"\ffrom_unix_ms\x18\x04 \x01(\x03R\n" +
	"fromUnixMs\x12\x1c\n" +
	"\n" +
	"to_unix_ms\x18\x05 \x01(\x03R\btoUnixMs\"\xd7\x01\n" +
	"\vBacktestRun\x12\x0e\n" +
	"\x02id\x18\x01 \x01(\tR\x02id\x12+\n" +
	"\x04spec\x18\x02 \x01(\v2\x17.alt.v1.BacktestRunSpecR\x04spec\x121\n" +
	"\x06status\x18\x03 \x01(\x0e2\x19.alt.v1.BacktestRunStatusR\x06status\x12+\n" +
	"\x12created_at_unix_ms\x18\x04 \x01(\x03R\x0fcreatedAtUnixMs\x12+\n" +
	"\x12updated_at_unix_ms\x18\x05 \x01(\x03R\x0fupdatedAtUnixMs\"C\n" +
	"\x14StartBacktestRequest\x12+\n" +
	"\x04spec\x18\x01 \x01(\v2\x17.alt.v1.BacktestRunSpecR\x04spec\"g\n" +
	"\x15StartBacktestResponse\x12%\n" +
	"\x03run\x18\x01 \x01(\v2\x13.alt.v1.BacktestRunR\x03run\x12'\n" +
	"\x05error\x18\x02 \x01(\v2\x11.alt.v1.ErrorInfoR\x05error\".\n" +
	"\x15GetBacktestRunRequest\x12\x15\n" +
	"\x06run_id\x18\x01 \x01(\tR\x05runId\"h\n" +
	"\x16GetBacktestRunResponse\x12%\n" +
	"\x03run\x18\x01 \x01(\v2\x13.alt.v1.BacktestRunR\x03run\x12'\n" +
	"\x05error\x18\x02 \x01(\v2\x11.alt.v1.ErrorInfoR\x05error\"\xc7\x01\n" +
	"\rBacktestTrade\x12#\n" +
	"\rinstrument_id\x18\x01 \x01(\tR\finstrumentId\x12\x12\n" +
	"\x04side\x18\x02 \x01(\tR\x04side\x12,\n" +
	"\bquantity\x18\x03 \x01(\v2\x10.alt.v1.QuantityR\bquantity\x12#\n" +
	"\x05price\x18\x04 \x01(\v2\r.alt.v1.PriceR\x05price\x12*\n" +
	"\x11timestamp_unix_ms\x18\x05 \x01(\x03R\x0ftimestampUnixMs\"\x93\x01\n" +
	"\x10BacktestPosition\x12#\n" +
	"\rinstrument_id\x18\x01 \x01(\tR\finstrumentId\x12,\n" +
	"\bquantity\x18\x02 \x01(\v2\x10.alt.v1.QuantityR\bquantity\x12,\n" +
	"\n" +
	"last_price\x18\x03 \x01(\v2\r.alt.v1.PriceR\tlastPrice\"\xd5\x01\n" +
	"\x16BacktestSummaryMetrics\x122\n" +
	"\rstarting_cash\x18\x01 \x01(\v2\r.alt.v1.PriceR\fstartingCash\x122\n" +
	"\rending_equity\x18\x02 \x01(\v2\r.alt.v1.PriceR\fendingEquity\x122\n" +
	"\ftotal_return\x18\x03 \x01(\v2\x0f.alt.v1.DecimalR\vtotalReturn\x12\x1f\n" +
	"\vtrade_count\x18\x04 \x01(\x05R\n" +
	"tradeCount\"h\n" +
	"\x13BacktestEquityPoint\x12*\n" +
	"\x11timestamp_unix_ms\x18\x01 \x01(\x03R\x0ftimestampUnixMs\x12%\n" +
	"\x06equity\x18\x02 \x01(\v2\r.alt.v1.PriceR\x06equity\"\xf0\x02\n" +
	"\x0eBacktestResult\x12\x15\n" +
	"\x06run_id\x18\x01 \x01(\tR\x05runId\x122\n" +
	"\rstarting_cash\x18\x02 \x01(\v2\r.alt.v1.PriceR\fstartingCash\x122\n" +
	"\rending_equity\x18\x03 \x01(\v2\r.alt.v1.PriceR\fendingEquity\x12-\n" +
	"\x06trades\x18\x04 \x03(\v2\x15.alt.v1.BacktestTradeR\x06trades\x126\n" +
	"\tpositions\x18\x05 \x03(\v2\x18.alt.v1.BacktestPositionR\tpositions\x128\n" +
	"\asummary\x18\x06 \x01(\v2\x1e.alt.v1.BacktestSummaryMetricsR\asummary\x12>\n" +
	"\fequity_curve\x18\a \x03(\v2\x1b.alt.v1.BacktestEquityPointR\vequityCurve\"1\n" +
	"\x18GetBacktestResultRequest\x12\x15\n" +
	"\x06run_id\x18\x01 \x01(\tR\x05runId\"t\n" +
	"\x19GetBacktestResultResponse\x12.\n" +
	"\x06result\x18\x01 \x01(\v2\x16.alt.v1.BacktestResultR\x06result\x12'\n" +
	"\x05error\x18\x02 \x01(\v2\x11.alt.v1.ErrorInfoR\x05error\"L\n" +
	"\x17ListBacktestRunsRequest\x121\n" +
	"\x06status\x18\x01 \x01(\x0e2\x19.alt.v1.BacktestRunStatusR\x06status\"l\n" +
	"\x18ListBacktestRunsResponse\x12'\n" +
	"\x04runs\x18\x01 \x03(\v2\x13.alt.v1.BacktestRunR\x04runs\x12'\n" +
	"\x05error\x18\x02 \x01(\v2\x11.alt.v1.ErrorInfoR\x05error\"4\n" +
	"\x1bGetBacktestRunDetailRequest\x12\x15\n" +
	"\x06run_id\x18\x01 \x01(\tR\x05runId\"\x9e\x01\n" +
	"\x1cGetBacktestRunDetailResponse\x12%\n" +
	"\x03run\x18\x01 \x01(\v2\x13.alt.v1.BacktestRunR\x03run\x12.\n" +
	"\x06result\x18\x02 \x01(\v2\x16.alt.v1.BacktestResultR\x06result\x12'\n" +
	"\x05error\x18\x03 \x01(\v2\x11.alt.v1.ErrorInfoR\x05error\"5\n" +
	"\x1aCompareBacktestRunsRequest\x12\x17\n" +
	"\arun_ids\x18\x01 \x03(\tR\x06runIds\"x\n" +
	"\x1bCompareBacktestRunsResponse\x120\n" +
	"\aresults\x18\x01 \x03(\v2\x16.alt.v1.BacktestResultR\aresults\x12'\n" +
	"\x05error\x18\x02 \x01(\v2\x11.alt.v1.ErrorInfoR\x05error*\xdf\x01\n" +
	"\x11BacktestRunStatus\x12#\n" +
	"\x1fBACKTEST_RUN_STATUS_UNSPECIFIED\x10\x00\x12\x1f\n" +
	"\x1bBACKTEST_RUN_STATUS_PENDING\x10\x01\x12\x1f\n" +
	"\x1bBACKTEST_RUN_STATUS_RUNNING\x10\x02\x12!\n" +
	"\x1dBACKTEST_RUN_STATUS_SUCCEEDED\x10\x03\x12\x1e\n" +
	"\x1aBACKTEST_RUN_STATUS_FAILED\x10\x04\x12 \n" +
	"\x1cBACKTEST_RUN_STATUS_CANCELED\x10\x05BCZAgit.toki-labs.com/toki/alt/packages/contracts/gen/go/alt/v1;altv1b\x06proto3"

var (
	file_alt_v1_backtest_proto_rawDescOnce sync.Once
	file_alt_v1_backtest_proto_rawDescData []byte
)

func file_alt_v1_backtest_proto_rawDescGZIP() []byte {
	file_alt_v1_backtest_proto_rawDescOnce.Do(func() {
		file_alt_v1_backtest_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_alt_v1_backtest_proto_rawDesc), len(file_alt_v1_backtest_proto_rawDesc)))
	})
	return file_alt_v1_backtest_proto_rawDescData
}

var file_alt_v1_backtest_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
var file_alt_v1_backtest_proto_msgTypes = make([]protoimpl.MessageInfo, 19)
var file_alt_v1_backtest_proto_goTypes = []any{
	(BacktestRunStatus)(0),               // 0: alt.v1.BacktestRunStatus
	(*BacktestRunSpec)(nil),              // 1: alt.v1.BacktestRunSpec
	(*BacktestRun)(nil),                  // 2: alt.v1.BacktestRun
	(*StartBacktestRequest)(nil),         // 3: alt.v1.StartBacktestRequest
	(*StartBacktestResponse)(nil),        // 4: alt.v1.StartBacktestResponse
	(*GetBacktestRunRequest)(nil),        // 5: alt.v1.GetBacktestRunRequest
	(*GetBacktestRunResponse)(nil),       // 6: alt.v1.GetBacktestRunResponse
	(*BacktestTrade)(nil),                // 7: alt.v1.BacktestTrade
	(*BacktestPosition)(nil),             // 8: alt.v1.BacktestPosition
	(*BacktestSummaryMetrics)(nil),       // 9: alt.v1.BacktestSummaryMetrics
	(*BacktestEquityPoint)(nil),          // 10: alt.v1.BacktestEquityPoint
	(*BacktestResult)(nil),               // 11: alt.v1.BacktestResult
	(*GetBacktestResultRequest)(nil),     // 12: alt.v1.GetBacktestResultRequest
	(*GetBacktestResultResponse)(nil),    // 13: alt.v1.GetBacktestResultResponse
	(*ListBacktestRunsRequest)(nil),      // 14: alt.v1.ListBacktestRunsRequest
	(*ListBacktestRunsResponse)(nil),     // 15: alt.v1.ListBacktestRunsResponse
	(*GetBacktestRunDetailRequest)(nil),  // 16: alt.v1.GetBacktestRunDetailRequest
	(*GetBacktestRunDetailResponse)(nil), // 17: alt.v1.GetBacktestRunDetailResponse
	(*CompareBacktestRunsRequest)(nil),   // 18: alt.v1.CompareBacktestRunsRequest
	(*CompareBacktestRunsResponse)(nil),  // 19: alt.v1.CompareBacktestRunsResponse
	(Market)(0),                          // 20: alt.v1.Market
	(Timeframe)(0),                       // 21: alt.v1.Timeframe
	(*ErrorInfo)(nil),                    // 22: alt.v1.ErrorInfo
	(*Quantity)(nil),                     // 23: alt.v1.Quantity
	(*Price)(nil),                        // 24: alt.v1.Price
	(*Decimal)(nil),                      // 25: alt.v1.Decimal
}
var file_alt_v1_backtest_proto_depIdxs = []int32{
	20, // 0: alt.v1.BacktestRunSpec.market:type_name -> alt.v1.Market
	21, // 1: alt.v1.BacktestRunSpec.timeframe:type_name -> alt.v1.Timeframe
	1,  // 2: alt.v1.BacktestRun.spec:type_name -> alt.v1.BacktestRunSpec
	0,  // 3: alt.v1.BacktestRun.status:type_name -> alt.v1.BacktestRunStatus
	1,  // 4: alt.v1.StartBacktestRequest.spec:type_name -> alt.v1.BacktestRunSpec
	2,  // 5: alt.v1.StartBacktestResponse.run:type_name -> alt.v1.BacktestRun
	22, // 6: alt.v1.StartBacktestResponse.error:type_name -> alt.v1.ErrorInfo
	2,  // 7: alt.v1.GetBacktestRunResponse.run:type_name -> alt.v1.BacktestRun
	22, // 8: alt.v1.GetBacktestRunResponse.error:type_name -> alt.v1.ErrorInfo
	23, // 9: alt.v1.BacktestTrade.quantity:type_name -> alt.v1.Quantity
	24, // 10: alt.v1.BacktestTrade.price:type_name -> alt.v1.Price
	23, // 11: alt.v1.BacktestPosition.quantity:type_name -> alt.v1.Quantity
	24, // 12: alt.v1.BacktestPosition.last_price:type_name -> alt.v1.Price
	24, // 13: alt.v1.BacktestSummaryMetrics.starting_cash:type_name -> alt.v1.Price
	24, // 14: alt.v1.BacktestSummaryMetrics.ending_equity:type_name -> alt.v1.Price
	25, // 15: alt.v1.BacktestSummaryMetrics.total_return:type_name -> alt.v1.Decimal
	24, // 16: alt.v1.BacktestEquityPoint.equity:type_name -> alt.v1.Price
	24, // 17: alt.v1.BacktestResult.starting_cash:type_name -> alt.v1.Price
	24, // 18: alt.v1.BacktestResult.ending_equity:type_name -> alt.v1.Price
	7,  // 19: alt.v1.BacktestResult.trades:type_name -> alt.v1.BacktestTrade
	8,  // 20: alt.v1.BacktestResult.positions:type_name -> alt.v1.BacktestPosition
	9,  // 21: alt.v1.BacktestResult.summary:type_name -> alt.v1.BacktestSummaryMetrics
	10, // 22: alt.v1.BacktestResult.equity_curve:type_name -> alt.v1.BacktestEquityPoint
	11, // 23: alt.v1.GetBacktestResultResponse.result:type_name -> alt.v1.BacktestResult
	22, // 24: alt.v1.GetBacktestResultResponse.error:type_name -> alt.v1.ErrorInfo
	0,  // 25: alt.v1.ListBacktestRunsRequest.status:type_name -> alt.v1.BacktestRunStatus
	2,  // 26: alt.v1.ListBacktestRunsResponse.runs:type_name -> alt.v1.BacktestRun
	22, // 27: alt.v1.ListBacktestRunsResponse.error:type_name -> alt.v1.ErrorInfo
	2,  // 28: alt.v1.GetBacktestRunDetailResponse.run:type_name -> alt.v1.BacktestRun
	11, // 29: alt.v1.GetBacktestRunDetailResponse.result:type_name -> alt.v1.BacktestResult
	22, // 30: alt.v1.GetBacktestRunDetailResponse.error:type_name -> alt.v1.ErrorInfo
	11, // 31: alt.v1.CompareBacktestRunsResponse.results:type_name -> alt.v1.BacktestResult
	22, // 32: alt.v1.CompareBacktestRunsResponse.error:type_name -> alt.v1.ErrorInfo
	33, // [33:33] is the sub-list for method output_type
	33, // [33:33] is the sub-list for method input_type
	33, // [33:33] is the sub-list for extension type_name
	33, // [33:33] is the sub-list for extension extendee
	0,  // [0:33] is the sub-list for field type_name
}

func init() { file_alt_v1_backtest_proto_init() }
func file_alt_v1_backtest_proto_init() {
	if File_alt_v1_backtest_proto != nil {
		return
	}
	file_alt_v1_common_proto_init()
	file_alt_v1_market_proto_init()
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_alt_v1_backtest_proto_rawDesc), len(file_alt_v1_backtest_proto_rawDesc)),
			NumEnums:      1,
			NumMessages:   19,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_alt_v1_backtest_proto_goTypes,
		DependencyIndexes: file_alt_v1_backtest_proto_depIdxs,
		EnumInfos:         file_alt_v1_backtest_proto_enumTypes,
		MessageInfos:      file_alt_v1_backtest_proto_msgTypes,
	}.Build()
	File_alt_v1_backtest_proto = out.File
	file_alt_v1_backtest_proto_goTypes = nil
	file_alt_v1_backtest_proto_depIdxs = nil
}
