#[derive(Debug, Clone)]
pub struct CreateOrder;

#[derive(Debug, Clone)]
pub struct Authorize;

#[derive(Debug, Clone)]
pub struct PSync;

#[derive(Debug, Clone)]
pub struct Void;

#[derive(Debug, Clone)]
pub struct RSync;

#[derive(Debug, Clone)]
pub struct Refund;

#[derive(Debug, Clone)]
pub struct VoidPostRefund;

#[derive(Debug, Clone)]
pub struct Capture;

#[derive(Debug, Clone)]
pub struct SetupMandate;

#[derive(Debug, Clone)]
pub struct RepeatPayment;

#[derive(Debug, Clone)]
pub struct Accept;

#[derive(Debug, Clone)]
pub struct SubmitEvidence;

#[derive(Debug, Clone)]
pub struct DefendDispute;

#[derive(Debug, Clone)]
pub struct ServerSessionAuthenticationToken;

#[derive(Debug, Clone)]
pub struct ServerAuthenticationToken;

#[derive(Debug, Clone)]
pub struct CreateConnectorCustomer;

#[derive(Debug, Clone)]
pub struct GetConnectorCustomer;

#[derive(Debug, Clone)]
pub struct PaymentMethodToken;

#[derive(Debug, Clone)]
pub struct PreAuthenticate;

#[derive(Debug, Clone)]
pub struct Authenticate;

#[derive(Debug, Clone)]
pub struct PostAuthenticate;

#[derive(Debug, Clone)]
pub struct VoidPC;

#[derive(Debug, Clone)]
pub struct ClientAuthenticationToken;

#[derive(Debug, Clone)]
pub struct IncrementalAuthorization;

#[derive(Debug, Clone)]
pub struct MandateRevoke;

#[derive(Debug, Clone)]
pub struct VerifyWebhookSource;

#[derive(Debug, Clone)]
pub struct PayoutCreate;

#[derive(Debug, Clone)]
pub struct PayoutTransfer;

#[derive(Debug, Clone)]
pub struct PayoutGet;

#[derive(Debug, Clone)]
pub struct PayoutVoid;

#[derive(Debug, Clone)]
pub struct PayoutStage;

#[derive(Debug, Clone)]
pub struct PayoutCreateLink;

#[derive(Debug, Clone)]
pub struct PayoutCreateRecipient;

#[derive(Debug, Clone)]
pub struct PayoutEnrollDisburseAccount;

#[derive(Debug, Clone)]
pub struct PayoutEligibility;

#[derive(Debug, Clone)]
pub struct SurchargeCalculate;

#[derive(Debug, Clone)]
pub struct SurchargePaymentSucceeded;

#[derive(Debug, Clone)]
pub struct SurchargeRefundSucceeded;

#[derive(Debug, Clone)]
pub struct Recharge;

#[derive(Debug, Clone)]
pub struct CreatePaymentMethod;

#[derive(Debug, Clone)]
pub struct GetPaymentMethod;

/// Refresh a stored payment method and return what the provider says changed.
#[derive(Debug, Clone)]
pub struct RefreshPaymentMethod;

#[derive(Debug, Clone)]
pub struct PreRiskCheck;

#[derive(Debug, Clone)]
pub struct PostRiskCheck;

#[derive(Debug, Clone)]
pub struct FrmPaymentOutcome;

#[derive(Debug, Clone)]
pub struct FrmRefundProcessed;

#[derive(Debug, Clone)]
pub struct FrmChargebackReceived;

#[derive(Debug, Clone)]
pub struct PaymentMethodEligibility;

#[derive(strum::Display)]
#[strum(serialize_all = "snake_case")]
pub enum FlowName {
    Authorize,
    Refund,
    VoidPostRefund,
    Rsync,
    Psync,
    Void,
    VoidPc,
    SetupMandate,
    RepeatPayment,
    Capture,
    AcceptDispute,
    SubmitEvidence,
    DefendDispute,
    CreateOrder,
    IncomingWebhook,
    Dsync,
    ServerSessionAuthenticationToken,
    ServerAuthenticationToken,
    CreateConnectorCustomer,
    GetConnectorCustomer,
    PaymentMethodToken,
    PreAuthenticate,
    Authenticate,
    PostAuthenticate,
    ClientAuthenticationToken,
    IncrementalAuthorization,
    MandateRevoke,
    PayoutCreate,
    PayoutTransfer,
    PayoutGet,
    PayoutVoid,
    PayoutStage,
    PayoutCreateLink,
    PayoutCreateRecipient,
    PayoutEnrollDisburseAccount,
    PayoutEligibility,
    SurchargeCalculate,
    SurchargePaymentSucceeded,
    SurchargeRefundSucceeded,
    Recharge,
    CreatePaymentMethod,
    GetPaymentMethod,
    RefreshPaymentMethod,
    PreRiskCheck,
    PostRiskCheck,
    FrmPaymentOutcome,
    FrmRefundProcessed,
    FrmChargebackReceived,
    PaymentMethodEligibility,
}
