package domain

type GeneratePaymentURLRequest struct {
	Amount        int    `json:"amount"`
	Reason        string `json:"paymentReason"`
	PhoneNumber   string `json:"phoneNumber"`
	PaymentMethod string `json:"paymentMethod,omitempty"`
}

type InitiatePaymentRequest struct {
	ID                 string `json:"id"`
	Amount             int    `json:"amount"`
	Reason             string `json:"paymentReason"`
	MerchantID         string `json:"merchantId"`
	SignedToken        string `json:"signedToken"`
	SuccessRedirectURL string `json:"successRedirectUrl"`
	FailureRedirectURL string `json:"failureRedirectUrl"`
	NotifyURL          string `json:"notifyUrl"`
	CancelRedirectURL  string `json:"cancelRedirectUrl"`
	PhoneNumber        string `json:"phoneNumber"`
	PaymentMethod      string `json:"paymentMethod,omitempty"`
}

type SantimPayCallbackPayload struct {
	TxnId              string `json:"txnId"`
	CreatedAt          string `json:"created_at"`
	UpdatedAt          string `json:"updated_at"`
	ThirdPartyId       string `json:"thirdPartyId"`
	MerId              string `json:"merId"`
	MerName            string `json:"merName"`
	Address            string `json:"address"`
	Amount             string `json:"amount"`
	Currency           string `json:"currency"`
	Reason             string `json:"reason"`
	Msisdn             string `json:"msisdn"`
	AccountNumber      string `json:"accountNumber"`
	PaymentVia         string `json:"paymentVia"`
	RefId              string `json:"refId"`
	SuccessRedirectUrl string `json:"successRedirectUrl"`
	FailureRedirectUrl string `json:"failureRedirectUrl"`
	Message            string `json:"message"`
	Status             string `json:"status"`
	ReceiverWalletID   string `json:"receiverWalletID"`
}

type SantimTokenPayload struct {
	Amount        int    `json:"amount"`
	Reason        string `json:"paymentReason"`
	PaymentMethod string `json:"paymentMethod"`
	PhoneNumber   string `json:"phoneNumber"`
	ID            string `json:"id,omitempty"`
}

type Partner struct {
	ID          string `json:"id"`
	Name        string `json:"name"`
	Description string `json:"description"`
	Input       string `json:"input"`
}

// B2CPartnersResponse is the top-level response
type B2CPartnersResponse struct {
	Partners []Partner `json:"partners"`
}

type SantimpayB2CWithdrawalRequest struct {
	ID                    string  `json:"id"`
	ClientReference       string  `json:"clientReference"`
	Amount                float64 `json:"amount"`
	Reason                string  `json:"reason"`
	MerchantID            string  `json:"merchantId"`
	SignedToken           string  `json:"signedToken"`
	ReceiverAccountNumber string  `json:"receiverAccountNumber"`
	NotifyURL             string  `json:"notifyUrl"`
	PaymentMethod         string  `json:"paymentMethod"`
}

type TransactionStatusRequest struct {
	TransactionID string `json:"id"`
	FullParams    *bool  `json:"fullParams,omitempty"`
}
