moov_ruby 0.1.17 → 0.1.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/lib/moov/client.rb +2 -1
  3. data/lib/moov/models/components/achfees.rb +57 -0
  4. data/lib/moov/models/components/achfees.rbi +25 -0
  5. data/lib/moov/models/components/billingcountandamount.rb +37 -0
  6. data/lib/moov/models/components/billingcountandamount.rbi +15 -0
  7. data/lib/moov/models/components/billinginterchangeprogramfee.rb +53 -0
  8. data/lib/moov/models/components/billinginterchangeprogramfee.rbi +23 -0
  9. data/lib/moov/models/components/billingsummary.rb +57 -0
  10. data/lib/moov/models/components/billingsummary.rbi +25 -0
  11. data/lib/moov/models/components/billingsummarydetails.rb +41 -0
  12. data/lib/moov/models/components/billingsummarydetails.rbi +17 -0
  13. data/lib/moov/models/components/billingsummaryinterchange.rb +45 -0
  14. data/lib/moov/models/components/billingsummaryinterchange.rbi +19 -0
  15. data/lib/moov/models/components/cardacquiring.rb +45 -0
  16. data/lib/moov/models/components/cardacquiring.rbi +19 -0
  17. data/lib/moov/models/components/cardacquiringfees.rb +45 -0
  18. data/lib/moov/models/components/cardacquiringfees.rbi +19 -0
  19. data/lib/moov/models/components/cardbrandfees.rb +69 -0
  20. data/lib/moov/models/components/cardbrandfees.rbi +31 -0
  21. data/lib/moov/models/components/instantpaymentfees.rb +61 -0
  22. data/lib/moov/models/components/instantpaymentfees.rbi +27 -0
  23. data/lib/moov/models/components/othercardfees.rb +49 -0
  24. data/lib/moov/models/components/othercardfees.rbi +21 -0
  25. data/lib/moov/models/components/platformfees.rb +41 -0
  26. data/lib/moov/models/components/platformfees.rbi +17 -0
  27. data/lib/moov/models/components/statement.rb +89 -0
  28. data/lib/moov/models/components/statement.rbi +41 -0
  29. data/lib/moov/models/components/webhookbillingstatementcreated.rb +33 -0
  30. data/lib/moov/models/components/webhookbillingstatementcreated.rbi +13 -0
  31. data/lib/moov/models/components/webhookevent.rb +2 -2
  32. data/lib/moov/models/components/webhookeventtype.rb +1 -0
  33. data/lib/moov/models/components.rb +14 -0
  34. data/lib/moov/models/operations/getstatement_request.rb +49 -0
  35. data/lib/moov/models/operations/getstatement_request.rbi +17 -0
  36. data/lib/moov/models/operations/getstatement_response.rb +53 -0
  37. data/lib/moov/models/operations/getstatement_response.rbi +23 -0
  38. data/lib/moov/models/operations/liststatements_request.rb +61 -0
  39. data/lib/moov/models/operations/liststatements_request.rbi +23 -0
  40. data/lib/moov/models/operations/liststatements_response.rb +49 -0
  41. data/lib/moov/models/operations/liststatements_response.rbi +21 -0
  42. data/lib/moov/models/operations.rb +4 -0
  43. data/lib/moov/sdkconfiguration.rb +3 -3
  44. data/lib/moov/statements.rb +315 -0
  45. data/lib/moov_ruby.rb +1 -0
  46. metadata +39 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 932522ae150d97e420425e0fb557c99d61952b0e00d63e37039bec581638ec43
4
- data.tar.gz: 3fc60364e8aa3da3847685bf9a940dee0ab01772ae8fdb82d6afc6dde619095b
3
+ metadata.gz: 3e06171c0441893cc9f3813ff75239122b07c3ae6281292c7c7fde41a8228658
4
+ data.tar.gz: fb33742c32faeb553d17341d531150f3718dbe10b36de26e65b5c3aee32c59bb
5
5
  SHA512:
6
- metadata.gz: f74cf0184f536eab697bc570b702c7accfecc6f0c5abd9aa412a95f8134a3cf6b9ebb07da6310a6abe40688428967bafa94bc626e276d4baf138937dad19b277
7
- data.tar.gz: d8594f0e99a012204997659bd8266ed396547a5a62e41b74969731807fc532174d96caa2f0e4034b7259127500aade9f30166e0f1fe221590ee93e60198e73ac
6
+ metadata.gz: c33c2240821f594d33ac5fdea6f3c9ecddf97f6f627b4bcd175dfe463880da077879e9720368cea6c602a4b638e6451e13ce5eec82adb7c8bee4d5277cf9a8ad
7
+ data.tar.gz: 7e9384ef36c47260ac269e2c1160a6bb91fd34d40f8e48e6cc15e69ab227f2ef945988f95924e0aa0f320906a3d35e14df9b7cf7bb39ccf90a3e220fad886a91
data/lib/moov/client.rb CHANGED
@@ -16,7 +16,7 @@ module Moov
16
16
  class Client
17
17
  extend T::Sig
18
18
 
19
- attr_accessor :accounts, :adjustments, :apple_pay, :bank_accounts, :branding, :capabilities, :cards, :disputes, :fee_plans, :files, :payment_links, :payment_methods, :representatives, :scheduling, :sweeps, :account_terminal_applications, :support, :transfers, :underwriting, :wallets, :wallet_transactions, :avatars, :end_to_end_encryption, :enriched_address, :enriched_profile, :industries, :institutions, :issuing_transactions, :card_issuing, :authentication, :onboarding, :ping, :receipts, :terminal_applications
19
+ attr_accessor :accounts, :adjustments, :apple_pay, :bank_accounts, :branding, :capabilities, :cards, :disputes, :fee_plans, :files, :payment_links, :payment_methods, :representatives, :scheduling, :statements, :sweeps, :account_terminal_applications, :support, :transfers, :underwriting, :wallets, :wallet_transactions, :avatars, :end_to_end_encryption, :enriched_address, :enriched_profile, :industries, :institutions, :issuing_transactions, :card_issuing, :authentication, :onboarding, :ping, :receipts, :terminal_applications
20
20
 
21
21
  sig do
22
22
  params(
@@ -106,6 +106,7 @@ module Moov
106
106
  @payment_methods = PaymentMethods.new(@sdk_configuration)
107
107
  @representatives = Representatives.new(@sdk_configuration)
108
108
  @scheduling = Scheduling.new(@sdk_configuration)
109
+ @statements = Statements.new(@sdk_configuration)
109
110
  @sweeps = Sweeps.new(@sdk_configuration)
110
111
  @account_terminal_applications = AccountTerminalApplications.new(@sdk_configuration)
111
112
  @support = Support.new(@sdk_configuration)
@@ -0,0 +1,57 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module Moov
8
+ module Models
9
+ module Components
10
+
11
+ # A detailed breakdown of ACH fees.
12
+ class ACHFees
13
+ extend T::Sig
14
+ include Crystalline::MetadataFields
15
+
16
+ # Fees for standard credit transfers.
17
+ field :standard_credit, Models::Components::BillingCountAndAmount, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('standardCredit'), required: true } }
18
+ # Fees for same-day credit transfers.
19
+ field :same_day_credit, Models::Components::BillingCountAndAmount, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('sameDayCredit'), required: true } }
20
+ # Fees for debit transfers.
21
+ field :debits, Models::Components::BillingCountAndAmount, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('debits'), required: true } }
22
+ # Fees for authorized returns.
23
+ field :return_, Models::Components::BillingCountAndAmount, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('return'), required: true } }
24
+ # Fees for unauthorized returns.
25
+ field :unauthorized_return, Models::Components::BillingCountAndAmount, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('unauthorizedReturn'), required: true } }
26
+ # Fees for notices of change.
27
+ field :notice_of_change, Models::Components::BillingCountAndAmount, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('noticeOfChange'), required: true } }
28
+ # Total ACH fees.
29
+ field :total, Models::Components::BillingCountAndAmount, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('total'), required: true } }
30
+
31
+ sig { params(standard_credit: Models::Components::BillingCountAndAmount, same_day_credit: Models::Components::BillingCountAndAmount, debits: Models::Components::BillingCountAndAmount, return_: Models::Components::BillingCountAndAmount, unauthorized_return: Models::Components::BillingCountAndAmount, notice_of_change: Models::Components::BillingCountAndAmount, total: Models::Components::BillingCountAndAmount).void }
32
+ def initialize(standard_credit:, same_day_credit:, debits:, return_:, unauthorized_return:, notice_of_change:, total:)
33
+ @standard_credit = standard_credit
34
+ @same_day_credit = same_day_credit
35
+ @debits = debits
36
+ @return_ = return_
37
+ @unauthorized_return = unauthorized_return
38
+ @notice_of_change = notice_of_change
39
+ @total = total
40
+ end
41
+
42
+ sig { params(other: T.untyped).returns(T::Boolean) }
43
+ def ==(other)
44
+ return false unless other.is_a? self.class
45
+ return false unless @standard_credit == other.standard_credit
46
+ return false unless @same_day_credit == other.same_day_credit
47
+ return false unless @debits == other.debits
48
+ return false unless @return_ == other.return_
49
+ return false unless @unauthorized_return == other.unauthorized_return
50
+ return false unless @notice_of_change == other.notice_of_change
51
+ return false unless @total == other.total
52
+ true
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,25 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::ACHFees
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::ACHFees
11
+ def standard_credit(); end
12
+ def standard_credit=(str_); end
13
+ def same_day_credit(); end
14
+ def same_day_credit=(str_); end
15
+ def debits(); end
16
+ def debits=(str_); end
17
+ def return_(); end
18
+ def return_=(str_); end
19
+ def unauthorized_return(); end
20
+ def unauthorized_return=(str_); end
21
+ def notice_of_change(); end
22
+ def notice_of_change=(str_); end
23
+ def total(); end
24
+ def total=(str_); end
25
+ end
@@ -0,0 +1,37 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module Moov
8
+ module Models
9
+ module Components
10
+
11
+ # Represents a count of items and their total amount.
12
+ class BillingCountAndAmount
13
+ extend T::Sig
14
+ include Crystalline::MetadataFields
15
+
16
+ # The number of items.
17
+ field :count, ::Integer, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('count'), required: true } }
18
+ # The total amount.
19
+ field :amount, Models::Components::AmountDecimal, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('amount'), required: true } }
20
+
21
+ sig { params(count: ::Integer, amount: Models::Components::AmountDecimal).void }
22
+ def initialize(count:, amount:)
23
+ @count = count
24
+ @amount = amount
25
+ end
26
+
27
+ sig { params(other: T.untyped).returns(T::Boolean) }
28
+ def ==(other)
29
+ return false unless other.is_a? self.class
30
+ return false unless @count == other.count
31
+ return false unless @amount == other.amount
32
+ true
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,15 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::BillingCountAndAmount
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::BillingCountAndAmount
11
+ def count(); end
12
+ def count=(str_); end
13
+ def amount(); end
14
+ def amount=(str_); end
15
+ end
@@ -0,0 +1,53 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module Moov
8
+ module Models
9
+ module Components
10
+
11
+ # Details of a specific interchange program fee.
12
+ class BillingInterchangeProgramFee
13
+ extend T::Sig
14
+ include Crystalline::MetadataFields
15
+
16
+ # The name of the interchange program.
17
+ field :program_name, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('programName'), required: true } }
18
+ # The number of transactions for this program.
19
+ field :count, ::Integer, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('count'), required: true } }
20
+ # The percentage rate for this program.
21
+ field :percentage_rate, ::Float, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('percentageRate'), required: true } }
22
+ # The per-item rate for this program.
23
+ field :per_item_rate, Models::Components::AmountDecimal, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('perItemRate'), required: true } }
24
+ # The total fee amount for this program.
25
+ field :total, Models::Components::AmountDecimal, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('total'), required: true } }
26
+ # The total transfer volume for this program.
27
+ field :transfer_volume, Models::Components::AmountDecimal, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('transferVolume'), required: true } }
28
+
29
+ sig { params(program_name: ::String, count: ::Integer, percentage_rate: ::Float, per_item_rate: Models::Components::AmountDecimal, total: Models::Components::AmountDecimal, transfer_volume: Models::Components::AmountDecimal).void }
30
+ def initialize(program_name:, count:, percentage_rate:, per_item_rate:, total:, transfer_volume:)
31
+ @program_name = program_name
32
+ @count = count
33
+ @percentage_rate = percentage_rate
34
+ @per_item_rate = per_item_rate
35
+ @total = total
36
+ @transfer_volume = transfer_volume
37
+ end
38
+
39
+ sig { params(other: T.untyped).returns(T::Boolean) }
40
+ def ==(other)
41
+ return false unless other.is_a? self.class
42
+ return false unless @program_name == other.program_name
43
+ return false unless @count == other.count
44
+ return false unless @percentage_rate == other.percentage_rate
45
+ return false unless @per_item_rate == other.per_item_rate
46
+ return false unless @total == other.total
47
+ return false unless @transfer_volume == other.transfer_volume
48
+ true
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,23 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::BillingInterchangeProgramFee
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::BillingInterchangeProgramFee
11
+ def program_name(); end
12
+ def program_name=(str_); end
13
+ def count(); end
14
+ def count=(str_); end
15
+ def percentage_rate(); end
16
+ def percentage_rate=(str_); end
17
+ def per_item_rate(); end
18
+ def per_item_rate=(str_); end
19
+ def total(); end
20
+ def total=(str_); end
21
+ def transfer_volume(); end
22
+ def transfer_volume=(str_); end
23
+ end
@@ -0,0 +1,57 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module Moov
8
+ module Models
9
+ module Components
10
+
11
+ # A summary of all fees included in a statement.
12
+ class BillingSummary
13
+ extend T::Sig
14
+ include Crystalline::MetadataFields
15
+
16
+ # A summary of card acquiring volume and fees.
17
+ field :card_acquiring, Crystalline::Nilable.new(Models::Components::CardAcquiring), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('cardAcquiring') } }
18
+ # A summary of ACH volume and fees.
19
+ field :ach, Crystalline::Nilable.new(Models::Components::BillingSummaryDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('ach') } }
20
+ # A summary of instant payment volume and fees.
21
+ field :instant_payments, Crystalline::Nilable.new(Models::Components::BillingSummaryDetails), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('instantPayments') } }
22
+ # The total amount of platform fees.
23
+ field :platform_fees, Crystalline::Nilable.new(Models::Components::AmountDecimal), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('platformFees') } }
24
+ # The total amount of adjustment fees.
25
+ field :adjustment_fees, Crystalline::Nilable.new(Models::Components::AmountDecimal), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('adjustmentFees') } }
26
+ # The total amount of other fees.
27
+ field :other_fees, Crystalline::Nilable.new(Models::Components::AmountDecimal), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('otherFees') } }
28
+ # The total amount of all fees.
29
+ field :total, Crystalline::Nilable.new(Models::Components::AmountDecimal), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('total') } }
30
+
31
+ sig { params(card_acquiring: T.nilable(Models::Components::CardAcquiring), ach: T.nilable(Models::Components::BillingSummaryDetails), instant_payments: T.nilable(Models::Components::BillingSummaryDetails), platform_fees: T.nilable(Models::Components::AmountDecimal), adjustment_fees: T.nilable(Models::Components::AmountDecimal), other_fees: T.nilable(Models::Components::AmountDecimal), total: T.nilable(Models::Components::AmountDecimal)).void }
32
+ def initialize(card_acquiring: nil, ach: nil, instant_payments: nil, platform_fees: nil, adjustment_fees: nil, other_fees: nil, total: nil)
33
+ @card_acquiring = card_acquiring
34
+ @ach = ach
35
+ @instant_payments = instant_payments
36
+ @platform_fees = platform_fees
37
+ @adjustment_fees = adjustment_fees
38
+ @other_fees = other_fees
39
+ @total = total
40
+ end
41
+
42
+ sig { params(other: T.untyped).returns(T::Boolean) }
43
+ def ==(other)
44
+ return false unless other.is_a? self.class
45
+ return false unless @card_acquiring == other.card_acquiring
46
+ return false unless @ach == other.ach
47
+ return false unless @instant_payments == other.instant_payments
48
+ return false unless @platform_fees == other.platform_fees
49
+ return false unless @adjustment_fees == other.adjustment_fees
50
+ return false unless @other_fees == other.other_fees
51
+ return false unless @total == other.total
52
+ true
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,25 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::BillingSummary
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::BillingSummary
11
+ def card_acquiring(); end
12
+ def card_acquiring=(str_); end
13
+ def ach(); end
14
+ def ach=(str_); end
15
+ def instant_payments(); end
16
+ def instant_payments=(str_); end
17
+ def platform_fees(); end
18
+ def platform_fees=(str_); end
19
+ def adjustment_fees(); end
20
+ def adjustment_fees=(str_); end
21
+ def other_fees(); end
22
+ def other_fees=(str_); end
23
+ def total(); end
24
+ def total=(str_); end
25
+ end
@@ -0,0 +1,41 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module Moov
8
+ module Models
9
+ module Components
10
+
11
+ # Details of volume and fees for a specific payment method.
12
+ class BillingSummaryDetails
13
+ extend T::Sig
14
+ include Crystalline::MetadataFields
15
+
16
+ # The total transaction volume amount.
17
+ field :volume_amount, Crystalline::Nilable.new(Models::Components::AmountDecimal), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('volumeAmount') } }
18
+ # The total number of transactions.
19
+ field :volume_count, Crystalline::Nilable.new(::Integer), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('volumeCount') } }
20
+ # The total fee amount.
21
+ field :fee_amount, Crystalline::Nilable.new(Models::Components::AmountDecimal), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('feeAmount') } }
22
+
23
+ sig { params(volume_amount: T.nilable(Models::Components::AmountDecimal), volume_count: T.nilable(::Integer), fee_amount: T.nilable(Models::Components::AmountDecimal)).void }
24
+ def initialize(volume_amount: nil, volume_count: nil, fee_amount: nil)
25
+ @volume_amount = volume_amount
26
+ @volume_count = volume_count
27
+ @fee_amount = fee_amount
28
+ end
29
+
30
+ sig { params(other: T.untyped).returns(T::Boolean) }
31
+ def ==(other)
32
+ return false unless other.is_a? self.class
33
+ return false unless @volume_amount == other.volume_amount
34
+ return false unless @volume_count == other.volume_count
35
+ return false unless @fee_amount == other.fee_amount
36
+ true
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,17 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::BillingSummaryDetails
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::BillingSummaryDetails
11
+ def volume_amount(); end
12
+ def volume_amount=(str_); end
13
+ def volume_count(); end
14
+ def volume_count=(str_); end
15
+ def fee_amount(); end
16
+ def fee_amount=(str_); end
17
+ end
@@ -0,0 +1,45 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module Moov
8
+ module Models
9
+ module Components
10
+
11
+ # A summary of interchange fees by card brand.
12
+ class BillingSummaryInterchange
13
+ extend T::Sig
14
+ include Crystalline::MetadataFields
15
+
16
+ # Total interchange fees for Visa.
17
+ field :visa, Models::Components::AmountDecimal, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('visa'), required: true } }
18
+ # Total interchange fees for Mastercard.
19
+ field :mastercard, Models::Components::AmountDecimal, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('mastercard'), required: true } }
20
+ # Total interchange fees for Discover.
21
+ field :discover, Models::Components::AmountDecimal, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('discover'), required: true } }
22
+ # Total interchange fees for American Express.
23
+ field :american_express, Models::Components::AmountDecimal, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('americanExpress'), required: true } }
24
+
25
+ sig { params(visa: Models::Components::AmountDecimal, mastercard: Models::Components::AmountDecimal, discover: Models::Components::AmountDecimal, american_express: Models::Components::AmountDecimal).void }
26
+ def initialize(visa:, mastercard:, discover:, american_express:)
27
+ @visa = visa
28
+ @mastercard = mastercard
29
+ @discover = discover
30
+ @american_express = american_express
31
+ end
32
+
33
+ sig { params(other: T.untyped).returns(T::Boolean) }
34
+ def ==(other)
35
+ return false unless other.is_a? self.class
36
+ return false unless @visa == other.visa
37
+ return false unless @mastercard == other.mastercard
38
+ return false unless @discover == other.discover
39
+ return false unless @american_express == other.american_express
40
+ true
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,19 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::BillingSummaryInterchange
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::BillingSummaryInterchange
11
+ def visa(); end
12
+ def visa=(str_); end
13
+ def mastercard(); end
14
+ def mastercard=(str_); end
15
+ def discover(); end
16
+ def discover=(str_); end
17
+ def american_express(); end
18
+ def american_express=(str_); end
19
+ end
@@ -0,0 +1,45 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module Moov
8
+ module Models
9
+ module Components
10
+
11
+ # A summary of card acquiring volume and fees.
12
+ class CardAcquiring
13
+ extend T::Sig
14
+ include Crystalline::MetadataFields
15
+
16
+ # The total transaction volume amount.
17
+ field :volume_amount, Crystalline::Nilable.new(Models::Components::AmountDecimal), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('volumeAmount') } }
18
+ # The total number of transactions.
19
+ field :volume_count, Crystalline::Nilable.new(::Integer), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('volumeCount') } }
20
+ # The total fee amount.
21
+ field :fee_amount, Crystalline::Nilable.new(Models::Components::AmountDecimal), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('feeAmount') } }
22
+ # A summary of interchange fees by card brand.
23
+ field :interchange_fees, Crystalline::Nilable.new(Models::Components::BillingSummaryInterchange), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('interchangeFees') } }
24
+
25
+ sig { params(volume_amount: T.nilable(Models::Components::AmountDecimal), volume_count: T.nilable(::Integer), fee_amount: T.nilable(Models::Components::AmountDecimal), interchange_fees: T.nilable(Models::Components::BillingSummaryInterchange)).void }
26
+ def initialize(volume_amount: nil, volume_count: nil, fee_amount: nil, interchange_fees: nil)
27
+ @volume_amount = volume_amount
28
+ @volume_count = volume_count
29
+ @fee_amount = fee_amount
30
+ @interchange_fees = interchange_fees
31
+ end
32
+
33
+ sig { params(other: T.untyped).returns(T::Boolean) }
34
+ def ==(other)
35
+ return false unless other.is_a? self.class
36
+ return false unless @volume_amount == other.volume_amount
37
+ return false unless @volume_count == other.volume_count
38
+ return false unless @fee_amount == other.fee_amount
39
+ return false unless @interchange_fees == other.interchange_fees
40
+ true
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,19 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::CardAcquiring
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::CardAcquiring
11
+ def volume_amount(); end
12
+ def volume_amount=(str_); end
13
+ def volume_count(); end
14
+ def volume_count=(str_); end
15
+ def fee_amount(); end
16
+ def fee_amount=(str_); end
17
+ def interchange_fees(); end
18
+ def interchange_fees=(str_); end
19
+ end
@@ -0,0 +1,45 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module Moov
8
+ module Models
9
+ module Components
10
+
11
+ # A detailed breakdown of card acquiring fees by card brand.
12
+ class CardAcquiringFees
13
+ extend T::Sig
14
+ include Crystalline::MetadataFields
15
+
16
+ # Fees associated with Visa transactions.
17
+ field :visa, Models::Components::CardBrandFees, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('visa'), required: true } }
18
+ # Fees associated with Mastercard transactions.
19
+ field :mastercard, Models::Components::CardBrandFees, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('mastercard'), required: true } }
20
+ # Fees associated with Discover transactions.
21
+ field :discover, Models::Components::CardBrandFees, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('discover'), required: true } }
22
+ # Fees associated with American Express transactions.
23
+ field :american_express, Models::Components::CardBrandFees, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('americanExpress'), required: true } }
24
+
25
+ sig { params(visa: Models::Components::CardBrandFees, mastercard: Models::Components::CardBrandFees, discover: Models::Components::CardBrandFees, american_express: Models::Components::CardBrandFees).void }
26
+ def initialize(visa:, mastercard:, discover:, american_express:)
27
+ @visa = visa
28
+ @mastercard = mastercard
29
+ @discover = discover
30
+ @american_express = american_express
31
+ end
32
+
33
+ sig { params(other: T.untyped).returns(T::Boolean) }
34
+ def ==(other)
35
+ return false unless other.is_a? self.class
36
+ return false unless @visa == other.visa
37
+ return false unless @mastercard == other.mastercard
38
+ return false unless @discover == other.discover
39
+ return false unless @american_express == other.american_express
40
+ true
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,19 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::CardAcquiringFees
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::CardAcquiringFees
11
+ def visa(); end
12
+ def visa=(str_); end
13
+ def mastercard(); end
14
+ def mastercard=(str_); end
15
+ def discover(); end
16
+ def discover=(str_); end
17
+ def american_express(); end
18
+ def american_express=(str_); end
19
+ end
@@ -0,0 +1,69 @@
1
+ # Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
2
+
3
+ # typed: true
4
+ # frozen_string_literal: true
5
+
6
+
7
+ module Moov
8
+ module Models
9
+ module Components
10
+
11
+ # A detailed breakdown of fees for a specific card brand.
12
+ class CardBrandFees
13
+ extend T::Sig
14
+ include Crystalline::MetadataFields
15
+
16
+ # Total fees for this card brand.
17
+ field :total, Models::Components::BillingCountAndAmount, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('total'), required: true } }
18
+ # Details of interchange fees.
19
+ field :interchange, Crystalline::Nilable.new(Models::Components::BillingCountAndAmount), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('interchange') } }
20
+ # A list of interchange program fees.
21
+ field :interchange_programs, Crystalline::Nilable.new(Crystalline::Array.new(Models::Components::BillingInterchangeProgramFee)), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('interchangePrograms') } }
22
+ # Details of network passthrough fees.
23
+ field :network_passthrough, Crystalline::Nilable.new(Models::Components::BillingCountAndAmount), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('networkPassthrough') } }
24
+ # Details of completed domestic online transactions.
25
+ field :completed_domestic_online, Crystalline::Nilable.new(Models::Components::BillingCountAndAmount), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('completedDomesticOnline') } }
26
+ # Details of completed domestic in-person transactions.
27
+ field :completed_domestic_in_person, Crystalline::Nilable.new(Models::Components::BillingCountAndAmount), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('completedDomesticInPerson') } }
28
+ # Details of completed international online transactions.
29
+ field :completed_international_online, Crystalline::Nilable.new(Models::Components::BillingCountAndAmount), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('completedInternationalOnline') } }
30
+ # Details of completed international in-person transactions.
31
+ field :completed_international_in_person, Crystalline::Nilable.new(Models::Components::BillingCountAndAmount), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('completedInternationalInPerson') } }
32
+ # Details of declined transactions.
33
+ field :declines, Crystalline::Nilable.new(Models::Components::BillingCountAndAmount), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('declines') } }
34
+ # Details of refunded transactions.
35
+ field :refunds, Crystalline::Nilable.new(Models::Components::BillingCountAndAmount), { 'format_json': { 'letter_case': ::Moov::Utils.field_name('refunds') } }
36
+
37
+ sig { params(total: Models::Components::BillingCountAndAmount, interchange: T.nilable(Models::Components::BillingCountAndAmount), interchange_programs: T.nilable(T::Array[Models::Components::BillingInterchangeProgramFee]), network_passthrough: T.nilable(Models::Components::BillingCountAndAmount), completed_domestic_online: T.nilable(Models::Components::BillingCountAndAmount), completed_domestic_in_person: T.nilable(Models::Components::BillingCountAndAmount), completed_international_online: T.nilable(Models::Components::BillingCountAndAmount), completed_international_in_person: T.nilable(Models::Components::BillingCountAndAmount), declines: T.nilable(Models::Components::BillingCountAndAmount), refunds: T.nilable(Models::Components::BillingCountAndAmount)).void }
38
+ def initialize(total:, interchange: nil, interchange_programs: nil, network_passthrough: nil, completed_domestic_online: nil, completed_domestic_in_person: nil, completed_international_online: nil, completed_international_in_person: nil, declines: nil, refunds: nil)
39
+ @total = total
40
+ @interchange = interchange
41
+ @interchange_programs = interchange_programs
42
+ @network_passthrough = network_passthrough
43
+ @completed_domestic_online = completed_domestic_online
44
+ @completed_domestic_in_person = completed_domestic_in_person
45
+ @completed_international_online = completed_international_online
46
+ @completed_international_in_person = completed_international_in_person
47
+ @declines = declines
48
+ @refunds = refunds
49
+ end
50
+
51
+ sig { params(other: T.untyped).returns(T::Boolean) }
52
+ def ==(other)
53
+ return false unless other.is_a? self.class
54
+ return false unless @total == other.total
55
+ return false unless @interchange == other.interchange
56
+ return false unless @interchange_programs == other.interchange_programs
57
+ return false unless @network_passthrough == other.network_passthrough
58
+ return false unless @completed_domestic_online == other.completed_domestic_online
59
+ return false unless @completed_domestic_in_person == other.completed_domestic_in_person
60
+ return false unless @completed_international_online == other.completed_international_online
61
+ return false unless @completed_international_in_person == other.completed_international_in_person
62
+ return false unless @declines == other.declines
63
+ return false unless @refunds == other.refunds
64
+ true
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end