metronome-sdk 3.6.0 → 3.7.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 (94) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +16 -0
  3. data/README.md +1 -1
  4. data/lib/metronome_sdk/internal/type/enum.rb +0 -25
  5. data/lib/metronome_sdk/models/commit.rb +27 -1
  6. data/lib/metronome_sdk/models/contract.rb +140 -1
  7. data/lib/metronome_sdk/models/contract_v2.rb +168 -2
  8. data/lib/metronome_sdk/models/contract_without_amendments.rb +142 -1
  9. data/lib/metronome_sdk/models/prepaid_balance_threshold_configuration.rb +105 -2
  10. data/lib/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rb +103 -2
  11. data/lib/metronome_sdk/models/spend_threshold_configuration.rb +33 -1
  12. data/lib/metronome_sdk/models/spend_threshold_configuration_v2.rb +33 -1
  13. data/lib/metronome_sdk/models/v1/contract_amend_params.rb +29 -1
  14. data/lib/metronome_sdk/models/v1/contract_create_params.rb +146 -2
  15. data/lib/metronome_sdk/models/v1/contract_create_response.rb +1134 -3
  16. data/lib/metronome_sdk/models/v1/package_create_params.rb +115 -1
  17. data/lib/metronome_sdk/models/v1/package_list_response.rb +110 -1
  18. data/lib/metronome_sdk/models/v1/package_retrieve_response.rb +114 -1
  19. data/lib/metronome_sdk/models/v2/contract_edit_params.rb +303 -5
  20. data/lib/metronome_sdk/models/v2/contract_edit_response.rb +3862 -3
  21. data/lib/metronome_sdk/models/v2/contract_get_edit_history_response.rb +145 -3
  22. data/lib/metronome_sdk/resources/v1/contracts.rb +3 -1
  23. data/lib/metronome_sdk/resources/v1/packages.rb +6 -5
  24. data/lib/metronome_sdk/resources/v1.rb +0 -4
  25. data/lib/metronome_sdk/resources/v2/contracts.rb +5 -1
  26. data/lib/metronome_sdk/version.rb +1 -1
  27. data/lib/metronome_sdk.rb +0 -8
  28. data/rbi/metronome_sdk/models/commit.rbi +48 -0
  29. data/rbi/metronome_sdk/models/contract.rbi +354 -0
  30. data/rbi/metronome_sdk/models/contract_v2.rbi +409 -0
  31. data/rbi/metronome_sdk/models/contract_without_amendments.rbi +368 -0
  32. data/rbi/metronome_sdk/models/prepaid_balance_threshold_configuration.rbi +289 -6
  33. data/rbi/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rbi +283 -6
  34. data/rbi/metronome_sdk/models/spend_threshold_configuration.rbi +78 -3
  35. data/rbi/metronome_sdk/models/spend_threshold_configuration_v2.rbi +78 -3
  36. data/rbi/metronome_sdk/models/v1/contract_amend_params.rbi +54 -0
  37. data/rbi/metronome_sdk/models/v1/contract_create_params.rbi +368 -0
  38. data/rbi/metronome_sdk/models/v1/contract_create_response.rbi +2448 -4
  39. data/rbi/metronome_sdk/models/v1/package_create_params.rbi +310 -0
  40. data/rbi/metronome_sdk/models/v1/package_list_response.rbi +307 -0
  41. data/rbi/metronome_sdk/models/v1/package_retrieve_response.rbi +307 -0
  42. data/rbi/metronome_sdk/models/v2/contract_edit_params.rbi +734 -11
  43. data/rbi/metronome_sdk/models/v2/contract_edit_response.rbi +8612 -4
  44. data/rbi/metronome_sdk/models/v2/contract_get_edit_history_response.rbi +359 -11
  45. data/rbi/metronome_sdk/resources/v1/contracts.rbi +7 -0
  46. data/rbi/metronome_sdk/resources/v1/packages.rbi +8 -4
  47. data/rbi/metronome_sdk/resources/v1.rbi +0 -3
  48. data/rbi/metronome_sdk/resources/v2/contracts.rbi +10 -0
  49. data/sig/metronome_sdk/models/commit.rbs +19 -0
  50. data/sig/metronome_sdk/models/contract.rbs +151 -0
  51. data/sig/metronome_sdk/models/contract_v2.rbs +170 -0
  52. data/sig/metronome_sdk/models/contract_without_amendments.rbs +151 -0
  53. data/sig/metronome_sdk/models/prepaid_balance_threshold_configuration.rbs +116 -6
  54. data/sig/metronome_sdk/models/prepaid_balance_threshold_configuration_v2.rbs +116 -6
  55. data/sig/metronome_sdk/models/spend_threshold_configuration.rbs +31 -3
  56. data/sig/metronome_sdk/models/spend_threshold_configuration_v2.rbs +31 -3
  57. data/sig/metronome_sdk/models/v1/contract_amend_params.rbs +19 -0
  58. data/sig/metronome_sdk/models/v1/contract_create_params.rbs +134 -0
  59. data/sig/metronome_sdk/models/v1/contract_create_response.rbs +1045 -4
  60. data/sig/metronome_sdk/models/v1/package_create_params.rbs +115 -0
  61. data/sig/metronome_sdk/models/v1/package_list_response.rbs +115 -0
  62. data/sig/metronome_sdk/models/v1/package_retrieve_response.rbs +115 -0
  63. data/sig/metronome_sdk/models/v2/contract_edit_params.rbs +283 -9
  64. data/sig/metronome_sdk/models/v2/contract_edit_response.rbs +3792 -4
  65. data/sig/metronome_sdk/models/v2/contract_get_edit_history_response.rbs +142 -9
  66. data/sig/metronome_sdk/resources/v1/contracts.rbs +1 -0
  67. data/sig/metronome_sdk/resources/v1/packages.rbs +1 -0
  68. data/sig/metronome_sdk/resources/v1.rbs +0 -2
  69. data/sig/metronome_sdk/resources/v2/contracts.rbs +2 -0
  70. metadata +2 -26
  71. data/lib/metronome_sdk/models/v1/payment.rb +0 -196
  72. data/lib/metronome_sdk/models/v1/payment_attempt_params.rb +0 -28
  73. data/lib/metronome_sdk/models/v1/payment_attempt_response.rb +0 -18
  74. data/lib/metronome_sdk/models/v1/payment_cancel_params.rb +0 -28
  75. data/lib/metronome_sdk/models/v1/payment_cancel_response.rb +0 -18
  76. data/lib/metronome_sdk/models/v1/payment_list_params.rb +0 -53
  77. data/lib/metronome_sdk/models/v1/payment_status.rb +0 -19
  78. data/lib/metronome_sdk/resources/v1/payments.rb +0 -102
  79. data/rbi/metronome_sdk/models/v1/payment.rbi +0 -403
  80. data/rbi/metronome_sdk/models/v1/payment_attempt_params.rbi +0 -48
  81. data/rbi/metronome_sdk/models/v1/payment_attempt_response.rbi +0 -35
  82. data/rbi/metronome_sdk/models/v1/payment_cancel_params.rbi +0 -48
  83. data/rbi/metronome_sdk/models/v1/payment_cancel_response.rbi +0 -35
  84. data/rbi/metronome_sdk/models/v1/payment_list_params.rbi +0 -91
  85. data/rbi/metronome_sdk/models/v1/payment_status.rbi +0 -33
  86. data/rbi/metronome_sdk/resources/v1/payments.rbi +0 -72
  87. data/sig/metronome_sdk/models/v1/payment.rbs +0 -243
  88. data/sig/metronome_sdk/models/v1/payment_attempt_params.rbs +0 -30
  89. data/sig/metronome_sdk/models/v1/payment_attempt_response.rbs +0 -15
  90. data/sig/metronome_sdk/models/v1/payment_cancel_params.rbs +0 -30
  91. data/sig/metronome_sdk/models/v1/payment_cancel_response.rbs +0 -15
  92. data/sig/metronome_sdk/models/v1/payment_list_params.rbs +0 -56
  93. data/sig/metronome_sdk/models/v1/payment_status.rbs +0 -19
  94. data/sig/metronome_sdk/resources/v1/payments.rbs +0 -30
@@ -74,6 +74,27 @@ module MetronomeSDK
74
74
  end
75
75
  attr_writer :discount_configuration
76
76
 
77
+ sig do
78
+ returns(
79
+ T.nilable(
80
+ T::Array[
81
+ MetronomeSDK::PrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier
82
+ ]
83
+ )
84
+ )
85
+ end
86
+ attr_reader :threshold_balance_specifiers
87
+
88
+ sig do
89
+ params(
90
+ threshold_balance_specifiers:
91
+ T::Array[
92
+ MetronomeSDK::PrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::OrHash
93
+ ]
94
+ ).void
95
+ end
96
+ attr_writer :threshold_balance_specifiers
97
+
77
98
  sig do
78
99
  params(
79
100
  commit:
@@ -84,7 +105,11 @@ module MetronomeSDK
84
105
  threshold_amount: Float,
85
106
  custom_credit_type_id: String,
86
107
  discount_configuration:
87
- MetronomeSDK::PrepaidBalanceThresholdConfiguration::DiscountConfiguration::OrHash
108
+ MetronomeSDK::PrepaidBalanceThresholdConfiguration::DiscountConfiguration::OrHash,
109
+ threshold_balance_specifiers:
110
+ T::Array[
111
+ MetronomeSDK::PrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::OrHash
112
+ ]
88
113
  ).returns(T.attached_class)
89
114
  end
90
115
  def self.new(
@@ -102,7 +127,8 @@ module MetronomeSDK
102
127
  # If provided, the threshold, recharge-to amount, and the resulting threshold
103
128
  # commit amount will be in terms of this credit type instead of the fiat currency.
104
129
  custom_credit_type_id: nil,
105
- discount_configuration: nil
130
+ discount_configuration: nil,
131
+ threshold_balance_specifiers: nil
106
132
  )
107
133
  end
108
134
 
@@ -116,7 +142,11 @@ module MetronomeSDK
116
142
  threshold_amount: Float,
117
143
  custom_credit_type_id: String,
118
144
  discount_configuration:
119
- MetronomeSDK::PrepaidBalanceThresholdConfiguration::DiscountConfiguration
145
+ MetronomeSDK::PrepaidBalanceThresholdConfiguration::DiscountConfiguration,
146
+ threshold_balance_specifiers:
147
+ T::Array[
148
+ MetronomeSDK::PrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier
149
+ ]
120
150
  }
121
151
  )
122
152
  end
@@ -216,18 +246,271 @@ module MetronomeSDK
216
246
  sig { returns(Float) }
217
247
  attr_accessor :payment_fraction
218
248
 
219
- sig { params(payment_fraction: Float).returns(T.attached_class) }
249
+ # If provided, the discount stops applying once the spend tracker has accumulated
250
+ # this much spend in the billing period.
251
+ sig do
252
+ returns(
253
+ T.nilable(
254
+ MetronomeSDK::PrepaidBalanceThresholdConfiguration::DiscountConfiguration::Cap
255
+ )
256
+ )
257
+ end
258
+ attr_reader :cap
259
+
260
+ sig do
261
+ params(
262
+ cap:
263
+ MetronomeSDK::PrepaidBalanceThresholdConfiguration::DiscountConfiguration::Cap::OrHash
264
+ ).void
265
+ end
266
+ attr_writer :cap
267
+
268
+ sig do
269
+ params(
270
+ payment_fraction: Float,
271
+ cap:
272
+ MetronomeSDK::PrepaidBalanceThresholdConfiguration::DiscountConfiguration::Cap::OrHash
273
+ ).returns(T.attached_class)
274
+ end
220
275
  def self.new(
221
276
  # The fraction of the original amount that the customer pays after applying the
222
277
  # discount. For example, 0.85 means the customer pays 85% of the original amount
223
278
  # (a 15% discount).
224
- payment_fraction:
279
+ payment_fraction:,
280
+ # If provided, the discount stops applying once the spend tracker has accumulated
281
+ # this much spend in the billing period.
282
+ cap: nil
225
283
  )
226
284
  end
227
285
 
228
- sig { override.returns({ payment_fraction: Float }) }
286
+ sig do
287
+ override.returns(
288
+ {
289
+ payment_fraction: Float,
290
+ cap:
291
+ MetronomeSDK::PrepaidBalanceThresholdConfiguration::DiscountConfiguration::Cap
292
+ }
293
+ )
294
+ end
229
295
  def to_hash
230
296
  end
297
+
298
+ class Cap < MetronomeSDK::Internal::Type::BaseModel
299
+ OrHash =
300
+ T.type_alias do
301
+ T.any(
302
+ MetronomeSDK::PrepaidBalanceThresholdConfiguration::DiscountConfiguration::Cap,
303
+ MetronomeSDK::Internal::AnyHash
304
+ )
305
+ end
306
+
307
+ # Accumulated spend ceiling above which the discount stops applying.
308
+ sig { returns(Float) }
309
+ attr_accessor :amount
310
+
311
+ # Alias of the spend tracker this cap is measured against.
312
+ sig { returns(String) }
313
+ attr_accessor :spend_tracker_alias
314
+
315
+ # If provided, the discount stops applying once the spend tracker has accumulated
316
+ # this much spend in the billing period.
317
+ sig do
318
+ params(amount: Float, spend_tracker_alias: String).returns(
319
+ T.attached_class
320
+ )
321
+ end
322
+ def self.new(
323
+ # Accumulated spend ceiling above which the discount stops applying.
324
+ amount:,
325
+ # Alias of the spend tracker this cap is measured against.
326
+ spend_tracker_alias:
327
+ )
328
+ end
329
+
330
+ sig do
331
+ override.returns({ amount: Float, spend_tracker_alias: String })
332
+ end
333
+ def to_hash
334
+ end
335
+ end
336
+ end
337
+
338
+ class ThresholdBalanceSpecifier < MetronomeSDK::Internal::Type::BaseModel
339
+ OrHash =
340
+ T.type_alias do
341
+ T.any(
342
+ MetronomeSDK::PrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier,
343
+ MetronomeSDK::Internal::AnyHash
344
+ )
345
+ end
346
+
347
+ sig do
348
+ returns(
349
+ T::Array[
350
+ MetronomeSDK::PrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude
351
+ ]
352
+ )
353
+ end
354
+ attr_accessor :exclude
355
+
356
+ sig do
357
+ params(
358
+ exclude:
359
+ T::Array[
360
+ MetronomeSDK::PrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::OrHash
361
+ ]
362
+ ).returns(T.attached_class)
363
+ end
364
+ def self.new(exclude:)
365
+ end
366
+
367
+ sig do
368
+ override.returns(
369
+ {
370
+ exclude:
371
+ T::Array[
372
+ MetronomeSDK::PrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude
373
+ ]
374
+ }
375
+ )
376
+ end
377
+ def to_hash
378
+ end
379
+
380
+ class Exclude < MetronomeSDK::Internal::Type::BaseModel
381
+ OrHash =
382
+ T.type_alias do
383
+ T.any(
384
+ MetronomeSDK::PrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude,
385
+ MetronomeSDK::Internal::AnyHash
386
+ )
387
+ end
388
+
389
+ # If provided, balances with all the custom fields will not be considered when
390
+ # evaluating threshold billing
391
+ sig do
392
+ returns(
393
+ T::Array[
394
+ MetronomeSDK::PrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter
395
+ ]
396
+ )
397
+ end
398
+ attr_accessor :custom_field_filters
399
+
400
+ sig do
401
+ params(
402
+ custom_field_filters:
403
+ T::Array[
404
+ MetronomeSDK::PrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::OrHash
405
+ ]
406
+ ).returns(T.attached_class)
407
+ end
408
+ def self.new(
409
+ # If provided, balances with all the custom fields will not be considered when
410
+ # evaluating threshold billing
411
+ custom_field_filters:
412
+ )
413
+ end
414
+
415
+ sig do
416
+ override.returns(
417
+ {
418
+ custom_field_filters:
419
+ T::Array[
420
+ MetronomeSDK::PrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter
421
+ ]
422
+ }
423
+ )
424
+ end
425
+ def to_hash
426
+ end
427
+
428
+ class CustomFieldFilter < MetronomeSDK::Internal::Type::BaseModel
429
+ OrHash =
430
+ T.type_alias do
431
+ T.any(
432
+ MetronomeSDK::PrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter,
433
+ MetronomeSDK::Internal::AnyHash
434
+ )
435
+ end
436
+
437
+ sig do
438
+ returns(
439
+ MetronomeSDK::PrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::OrSymbol
440
+ )
441
+ end
442
+ attr_accessor :entity
443
+
444
+ sig { returns(String) }
445
+ attr_accessor :key
446
+
447
+ sig { returns(String) }
448
+ attr_accessor :value
449
+
450
+ sig do
451
+ params(
452
+ entity:
453
+ MetronomeSDK::PrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::OrSymbol,
454
+ key: String,
455
+ value: String
456
+ ).returns(T.attached_class)
457
+ end
458
+ def self.new(entity:, key:, value:)
459
+ end
460
+
461
+ sig do
462
+ override.returns(
463
+ {
464
+ entity:
465
+ MetronomeSDK::PrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::OrSymbol,
466
+ key: String,
467
+ value: String
468
+ }
469
+ )
470
+ end
471
+ def to_hash
472
+ end
473
+
474
+ module Entity
475
+ extend MetronomeSDK::Internal::Type::Enum
476
+
477
+ TaggedSymbol =
478
+ T.type_alias do
479
+ T.all(
480
+ Symbol,
481
+ MetronomeSDK::PrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity
482
+ )
483
+ end
484
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
485
+
486
+ COMMIT =
487
+ T.let(
488
+ :Commit,
489
+ MetronomeSDK::PrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::TaggedSymbol
490
+ )
491
+ CONTRACT_CREDIT =
492
+ T.let(
493
+ :ContractCredit,
494
+ MetronomeSDK::PrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::TaggedSymbol
495
+ )
496
+ CONTRACT_CREDIT_OR_COMMIT =
497
+ T.let(
498
+ :ContractCreditOrCommit,
499
+ MetronomeSDK::PrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::TaggedSymbol
500
+ )
501
+
502
+ sig do
503
+ override.returns(
504
+ T::Array[
505
+ MetronomeSDK::PrepaidBalanceThresholdConfiguration::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::TaggedSymbol
506
+ ]
507
+ )
508
+ end
509
+ def self.values
510
+ end
511
+ end
512
+ end
513
+ end
231
514
  end
232
515
  end
233
516
  end
@@ -74,6 +74,27 @@ module MetronomeSDK
74
74
  end
75
75
  attr_writer :discount_configuration
76
76
 
77
+ sig do
78
+ returns(
79
+ T.nilable(
80
+ T::Array[
81
+ MetronomeSDK::PrepaidBalanceThresholdConfigurationV2::ThresholdBalanceSpecifier
82
+ ]
83
+ )
84
+ )
85
+ end
86
+ attr_reader :threshold_balance_specifiers
87
+
88
+ sig do
89
+ params(
90
+ threshold_balance_specifiers:
91
+ T::Array[
92
+ MetronomeSDK::PrepaidBalanceThresholdConfigurationV2::ThresholdBalanceSpecifier::OrHash
93
+ ]
94
+ ).void
95
+ end
96
+ attr_writer :threshold_balance_specifiers
97
+
77
98
  sig do
78
99
  params(
79
100
  commit:
@@ -84,7 +105,11 @@ module MetronomeSDK
84
105
  threshold_amount: Float,
85
106
  custom_credit_type_id: String,
86
107
  discount_configuration:
87
- MetronomeSDK::PrepaidBalanceThresholdConfigurationV2::DiscountConfiguration::OrHash
108
+ MetronomeSDK::PrepaidBalanceThresholdConfigurationV2::DiscountConfiguration::OrHash,
109
+ threshold_balance_specifiers:
110
+ T::Array[
111
+ MetronomeSDK::PrepaidBalanceThresholdConfigurationV2::ThresholdBalanceSpecifier::OrHash
112
+ ]
88
113
  ).returns(T.attached_class)
89
114
  end
90
115
  def self.new(
@@ -102,7 +127,8 @@ module MetronomeSDK
102
127
  # If provided, the threshold, recharge-to amount, and the resulting threshold
103
128
  # commit amount will be in terms of this credit type instead of the fiat currency.
104
129
  custom_credit_type_id: nil,
105
- discount_configuration: nil
130
+ discount_configuration: nil,
131
+ threshold_balance_specifiers: nil
106
132
  )
107
133
  end
108
134
 
@@ -117,7 +143,11 @@ module MetronomeSDK
117
143
  threshold_amount: Float,
118
144
  custom_credit_type_id: String,
119
145
  discount_configuration:
120
- MetronomeSDK::PrepaidBalanceThresholdConfigurationV2::DiscountConfiguration
146
+ MetronomeSDK::PrepaidBalanceThresholdConfigurationV2::DiscountConfiguration,
147
+ threshold_balance_specifiers:
148
+ T::Array[
149
+ MetronomeSDK::PrepaidBalanceThresholdConfigurationV2::ThresholdBalanceSpecifier
150
+ ]
121
151
  }
122
152
  )
123
153
  end
@@ -221,18 +251,265 @@ module MetronomeSDK
221
251
  sig { returns(Float) }
222
252
  attr_accessor :payment_fraction
223
253
 
224
- sig { params(payment_fraction: Float).returns(T.attached_class) }
254
+ # If provided, the discount stops applying once the spend tracker has accumulated
255
+ # this much spend in the billing period.
256
+ sig do
257
+ returns(
258
+ T.nilable(
259
+ MetronomeSDK::PrepaidBalanceThresholdConfigurationV2::DiscountConfiguration::Cap
260
+ )
261
+ )
262
+ end
263
+ attr_reader :cap
264
+
265
+ sig do
266
+ params(
267
+ cap:
268
+ MetronomeSDK::PrepaidBalanceThresholdConfigurationV2::DiscountConfiguration::Cap::OrHash
269
+ ).void
270
+ end
271
+ attr_writer :cap
272
+
273
+ sig do
274
+ params(
275
+ payment_fraction: Float,
276
+ cap:
277
+ MetronomeSDK::PrepaidBalanceThresholdConfigurationV2::DiscountConfiguration::Cap::OrHash
278
+ ).returns(T.attached_class)
279
+ end
225
280
  def self.new(
226
281
  # The fraction of the original amount that the customer pays after applying the
227
282
  # discount. For example, 0.85 means the customer pays 85% of the original amount
228
283
  # (a 15% discount).
229
- payment_fraction:
284
+ payment_fraction:,
285
+ # If provided, the discount stops applying once the spend tracker has accumulated
286
+ # this much spend in the billing period.
287
+ cap: nil
230
288
  )
231
289
  end
232
290
 
233
- sig { override.returns({ payment_fraction: Float }) }
291
+ sig do
292
+ override.returns(
293
+ {
294
+ payment_fraction: Float,
295
+ cap:
296
+ MetronomeSDK::PrepaidBalanceThresholdConfigurationV2::DiscountConfiguration::Cap
297
+ }
298
+ )
299
+ end
300
+ def to_hash
301
+ end
302
+
303
+ class Cap < MetronomeSDK::Internal::Type::BaseModel
304
+ OrHash =
305
+ T.type_alias do
306
+ T.any(
307
+ MetronomeSDK::PrepaidBalanceThresholdConfigurationV2::DiscountConfiguration::Cap,
308
+ MetronomeSDK::Internal::AnyHash
309
+ )
310
+ end
311
+
312
+ # Accumulated spend ceiling above which the discount stops applying.
313
+ sig { returns(Float) }
314
+ attr_accessor :amount
315
+
316
+ # Alias of the spend tracker this cap is measured against.
317
+ sig { returns(String) }
318
+ attr_accessor :spend_tracker_alias
319
+
320
+ # If provided, the discount stops applying once the spend tracker has accumulated
321
+ # this much spend in the billing period.
322
+ sig do
323
+ params(amount: Float, spend_tracker_alias: String).returns(
324
+ T.attached_class
325
+ )
326
+ end
327
+ def self.new(
328
+ # Accumulated spend ceiling above which the discount stops applying.
329
+ amount:,
330
+ # Alias of the spend tracker this cap is measured against.
331
+ spend_tracker_alias:
332
+ )
333
+ end
334
+
335
+ sig do
336
+ override.returns({ amount: Float, spend_tracker_alias: String })
337
+ end
338
+ def to_hash
339
+ end
340
+ end
341
+ end
342
+
343
+ class ThresholdBalanceSpecifier < MetronomeSDK::Internal::Type::BaseModel
344
+ OrHash =
345
+ T.type_alias do
346
+ T.any(
347
+ MetronomeSDK::PrepaidBalanceThresholdConfigurationV2::ThresholdBalanceSpecifier,
348
+ MetronomeSDK::Internal::AnyHash
349
+ )
350
+ end
351
+
352
+ sig do
353
+ returns(
354
+ T::Array[
355
+ MetronomeSDK::PrepaidBalanceThresholdConfigurationV2::ThresholdBalanceSpecifier::Exclude
356
+ ]
357
+ )
358
+ end
359
+ attr_accessor :exclude
360
+
361
+ sig do
362
+ params(
363
+ exclude:
364
+ T::Array[
365
+ MetronomeSDK::PrepaidBalanceThresholdConfigurationV2::ThresholdBalanceSpecifier::Exclude::OrHash
366
+ ]
367
+ ).returns(T.attached_class)
368
+ end
369
+ def self.new(exclude:)
370
+ end
371
+
372
+ sig do
373
+ override.returns(
374
+ {
375
+ exclude:
376
+ T::Array[
377
+ MetronomeSDK::PrepaidBalanceThresholdConfigurationV2::ThresholdBalanceSpecifier::Exclude
378
+ ]
379
+ }
380
+ )
381
+ end
234
382
  def to_hash
235
383
  end
384
+
385
+ class Exclude < MetronomeSDK::Internal::Type::BaseModel
386
+ OrHash =
387
+ T.type_alias do
388
+ T.any(
389
+ MetronomeSDK::PrepaidBalanceThresholdConfigurationV2::ThresholdBalanceSpecifier::Exclude,
390
+ MetronomeSDK::Internal::AnyHash
391
+ )
392
+ end
393
+
394
+ sig do
395
+ returns(
396
+ T::Array[
397
+ MetronomeSDK::PrepaidBalanceThresholdConfigurationV2::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter
398
+ ]
399
+ )
400
+ end
401
+ attr_accessor :custom_field_filters
402
+
403
+ sig do
404
+ params(
405
+ custom_field_filters:
406
+ T::Array[
407
+ MetronomeSDK::PrepaidBalanceThresholdConfigurationV2::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::OrHash
408
+ ]
409
+ ).returns(T.attached_class)
410
+ end
411
+ def self.new(custom_field_filters:)
412
+ end
413
+
414
+ sig do
415
+ override.returns(
416
+ {
417
+ custom_field_filters:
418
+ T::Array[
419
+ MetronomeSDK::PrepaidBalanceThresholdConfigurationV2::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter
420
+ ]
421
+ }
422
+ )
423
+ end
424
+ def to_hash
425
+ end
426
+
427
+ class CustomFieldFilter < MetronomeSDK::Internal::Type::BaseModel
428
+ OrHash =
429
+ T.type_alias do
430
+ T.any(
431
+ MetronomeSDK::PrepaidBalanceThresholdConfigurationV2::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter,
432
+ MetronomeSDK::Internal::AnyHash
433
+ )
434
+ end
435
+
436
+ sig do
437
+ returns(
438
+ MetronomeSDK::PrepaidBalanceThresholdConfigurationV2::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::OrSymbol
439
+ )
440
+ end
441
+ attr_accessor :entity
442
+
443
+ sig { returns(String) }
444
+ attr_accessor :key
445
+
446
+ sig { returns(String) }
447
+ attr_accessor :value
448
+
449
+ sig do
450
+ params(
451
+ entity:
452
+ MetronomeSDK::PrepaidBalanceThresholdConfigurationV2::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::OrSymbol,
453
+ key: String,
454
+ value: String
455
+ ).returns(T.attached_class)
456
+ end
457
+ def self.new(entity:, key:, value:)
458
+ end
459
+
460
+ sig do
461
+ override.returns(
462
+ {
463
+ entity:
464
+ MetronomeSDK::PrepaidBalanceThresholdConfigurationV2::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::OrSymbol,
465
+ key: String,
466
+ value: String
467
+ }
468
+ )
469
+ end
470
+ def to_hash
471
+ end
472
+
473
+ module Entity
474
+ extend MetronomeSDK::Internal::Type::Enum
475
+
476
+ TaggedSymbol =
477
+ T.type_alias do
478
+ T.all(
479
+ Symbol,
480
+ MetronomeSDK::PrepaidBalanceThresholdConfigurationV2::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity
481
+ )
482
+ end
483
+ OrSymbol = T.type_alias { T.any(Symbol, String) }
484
+
485
+ COMMIT =
486
+ T.let(
487
+ :Commit,
488
+ MetronomeSDK::PrepaidBalanceThresholdConfigurationV2::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::TaggedSymbol
489
+ )
490
+ CONTRACT_CREDIT =
491
+ T.let(
492
+ :ContractCredit,
493
+ MetronomeSDK::PrepaidBalanceThresholdConfigurationV2::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::TaggedSymbol
494
+ )
495
+ CONTRACT_CREDIT_OR_COMMIT =
496
+ T.let(
497
+ :ContractCreditOrCommit,
498
+ MetronomeSDK::PrepaidBalanceThresholdConfigurationV2::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::TaggedSymbol
499
+ )
500
+
501
+ sig do
502
+ override.returns(
503
+ T::Array[
504
+ MetronomeSDK::PrepaidBalanceThresholdConfigurationV2::ThresholdBalanceSpecifier::Exclude::CustomFieldFilter::Entity::TaggedSymbol
505
+ ]
506
+ )
507
+ end
508
+ def self.values
509
+ end
510
+ end
511
+ end
512
+ end
236
513
  end
237
514
  end
238
515
  end