package model // QuoteRequestShape identifies the API surface that created the quote record. type QuoteRequestShape string const ( QuoteRequestShapeUnspecified QuoteRequestShape = "unspecified" QuoteRequestShapeSingle QuoteRequestShape = "single" QuoteRequestShapeBatch QuoteRequestShape = "batch" ) // QuoteState captures v2 quote state metadata for persistence. type QuoteState string const ( QuoteStateUnspecified QuoteState = "unspecified" QuoteStateIndicative QuoteState = "indicative" QuoteStateExecutable QuoteState = "executable" QuoteStateBlocked QuoteState = "blocked" QuoteStateExpired QuoteState = "expired" ) // QuoteBlockReason captures v2 non-executability reason for persistence. type QuoteBlockReason string const ( QuoteBlockReasonUnspecified QuoteBlockReason = "unspecified" QuoteBlockReasonRouteUnavailable QuoteBlockReason = "route_unavailable" QuoteBlockReasonLimitBlocked QuoteBlockReason = "limit_blocked" QuoteBlockReasonRiskBlocked QuoteBlockReason = "risk_blocked" QuoteBlockReasonInsufficientLiquidity QuoteBlockReason = "insufficient_liquidity" QuoteBlockReasonPriceStale QuoteBlockReason = "price_stale" QuoteBlockReasonAmountTooSmall QuoteBlockReason = "amount_too_small" QuoteBlockReasonAmountTooLarge QuoteBlockReason = "amount_too_large" ) // QuoteStatusV2 stores execution status metadata from quotation v2. type QuoteStatusV2 struct { State QuoteState `bson:"state,omitempty" json:"state,omitempty"` BlockReason QuoteBlockReason `bson:"blockReason,omitempty" json:"blockReason,omitempty"` } // PaymentQuoteItemV2 keeps one intent/quote/status tuple in a stable shape. type PaymentQuoteItemV2 struct { Intent *PaymentIntent `bson:"intent,omitempty" json:"intent,omitempty"` Quote *PaymentQuoteSnapshot `bson:"quote,omitempty" json:"quote,omitempty"` Status *QuoteStatusV2 `bson:"status,omitempty" json:"status,omitempty"` }