lib/lithic.rb



# frozen_string_literal: true

# Standard libraries.
# rubocop:disable Lint/RedundantRequireStatement
require "English"
require "cgi"
require "date"
require "erb"
require "etc"
require "json"
require "net/http"
require "pathname"
require "rbconfig"
require "securerandom"
require "set"
require "stringio"
require "time"
require "uri"
# rubocop:enable Lint/RedundantRequireStatement

# We already ship the preferred sorbet manifests in the package itself.
# `tapioca` currently does not offer us a way to opt out of unnecessary compilation.
if Object.const_defined?(:Tapioca) &&
   caller.chain([$PROGRAM_NAME]).chain(ARGV).any?(/tapioca/) &&
   ARGV.none?(/dsl/)
  return
end

# Gems.
require "connection_pool"

# Package files.
require_relative "lithic/version"
require_relative "lithic/internal/util"
require_relative "lithic/internal/type/converter"
require_relative "lithic/internal/type/unknown"
require_relative "lithic/internal/type/boolean"
require_relative "lithic/internal/type/file_input"
require_relative "lithic/internal/type/enum"
require_relative "lithic/internal/type/union"
require_relative "lithic/internal/type/array_of"
require_relative "lithic/internal/type/hash_of"
require_relative "lithic/internal/type/base_model"
require_relative "lithic/internal/type/base_page"
require_relative "lithic/internal/type/request_parameters"
require_relative "lithic/internal"
require_relative "lithic/request_options"
require_relative "lithic/file_part"
require_relative "lithic/errors"
require_relative "lithic/internal/transport/base_client"
require_relative "lithic/internal/transport/pooled_net_requester"
require_relative "lithic/client"
require_relative "lithic/internal/cursor_page"
require_relative "lithic/internal/single_page"
require_relative "lithic/models/non_pci_card"
require_relative "lithic/models/payment"
require_relative "lithic/models/three_ds/challenge_response"
require_relative "lithic/models/account"
require_relative "lithic/models/account_financial_account_type"
require_relative "lithic/models/account_holder"
require_relative "lithic/models/account_holder_create_params"
require_relative "lithic/models/account_holder_create_response"
require_relative "lithic/models/account_holder_list_documents_params"
require_relative "lithic/models/account_holder_list_documents_response"
require_relative "lithic/models/account_holder_list_params"
require_relative "lithic/models/account_holder_retrieve_document_params"
require_relative "lithic/models/account_holder_retrieve_params"
require_relative "lithic/models/account_holder_simulate_enrollment_document_review_params"
require_relative "lithic/models/account_holder_simulate_enrollment_review_params"
require_relative "lithic/models/account_holder_simulate_enrollment_review_response"
require_relative "lithic/models/account_holder_update_params"
require_relative "lithic/models/account_holder_update_response"
require_relative "lithic/models/account_holder_upload_document_params"
require_relative "lithic/models/account_list_params"
require_relative "lithic/models/account_retrieve_params"
require_relative "lithic/models/account_retrieve_spend_limits_params"
require_relative "lithic/models/account_spend_limits"
require_relative "lithic/models/account_update_params"
require_relative "lithic/models/address"
require_relative "lithic/models/address_update"
require_relative "lithic/models/aggregate_balance"
require_relative "lithic/models/aggregate_balance_list_params"
require_relative "lithic/models/api_status"
require_relative "lithic/models/auth_rules/auth_rule"
require_relative "lithic/models/auth_rules/auth_rule_condition"
require_relative "lithic/models/auth_rules/conditional_attribute"
require_relative "lithic/models/auth_rules/conditional_block_parameters"
require_relative "lithic/models/auth_rules/v2/backtest_create_params"
require_relative "lithic/models/auth_rules/v2/backtest_create_response"
require_relative "lithic/models/auth_rules/v2/backtest_results"
require_relative "lithic/models/auth_rules/v2/backtest_retrieve_params"
require_relative "lithic/models/auth_rules/v2_apply_params"
require_relative "lithic/models/auth_rules/v2_apply_response"
require_relative "lithic/models/auth_rules/v2_create_params"
require_relative "lithic/models/auth_rules/v2_create_response"
require_relative "lithic/models/auth_rules/v2_delete_params"
require_relative "lithic/models/auth_rules/v2_draft_params"
require_relative "lithic/models/auth_rules/v2_draft_response"
require_relative "lithic/models/auth_rules/v2_list_params"
require_relative "lithic/models/auth_rules/v2_list_response"
require_relative "lithic/models/auth_rules/v2_promote_params"
require_relative "lithic/models/auth_rules/v2_promote_response"
require_relative "lithic/models/auth_rules/v2_report_params"
require_relative "lithic/models/auth_rules/v2_report_response"
require_relative "lithic/models/auth_rules/v2_retrieve_params"
require_relative "lithic/models/auth_rules/v2_retrieve_response"
require_relative "lithic/models/auth_rules/v2_update_params"
require_relative "lithic/models/auth_rules/v2_update_response"
require_relative "lithic/models/auth_rules/velocity_limit_params"
require_relative "lithic/models/auth_rules/velocity_limit_params_period_window"
require_relative "lithic/models/auth_stream_enrollment_retrieve_secret_params"
require_relative "lithic/models/auth_stream_enrollment_rotate_secret_params"
require_relative "lithic/models/auth_stream_secret"
require_relative "lithic/models/balance"
require_relative "lithic/models/balance_list_params"
require_relative "lithic/models/book_transfer_create_params"
require_relative "lithic/models/book_transfer_list_params"
require_relative "lithic/models/book_transfer_response"
require_relative "lithic/models/book_transfer_retrieve_params"
require_relative "lithic/models/book_transfer_reverse_params"
require_relative "lithic/models/card"
require_relative "lithic/models/card_convert_physical_params"
require_relative "lithic/models/card_create_params"
require_relative "lithic/models/card_embed_params"
require_relative "lithic/models/card_embed_response"
require_relative "lithic/models/card_list_params"
require_relative "lithic/models/card_program"
require_relative "lithic/models/card_program_list_params"
require_relative "lithic/models/card_program_retrieve_params"
require_relative "lithic/models/card_provision_params"
require_relative "lithic/models/card_provision_response"
require_relative "lithic/models/card_reissue_params"
require_relative "lithic/models/card_renew_params"
require_relative "lithic/models/card_retrieve_params"
require_relative "lithic/models/card_retrieve_spend_limits_params"
require_relative "lithic/models/cards/aggregate_balance_list_params"
require_relative "lithic/models/cards/aggregate_balance_list_response"
require_relative "lithic/models/cards/balance_list_params"
require_relative "lithic/models/cards/balance_list_response"
require_relative "lithic/models/cards/financial_transaction_list_params"
require_relative "lithic/models/cards/financial_transaction_retrieve_params"
require_relative "lithic/models/card_search_by_pan_params"
require_relative "lithic/models/card_spend_limits"
require_relative "lithic/models/card_update_params"
require_relative "lithic/models/card_web_provision_params"
require_relative "lithic/models/card_web_provision_response"
require_relative "lithic/models/carrier"
require_relative "lithic/models/client_api_status_params"
require_relative "lithic/models/credit_products/extended_credit"
require_relative "lithic/models/credit_products/extended_credit_retrieve_params"
require_relative "lithic/models/credit_products/prime_rate_create_params"
require_relative "lithic/models/credit_products/prime_rate_retrieve_params"
require_relative "lithic/models/credit_products/prime_rate_retrieve_response"
require_relative "lithic/models/currency"
require_relative "lithic/models/digital_card_art"
require_relative "lithic/models/digital_card_art_list_params"
require_relative "lithic/models/digital_card_art_retrieve_params"
require_relative "lithic/models/dispute"
require_relative "lithic/models/dispute_create_params"
require_relative "lithic/models/dispute_delete_evidence_params"
require_relative "lithic/models/dispute_delete_params"
require_relative "lithic/models/dispute_evidence"
require_relative "lithic/models/dispute_initiate_evidence_upload_params"
require_relative "lithic/models/dispute_list_evidences_params"
require_relative "lithic/models/dispute_list_params"
require_relative "lithic/models/dispute_retrieve_evidence_params"
require_relative "lithic/models/dispute_retrieve_params"
require_relative "lithic/models/dispute_update_params"
require_relative "lithic/models/document"
require_relative "lithic/models/event"
require_relative "lithic/models/event_list_attempts_params"
require_relative "lithic/models/event_list_params"
require_relative "lithic/models/event_retrieve_params"
require_relative "lithic/models/events/event_subscription_resend_params"
require_relative "lithic/models/events/subscription_create_params"
require_relative "lithic/models/events/subscription_delete_params"
require_relative "lithic/models/events/subscription_list_attempts_params"
require_relative "lithic/models/events/subscription_list_params"
require_relative "lithic/models/events/subscription_recover_params"
require_relative "lithic/models/events/subscription_replay_missing_params"
require_relative "lithic/models/events/subscription_retrieve_params"
require_relative "lithic/models/events/subscription_retrieve_secret_params"
require_relative "lithic/models/events/subscription_retrieve_secret_response"
require_relative "lithic/models/events/subscription_rotate_secret_params"
require_relative "lithic/models/events/subscription_send_simulated_example_params"
require_relative "lithic/models/events/subscription_update_params"
require_relative "lithic/models/event_subscription"
require_relative "lithic/models/external_bank_account_address"
require_relative "lithic/models/external_bank_account_create_params"
require_relative "lithic/models/external_bank_account_create_response"
require_relative "lithic/models/external_bank_account_list_params"
require_relative "lithic/models/external_bank_account_list_response"
require_relative "lithic/models/external_bank_account_retrieve_params"
require_relative "lithic/models/external_bank_account_retrieve_response"
require_relative "lithic/models/external_bank_account_retry_micro_deposits_params"
require_relative "lithic/models/external_bank_account_retry_micro_deposits_response"
require_relative "lithic/models/external_bank_account_retry_prenote_params"
require_relative "lithic/models/external_bank_account_retry_prenote_response"
require_relative "lithic/models/external_bank_accounts/micro_deposit_create_params"
require_relative "lithic/models/external_bank_accounts/micro_deposit_create_response"
require_relative "lithic/models/external_bank_account_update_params"
require_relative "lithic/models/external_bank_account_update_response"
require_relative "lithic/models/external_payment"
require_relative "lithic/models/external_payment_cancel_params"
require_relative "lithic/models/external_payment_create_params"
require_relative "lithic/models/external_payment_list_params"
require_relative "lithic/models/external_payment_release_params"
require_relative "lithic/models/external_payment_retrieve_params"
require_relative "lithic/models/external_payment_reverse_params"
require_relative "lithic/models/external_payment_settle_params"
require_relative "lithic/models/financial_account"
require_relative "lithic/models/financial_account_create_params"
require_relative "lithic/models/financial_account_list_params"
require_relative "lithic/models/financial_account_retrieve_params"
require_relative "lithic/models/financial_accounts/balance_list_params"
require_relative "lithic/models/financial_accounts/balance_list_response"
require_relative "lithic/models/financial_accounts/credit_configuration_retrieve_params"
require_relative "lithic/models/financial_accounts/credit_configuration_update_params"
require_relative "lithic/models/financial_accounts/financial_account_credit_config"
require_relative "lithic/models/financial_accounts/statements"
require_relative "lithic/models/financial_accounts/financial_transaction_list_params"
require_relative "lithic/models/financial_accounts/financial_transaction_retrieve_params"
require_relative "lithic/models/financial_accounts/loan_tape"
require_relative "lithic/models/financial_accounts/loan_tape_list_params"
require_relative "lithic/models/financial_accounts/loan_tape_retrieve_params"
require_relative "lithic/models/financial_accounts/statement"
require_relative "lithic/models/financial_accounts/statement_list_params"
require_relative "lithic/models/financial_accounts/statement_retrieve_params"
require_relative "lithic/models/financial_accounts/statements/line_item_list_params"
require_relative "lithic/models/financial_accounts/statements/statement_line_items"
require_relative "lithic/models/financial_account_update_params"
require_relative "lithic/models/financial_account_update_status_params"
require_relative "lithic/models/financial_transaction"
require_relative "lithic/models/funding_event_list_params"
require_relative "lithic/models/funding_event_list_response"
require_relative "lithic/models/funding_event_retrieve_details_params"
require_relative "lithic/models/funding_event_retrieve_details_response"
require_relative "lithic/models/funding_event_retrieve_params"
require_relative "lithic/models/funding_event_retrieve_response"
require_relative "lithic/models/instance_financial_account_type"
require_relative "lithic/models/kyb"
require_relative "lithic/models/kyb_business_entity"
require_relative "lithic/models/kyc"
require_relative "lithic/models/kyc_exempt"
require_relative "lithic/models/management_operation_create_params"
require_relative "lithic/models/management_operation_list_params"
require_relative "lithic/models/management_operation_retrieve_params"
require_relative "lithic/models/management_operation_reverse_params"
require_relative "lithic/models/management_operation_transaction"
require_relative "lithic/models/message_attempt"
require_relative "lithic/models/owner_type"
require_relative "lithic/models/payment_create_params"
require_relative "lithic/models/payment_create_response"
require_relative "lithic/models/payment_list_params"
require_relative "lithic/models/payment_retrieve_params"
require_relative "lithic/models/payment_retry_params"
require_relative "lithic/models/payment_retry_response"
require_relative "lithic/models/payment_simulate_action_params"
require_relative "lithic/models/payment_simulate_action_response"
require_relative "lithic/models/payment_simulate_receipt_params"
require_relative "lithic/models/payment_simulate_receipt_response"
require_relative "lithic/models/payment_simulate_release_params"
require_relative "lithic/models/payment_simulate_release_response"
require_relative "lithic/models/payment_simulate_return_params"
require_relative "lithic/models/payment_simulate_return_response"
require_relative "lithic/models/reports/settlement/network_total_list_params"
require_relative "lithic/models/reports/settlement/network_total_list_response"
require_relative "lithic/models/reports/settlement/network_total_retrieve_params"
require_relative "lithic/models/reports/settlement/network_total_retrieve_response"
require_relative "lithic/models/reports/settlement_list_details_params"
require_relative "lithic/models/reports/settlement_summary_params"
require_relative "lithic/models/required_document"
require_relative "lithic/models/responder_endpoint_check_status_params"
require_relative "lithic/models/responder_endpoint_create_params"
require_relative "lithic/models/responder_endpoint_create_response"
require_relative "lithic/models/responder_endpoint_delete_params"
require_relative "lithic/models/responder_endpoint_status"
require_relative "lithic/models/settlement_detail"
require_relative "lithic/models/settlement_report"
require_relative "lithic/models/settlement_summary_details"
require_relative "lithic/models/shipping_address"
require_relative "lithic/models/spend_limit_duration"
require_relative "lithic/models/three_ds/authentication_retrieve_params"
require_relative "lithic/models/three_ds/authentication_retrieve_response"
require_relative "lithic/models/three_ds/authentication_simulate_otp_entry_params"
require_relative "lithic/models/three_ds/authentication_simulate_params"
require_relative "lithic/models/three_ds/authentication_simulate_response"
require_relative "lithic/models/three_ds/challenge_result"
require_relative "lithic/models/three_ds/decisioning_challenge_response_params"
require_relative "lithic/models/three_ds/decisioning_retrieve_secret_params"
require_relative "lithic/models/three_ds/decisioning_retrieve_secret_response"
require_relative "lithic/models/three_ds/decisioning_rotate_secret_params"
require_relative "lithic/models/tokenization"
require_relative "lithic/models/tokenization_activate_params"
require_relative "lithic/models/tokenization_deactivate_params"
require_relative "lithic/models/tokenization_decisioning_retrieve_secret_params"
require_relative "lithic/models/tokenization_decisioning_rotate_secret_params"
require_relative "lithic/models/tokenization_decisioning_rotate_secret_response"
require_relative "lithic/models/tokenization_list_params"
require_relative "lithic/models/tokenization_pause_params"
require_relative "lithic/models/tokenization_resend_activation_code_params"
require_relative "lithic/models/tokenization_retrieve_params"
require_relative "lithic/models/tokenization_retrieve_response"
require_relative "lithic/models/tokenization_secret"
require_relative "lithic/models/tokenization_simulate_params"
require_relative "lithic/models/tokenization_simulate_response"
require_relative "lithic/models/tokenization_unpause_params"
require_relative "lithic/models/tokenization_update_digital_card_art_params"
require_relative "lithic/models/tokenization_update_digital_card_art_response"
require_relative "lithic/models/transaction"
require_relative "lithic/models/transaction_expire_authorization_params"
require_relative "lithic/models/transaction_list_params"
require_relative "lithic/models/transaction_retrieve_params"
require_relative "lithic/models/transactions/enhanced_commercial_data_retrieve_params"
require_relative "lithic/models/transactions/enhanced_commercial_data_retrieve_response"
require_relative "lithic/models/transactions/events/enhanced_commercial_data_retrieve_params"
require_relative "lithic/models/transactions/events/enhanced_data"
require_relative "lithic/models/transaction_simulate_authorization_advice_params"
require_relative "lithic/models/transaction_simulate_authorization_advice_response"
require_relative "lithic/models/transaction_simulate_authorization_params"
require_relative "lithic/models/transaction_simulate_authorization_response"
require_relative "lithic/models/transaction_simulate_clearing_params"
require_relative "lithic/models/transaction_simulate_clearing_response"
require_relative "lithic/models/transaction_simulate_credit_authorization_params"
require_relative "lithic/models/transaction_simulate_credit_authorization_response"
require_relative "lithic/models/transaction_simulate_return_params"
require_relative "lithic/models/transaction_simulate_return_response"
require_relative "lithic/models/transaction_simulate_return_reversal_params"
require_relative "lithic/models/transaction_simulate_return_reversal_response"
require_relative "lithic/models/transaction_simulate_void_params"
require_relative "lithic/models/transaction_simulate_void_response"
require_relative "lithic/models/transfer"
require_relative "lithic/models/transfer_create_params"
require_relative "lithic/models/verification_method"
require_relative "lithic/models"
require_relative "lithic/resources/account_holders"
require_relative "lithic/resources/accounts"
require_relative "lithic/resources/aggregate_balances"
require_relative "lithic/resources/auth_rules"
require_relative "lithic/resources/auth_rules/v2"
require_relative "lithic/resources/auth_rules/v2/backtests"
require_relative "lithic/resources/auth_stream_enrollment"
require_relative "lithic/resources/balances"
require_relative "lithic/resources/book_transfers"
require_relative "lithic/resources/card_programs"
require_relative "lithic/resources/cards"
require_relative "lithic/resources/cards/aggregate_balances"
require_relative "lithic/resources/cards/balances"
require_relative "lithic/resources/cards/financial_transactions"
require_relative "lithic/resources/credit_products"
require_relative "lithic/resources/credit_products/extended_credit"
require_relative "lithic/resources/credit_products/prime_rates"
require_relative "lithic/resources/digital_card_art"
require_relative "lithic/resources/disputes"
require_relative "lithic/resources/events"
require_relative "lithic/resources/events/event_subscriptions"
require_relative "lithic/resources/events/subscriptions"
require_relative "lithic/resources/external_bank_accounts"
require_relative "lithic/resources/external_bank_accounts/micro_deposits"
require_relative "lithic/resources/external_payments"
require_relative "lithic/resources/financial_accounts"
require_relative "lithic/resources/financial_accounts/balances"
require_relative "lithic/resources/financial_accounts/credit_configuration"
require_relative "lithic/resources/financial_accounts/financial_transactions"
require_relative "lithic/resources/financial_accounts/loan_tapes"
require_relative "lithic/resources/financial_accounts/statements"
require_relative "lithic/resources/financial_accounts/statements/line_items"
require_relative "lithic/resources/funding_events"
require_relative "lithic/resources/management_operations"
require_relative "lithic/resources/payments"
require_relative "lithic/resources/reports"
require_relative "lithic/resources/reports/settlement"
require_relative "lithic/resources/reports/settlement/network_totals"
require_relative "lithic/resources/responder_endpoints"
require_relative "lithic/resources/three_ds"
require_relative "lithic/resources/three_ds/authentication"
require_relative "lithic/resources/three_ds/decisioning"
require_relative "lithic/resources/tokenization_decisioning"
require_relative "lithic/resources/tokenizations"
require_relative "lithic/resources/transactions"
require_relative "lithic/resources/transactions/enhanced_commercial_data"
require_relative "lithic/resources/transactions/events"
require_relative "lithic/resources/transactions/events/enhanced_commercial_data"
require_relative "lithic/resources/transfers"