moov_ruby 26.4.0.pre.dev.3 → 26.4.0.pre.dev.5

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 (74) hide show
  1. checksums.yaml +4 -4
  2. data/lib/crystalline/metadata_fields.rb +17 -11
  3. data/lib/crystalline/module.rb +94 -10
  4. data/lib/crystalline/types.rb +52 -0
  5. data/lib/moov/models/components/achcreditsamedaytransferpaymentmethod.rb +40 -0
  6. data/lib/moov/models/components/achcreditsamedaytransferpaymentmethod.rbi +17 -0
  7. data/lib/moov/models/components/achcreditsamedaytransferpaymentmethod_paymentmethodtype.rb +18 -0
  8. data/lib/moov/models/components/achcreditsamedaytransferpaymentmethod_paymentmethodtype.rbi +11 -0
  9. data/lib/moov/models/components/achcreditstandardtransferpaymentmethod.rb +40 -0
  10. data/lib/moov/models/components/achcreditstandardtransferpaymentmethod.rbi +17 -0
  11. data/lib/moov/models/components/achcreditstandardtransferpaymentmethod_paymentmethodtype.rb +18 -0
  12. data/lib/moov/models/components/achcreditstandardtransferpaymentmethod_paymentmethodtype.rbi +11 -0
  13. data/lib/moov/models/components/achdebitcollecttransferpaymentmethod.rb +40 -0
  14. data/lib/moov/models/components/achdebitcollecttransferpaymentmethod.rbi +17 -0
  15. data/lib/moov/models/components/achdebitcollecttransferpaymentmethod_paymentmethodtype.rb +18 -0
  16. data/lib/moov/models/components/achdebitcollecttransferpaymentmethod_paymentmethodtype.rbi +11 -0
  17. data/lib/moov/models/components/achdebitfundtransferpaymentmethod.rb +40 -0
  18. data/lib/moov/models/components/achdebitfundtransferpaymentmethod.rbi +17 -0
  19. data/lib/moov/models/components/achdebitfundtransferpaymentmethod_paymentmethodtype.rb +18 -0
  20. data/lib/moov/models/components/achdebitfundtransferpaymentmethod_paymentmethodtype.rbi +11 -0
  21. data/lib/moov/models/components/applepaytransferpaymentmethod.rb +40 -0
  22. data/lib/moov/models/components/applepaytransferpaymentmethod.rbi +17 -0
  23. data/lib/moov/models/components/applepaytransferpaymentmethod_paymentmethodtype.rb +18 -0
  24. data/lib/moov/models/components/applepaytransferpaymentmethod_paymentmethodtype.rbi +11 -0
  25. data/lib/moov/models/components/cardpaymenttransferpaymentmethod.rb +40 -0
  26. data/lib/moov/models/components/cardpaymenttransferpaymentmethod.rbi +17 -0
  27. data/lib/moov/models/components/cardpaymenttransferpaymentmethod_paymentmethodtype.rb +18 -0
  28. data/lib/moov/models/components/cardpaymenttransferpaymentmethod_paymentmethodtype.rbi +11 -0
  29. data/lib/moov/models/components/cardpresentpaymenttransferpaymentmethod.rb +40 -0
  30. data/lib/moov/models/components/cardpresentpaymenttransferpaymentmethod.rbi +17 -0
  31. data/lib/moov/models/components/cardpresentpaymenttransferpaymentmethod_paymentmethodtype.rb +18 -0
  32. data/lib/moov/models/components/cardpresentpaymenttransferpaymentmethod_paymentmethodtype.rbi +11 -0
  33. data/lib/moov/models/components/generatedby.rb +6 -2
  34. data/lib/moov/models/components/generatedby.rbi +2 -0
  35. data/lib/moov/models/components/instantbankcredittransferpaymentmethod.rb +40 -0
  36. data/lib/moov/models/components/instantbankcredittransferpaymentmethod.rbi +17 -0
  37. data/lib/moov/models/components/instantbankcredittransferpaymentmethod_paymentmethodtype.rb +18 -0
  38. data/lib/moov/models/components/instantbankcredittransferpaymentmethod_paymentmethodtype.rbi +11 -0
  39. data/lib/moov/models/components/moovwallettransferpaymentmethod.rb +40 -0
  40. data/lib/moov/models/components/moovwallettransferpaymentmethod.rbi +17 -0
  41. data/lib/moov/models/components/moovwallettransferpaymentmethod_paymentmethodtype.rb +18 -0
  42. data/lib/moov/models/components/moovwallettransferpaymentmethod_paymentmethodtype.rbi +11 -0
  43. data/lib/moov/models/components/pullfromcardtransferpaymentmethod.rb +40 -0
  44. data/lib/moov/models/components/pullfromcardtransferpaymentmethod.rbi +17 -0
  45. data/lib/moov/models/components/pullfromcardtransferpaymentmethod_paymentmethodtype.rb +18 -0
  46. data/lib/moov/models/components/pullfromcardtransferpaymentmethod_paymentmethodtype.rbi +11 -0
  47. data/lib/moov/models/components/pushtocardtransferpaymentmethod.rb +40 -0
  48. data/lib/moov/models/components/pushtocardtransferpaymentmethod.rbi +17 -0
  49. data/lib/moov/models/components/pushtocardtransferpaymentmethod_paymentmethodtype.rb +18 -0
  50. data/lib/moov/models/components/pushtocardtransferpaymentmethod_paymentmethodtype.rbi +11 -0
  51. data/lib/moov/models/components/rtpcredittransferpaymentmethod.rb +40 -0
  52. data/lib/moov/models/components/rtpcredittransferpaymentmethod.rbi +17 -0
  53. data/lib/moov/models/components/rtpcredittransferpaymentmethod_paymentmethodtype.rb +18 -0
  54. data/lib/moov/models/components/rtpcredittransferpaymentmethod_paymentmethodtype.rbi +11 -0
  55. data/lib/moov/models/components/transferdestination.rb +5 -5
  56. data/lib/moov/models/components/transferentrymode.rb +18 -0
  57. data/lib/moov/models/components/transferentrymode.rbi +11 -0
  58. data/lib/moov/models/components/transferoptions.rb +3 -3
  59. data/lib/moov/models/components/transferpaymentmethod.rb +27 -0
  60. data/lib/moov/models/components/transferpaymentmethod.rbi +11 -0
  61. data/lib/moov/models/components/transferpaymentmethodsbankaccount.rb +70 -0
  62. data/lib/moov/models/components/transferpaymentmethodsbankaccount.rbi +31 -0
  63. data/lib/moov/models/components/transferpaymentmethodscard.rb +98 -0
  64. data/lib/moov/models/components/transferpaymentmethodscard.rbi +45 -0
  65. data/lib/moov/models/components/transferpaymentmethodswallet.rb +42 -0
  66. data/lib/moov/models/components/transferpaymentmethodswallet.rbi +17 -0
  67. data/lib/moov/models/components/transferpaymentmethodtype.rb +29 -0
  68. data/lib/moov/models/components/transferpaymentmethodtype.rbi +11 -0
  69. data/lib/moov/models/components/transfersource.rb +6 -6
  70. data/lib/moov/models/components/transferterminalcard.rb +78 -0
  71. data/lib/moov/models/components/transferterminalcard.rbi +35 -0
  72. data/lib/moov/models/components.rb +31 -0
  73. data/lib/moov/sdkconfiguration.rb +3 -3
  74. metadata +66 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 112eecb0f793a0efdbe33e79259fce27ed50ae7205423ee7e7a6eb3b673ce9d4
4
- data.tar.gz: 5f07f991e46f5c3cff3cdc3ba58cff01b6505ca26c54d1780caa8f94a8977055
3
+ metadata.gz: 68bbb5341c1f289dcf0f8ce2c3c8234e0735cea33170fcd597b77811cf7ce079
4
+ data.tar.gz: 6c1b113a0179e18639998f4d8008a9143ff8ff4559576cbcc6d00b152803a77a
5
5
  SHA512:
6
- metadata.gz: f47b6f811e423f05f48b448dde81537e5ea935a7a286df1982579640ac810ef3dd76ba2cd44da1d0f2263ec080a216c37943fa0bc3da2c2217be8bfb06c90fe4
7
- data.tar.gz: 237a714472657650d6862ff23ad23c874440f199e3090a1a829706534a2df5816771c68a1c5d869e39195245ec2d766edd4c41559bbb4676828458cc1aae287b
6
+ metadata.gz: 3b3ca4b06ecbb5ef8eaa40476cf44681c4f89cb225d46b8899e789eed886c4821f6d57be71bd223572a6848839b841d9726e201c7109c12f8dbc2aedf9419ac5
7
+ data.tar.gz: 325752e89ac699624805819cfc3cb2833eaca7f02a77840d88e1055ed28414b438cb91050ad6adb21345f1da122f9d4b5c9d62e2bc36338b66b2683a2e3a1e85
@@ -84,7 +84,9 @@ module Crystalline
84
84
  # If field is nilable, and the value is not in the dict, just move to the next field
85
85
  next if value.nil?
86
86
 
87
- if Crystalline::Utils.arr? field_type
87
+ if field_type.is_a?(Crystalline::DiscriminatedUnion)
88
+ to_build[key] = field_type.parse(value)
89
+ elsif Crystalline::Utils.arr? field_type
88
90
  inner_type = Crystalline::Utils.arr_of(field_type)
89
91
  unmarshalled_array = value.map { |f| unmarshal_single(inner_type, f, format_metadata) }
90
92
  to_build[key] = unmarshalled_array
@@ -112,17 +114,21 @@ module Crystalline
112
114
  union_types = Crystalline::Utils.get_union_types(field_type)
113
115
  union_types = union_types.sort_by { |klass| Crystalline.non_nilable_attr_count(klass) }
114
116
 
115
- union_types.each do |union_type|
116
- begin
117
- to_build[key] = Crystalline.unmarshal_json(value, union_type)
118
- rescue TypeError
119
- next
120
- rescue NoMethodError
121
- next
122
- rescue KeyError
123
- next
117
+ if Crystalline.union_strategy == :populated_fields
118
+ to_build[key] = Crystalline.unmarshal_union_populated_fields(value, union_types)
119
+ else
120
+ union_types.each do |union_type|
121
+ begin
122
+ to_build[key] = Crystalline.unmarshal_json(value, union_type)
123
+ rescue TypeError
124
+ next
125
+ rescue NoMethodError
126
+ next
127
+ rescue KeyError
128
+ next
129
+ end
130
+ break
124
131
  end
125
- break
126
132
  end
127
133
  end
128
134
  elsif field_type.instance_of?(Class) && field_type.include?(::Crystalline::MetadataFields)
@@ -4,6 +4,11 @@
4
4
  # frozen_string_literal: true
5
5
 
6
6
  module Crystalline
7
+ @union_strategy = :left_to_right
8
+
9
+ class << self
10
+ attr_accessor :union_strategy
11
+ end
7
12
 
8
13
  def self.to_dict(complex)
9
14
  if complex.is_a? Array
@@ -29,21 +34,18 @@ module Crystalline
29
34
  if Crystalline::Utils.nilable? type
30
35
  type = Crystalline::Utils.nilable_of type
31
36
  end
32
- if type.instance_of?(Class) && type.include?(::Crystalline::MetadataFields)
37
+ if type.is_a?(Crystalline::DiscriminatedUnion)
38
+ type.parse(data)
39
+ elsif type.instance_of?(Class) && type.include?(::Crystalline::MetadataFields)
33
40
  type.from_dict(data)
34
41
  elsif Crystalline::Utils.union? type
35
42
  union_types = Crystalline::Utils.get_union_types(type)
36
43
  union_types = union_types.sort_by { |klass| Crystalline.non_nilable_attr_count(klass) }
37
44
 
38
- union_types.each do |union_type|
39
- unmarshalled_val = Crystalline.unmarshal_json(data, union_type)
40
- return unmarshalled_val
41
- rescue TypeError
42
- next
43
- rescue NoMethodError
44
- next
45
- rescue KeyError
46
- next
45
+ if Crystalline.union_strategy == :populated_fields
46
+ Crystalline.unmarshal_union_populated_fields(data, union_types)
47
+ else
48
+ Crystalline.unmarshal_union_left_to_right(data, union_types)
47
49
  end
48
50
  elsif Crystalline::Utils.arr? type
49
51
  data.map { |v| Crystalline.unmarshal_json(v, Crystalline::Utils.arr_of(type)) }
@@ -76,6 +78,88 @@ module Crystalline
76
78
  end
77
79
  end
78
80
 
81
+ def self.unmarshal_union_left_to_right(data, union_types)
82
+ union_types.each do |union_type|
83
+ return Crystalline.unmarshal_json(data, union_type)
84
+ rescue TypeError
85
+ next
86
+ rescue NoMethodError
87
+ next
88
+ rescue KeyError
89
+ next
90
+ end
91
+ nil
92
+ end
93
+
94
+ def self.unmarshal_union_populated_fields(data, union_types)
95
+ best_value = nil
96
+ best_matched = -1
97
+ best_inexact = 0
98
+ best_unmatched = 0
99
+
100
+ union_types.each do |union_type|
101
+ value = Crystalline.unmarshal_json(data, union_type)
102
+ matched, inexact, unmatched = count_matched_fields(value, data)
103
+
104
+ if best_value.nil? ||
105
+ matched > best_matched ||
106
+ (matched == best_matched && inexact < best_inexact) ||
107
+ (matched == best_matched && inexact == best_inexact && unmatched < best_unmatched)
108
+ best_value = value
109
+ best_matched = matched
110
+ best_inexact = inexact
111
+ best_unmatched = unmatched
112
+ end
113
+ rescue TypeError
114
+ next
115
+ rescue NoMethodError
116
+ next
117
+ rescue KeyError
118
+ next
119
+ end
120
+ best_value
121
+ end
122
+
123
+ def self.count_matched_fields(value, raw_data)
124
+ matched = 0
125
+ inexact = 0
126
+ unmatched = 0
127
+
128
+ if value.is_a?(Crystalline::Unknown)
129
+ return [0, 0, 0]
130
+ elsif value.class.include?(::Crystalline::MetadataFields)
131
+ value.fields.each do |field|
132
+ format_metadata = field.metadata.fetch(:format_json, {})
133
+ lookup = format_metadata.fetch(:letter_case, nil)&.call
134
+ field_val = value.send(field.name)
135
+
136
+ if raw_data.is_a?(::Hash) && lookup && raw_data.key?(lookup)
137
+ if field_val.class.include?(::Crystalline::MetadataFields) && raw_data[lookup].is_a?(::Hash)
138
+ nested_matched, nested_inexact, nested_unmatched = count_matched_fields(field_val, raw_data[lookup])
139
+ matched += nested_matched
140
+ inexact += nested_inexact
141
+ unmatched += nested_unmatched
142
+ else
143
+ matched += 1
144
+ if field_val.respond_to?(:known?) && !field_val.known?
145
+ inexact += 1
146
+ end
147
+ end
148
+ elsif !::Crystalline::Utils.nilable?(field.type)
149
+ unmatched += 1
150
+ end
151
+ end
152
+ elsif value.is_a?(::Array)
153
+ matched = value.length
154
+ elsif value.is_a?(::Hash)
155
+ matched = value.length
156
+ else
157
+ matched = 1
158
+ end
159
+
160
+ [matched, inexact, unmatched]
161
+ end
162
+
79
163
  def self.non_nilable_attr_count(klass)
80
164
  # somewhat sane sort ordering for Union deserialization.
81
165
  # All Crystalline objects return the number of non-nilable fields
@@ -40,6 +40,58 @@ module Crystalline
40
40
  class Boolean
41
41
  end
42
42
 
43
+ # Wraps an unrecognized payload from an open discriminated union.
44
+ # Produced when the discriminator value is missing, unknown, or schema validation fails.
45
+ class Unknown
46
+ attr_reader :raw
47
+
48
+ def initialize(raw:)
49
+ @raw = raw
50
+ end
51
+
52
+ def unknown?
53
+ true
54
+ end
55
+ end
56
+
57
+ # Forward-compatible discriminated union parser.
58
+ # Known discriminator values are deserialized to their mapped types.
59
+ # Unknown or invalid payloads are captured as Crystalline::Unknown.
60
+ class DiscriminatedUnion
61
+ attr_reader :discriminator, :variants
62
+
63
+ def initialize(discriminator, variants)
64
+ @discriminator = discriminator
65
+ @variants = variants
66
+ end
67
+
68
+ def parse(payload)
69
+ unless payload.is_a?(::Hash)
70
+ return Unknown.new(raw: payload)
71
+ end
72
+
73
+ disc_value = payload[@discriminator]
74
+ unless disc_value.is_a?(::String)
75
+ return Unknown.new(raw: payload)
76
+ end
77
+
78
+ variant_type = @variants[disc_value]
79
+ unless variant_type
80
+ return Unknown.new(raw: payload)
81
+ end
82
+
83
+ begin
84
+ Crystalline.unmarshal_json(payload, variant_type)
85
+ rescue StandardError
86
+ Unknown.new(raw: payload)
87
+ end
88
+ end
89
+ end
90
+
91
+ def self.unknown?(value)
92
+ value.is_a?(Unknown)
93
+ end
94
+
43
95
  module Enum
44
96
  def self.included(base)
45
97
  base.extend(ClassMethods)
@@ -0,0 +1,40 @@
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
+ class AchCreditSameDayTransferPaymentMethod
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+ # ID of the payment method.
16
+ field :payment_method_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('paymentMethodID'), required: true } }
17
+
18
+ field :payment_method_type, Models::Components::AchCreditSameDayTransferPaymentMethodPaymentMethodType, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('paymentMethodType'), required: true, 'decoder': Utils.enum_from_string(Models::Components::AchCreditSameDayTransferPaymentMethodPaymentMethodType, false) } }
19
+ # A bank account as contained within a payment method.
20
+ field :bank_account, Models::Components::TransferPaymentMethodsBankAccount, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('bankAccount'), required: true } }
21
+
22
+ sig { params(payment_method_id: ::String, payment_method_type: Models::Components::AchCreditSameDayTransferPaymentMethodPaymentMethodType, bank_account: Models::Components::TransferPaymentMethodsBankAccount).void }
23
+ def initialize(payment_method_id:, payment_method_type:, bank_account:)
24
+ @payment_method_id = payment_method_id
25
+ @payment_method_type = payment_method_type
26
+ @bank_account = bank_account
27
+ end
28
+
29
+ sig { params(other: T.untyped).returns(T::Boolean) }
30
+ def ==(other)
31
+ return false unless other.is_a? self.class
32
+ return false unless @payment_method_id == other.payment_method_id
33
+ return false unless @payment_method_type == other.payment_method_type
34
+ return false unless @bank_account == other.bank_account
35
+ true
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,17 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::AchCreditSameDayTransferPaymentMethod
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::AchCreditSameDayTransferPaymentMethod
11
+ def payment_method_id(); end
12
+ def payment_method_id=(str_); end
13
+ def payment_method_type(); end
14
+ def payment_method_type=(str_); end
15
+ def bank_account(); end
16
+ def bank_account=(str_); end
17
+ end
@@ -0,0 +1,18 @@
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
+ class AchCreditSameDayTransferPaymentMethodPaymentMethodType < T::Enum
12
+ enums do
13
+ ACH_CREDIT_SAME_DAY = new('ach-credit-same-day')
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,11 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::AchCreditSameDayTransferPaymentMethodPaymentMethodType
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::AchCreditSameDayTransferPaymentMethodPaymentMethodType
11
+ end
@@ -0,0 +1,40 @@
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
+ class AchCreditStandardTransferPaymentMethod
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+ # ID of the payment method.
16
+ field :payment_method_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('paymentMethodID'), required: true } }
17
+
18
+ field :payment_method_type, Models::Components::AchCreditStandardTransferPaymentMethodPaymentMethodType, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('paymentMethodType'), required: true, 'decoder': Utils.enum_from_string(Models::Components::AchCreditStandardTransferPaymentMethodPaymentMethodType, false) } }
19
+ # A bank account as contained within a payment method.
20
+ field :bank_account, Models::Components::TransferPaymentMethodsBankAccount, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('bankAccount'), required: true } }
21
+
22
+ sig { params(payment_method_id: ::String, payment_method_type: Models::Components::AchCreditStandardTransferPaymentMethodPaymentMethodType, bank_account: Models::Components::TransferPaymentMethodsBankAccount).void }
23
+ def initialize(payment_method_id:, payment_method_type:, bank_account:)
24
+ @payment_method_id = payment_method_id
25
+ @payment_method_type = payment_method_type
26
+ @bank_account = bank_account
27
+ end
28
+
29
+ sig { params(other: T.untyped).returns(T::Boolean) }
30
+ def ==(other)
31
+ return false unless other.is_a? self.class
32
+ return false unless @payment_method_id == other.payment_method_id
33
+ return false unless @payment_method_type == other.payment_method_type
34
+ return false unless @bank_account == other.bank_account
35
+ true
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,17 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::AchCreditStandardTransferPaymentMethod
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::AchCreditStandardTransferPaymentMethod
11
+ def payment_method_id(); end
12
+ def payment_method_id=(str_); end
13
+ def payment_method_type(); end
14
+ def payment_method_type=(str_); end
15
+ def bank_account(); end
16
+ def bank_account=(str_); end
17
+ end
@@ -0,0 +1,18 @@
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
+ class AchCreditStandardTransferPaymentMethodPaymentMethodType < T::Enum
12
+ enums do
13
+ ACH_CREDIT_STANDARD = new('ach-credit-standard')
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,11 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::AchCreditStandardTransferPaymentMethodPaymentMethodType
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::AchCreditStandardTransferPaymentMethodPaymentMethodType
11
+ end
@@ -0,0 +1,40 @@
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
+ class AchDebitCollectTransferPaymentMethod
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+ # ID of the payment method.
16
+ field :payment_method_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('paymentMethodID'), required: true } }
17
+
18
+ field :payment_method_type, Models::Components::AchDebitCollectTransferPaymentMethodPaymentMethodType, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('paymentMethodType'), required: true, 'decoder': Utils.enum_from_string(Models::Components::AchDebitCollectTransferPaymentMethodPaymentMethodType, false) } }
19
+ # A bank account as contained within a payment method.
20
+ field :bank_account, Models::Components::TransferPaymentMethodsBankAccount, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('bankAccount'), required: true } }
21
+
22
+ sig { params(payment_method_id: ::String, payment_method_type: Models::Components::AchDebitCollectTransferPaymentMethodPaymentMethodType, bank_account: Models::Components::TransferPaymentMethodsBankAccount).void }
23
+ def initialize(payment_method_id:, payment_method_type:, bank_account:)
24
+ @payment_method_id = payment_method_id
25
+ @payment_method_type = payment_method_type
26
+ @bank_account = bank_account
27
+ end
28
+
29
+ sig { params(other: T.untyped).returns(T::Boolean) }
30
+ def ==(other)
31
+ return false unless other.is_a? self.class
32
+ return false unless @payment_method_id == other.payment_method_id
33
+ return false unless @payment_method_type == other.payment_method_type
34
+ return false unless @bank_account == other.bank_account
35
+ true
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,17 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::AchDebitCollectTransferPaymentMethod
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::AchDebitCollectTransferPaymentMethod
11
+ def payment_method_id(); end
12
+ def payment_method_id=(str_); end
13
+ def payment_method_type(); end
14
+ def payment_method_type=(str_); end
15
+ def bank_account(); end
16
+ def bank_account=(str_); end
17
+ end
@@ -0,0 +1,18 @@
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
+ class AchDebitCollectTransferPaymentMethodPaymentMethodType < T::Enum
12
+ enums do
13
+ ACH_DEBIT_COLLECT = new('ach-debit-collect')
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,11 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::AchDebitCollectTransferPaymentMethodPaymentMethodType
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::AchDebitCollectTransferPaymentMethodPaymentMethodType
11
+ end
@@ -0,0 +1,40 @@
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
+ class AchDebitFundTransferPaymentMethod
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+ # ID of the payment method.
16
+ field :payment_method_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('paymentMethodID'), required: true } }
17
+
18
+ field :payment_method_type, Models::Components::AchDebitFundTransferPaymentMethodPaymentMethodType, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('paymentMethodType'), required: true, 'decoder': Utils.enum_from_string(Models::Components::AchDebitFundTransferPaymentMethodPaymentMethodType, false) } }
19
+ # A bank account as contained within a payment method.
20
+ field :bank_account, Models::Components::TransferPaymentMethodsBankAccount, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('bankAccount'), required: true } }
21
+
22
+ sig { params(payment_method_id: ::String, payment_method_type: Models::Components::AchDebitFundTransferPaymentMethodPaymentMethodType, bank_account: Models::Components::TransferPaymentMethodsBankAccount).void }
23
+ def initialize(payment_method_id:, payment_method_type:, bank_account:)
24
+ @payment_method_id = payment_method_id
25
+ @payment_method_type = payment_method_type
26
+ @bank_account = bank_account
27
+ end
28
+
29
+ sig { params(other: T.untyped).returns(T::Boolean) }
30
+ def ==(other)
31
+ return false unless other.is_a? self.class
32
+ return false unless @payment_method_id == other.payment_method_id
33
+ return false unless @payment_method_type == other.payment_method_type
34
+ return false unless @bank_account == other.bank_account
35
+ true
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,17 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::AchDebitFundTransferPaymentMethod
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::AchDebitFundTransferPaymentMethod
11
+ def payment_method_id(); end
12
+ def payment_method_id=(str_); end
13
+ def payment_method_type(); end
14
+ def payment_method_type=(str_); end
15
+ def bank_account(); end
16
+ def bank_account=(str_); end
17
+ end
@@ -0,0 +1,18 @@
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
+ class AchDebitFundTransferPaymentMethodPaymentMethodType < T::Enum
12
+ enums do
13
+ ACH_DEBIT_FUND = new('ach-debit-fund')
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,11 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::AchDebitFundTransferPaymentMethodPaymentMethodType
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::AchDebitFundTransferPaymentMethodPaymentMethodType
11
+ end
@@ -0,0 +1,40 @@
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
+ class ApplePayTransferPaymentMethod
12
+ extend T::Sig
13
+ include Crystalline::MetadataFields
14
+
15
+ # ID of the payment method.
16
+ field :payment_method_id, ::String, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('paymentMethodID'), required: true } }
17
+
18
+ field :payment_method_type, Models::Components::ApplePayTransferPaymentMethodPaymentMethodType, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('paymentMethodType'), required: true, 'decoder': Utils.enum_from_string(Models::Components::ApplePayTransferPaymentMethodPaymentMethodType, false) } }
19
+ # Describes an Apple Pay token on a Moov account.
20
+ field :apple_pay, Models::Components::ApplePayResponse, { 'format_json': { 'letter_case': ::Moov::Utils.field_name('applePay'), required: true } }
21
+
22
+ sig { params(payment_method_id: ::String, payment_method_type: Models::Components::ApplePayTransferPaymentMethodPaymentMethodType, apple_pay: Models::Components::ApplePayResponse).void }
23
+ def initialize(payment_method_id:, payment_method_type:, apple_pay:)
24
+ @payment_method_id = payment_method_id
25
+ @payment_method_type = payment_method_type
26
+ @apple_pay = apple_pay
27
+ end
28
+
29
+ sig { params(other: T.untyped).returns(T::Boolean) }
30
+ def ==(other)
31
+ return false unless other.is_a? self.class
32
+ return false unless @payment_method_id == other.payment_method_id
33
+ return false unless @payment_method_type == other.payment_method_type
34
+ return false unless @apple_pay == other.apple_pay
35
+ true
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,17 @@
1
+ # typed: true
2
+ # frozen_string_literal: true
3
+
4
+
5
+ class Moov::Models::Components::ApplePayTransferPaymentMethod
6
+ extend ::Crystalline::MetadataFields::ClassMethods
7
+ end
8
+
9
+
10
+ class Moov::Models::Components::ApplePayTransferPaymentMethod
11
+ def payment_method_id(); end
12
+ def payment_method_id=(str_); end
13
+ def payment_method_type(); end
14
+ def payment_method_type=(str_); end
15
+ def apple_pay(); end
16
+ def apple_pay=(str_); end
17
+ end