package srequest

// PaymentKind mirrors the orchestrator payment kinds without importing generated proto types.
// Strings keep JSON readable; conversion helpers map these to proto enums.
type PaymentKind string

const (
	PaymentKindUnspecified      PaymentKind = "unspecified"
	PaymentKindPayout           PaymentKind = "payout"
	PaymentKindInternalTransfer PaymentKind = "internal_transfer"
	PaymentKindFxConversion     PaymentKind = "fx_conversion"
)

// SettlementMode matches orchestrator settlement behavior.
type SettlementMode string

const (
	SettlementModeUnspecified SettlementMode = "unspecified"
	SettlementModeFixSource   SettlementMode = "fix_source"
	SettlementModeFixReceived SettlementMode = "fix_received"
)

// FeeTreatment controls where fee impact is applied by quotation.
type FeeTreatment string

const (
	FeeTreatmentUnspecified           FeeTreatment = "unspecified"
	FeeTreatmentAddToSource           FeeTreatment = "add_to_source"
	FeeTreatmentDeductFromDestination FeeTreatment = "deduct_from_destination"
)

// FXSide mirrors the common FX side enum.
type FXSide string

const (
	FXSideUnspecified      FXSide = "unspecified"
	FXSideBuyBaseSellQuote FXSide = "buy_base_sell_quote"
	FXSideSellBaseBuyQuote FXSide = "sell_base_buy_quote"
)

// ChainNetwork mirrors the chain network enum used by managed wallets.
type ChainNetwork string

const (
	ChainNetworkUnspecified     ChainNetwork = "unspecified"
	ChainNetworkEthereumMainnet ChainNetwork = "ethereum_mainnet"
	ChainNetworkArbitrumOne     ChainNetwork = "arbitrum_one"
	ChainNetworkTronMainnet     ChainNetwork = "tron_mainnet"
	ChainNetworkTronNile        ChainNetwork = "tron_nile"
)

// InsufficientNetPolicy mirrors the fee engine policy override.
type InsufficientNetPolicy string

const (
	InsufficientNetPolicyUnspecified  InsufficientNetPolicy = "unspecified"
	InsufficientNetPolicyBlockPosting InsufficientNetPolicy = "block_posting"
	InsufficientNetPolicySweepOrgCash InsufficientNetPolicy = "sweep_org_cash"
	InsufficientNetPolicyInvoiceLater InsufficientNetPolicy = "invoice_later"
)
