outbox for gateways
This commit is contained in:
11
api/payments/storage/model/dpolicy.go
Normal file
11
api/payments/storage/model/dpolicy.go
Normal file
@@ -0,0 +1,11 @@
|
||||
package model
|
||||
|
||||
import moneyv1 "github.com/tech/sendico/pkg/proto/common/money/v1"
|
||||
|
||||
// DepositCheckPolicy defines how an external deposit satisfies pre-funding.
|
||||
type DepositCheckPolicy struct {
|
||||
WalletRef string
|
||||
ExpectedAmount *moneyv1.Money
|
||||
MinConfirmations uint32
|
||||
TimeoutSeconds int64
|
||||
}
|
||||
11
api/payments/storage/model/funding.go
Normal file
11
api/payments/storage/model/funding.go
Normal file
@@ -0,0 +1,11 @@
|
||||
package model
|
||||
|
||||
// FundingMode defines how payout liquidity must be satisfied for a gateway.
|
||||
type FundingMode string
|
||||
|
||||
const (
|
||||
FundingModeUnspecified FundingMode = "unspecified"
|
||||
FundingModeNone FundingMode = "none"
|
||||
FundingModeBalanceReserve FundingMode = "balance_reserve"
|
||||
FundingModeDepositObserved FundingMode = "deposit_observed"
|
||||
)
|
||||
@@ -252,15 +252,18 @@ type Customer struct {
|
||||
|
||||
// PaymentQuoteSnapshot stores the latest quote info.
|
||||
type PaymentQuoteSnapshot struct {
|
||||
DebitAmount *paymenttypes.Money `bson:"debitAmount,omitempty" json:"debitAmount,omitempty"`
|
||||
DebitSettlementAmount *paymenttypes.Money `bson:"debitSettlementAmount,omitempty" json:"debitSettlementAmount,omitempty"`
|
||||
ExpectedSettlementAmount *paymenttypes.Money `bson:"expectedSettlementAmount,omitempty" json:"expectedSettlementAmount,omitempty"`
|
||||
ExpectedFeeTotal *paymenttypes.Money `bson:"expectedFeeTotal,omitempty" json:"expectedFeeTotal,omitempty"`
|
||||
FeeLines []*paymenttypes.FeeLine `bson:"feeLines,omitempty" json:"feeLines,omitempty"`
|
||||
FeeRules []*paymenttypes.AppliedRule `bson:"feeRules,omitempty" json:"feeRules,omitempty"`
|
||||
FXQuote *paymenttypes.FXQuote `bson:"fxQuote,omitempty" json:"fxQuote,omitempty"`
|
||||
NetworkFee *paymenttypes.NetworkFeeEstimate `bson:"networkFee,omitempty" json:"networkFee,omitempty"`
|
||||
QuoteRef string `bson:"quoteRef,omitempty" json:"quoteRef,omitempty"`
|
||||
DebitAmount *paymenttypes.Money `bson:"debitAmount,omitempty" json:"debitAmount,omitempty"`
|
||||
DebitSettlementAmount *paymenttypes.Money `bson:"debitSettlementAmount,omitempty" json:"debitSettlementAmount,omitempty"`
|
||||
ExpectedSettlementAmount *paymenttypes.Money `bson:"expectedSettlementAmount,omitempty" json:"expectedSettlementAmount,omitempty"`
|
||||
ExpectedFeeTotal *paymenttypes.Money `bson:"expectedFeeTotal,omitempty" json:"expectedFeeTotal,omitempty"`
|
||||
TotalCost *paymenttypes.Money `bson:"totalCost,omitempty" json:"totalCost,omitempty"`
|
||||
FeeLines []*paymenttypes.FeeLine `bson:"feeLines,omitempty" json:"feeLines,omitempty"`
|
||||
FeeRules []*paymenttypes.AppliedRule `bson:"feeRules,omitempty" json:"feeRules,omitempty"`
|
||||
Route *paymenttypes.QuoteRouteSpecification `bson:"route,omitempty" json:"route,omitempty"`
|
||||
ExecutionConditions *paymenttypes.QuoteExecutionConditions `bson:"executionConditions,omitempty" json:"executionConditions,omitempty"`
|
||||
FXQuote *paymenttypes.FXQuote `bson:"fxQuote,omitempty" json:"fxQuote,omitempty"`
|
||||
NetworkFee *paymenttypes.NetworkFeeEstimate `bson:"networkFee,omitempty" json:"networkFee,omitempty"`
|
||||
QuoteRef string `bson:"quoteRef,omitempty" json:"quoteRef,omitempty"`
|
||||
}
|
||||
|
||||
// ExecutionRefs links to downstream systems.
|
||||
|
||||
@@ -18,6 +18,8 @@ type PaymentQuoteRecord struct {
|
||||
Intents []PaymentIntent `bson:"intents,omitempty" json:"intents,omitempty"`
|
||||
Quote *PaymentQuoteSnapshot `bson:"quote,omitempty" json:"quote,omitempty"`
|
||||
Quotes []*PaymentQuoteSnapshot `bson:"quotes,omitempty" json:"quotes,omitempty"`
|
||||
StatusV2 *QuoteStatusV2 `bson:"statusV2,omitempty" json:"statusV2,omitempty"`
|
||||
StatusesV2 []*QuoteStatusV2 `bson:"statusesV2,omitempty" json:"statusesV2,omitempty"`
|
||||
Plan *PaymentPlan `bson:"plan,omitempty" json:"plan,omitempty"`
|
||||
Plans []*PaymentPlan `bson:"plans,omitempty" json:"plans,omitempty"`
|
||||
ExecutionNote string `bson:"executionNote,omitempty" json:"executionNote,omitempty"`
|
||||
|
||||
41
api/payments/storage/model/quote_v2.go
Normal file
41
api/payments/storage/model/quote_v2.go
Normal file
@@ -0,0 +1,41 @@
|
||||
package model
|
||||
|
||||
// QuoteKind captures v2 quote kind metadata for persistence.
|
||||
type QuoteKind string
|
||||
|
||||
const (
|
||||
QuoteKindUnspecified QuoteKind = "unspecified"
|
||||
QuoteKindExecutable QuoteKind = "executable"
|
||||
QuoteKindIndicative QuoteKind = "indicative"
|
||||
)
|
||||
|
||||
// QuoteLifecycle captures v2 quote lifecycle metadata for persistence.
|
||||
type QuoteLifecycle string
|
||||
|
||||
const (
|
||||
QuoteLifecycleUnspecified QuoteLifecycle = "unspecified"
|
||||
QuoteLifecycleActive QuoteLifecycle = "active"
|
||||
QuoteLifecycleExpired QuoteLifecycle = "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 {
|
||||
Kind QuoteKind `bson:"kind,omitempty" json:"kind,omitempty"`
|
||||
Lifecycle QuoteLifecycle `bson:"lifecycle,omitempty" json:"lifecycle,omitempty"`
|
||||
Executable *bool `bson:"executable,omitempty" json:"executable,omitempty"`
|
||||
BlockReason QuoteBlockReason `bson:"blockReason,omitempty" json:"blockReason,omitempty"`
|
||||
}
|
||||
Reference in New Issue
Block a user