# File generated from our OpenAPI spec
# frozen_string_literal: true

# typed: true
module Stripe
  class SubscriptionListParams < ::Stripe::RequestParams
    class AutomaticTax < ::Stripe::RequestParams
      # Enabled automatic tax calculation which will automatically compute tax rates on all invoices generated by the subscription.
      sig { returns(T::Boolean) }
      def enabled; end
      sig { params(_enabled: T::Boolean).returns(T::Boolean) }
      def enabled=(_enabled); end
      sig { params(enabled: T::Boolean).void }
      def initialize(enabled: nil); end
    end
    class Created < ::Stripe::RequestParams
      # Minimum value to filter by (exclusive)
      sig { returns(T.nilable(Integer)) }
      def gt; end
      sig { params(_gt: T.nilable(Integer)).returns(T.nilable(Integer)) }
      def gt=(_gt); end
      # Minimum value to filter by (inclusive)
      sig { returns(T.nilable(Integer)) }
      def gte; end
      sig { params(_gte: T.nilable(Integer)).returns(T.nilable(Integer)) }
      def gte=(_gte); end
      # Maximum value to filter by (exclusive)
      sig { returns(T.nilable(Integer)) }
      def lt; end
      sig { params(_lt: T.nilable(Integer)).returns(T.nilable(Integer)) }
      def lt=(_lt); end
      # Maximum value to filter by (inclusive)
      sig { returns(T.nilable(Integer)) }
      def lte; end
      sig { params(_lte: T.nilable(Integer)).returns(T.nilable(Integer)) }
      def lte=(_lte); end
      sig {
        params(gt: T.nilable(Integer), gte: T.nilable(Integer), lt: T.nilable(Integer), lte: T.nilable(Integer)).void
       }
      def initialize(gt: nil, gte: nil, lt: nil, lte: nil); end
    end
    class CurrentPeriodEnd < ::Stripe::RequestParams
      # Minimum value to filter by (exclusive)
      sig { returns(T.nilable(Integer)) }
      def gt; end
      sig { params(_gt: T.nilable(Integer)).returns(T.nilable(Integer)) }
      def gt=(_gt); end
      # Minimum value to filter by (inclusive)
      sig { returns(T.nilable(Integer)) }
      def gte; end
      sig { params(_gte: T.nilable(Integer)).returns(T.nilable(Integer)) }
      def gte=(_gte); end
      # Maximum value to filter by (exclusive)
      sig { returns(T.nilable(Integer)) }
      def lt; end
      sig { params(_lt: T.nilable(Integer)).returns(T.nilable(Integer)) }
      def lt=(_lt); end
      # Maximum value to filter by (inclusive)
      sig { returns(T.nilable(Integer)) }
      def lte; end
      sig { params(_lte: T.nilable(Integer)).returns(T.nilable(Integer)) }
      def lte=(_lte); end
      sig {
        params(gt: T.nilable(Integer), gte: T.nilable(Integer), lt: T.nilable(Integer), lte: T.nilable(Integer)).void
       }
      def initialize(gt: nil, gte: nil, lt: nil, lte: nil); end
    end
    class CurrentPeriodStart < ::Stripe::RequestParams
      # Minimum value to filter by (exclusive)
      sig { returns(T.nilable(Integer)) }
      def gt; end
      sig { params(_gt: T.nilable(Integer)).returns(T.nilable(Integer)) }
      def gt=(_gt); end
      # Minimum value to filter by (inclusive)
      sig { returns(T.nilable(Integer)) }
      def gte; end
      sig { params(_gte: T.nilable(Integer)).returns(T.nilable(Integer)) }
      def gte=(_gte); end
      # Maximum value to filter by (exclusive)
      sig { returns(T.nilable(Integer)) }
      def lt; end
      sig { params(_lt: T.nilable(Integer)).returns(T.nilable(Integer)) }
      def lt=(_lt); end
      # Maximum value to filter by (inclusive)
      sig { returns(T.nilable(Integer)) }
      def lte; end
      sig { params(_lte: T.nilable(Integer)).returns(T.nilable(Integer)) }
      def lte=(_lte); end
      sig {
        params(gt: T.nilable(Integer), gte: T.nilable(Integer), lt: T.nilable(Integer), lte: T.nilable(Integer)).void
       }
      def initialize(gt: nil, gte: nil, lt: nil, lte: nil); end
    end
    # Filter subscriptions by their automatic tax settings.
    sig { returns(T.nilable(SubscriptionListParams::AutomaticTax)) }
    def automatic_tax; end
    sig {
      params(_automatic_tax: T.nilable(SubscriptionListParams::AutomaticTax)).returns(T.nilable(SubscriptionListParams::AutomaticTax))
     }
    def automatic_tax=(_automatic_tax); end
    # The collection method of the subscriptions to retrieve. Either `charge_automatically` or `send_invoice`.
    sig { returns(T.nilable(String)) }
    def collection_method; end
    sig { params(_collection_method: T.nilable(String)).returns(T.nilable(String)) }
    def collection_method=(_collection_method); end
    # Only return subscriptions that were created during the given date interval.
    sig { returns(T.nilable(T.any(SubscriptionListParams::Created, Integer))) }
    def created; end
    sig {
      params(_created: T.nilable(T.any(SubscriptionListParams::Created, Integer))).returns(T.nilable(T.any(SubscriptionListParams::Created, Integer)))
     }
    def created=(_created); end
    # Only return subscriptions whose minimum item current_period_end falls within the given date interval.
    sig { returns(T.nilable(T.any(SubscriptionListParams::CurrentPeriodEnd, Integer))) }
    def current_period_end; end
    sig {
      params(_current_period_end: T.nilable(T.any(SubscriptionListParams::CurrentPeriodEnd, Integer))).returns(T.nilable(T.any(SubscriptionListParams::CurrentPeriodEnd, Integer)))
     }
    def current_period_end=(_current_period_end); end
    # Only return subscriptions whose maximum item current_period_start falls within the given date interval.
    sig { returns(T.nilable(T.any(SubscriptionListParams::CurrentPeriodStart, Integer))) }
    def current_period_start; end
    sig {
      params(_current_period_start: T.nilable(T.any(SubscriptionListParams::CurrentPeriodStart, Integer))).returns(T.nilable(T.any(SubscriptionListParams::CurrentPeriodStart, Integer)))
     }
    def current_period_start=(_current_period_start); end
    # The ID of the customer whose subscriptions you're retrieving.
    sig { returns(T.nilable(String)) }
    def customer; end
    sig { params(_customer: T.nilable(String)).returns(T.nilable(String)) }
    def customer=(_customer); end
    # The ID of the account representing the customer whose subscriptions you're retrieving.
    sig { returns(T.nilable(String)) }
    def customer_account; end
    sig { params(_customer_account: T.nilable(String)).returns(T.nilable(String)) }
    def customer_account=(_customer_account); end
    # A cursor for use in pagination. `ending_before` is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, starting with `obj_bar`, your subsequent call can include `ending_before=obj_bar` in order to fetch the previous page of the list.
    sig { returns(T.nilable(String)) }
    def ending_before; end
    sig { params(_ending_before: T.nilable(String)).returns(T.nilable(String)) }
    def ending_before=(_ending_before); end
    # Specifies which fields in the response should be expanded.
    sig { returns(T.nilable(T::Array[String])) }
    def expand; end
    sig { params(_expand: T.nilable(T::Array[String])).returns(T.nilable(T::Array[String])) }
    def expand=(_expand); end
    # A limit on the number of objects to be returned. Limit can range between 1 and 100, and the default is 10.
    sig { returns(T.nilable(Integer)) }
    def limit; end
    sig { params(_limit: T.nilable(Integer)).returns(T.nilable(Integer)) }
    def limit=(_limit); end
    # The ID of the plan whose subscriptions will be retrieved.
    sig { returns(T.nilable(String)) }
    def plan; end
    sig { params(_plan: T.nilable(String)).returns(T.nilable(String)) }
    def plan=(_plan); end
    # Filter for subscriptions that contain this recurring price ID.
    sig { returns(T.nilable(String)) }
    def price; end
    sig { params(_price: T.nilable(String)).returns(T.nilable(String)) }
    def price=(_price); end
    # A cursor for use in pagination. `starting_after` is an object ID that defines your place in the list. For instance, if you make a list request and receive 100 objects, ending with `obj_foo`, your subsequent call can include `starting_after=obj_foo` in order to fetch the next page of the list.
    sig { returns(T.nilable(String)) }
    def starting_after; end
    sig { params(_starting_after: T.nilable(String)).returns(T.nilable(String)) }
    def starting_after=(_starting_after); end
    # The status of the subscriptions to retrieve. Passing in a value of `canceled` will return all canceled subscriptions, including those belonging to deleted customers. Pass `ended` to find subscriptions that are canceled and subscriptions that are expired due to [incomplete payment](https://docs.stripe.com/billing/subscriptions/overview#subscription-statuses). Passing in a value of `all` will return subscriptions of all statuses. If no value is supplied, all subscriptions that have not been canceled are returned.
    sig { returns(T.nilable(String)) }
    def status; end
    sig { params(_status: T.nilable(String)).returns(T.nilable(String)) }
    def status=(_status); end
    # Filter for subscriptions that are associated with the specified test clock. The response will not include subscriptions with test clocks if this and the customer parameter is not set.
    sig { returns(T.nilable(String)) }
    def test_clock; end
    sig { params(_test_clock: T.nilable(String)).returns(T.nilable(String)) }
    def test_clock=(_test_clock); end
    sig {
      params(automatic_tax: T.nilable(SubscriptionListParams::AutomaticTax), collection_method: T.nilable(String), created: T.nilable(T.any(SubscriptionListParams::Created, Integer)), current_period_end: T.nilable(T.any(SubscriptionListParams::CurrentPeriodEnd, Integer)), current_period_start: T.nilable(T.any(SubscriptionListParams::CurrentPeriodStart, Integer)), customer: T.nilable(String), customer_account: T.nilable(String), ending_before: T.nilable(String), expand: T.nilable(T::Array[String]), limit: T.nilable(Integer), plan: T.nilable(String), price: T.nilable(String), starting_after: T.nilable(String), status: T.nilable(String), test_clock: T.nilable(String)).void
     }
    def initialize(
      automatic_tax: nil,
      collection_method: nil,
      created: nil,
      current_period_end: nil,
      current_period_start: nil,
      customer: nil,
      customer_account: nil,
      ending_before: nil,
      expand: nil,
      limit: nil,
      plan: nil,
      price: nil,
      starting_after: nil,
      status: nil,
      test_clock: nil
    ); end
  end
end