# File generated from our OpenAPI spec
# frozen_string_literal: true

# typed: true
module Stripe
  module Checkout
    class SessionListParams < ::Stripe::RequestParams
      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 CustomerDetails < ::Stripe::RequestParams
        # Customer's email address.
        sig { returns(String) }
        def email; end
        sig { params(_email: String).returns(String) }
        def email=(_email); end
        sig { params(email: String).void }
        def initialize(email: nil); end
      end
      # Only return Checkout Sessions that were created during the given date interval.
      sig { returns(T.nilable(T.any(Checkout::SessionListParams::Created, Integer))) }
      def created; end
      sig {
        params(_created: T.nilable(T.any(Checkout::SessionListParams::Created, Integer))).returns(T.nilable(T.any(Checkout::SessionListParams::Created, Integer)))
       }
      def created=(_created); end
      # Only return the Checkout Sessions for the Customer specified.
      sig { returns(T.nilable(String)) }
      def customer; end
      sig { params(_customer: T.nilable(String)).returns(T.nilable(String)) }
      def customer=(_customer); end
      # Only return the Checkout Sessions for the Account specified.
      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
      # Only return the Checkout Sessions for the Customer details specified.
      sig { returns(T.nilable(Checkout::SessionListParams::CustomerDetails)) }
      def customer_details; end
      sig {
        params(_customer_details: T.nilable(Checkout::SessionListParams::CustomerDetails)).returns(T.nilable(Checkout::SessionListParams::CustomerDetails))
       }
      def customer_details=(_customer_details); 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
      # Only return the Checkout Session for the PaymentIntent specified.
      sig { returns(T.nilable(String)) }
      def payment_intent; end
      sig { params(_payment_intent: T.nilable(String)).returns(T.nilable(String)) }
      def payment_intent=(_payment_intent); end
      # Only return the Checkout Sessions for the Payment Link specified.
      sig { returns(T.nilable(String)) }
      def payment_link; end
      sig { params(_payment_link: T.nilable(String)).returns(T.nilable(String)) }
      def payment_link=(_payment_link); 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
      # Only return the Checkout Sessions matching the given status.
      sig { returns(T.nilable(String)) }
      def status; end
      sig { params(_status: T.nilable(String)).returns(T.nilable(String)) }
      def status=(_status); end
      # Only return the Checkout Session for the subscription specified.
      sig { returns(T.nilable(String)) }
      def subscription; end
      sig { params(_subscription: T.nilable(String)).returns(T.nilable(String)) }
      def subscription=(_subscription); end
      sig {
        params(created: T.nilable(T.any(Checkout::SessionListParams::Created, Integer)), customer: T.nilable(String), customer_account: T.nilable(String), customer_details: T.nilable(Checkout::SessionListParams::CustomerDetails), ending_before: T.nilable(String), expand: T.nilable(T::Array[String]), limit: T.nilable(Integer), payment_intent: T.nilable(String), payment_link: T.nilable(String), starting_after: T.nilable(String), status: T.nilable(String), subscription: T.nilable(String)).void
       }
      def initialize(
        created: nil,
        customer: nil,
        customer_account: nil,
        customer_details: nil,
        ending_before: nil,
        expand: nil,
        limit: nil,
        payment_intent: nil,
        payment_link: nil,
        starting_after: nil,
        status: nil,
        subscription: nil
      ); end
    end
  end
end