<?php

namespace Stripe\Service;

class CoreServiceFactory extends AbstractServiceFactory
{
    private static $classMap = [
        'oauth' => OAuthService::class,
        'accountLinks' => AccountLinkService::class,
        'accounts' => AccountService::class,
        'accountSessions' => AccountSessionService::class,
        'applePayDomains' => ApplePayDomainService::class,
        'applicationFees' => ApplicationFeeService::class,
        'apps' => Apps\AppsServiceFactory::class,
        'balance' => BalanceService::class,
        'balanceSettings' => BalanceSettingsService::class,
        'balanceTransactions' => BalanceTransactionService::class,
        'billing' => Billing\BillingServiceFactory::class,
        'billingPortal' => BillingPortal\BillingPortalServiceFactory::class,
        'charges' => ChargeService::class,
        'checkout' => Checkout\CheckoutServiceFactory::class,
        'climate' => Climate\ClimateServiceFactory::class,
        'confirmationTokens' => ConfirmationTokenService::class,
        'countrySpecs' => CountrySpecService::class,
        'coupons' => CouponService::class,
        'creditNotes' => CreditNoteService::class,
        'customers' => CustomerService::class,
        'customerSessions' => CustomerSessionService::class,
        'disputes' => DisputeService::class,
        'entitlements' => Entitlements\EntitlementsServiceFactory::class,
        'ephemeralKeys' => EphemeralKeyService::class,
        'events' => EventService::class,
        'exchangeRates' => ExchangeRateService::class,
        'fileLinks' => FileLinkService::class,
        'files' => FileService::class,
        'financialConnections' => FinancialConnections\FinancialConnectionsServiceFactory::class,
        'forwarding' => Forwarding\ForwardingServiceFactory::class,
        'identity' => Identity\IdentityServiceFactory::class,
        'invoiceItems' => InvoiceItemService::class,
        'invoicePayments' => InvoicePaymentService::class,
        'invoiceRenderingTemplates' => InvoiceRenderingTemplateService::class,
        'invoices' => InvoiceService::class,
        'issuing' => Issuing\IssuingServiceFactory::class,
        'mandates' => MandateService::class,
        'paymentAttemptRecords' => PaymentAttemptRecordService::class,
        'paymentIntents' => PaymentIntentService::class,
        'paymentLinks' => PaymentLinkService::class,
        'paymentMethodConfigurations' => PaymentMethodConfigurationService::class,
        'paymentMethodDomains' => PaymentMethodDomainService::class,
        'paymentMethods' => PaymentMethodService::class,
        'paymentRecords' => PaymentRecordService::class,
        'payouts' => PayoutService::class,
        'plans' => PlanService::class,
        'prices' => PriceService::class,
        'products' => ProductService::class,
        'promotionCodes' => PromotionCodeService::class,
        'quotes' => QuoteService::class,
        'radar' => Radar\RadarServiceFactory::class,
        'refunds' => RefundService::class,
        'reporting' => Reporting\ReportingServiceFactory::class,
        'reviews' => ReviewService::class,
        'setupAttempts' => SetupAttemptService::class,
        'setupIntents' => SetupIntentService::class,
        'shippingRates' => ShippingRateService::class,
        'sigma' => Sigma\SigmaServiceFactory::class,
        'sources' => SourceService::class,
        'subscriptionItems' => SubscriptionItemService::class,
        'subscriptions' => SubscriptionService::class,
        'subscriptionSchedules' => SubscriptionScheduleService::class,
        'tax' => Tax\TaxServiceFactory::class,
        'taxCodes' => TaxCodeService::class,
        'taxIds' => TaxIdService::class,
        'taxRates' => TaxRateService::class,
        'terminal' => Terminal\TerminalServiceFactory::class,
        'testHelpers' => TestHelpers\TestHelpersServiceFactory::class,
        'tokens' => TokenService::class,
        'topups' => TopupService::class,
        'transfers' => TransferService::class,
        'treasury' => Treasury\TreasuryServiceFactory::class,
        'v2' => V2\V2ServiceFactory::class,
        'webhookEndpoints' => WebhookEndpointService::class,
    ];

    protected function getServiceClass($name)
    {
        return \array_key_exists($name, self::$classMap) ? self::$classMap[$name] : null;
    }
}
