package model

import "github.com/tech/sendico/pkg/db/storable"

// Pair describes a supported FX currency pair and related metadata.
type Pair struct {
	storable.Base `bson:",inline" json:",inline"`

	Pair              CurrencyPair     `bson:"pair" json:"pair"`
	BaseMeta          CurrencySettings `bson:"baseMeta" json:"baseMeta"`
	QuoteMeta         CurrencySettings `bson:"quoteMeta" json:"quoteMeta"`
	Providers         []string         `bson:"providers,omitempty" json:"providers,omitempty"`
	IsEnabled         bool             `bson:"isEnabled" json:"isEnabled"`
	TenantRef         string           `bson:"tenantRef,omitempty" json:"tenantRef,omitempty"`
	DefaultProvider   string           `bson:"defaultProvider,omitempty" json:"defaultProvider,omitempty"`
	Attributes        map[string]any   `bson:"attributes,omitempty" json:"attributes,omitempty"`
	SupportedSides    []QuoteSide      `bson:"supportedSides,omitempty" json:"supportedSides,omitempty"`
	FallbackProviders []string         `bson:"fallbackProviders,omitempty" json:"fallbackProviders,omitempty"`
	Tags              []string         `bson:"tags,omitempty" json:"tags,omitempty"`
	Cross             *CrossRateConfig `bson:"cross,omitempty" json:"cross,omitempty"`
}

// Collection implements storable.Storable.
func (*Pair) Collection() string {
	return PairsCollection
}
