1# frozen_string_literal: true
 2
 3require "value_semantics/monkey_patched"
 4require_relative "customer_financials"
 5require_relative "payment_methods"
 6
 7class AdminFinancialInfo
 8	value_semantics do
 9		transactions ArrayOf(CustomerFinancials::TransactionInfo)
10		declines Integer
11		btc_addresses ArrayOf(String)
12		payment_methods PaymentMethods
13	end
14
15	def self.for(customer)
16		EMPromise.all([
17			customer.transactions, customer.declines,
18			customer.payment_methods, customer.btc_addresses
19		]).then do |transactions, declines, payment_methods, btc_addresses|
20			new(
21				transactions: transactions,
22				declines: declines,
23				payment_methods: payment_methods, btc_addresses: btc_addresses
24			)
25		end
26	end
27end