package domain

import "github.com/shopspring/decimal"

// TradeCaptureReport represents data extracted from a TradeCaptureReport (35=AE).
type TradeCaptureReport struct {
	TradeReportID    string          // 571
	TradeID          string          // 1003
	ExecID           string          // 17
	OrigTradeID      string          // 1903
	OrigSecondaryID  string          // 1906
	LastQty          decimal.Decimal // 32
	LastPx           decimal.Decimal // 31
	Spread           decimal.Decimal // 218 (236 = benchmark curve name)
	Side             string          // 54
	AccruedInterest  decimal.Decimal // 159
	NetMoney         decimal.Decimal // 118
	GrossTradeAmt    decimal.Decimal // 381
	SettlDate        string          // 64
	TradeDate        string          // 75
	ListID           string          // 66
	TradeReportType  string          // 856
	TradeHandlInst   string          // 487
	TradeReportRefID string          // 572
	ClearingFirm     string          // Party role=4
	TradewebTraderID string          // Party role=1007 (custom)
	TestMessage      bool            // 23029 (custom)
	TWTradeID        string          // 23068 (custom)
	TWOrigTradeID    string          // 23096 (custom)
}

// Allocation represents data extracted from an AllocationReport (35=AS).
type Allocation struct {
	AllocReportID  string       // 755
	AllocTransType string       // 71
	TradeID        string       // 1003
	TestMessage    bool         // 23029 (custom)
	Entries        []AllocEntry // NoAllocs group (78)
}

// AllocEntry represents a single entry in the NoAllocs repeating group.
type AllocEntry struct {
	AllocAccount      string          // 79
	AllocQty          decimal.Decimal // 80
	IndividualAllocID string          // 467
	AllocPrice        decimal.Decimal // 154 (via custom tag access if needed)
	CashSettlAmount   decimal.Decimal // 742 (via custom tag access if needed)
}

// ConfirmationMsg represents data extracted from a Confirmation (35=AK).
type ConfirmationMsg struct {
	ConfirmID         string // 664
	ConfirmStatus     string // 665
	ConfirmTransType  string // 666
	IndividualAllocID string // 467
	TWClrID           string // 23025 (custom)
	DlrClrID          string // 23027 (custom)
	ClearingStatus    string // 5440 (custom)
	TradeDate         string // 75
	TestMessage       bool   // 23029 (custom)
}
