increase 1.187.0 → 1.188.0

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 (32) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -0
  3. data/README.md +9 -9
  4. data/lib/increase/models/account.rb +99 -1
  5. data/lib/increase/models/account_create_params.rb +96 -1
  6. data/lib/increase/models/account_statement.rb +43 -1
  7. data/lib/increase/models/account_update_params.rb +22 -1
  8. data/lib/increase/models/balance_lookup.rb +43 -1
  9. data/lib/increase/models/program.rb +23 -1
  10. data/lib/increase/models/simulations/program_create_params.rb +9 -1
  11. data/lib/increase/resources/accounts.rb +8 -2
  12. data/lib/increase/resources/simulations/programs.rb +3 -1
  13. data/lib/increase/version.rb +1 -1
  14. data/rbi/increase/models/account.rbi +146 -0
  15. data/rbi/increase/models/account_create_params.rbi +168 -0
  16. data/rbi/increase/models/account_statement.rbi +64 -0
  17. data/rbi/increase/models/account_update_params.rbi +41 -1
  18. data/rbi/increase/models/balance_lookup.rbi +64 -0
  19. data/rbi/increase/models/program.rbi +38 -0
  20. data/rbi/increase/models/simulations/program_create_params.rbi +11 -0
  21. data/rbi/increase/resources/accounts.rbi +9 -0
  22. data/rbi/increase/resources/simulations/programs.rbi +3 -0
  23. data/sig/increase/models/account.rbs +75 -0
  24. data/sig/increase/models/account_create_params.rbs +85 -0
  25. data/sig/increase/models/account_statement.rbs +28 -0
  26. data/sig/increase/models/account_update_params.rbs +20 -1
  27. data/sig/increase/models/balance_lookup.rbs +28 -0
  28. data/sig/increase/models/program.rbs +15 -0
  29. data/sig/increase/models/simulations/program_create_params.rbs +7 -0
  30. data/sig/increase/resources/accounts.rbs +3 -0
  31. data/sig/increase/resources/simulations/programs.rbs +1 -0
  32. metadata +1 -1
@@ -40,6 +40,10 @@ module Increase
40
40
  sig { returns(String) }
41
41
  attr_accessor :entity_id
42
42
 
43
+ # Whether the Account is funded by a loan or by deposits.
44
+ sig { returns(T.nilable(Increase::Account::Funding::TaggedSymbol)) }
45
+ attr_accessor :funding
46
+
43
47
  # The idempotency key you chose for this object. This value is unique across
44
48
  # Increase and is used to ensure that a request is only processed once. Learn more
45
49
  # about [idempotency](https://increase.com/documentation/idempotency-keys).
@@ -67,6 +71,13 @@ module Increase
67
71
  sig { returns(String) }
68
72
  attr_accessor :interest_rate
69
73
 
74
+ # The Account's loan-related information, if the Account is a loan account.
75
+ sig { returns(T.nilable(Increase::Account::Loan)) }
76
+ attr_reader :loan
77
+
78
+ sig { params(loan: T.nilable(Increase::Account::Loan::OrHash)).void }
79
+ attr_writer :loan
80
+
70
81
  # The name you choose for the Account.
71
82
  sig { returns(String) }
72
83
  attr_accessor :name
@@ -96,11 +107,13 @@ module Increase
96
107
  created_at: Time,
97
108
  currency: Increase::Account::Currency::OrSymbol,
98
109
  entity_id: String,
110
+ funding: T.nilable(Increase::Account::Funding::OrSymbol),
99
111
  idempotency_key: T.nilable(String),
100
112
  informational_entity_id: T.nilable(String),
101
113
  interest_accrued: String,
102
114
  interest_accrued_at: T.nilable(Date),
103
115
  interest_rate: String,
116
+ loan: T.nilable(Increase::Account::Loan::OrHash),
104
117
  name: String,
105
118
  program_id: String,
106
119
  status: Increase::Account::Status::OrSymbol,
@@ -128,6 +141,8 @@ module Increase
128
141
  currency:,
129
142
  # The identifier for the Entity the Account belongs to.
130
143
  entity_id:,
144
+ # Whether the Account is funded by a loan or by deposits.
145
+ funding:,
131
146
  # The idempotency key you chose for this object. This value is unique across
132
147
  # Increase and is used to ensure that a request is only processed once. Learn more
133
148
  # about [idempotency](https://increase.com/documentation/idempotency-keys).
@@ -145,6 +160,8 @@ module Increase
145
160
  # a decimal number. For example, a 1% interest rate would be represented as
146
161
  # "0.01".
147
162
  interest_rate:,
163
+ # The Account's loan-related information, if the Account is a loan account.
164
+ loan:,
148
165
  # The name you choose for the Account.
149
166
  name:,
150
167
  # The identifier of the Program determining the compliance and commercial terms of
@@ -168,11 +185,13 @@ module Increase
168
185
  created_at: Time,
169
186
  currency: Increase::Account::Currency::TaggedSymbol,
170
187
  entity_id: String,
188
+ funding: T.nilable(Increase::Account::Funding::TaggedSymbol),
171
189
  idempotency_key: T.nilable(String),
172
190
  informational_entity_id: T.nilable(String),
173
191
  interest_accrued: String,
174
192
  interest_accrued_at: T.nilable(Date),
175
193
  interest_rate: String,
194
+ loan: T.nilable(Increase::Account::Loan),
176
195
  name: String,
177
196
  program_id: String,
178
197
  status: Increase::Account::Status::TaggedSymbol,
@@ -227,6 +246,133 @@ module Increase
227
246
  end
228
247
  end
229
248
 
249
+ # Whether the Account is funded by a loan or by deposits.
250
+ module Funding
251
+ extend Increase::Internal::Type::Enum
252
+
253
+ TaggedSymbol =
254
+ T.type_alias { T.all(Symbol, Increase::Account::Funding) }
255
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
256
+
257
+ # An account funded by a loan. Before opening a loan account, contact support@increase.com to set up a loan program.
258
+ LOAN = T.let(:loan, Increase::Account::Funding::TaggedSymbol)
259
+
260
+ # An account funded by deposits.
261
+ DEPOSITS = T.let(:deposits, Increase::Account::Funding::TaggedSymbol)
262
+
263
+ sig do
264
+ override.returns(T::Array[Increase::Account::Funding::TaggedSymbol])
265
+ end
266
+ def self.values
267
+ end
268
+ end
269
+
270
+ class Loan < Increase::Internal::Type::BaseModel
271
+ OrHash =
272
+ T.type_alias do
273
+ T.any(Increase::Account::Loan, Increase::Internal::AnyHash)
274
+ end
275
+
276
+ # The maximum amount of money that can be borrowed on the Account.
277
+ sig { returns(Integer) }
278
+ attr_accessor :credit_limit
279
+
280
+ # The number of days after the statement date that the Account can be past due
281
+ # before being considered delinquent.
282
+ sig { returns(Integer) }
283
+ attr_accessor :grace_period_days
284
+
285
+ # The date on which the loan matures.
286
+ sig { returns(T.nilable(Date)) }
287
+ attr_accessor :maturity_date
288
+
289
+ # The day of the month on which the loan statement is generated.
290
+ sig { returns(Integer) }
291
+ attr_accessor :statement_day_of_month
292
+
293
+ # The type of payment for the loan.
294
+ sig do
295
+ returns(Increase::Account::Loan::StatementPaymentType::TaggedSymbol)
296
+ end
297
+ attr_accessor :statement_payment_type
298
+
299
+ # The Account's loan-related information, if the Account is a loan account.
300
+ sig do
301
+ params(
302
+ credit_limit: Integer,
303
+ grace_period_days: Integer,
304
+ maturity_date: T.nilable(Date),
305
+ statement_day_of_month: Integer,
306
+ statement_payment_type:
307
+ Increase::Account::Loan::StatementPaymentType::OrSymbol
308
+ ).returns(T.attached_class)
309
+ end
310
+ def self.new(
311
+ # The maximum amount of money that can be borrowed on the Account.
312
+ credit_limit:,
313
+ # The number of days after the statement date that the Account can be past due
314
+ # before being considered delinquent.
315
+ grace_period_days:,
316
+ # The date on which the loan matures.
317
+ maturity_date:,
318
+ # The day of the month on which the loan statement is generated.
319
+ statement_day_of_month:,
320
+ # The type of payment for the loan.
321
+ statement_payment_type:
322
+ )
323
+ end
324
+
325
+ sig do
326
+ override.returns(
327
+ {
328
+ credit_limit: Integer,
329
+ grace_period_days: Integer,
330
+ maturity_date: T.nilable(Date),
331
+ statement_day_of_month: Integer,
332
+ statement_payment_type:
333
+ Increase::Account::Loan::StatementPaymentType::TaggedSymbol
334
+ }
335
+ )
336
+ end
337
+ def to_hash
338
+ end
339
+
340
+ # The type of payment for the loan.
341
+ module StatementPaymentType
342
+ extend Increase::Internal::Type::Enum
343
+
344
+ TaggedSymbol =
345
+ T.type_alias do
346
+ T.all(Symbol, Increase::Account::Loan::StatementPaymentType)
347
+ end
348
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
349
+
350
+ # The borrower must pay the full balance of the loan at the end of the statement period.
351
+ BALANCE =
352
+ T.let(
353
+ :balance,
354
+ Increase::Account::Loan::StatementPaymentType::TaggedSymbol
355
+ )
356
+
357
+ # The borrower must pay the accrued interest at the end of the statement period.
358
+ INTEREST_UNTIL_MATURITY =
359
+ T.let(
360
+ :interest_until_maturity,
361
+ Increase::Account::Loan::StatementPaymentType::TaggedSymbol
362
+ )
363
+
364
+ sig do
365
+ override.returns(
366
+ T::Array[
367
+ Increase::Account::Loan::StatementPaymentType::TaggedSymbol
368
+ ]
369
+ )
370
+ end
371
+ def self.values
372
+ end
373
+ end
374
+ end
375
+
230
376
  # The status of the Account.
231
377
  module Status
232
378
  extend Increase::Internal::Type::Enum
@@ -22,6 +22,17 @@ module Increase
22
22
  sig { params(entity_id: String).void }
23
23
  attr_writer :entity_id
24
24
 
25
+ # Whether the Account is funded by a loan or by deposits.
26
+ sig do
27
+ returns(T.nilable(Increase::AccountCreateParams::Funding::OrSymbol))
28
+ end
29
+ attr_reader :funding
30
+
31
+ sig do
32
+ params(funding: Increase::AccountCreateParams::Funding::OrSymbol).void
33
+ end
34
+ attr_writer :funding
35
+
25
36
  # The identifier of an Entity that, while not owning the Account, is associated
26
37
  # with its activity. This is generally the beneficiary of the funds.
27
38
  sig { returns(T.nilable(String)) }
@@ -30,6 +41,13 @@ module Increase
30
41
  sig { params(informational_entity_id: String).void }
31
42
  attr_writer :informational_entity_id
32
43
 
44
+ # The loan details for the account.
45
+ sig { returns(T.nilable(Increase::AccountCreateParams::Loan)) }
46
+ attr_reader :loan
47
+
48
+ sig { params(loan: Increase::AccountCreateParams::Loan::OrHash).void }
49
+ attr_writer :loan
50
+
33
51
  # The identifier for the Program that this Account falls under. Required if you
34
52
  # operate more than one Program.
35
53
  sig { returns(T.nilable(String)) }
@@ -42,7 +60,9 @@ module Increase
42
60
  params(
43
61
  name: String,
44
62
  entity_id: String,
63
+ funding: Increase::AccountCreateParams::Funding::OrSymbol,
45
64
  informational_entity_id: String,
65
+ loan: Increase::AccountCreateParams::Loan::OrHash,
46
66
  program_id: String,
47
67
  request_options: Increase::RequestOptions::OrHash
48
68
  ).returns(T.attached_class)
@@ -52,9 +72,13 @@ module Increase
52
72
  name:,
53
73
  # The identifier for the Entity that will own the Account.
54
74
  entity_id: nil,
75
+ # Whether the Account is funded by a loan or by deposits.
76
+ funding: nil,
55
77
  # The identifier of an Entity that, while not owning the Account, is associated
56
78
  # with its activity. This is generally the beneficiary of the funds.
57
79
  informational_entity_id: nil,
80
+ # The loan details for the account.
81
+ loan: nil,
58
82
  # The identifier for the Program that this Account falls under. Required if you
59
83
  # operate more than one Program.
60
84
  program_id: nil,
@@ -67,7 +91,9 @@ module Increase
67
91
  {
68
92
  name: String,
69
93
  entity_id: String,
94
+ funding: Increase::AccountCreateParams::Funding::OrSymbol,
70
95
  informational_entity_id: String,
96
+ loan: Increase::AccountCreateParams::Loan,
71
97
  program_id: String,
72
98
  request_options: Increase::RequestOptions
73
99
  }
@@ -75,6 +101,148 @@ module Increase
75
101
  end
76
102
  def to_hash
77
103
  end
104
+
105
+ # Whether the Account is funded by a loan or by deposits.
106
+ module Funding
107
+ extend Increase::Internal::Type::Enum
108
+
109
+ TaggedSymbol =
110
+ T.type_alias { T.all(Symbol, Increase::AccountCreateParams::Funding) }
111
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
112
+
113
+ # An account funded by a loan. Before opening a loan account, contact support@increase.com to set up a loan program.
114
+ LOAN =
115
+ T.let(:loan, Increase::AccountCreateParams::Funding::TaggedSymbol)
116
+
117
+ # An account funded by deposits.
118
+ DEPOSITS =
119
+ T.let(:deposits, Increase::AccountCreateParams::Funding::TaggedSymbol)
120
+
121
+ sig do
122
+ override.returns(
123
+ T::Array[Increase::AccountCreateParams::Funding::TaggedSymbol]
124
+ )
125
+ end
126
+ def self.values
127
+ end
128
+ end
129
+
130
+ class Loan < Increase::Internal::Type::BaseModel
131
+ OrHash =
132
+ T.type_alias do
133
+ T.any(
134
+ Increase::AccountCreateParams::Loan,
135
+ Increase::Internal::AnyHash
136
+ )
137
+ end
138
+
139
+ # The maximum amount of money that can be drawn from the Account.
140
+ sig { returns(Integer) }
141
+ attr_accessor :credit_limit
142
+
143
+ # The number of days after the statement date that the Account can be past due
144
+ # before being considered delinquent.
145
+ sig { returns(Integer) }
146
+ attr_accessor :grace_period_days
147
+
148
+ # The day of the month on which the loan statement is generated.
149
+ sig { returns(Integer) }
150
+ attr_accessor :statement_day_of_month
151
+
152
+ # The type of statement payment for the account.
153
+ sig do
154
+ returns(
155
+ Increase::AccountCreateParams::Loan::StatementPaymentType::OrSymbol
156
+ )
157
+ end
158
+ attr_accessor :statement_payment_type
159
+
160
+ # The date on which the loan matures.
161
+ sig { returns(T.nilable(Date)) }
162
+ attr_reader :maturity_date
163
+
164
+ sig { params(maturity_date: Date).void }
165
+ attr_writer :maturity_date
166
+
167
+ # The loan details for the account.
168
+ sig do
169
+ params(
170
+ credit_limit: Integer,
171
+ grace_period_days: Integer,
172
+ statement_day_of_month: Integer,
173
+ statement_payment_type:
174
+ Increase::AccountCreateParams::Loan::StatementPaymentType::OrSymbol,
175
+ maturity_date: Date
176
+ ).returns(T.attached_class)
177
+ end
178
+ def self.new(
179
+ # The maximum amount of money that can be drawn from the Account.
180
+ credit_limit:,
181
+ # The number of days after the statement date that the Account can be past due
182
+ # before being considered delinquent.
183
+ grace_period_days:,
184
+ # The day of the month on which the loan statement is generated.
185
+ statement_day_of_month:,
186
+ # The type of statement payment for the account.
187
+ statement_payment_type:,
188
+ # The date on which the loan matures.
189
+ maturity_date: nil
190
+ )
191
+ end
192
+
193
+ sig do
194
+ override.returns(
195
+ {
196
+ credit_limit: Integer,
197
+ grace_period_days: Integer,
198
+ statement_day_of_month: Integer,
199
+ statement_payment_type:
200
+ Increase::AccountCreateParams::Loan::StatementPaymentType::OrSymbol,
201
+ maturity_date: Date
202
+ }
203
+ )
204
+ end
205
+ def to_hash
206
+ end
207
+
208
+ # The type of statement payment for the account.
209
+ module StatementPaymentType
210
+ extend Increase::Internal::Type::Enum
211
+
212
+ TaggedSymbol =
213
+ T.type_alias do
214
+ T.all(
215
+ Symbol,
216
+ Increase::AccountCreateParams::Loan::StatementPaymentType
217
+ )
218
+ end
219
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
220
+
221
+ # The borrower must pay the full balance of the loan at the end of the statement period.
222
+ BALANCE =
223
+ T.let(
224
+ :balance,
225
+ Increase::AccountCreateParams::Loan::StatementPaymentType::TaggedSymbol
226
+ )
227
+
228
+ # The borrower must pay the accrued interest at the end of the statement period.
229
+ INTEREST_UNTIL_MATURITY =
230
+ T.let(
231
+ :interest_until_maturity,
232
+ Increase::AccountCreateParams::Loan::StatementPaymentType::TaggedSymbol
233
+ )
234
+
235
+ sig do
236
+ override.returns(
237
+ T::Array[
238
+ Increase::AccountCreateParams::Loan::StatementPaymentType::TaggedSymbol
239
+ ]
240
+ )
241
+ end
242
+ def self.values
243
+ end
244
+ end
245
+ end
78
246
  end
79
247
  end
80
248
  end
@@ -29,6 +29,15 @@ module Increase
29
29
  sig { returns(String) }
30
30
  attr_accessor :file_id
31
31
 
32
+ # The loan balances.
33
+ sig { returns(T.nilable(Increase::AccountStatement::Loan)) }
34
+ attr_reader :loan
35
+
36
+ sig do
37
+ params(loan: T.nilable(Increase::AccountStatement::Loan::OrHash)).void
38
+ end
39
+ attr_writer :loan
40
+
32
41
  # The Account's balance at the start of its statement period.
33
42
  sig { returns(Integer) }
34
43
  attr_accessor :starting_balance
@@ -58,6 +67,7 @@ module Increase
58
67
  created_at: Time,
59
68
  ending_balance: Integer,
60
69
  file_id: String,
70
+ loan: T.nilable(Increase::AccountStatement::Loan::OrHash),
61
71
  starting_balance: Integer,
62
72
  statement_period_end: Time,
63
73
  statement_period_start: Time,
@@ -76,6 +86,8 @@ module Increase
76
86
  ending_balance:,
77
87
  # The identifier of the File containing a PDF of the statement.
78
88
  file_id:,
89
+ # The loan balances.
90
+ loan:,
79
91
  # The Account's balance at the start of its statement period.
80
92
  starting_balance:,
81
93
  # The [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) time representing the end
@@ -98,6 +110,7 @@ module Increase
98
110
  created_at: Time,
99
111
  ending_balance: Integer,
100
112
  file_id: String,
113
+ loan: T.nilable(Increase::AccountStatement::Loan),
101
114
  starting_balance: Integer,
102
115
  statement_period_end: Time,
103
116
  statement_period_start: Time,
@@ -108,6 +121,57 @@ module Increase
108
121
  def to_hash
109
122
  end
110
123
 
124
+ class Loan < Increase::Internal::Type::BaseModel
125
+ OrHash =
126
+ T.type_alias do
127
+ T.any(Increase::AccountStatement::Loan, Increase::Internal::AnyHash)
128
+ end
129
+
130
+ # The [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) time at which the loan
131
+ # payment is due.
132
+ sig { returns(T.nilable(Time)) }
133
+ attr_accessor :due_at
134
+
135
+ # The total amount due on the loan.
136
+ sig { returns(Integer) }
137
+ attr_accessor :due_balance
138
+
139
+ # The amount past due on the loan.
140
+ sig { returns(Integer) }
141
+ attr_accessor :past_due_balance
142
+
143
+ # The loan balances.
144
+ sig do
145
+ params(
146
+ due_at: T.nilable(Time),
147
+ due_balance: Integer,
148
+ past_due_balance: Integer
149
+ ).returns(T.attached_class)
150
+ end
151
+ def self.new(
152
+ # The [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) time at which the loan
153
+ # payment is due.
154
+ due_at:,
155
+ # The total amount due on the loan.
156
+ due_balance:,
157
+ # The amount past due on the loan.
158
+ past_due_balance:
159
+ )
160
+ end
161
+
162
+ sig do
163
+ override.returns(
164
+ {
165
+ due_at: T.nilable(Time),
166
+ due_balance: Integer,
167
+ past_due_balance: Integer
168
+ }
169
+ )
170
+ end
171
+ def to_hash
172
+ end
173
+ end
174
+
111
175
  # A constant representing the object's type. For this resource it will always be
112
176
  # `account_statement`.
113
177
  module Type
@@ -11,6 +11,13 @@ module Increase
11
11
  T.any(Increase::AccountUpdateParams, Increase::Internal::AnyHash)
12
12
  end
13
13
 
14
+ # The loan details for the account.
15
+ sig { returns(T.nilable(Increase::AccountUpdateParams::Loan)) }
16
+ attr_reader :loan
17
+
18
+ sig { params(loan: Increase::AccountUpdateParams::Loan::OrHash).void }
19
+ attr_writer :loan
20
+
14
21
  # The new name of the Account.
15
22
  sig { returns(T.nilable(String)) }
16
23
  attr_reader :name
@@ -20,11 +27,14 @@ module Increase
20
27
 
21
28
  sig do
22
29
  params(
30
+ loan: Increase::AccountUpdateParams::Loan::OrHash,
23
31
  name: String,
24
32
  request_options: Increase::RequestOptions::OrHash
25
33
  ).returns(T.attached_class)
26
34
  end
27
35
  def self.new(
36
+ # The loan details for the account.
37
+ loan: nil,
28
38
  # The new name of the Account.
29
39
  name: nil,
30
40
  request_options: {}
@@ -33,11 +43,41 @@ module Increase
33
43
 
34
44
  sig do
35
45
  override.returns(
36
- { name: String, request_options: Increase::RequestOptions }
46
+ {
47
+ loan: Increase::AccountUpdateParams::Loan,
48
+ name: String,
49
+ request_options: Increase::RequestOptions
50
+ }
37
51
  )
38
52
  end
39
53
  def to_hash
40
54
  end
55
+
56
+ class Loan < Increase::Internal::Type::BaseModel
57
+ OrHash =
58
+ T.type_alias do
59
+ T.any(
60
+ Increase::AccountUpdateParams::Loan,
61
+ Increase::Internal::AnyHash
62
+ )
63
+ end
64
+
65
+ # The maximum amount of money that can be drawn from the Account.
66
+ sig { returns(Integer) }
67
+ attr_accessor :credit_limit
68
+
69
+ # The loan details for the account.
70
+ sig { params(credit_limit: Integer).returns(T.attached_class) }
71
+ def self.new(
72
+ # The maximum amount of money that can be drawn from the Account.
73
+ credit_limit:
74
+ )
75
+ end
76
+
77
+ sig { override.returns({ credit_limit: Integer }) }
78
+ def to_hash
79
+ end
80
+ end
41
81
  end
42
82
  end
43
83
  end
@@ -22,6 +22,15 @@ module Increase
22
22
  sig { returns(Integer) }
23
23
  attr_accessor :current_balance
24
24
 
25
+ # The loan balances for the Account.
26
+ sig { returns(T.nilable(Increase::BalanceLookup::Loan)) }
27
+ attr_reader :loan
28
+
29
+ sig do
30
+ params(loan: T.nilable(Increase::BalanceLookup::Loan::OrHash)).void
31
+ end
32
+ attr_writer :loan
33
+
25
34
  # A constant representing the object's type. For this resource it will always be
26
35
  # `balance_lookup`.
27
36
  sig { returns(Increase::BalanceLookup::Type::TaggedSymbol) }
@@ -34,6 +43,7 @@ module Increase
34
43
  account_id: String,
35
44
  available_balance: Integer,
36
45
  current_balance: Integer,
46
+ loan: T.nilable(Increase::BalanceLookup::Loan::OrHash),
37
47
  type: Increase::BalanceLookup::Type::OrSymbol
38
48
  ).returns(T.attached_class)
39
49
  end
@@ -46,6 +56,8 @@ module Increase
46
56
  # The Account's current balance, representing the sum of all posted Transactions
47
57
  # on the Account.
48
58
  current_balance:,
59
+ # The loan balances for the Account.
60
+ loan:,
49
61
  # A constant representing the object's type. For this resource it will always be
50
62
  # `balance_lookup`.
51
63
  type:
@@ -58,6 +70,7 @@ module Increase
58
70
  account_id: String,
59
71
  available_balance: Integer,
60
72
  current_balance: Integer,
73
+ loan: T.nilable(Increase::BalanceLookup::Loan),
61
74
  type: Increase::BalanceLookup::Type::TaggedSymbol
62
75
  }
63
76
  )
@@ -65,6 +78,57 @@ module Increase
65
78
  def to_hash
66
79
  end
67
80
 
81
+ class Loan < Increase::Internal::Type::BaseModel
82
+ OrHash =
83
+ T.type_alias do
84
+ T.any(Increase::BalanceLookup::Loan, Increase::Internal::AnyHash)
85
+ end
86
+
87
+ # The [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) time at which the loan
88
+ # payment is due.
89
+ sig { returns(T.nilable(Time)) }
90
+ attr_accessor :due_at
91
+
92
+ # The total amount due on the loan.
93
+ sig { returns(Integer) }
94
+ attr_accessor :due_balance
95
+
96
+ # The amount past due on the loan.
97
+ sig { returns(Integer) }
98
+ attr_accessor :past_due_balance
99
+
100
+ # The loan balances for the Account.
101
+ sig do
102
+ params(
103
+ due_at: T.nilable(Time),
104
+ due_balance: Integer,
105
+ past_due_balance: Integer
106
+ ).returns(T.attached_class)
107
+ end
108
+ def self.new(
109
+ # The [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) time at which the loan
110
+ # payment is due.
111
+ due_at:,
112
+ # The total amount due on the loan.
113
+ due_balance:,
114
+ # The amount past due on the loan.
115
+ past_due_balance:
116
+ )
117
+ end
118
+
119
+ sig do
120
+ override.returns(
121
+ {
122
+ due_at: T.nilable(Time),
123
+ due_balance: Integer,
124
+ past_due_balance: Integer
125
+ }
126
+ )
127
+ end
128
+ def to_hash
129
+ end
130
+ end
131
+
68
132
  # A constant representing the object's type. For this resource it will always be
69
133
  # `balance_lookup`.
70
134
  module Type