module Payment class Payment attr_reader amount: BigDecimal attr_reader currency: String attr_reader id: String end class Customer attr_reader id: Integer attr_reader name: String attr_reader email: String end class Card attr_reader number: String attr_reader expiry: String attr_reader ccv: String end class Base def self.charge_from_card: (Payment, Customer, Card, bool, bool?) -> Hash def self.cancel_transaction: (Payment, bool) -> Hash def self.refund_money: (Payment) -> Hash end end