ordermanager

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 15, 2026 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrOrderValidation = errors.New("order validation failed")
	ErrMarketClosed    = errors.New("market is closed")
	ErrInsufficientBal = errors.New("insufficient balance")
)

Functions

This section is empty.

Types

type Manager

type Manager interface {
	// CreateOrder validates, submits, and starts monitoring an order
	CreateOrder(ctx context.Context, req OrderRequest) (*OrderResult, error)

	// CancelOrder cancels an order and stops monitoring once confirmed
	CancelOrder(ctx context.Context, orderID string) error

	// CancelAllOrders cancels all open orders managed by this manager
	CancelAllOrders(ctx context.Context) error
}

OrderManager interface

type OrderHandle

type OrderHandle struct {
	OrderID string
	Request OrderRequest

	// Channels for lifecycle events
	// Users can select on these or use the helper methods
	Updates <-chan OrderUpdate
	// contains filtered or unexported fields
}

OrderHandle provides a way to track the lifecycle of an order It uses channels to communicate updates, offering a Go-idiomatic way to "await" states or react to events.

type OrderManagerImpl

type OrderManagerImpl struct {
	// contains filtered or unexported fields
}

OrderManagerImpl implements the OrderManager interface

func NewOrderManager

func NewOrderManager(
	trading *trading.TradingService,
	market *market.MarketService,
	realtime *realtime.RealtimeService,
	logger *zap.SugaredLogger,
) *OrderManagerImpl

NewOrderManager creates a new OrderManager instance

func (*OrderManagerImpl) CancelAllOrders

func (om *OrderManagerImpl) CancelAllOrders(ctx context.Context) error

CancelAllOrders cancels all tracked orders

func (*OrderManagerImpl) CancelOrder

func (om *OrderManagerImpl) CancelOrder(ctx context.Context, orderID string) error

CancelOrder cancels an order

func (*OrderManagerImpl) CreateOrder

func (om *OrderManagerImpl) CreateOrder(ctx context.Context, req OrderRequest) (*OrderResult, error)

CreateOrder validates and submits an order

type OrderRequest

type OrderRequest struct {
	TokenID   string
	Price     float64
	Size      float64
	Side      clob.Side
	OrderType string // "GTC", "FOK", "FAK", "GTD"
	NegRisk   bool   // Whether the market is Negative Risk

	// Optional metadata for tracking
	StrategyID string
	Notes      string
}

OrderRequest represents a request to place an order

type OrderResult

type OrderResult struct {
	OrderID string
	Status  OrderStatus
	Error   error
	Handle  *OrderHandle
}

OrderResult is the immediate result of placing an order (before monitoring)

type OrderStatus

type OrderStatus string

OrderStatus represents the lifecycle state of an order

const (
	StatusCreated         OrderStatus = "created"
	StatusPending         OrderStatus = "pending"
	StatusOpen            OrderStatus = "open"
	StatusPartiallyFilled OrderStatus = "partially_filled"
	StatusFilled          OrderStatus = "filled"
	StatusCancelled       OrderStatus = "cancelled"
	StatusRejected        OrderStatus = "rejected"
	StatusExpired         OrderStatus = "expired"
)

type OrderUpdate

type OrderUpdate struct {
	Status      OrderStatus
	FilledSize  float64 // Incremental fill size for this update
	TotalFilled float64
	AvgPrice    float64
	Timestamp   time.Time
	Reason      string
	TxHash      string // For on-chain settlement
}

OrderUpdate represents a change in order state

type UserEvent

type UserEvent struct {
	Type        string      `json:"type"` // "order" or "trade"?
	ID          string      `json:"id"`
	OrderID     string      `json:"order_id"`   // sometimes used in trades
	EventType   string      `json:"event_type"` // PLACEMENT, CANCELLATION, UPDATE
	Status      string      `json:"status"`     // sometimes present
	Price       interface{} `json:"price"`      // string or float
	Size        interface{} `json:"original_size"`
	SizeMatched interface{} `json:"size_matched"`
	Side        string      `json:"side"`
}

handleUserMessage parses raw WS messages and updates order handles UserEvent represents a raw event from the User WebSocket channel

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL