{"mappings":"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","names":["HttpClient","_HttpClient","host","port","path","method","headers","requestData","protocol","timeout","timeoutErr","HttpClientResponse","statusCode","streamCompleteCallback","FetchHttpClient","_FetchHttpClient","HttpClient","fetchFn","url","init","timeout","pendingTimeoutId","timeoutPromise","_","reject","fetchPromise","abort","timeoutId","err","host","port","path","method","headers","requestData","protocol","isInsecureConnection","methodHasPayload","body","res","FetchHttpClientResponse","_FetchHttpClientResponse","HttpClientResponse","streamCompleteCallback","headersObj","entry","CryptoProvider","payload","secret","CryptoProviderOnlySupportsAsyncError","SubtleCryptoProvider","CryptoProvider","subtleCrypto","payload","secret","CryptoProviderOnlySupportsAsyncError","encoder","key","signatureBuffer","signatureBytes","signatureHexCodes","i","byteHexMapping","PlatformFunctions","c","r","a","b","len","result","i","data","agent","fetchFn","FetchHttpClient","subtleCrypto","SubtleCryptoProvider","_StripeEvent","eventName","data","StripeEmitter","listener","listenerWrapper","event","WebPlatformFunctions","PlatformFunctions","StripeEmitter","data","Error_exports","__export","StripeAPIError","StripeAuthenticationError","StripeCardError","StripeConnectionError","StripeError","StripeIdempotencyError","StripeInvalidGrantError","StripeInvalidRequestError","StripePermissionError","StripeRateLimitError","StripeSignatureVerificationError","StripeUnknownError","generate","rawStripeError","raw","header","payload","ApiVersion","resources_exports","__export","Accounts","AccountLinks","AccountSessions","ApplePayDomains","ApplicationFees","Apps","Balance","BalanceTransactions","BillingPortal","Charges","Checkout","Climate","CountrySpecs","Coupons","CreditNotes","CustomerSessions","Customers","Disputes","EphemeralKeys","Events","ExchangeRates","FileLinks","Files","FinancialConnections","Identity","InvoiceItems","Invoices","Issuing","Mandates","OAuth","PaymentIntents","PaymentLinks","PaymentMethodConfigurations","PaymentMethodDomains","PaymentMethods","Payouts","Plans","Prices","Products","PromotionCodes","Quotes","Radar","Refunds","Reporting","Reviews","SetupAttempts","SetupIntents","ShippingRates","Sigma","Sources","SubscriptionItems","SubscriptionSchedules","Subscriptions","Tax","TaxCodes","TaxIds","TaxRates","Terminal","TestHelpers","Tokens","Topups","Transfers","Treasury","WebhookEndpoints","ResourceNamespace","stripe","resources","name","camelCaseName","resource","resourceNamespace","namespace","qs","OPTIONS_KEYS","isOptionsHash","o","prop","stringifyRequestData","data","d","makeURLInterpolator","rc","str","cleanString","$0","outputs","$1","extractUrlParams","path","params","param","getDataFromArgs","args","argKeys","optionKeysInArgs","key","emitWarning","getOptionsFromArgs","opts","arg","extraKeys","protoExtend","sub","Super","Constructor","removeNullish","obj","result","normalizeHeaders","header","normalizeHeader","text","callbackifyPromiseWithTimeout","promise","callback","res","err","pascalToCamelCase","name","warning","isObject","type","flattenAndStringify","step","prevKey","value","newKey","validateInteger","n","defaultVal","determineProcessUserAgentProperties","StripeIterator","firstPagePromise","requestArgs","spec","stripeResource","pageResult","reverseIteration","isReverseIteration","idx","value","nextPageResult","_pageResult","nextPromise","ret","ListIterator","lastId","getLastId","SearchIterator","makeAutoPaginationMethods","makeAutoPaginationMethodsFromIterator","iterator","autoPagingEach","makeAutoPagingEach","args","autoPagingToArray","makeAutoPagingToArray","autoPaginationMethods","getAsyncIteratorSymbol","getDoneCallback","onDone","getItemCallback","onItem","item","next","shouldContinue","listResult","lastIdx","lastItem","asyncIteratorNext","autoPagePromise","wrapAsyncIteratorWithCallback","callbackifyPromiseWithTimeout","opts","limit","promise","resolve","reject","items","handleIteration","iterResult","getDataFromArgs","stripeMethod","spec","args","callback","extractUrlParams","requestPromise","callbackifyPromiseWithTimeout","makeAutoPaginationMethods","StripeResource","protoExtend","stripeMethod","stripe","deprecatedUrlData","makeURLInterpolator","commandPath","urlData","urlParts","computedCommandPath","pathWithSymbols","parts","requestArgs","spec","overrideData","requestMethod","usage","urlParams","encode","data","isUsingFullPath","path","args","param","arg","dataFromArgs","getDataFromArgs","options","getOptionsFromArgs","host","streaming","x","requestPath","headers","dataInQuery","resolve","reject","_a","opts","err","requestCallback","response","emptyQuery","stringifyRequestData","settings","stripeMethod","StripeResource","Accounts","stripeMethod","StripeResource","Authorizations","stripeMethod","StripeResource","Authorizations","stripeMethod","StripeResource","Calculations","stripeMethod","StripeResource","Cardholders","stripeMethod","StripeResource","Cards","stripeMethod","StripeResource","Cards","stripeMethod","StripeResource","Configurations","stripeMethod","StripeResource","Configurations","stripeMethod","StripeResource","ConnectionTokens","stripeMethod","StripeResource","CreditReversals","stripeMethod","StripeResource","Customers","stripeMethod","StripeResource","DebitReversals","stripeMethod","StripeResource","Disputes","stripeMethod","StripeResource","EarlyFraudWarnings","stripeMethod","StripeResource","FinancialAccounts","stripeMethod","StripeResource","InboundTransfers","stripeMethod","StripeResource","InboundTransfers","stripeMethod","StripeResource","Locations","stripeMethod","StripeResource","Orders","stripeMethod","StripeResource","OutboundPayments","stripeMethod","StripeResource","OutboundPayments","stripeMethod","StripeResource","OutboundTransfers","stripeMethod","StripeResource","OutboundTransfers","stripeMethod","StripeResource","PersonalizationDesigns","stripeMethod","StripeResource","PersonalizationDesigns","stripeMethod","StripeResource","PhysicalBundles","stripeMethod","StripeResource","Products","stripeMethod","StripeResource","Readers","stripeMethod","StripeResource","Readers","stripeMethod","StripeResource","ReceivedCredits","stripeMethod","StripeResource","ReceivedCredits","stripeMethod","StripeResource","ReceivedDebits","stripeMethod","StripeResource","ReceivedDebits","stripeMethod","StripeResource","Refunds","stripeMethod","StripeResource","Registrations","stripeMethod","StripeResource","ReportRuns","stripeMethod","StripeResource","ReportTypes","stripeMethod","StripeResource","ScheduledQueryRuns","stripeMethod","StripeResource","Secrets","stripeMethod","StripeResource","Sessions","stripeMethod","StripeResource","Sessions","stripeMethod","StripeResource","Sessions","stripeMethod","StripeResource","Settings","stripeMethod","StripeResource","Suppliers","stripeMethod","StripeResource","TestClocks","stripeMethod","StripeResource","Tokens","stripeMethod","StripeResource","TransactionEntries","stripeMethod","StripeResource","Transactions","stripeMethod","StripeResource","Transactions","stripeMethod","StripeResource","Transactions","stripeMethod","StripeResource","Transactions","stripeMethod","StripeResource","Transactions","stripeMethod","StripeResource","ValueListItems","stripeMethod","StripeResource","ValueLists","stripeMethod","StripeResource","VerificationReports","stripeMethod","StripeResource","VerificationSessions","stripeMethod","StripeResource","Accounts","id","args","stripeMethod","StripeResource","AccountLinks","stripeMethod","StripeResource","AccountSessions","stripeMethod","StripeResource","ApplePayDomains","stripeMethod","StripeResource","ApplicationFees","stripeMethod","StripeResource","Balance","stripeMethod","StripeResource","BalanceTransactions","stripeMethod","StripeResource","Charges","stripeMethod","StripeResource","CountrySpecs","stripeMethod","StripeResource","Coupons","stripeMethod","StripeResource","CreditNotes","stripeMethod","StripeResource","CustomerSessions","stripeMethod","StripeResource","Customers","stripeMethod","StripeResource","Disputes","stripeMethod","StripeResource","EphemeralKeys","data","options","stripeMethod","StripeResource","Events","stripeMethod","StripeResource","ExchangeRates","stripeMethod","StripeResource","FileLinks","multipartDataGenerator","method","data","headers","segno","textEncoder","buffer","endBuffer","push","l","prevBuffer","newBuffer","q","s","flattenedData","flattenAndStringify","k","v","typedEntry","multipartRequestDataProcessor","callback","stringifyRequestData","bufferedData","err","stripeMethod","StripeResource","Files","multipartRequestDataProcessor","stripeMethod","StripeResource","InvoiceItems","stripeMethod","StripeResource","Invoices","stripeMethod","StripeResource","Mandates","stripeMethod","StripeResource","oAuthHost","OAuth","params","options","path","stringifyRequestData","spec","args","stripeMethod","StripeResource","PaymentIntents","stripeMethod","StripeResource","PaymentLinks","stripeMethod","StripeResource","PaymentMethodConfigurations","stripeMethod","StripeResource","PaymentMethodDomains","stripeMethod","StripeResource","PaymentMethods","stripeMethod","StripeResource","Payouts","stripeMethod","StripeResource","Plans","stripeMethod","StripeResource","Prices","stripeMethod","StripeResource","Products","stripeMethod","StripeResource","PromotionCodes","stripeMethod","StripeResource","Quotes","stripeMethod","StripeResource","Refunds","stripeMethod","StripeResource","Reviews","stripeMethod","StripeResource","SetupAttempts","stripeMethod","StripeResource","SetupIntents","stripeMethod","StripeResource","ShippingRates","stripeMethod","StripeResource","Sources","stripeMethod","StripeResource","SubscriptionItems","stripeMethod","StripeResource","SubscriptionSchedules","stripeMethod","StripeResource","Subscriptions","stripeMethod","StripeResource","TaxCodes","stripeMethod","StripeResource","TaxIds","stripeMethod","StripeResource","TaxRates","stripeMethod","StripeResource","Tokens","stripeMethod","StripeResource","Topups","stripeMethod","StripeResource","Transfers","stripeMethod","StripeResource","WebhookEndpoints","Apps","resourceNamespace","Secrets","BillingPortal","Configurations","Sessions","Checkout","Climate","Orders","Products","Suppliers","FinancialConnections","Accounts","Transactions","Identity","VerificationReports","VerificationSessions","Issuing","Authorizations","Cardholders","Cards","Disputes","PersonalizationDesigns","PhysicalBundles","Tokens","Radar","EarlyFraudWarnings","ValueListItems","ValueLists","Reporting","ReportRuns","ReportTypes","Sigma","ScheduledQueryRuns","Tax","Calculations","Registrations","Settings","Terminal","ConnectionTokens","Locations","Readers","TestHelpers","Customers","Refunds","TestClocks","InboundTransfers","OutboundPayments","OutboundTransfers","ReceivedCredits","ReceivedDebits","Treasury","CreditReversals","DebitReversals","FinancialAccounts","TransactionEntries","MAX_RETRY_AFTER_WAIT","RequestSender","_RequestSender","stripe","maxBufferedRequestMetric","obj","headers","requestEvent","statusCode","requestEndTime","requestDurationMs","removeNullish","usage","callback","res","streamCompleteCallback","responseEvent","stream","requestId","jsonResponse","err","StripeAuthenticationError","StripePermissionError","StripeRateLimitError","StripeError","e","StripeAPIError","rawResponse","requestRetries","numRetries","maxRetries","error","HttpClient","retryAfter","initialNetworkRetryDelay","maxNetworkRetryDelay","sleepSeconds","settings","method","auth","contentLength","apiVersion","clientUserAgent","userSuppliedHeaders","userSuppliedSettings","defaultHeaders","methodHasPayload","emitWarning","normalizeHeaders","packageVersion","appInfo","metrics","m","host","path","data","options","requestDataProcessor","requestData","retryRequest","requestFn","makeRequest","timeout","req","requestStartTime","isTimeoutError","StripeConnectionError","prepareAndMakeRequest","_a","_b","stringifyRequestData","createWebhooks","platformFunctions","Webhook","payload","header","secret","tolerance","cryptoProvider","receivedAt","e","CryptoProviderOnlySupportsAsyncError","opts","StripeError","signature","getCryptoProvider","encodedPayload","encodedHeader","details","suspectPayloadType","parseEventDetails","secretContainsWhitespace","expectedSignature","makeHMACContent","validateComputedSignature","expectedScheme","StripeSignatureVerificationError","textDecoder","decodedPayload","decodedHeader","parseHeader","signatureFound","docsLocation","whitespaceMessage","timestampAge","scheme","accum","item","kv","webhooksCryptoProviderInstance","DEFAULT_HOST","DEFAULT_PORT","DEFAULT_BASE_PATH","DEFAULT_API_VERSION","ApiVersion","DEFAULT_TIMEOUT","MAX_NETWORK_RETRY_DELAY_SEC","INITIAL_NETWORK_RETRY_DELAY_SEC","APP_INFO_PROPERTIES","ALLOWED_CONFIG_PROPERTIES","defaultRequestSenderFactory","stripe","RequestSender","StripeResource","createStripe","platformFunctions","requestSender","Stripe","determineProcessUserAgentProperties","resources_exports","HttpClient","HttpClientResponse","CryptoProvider","createWebhooksDefault","fns","createWebhooks","key","config","props","agent","validateInteger","typescript","Error_exports","info","accum","prop","value","clientId","c","defaultVal","val","cb","seed","uname","_a","userAgent","field","client","formatted","name","pascalToCamelCase","isString","Stripe","createStripe","WebPlatformFunctions","stripe_esm_worker_default"],"sources":["../esm/npm/stripe@14.21.0/node_modules/stripe/esm/net/HttpClient.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/net/FetchHttpClient.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/crypto/CryptoProvider.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/crypto/SubtleCryptoProvider.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/platform/PlatformFunctions.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/StripeEmitter.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/platform/WebPlatformFunctions.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/Error.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/apiVersion.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/ResourceNamespace.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/utils.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/autoPagination.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/StripeMethod.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/StripeResource.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/FinancialConnections/Accounts.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/TestHelpers/Issuing/Authorizations.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Issuing/Authorizations.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Tax/Calculations.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Issuing/Cardholders.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/TestHelpers/Issuing/Cards.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Issuing/Cards.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/BillingPortal/Configurations.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Terminal/Configurations.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Terminal/ConnectionTokens.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Treasury/CreditReversals.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/TestHelpers/Customers.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Treasury/DebitReversals.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Issuing/Disputes.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Radar/EarlyFraudWarnings.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Treasury/FinancialAccounts.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/TestHelpers/Treasury/InboundTransfers.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Treasury/InboundTransfers.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Terminal/Locations.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Climate/Orders.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/TestHelpers/Treasury/OutboundPayments.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Treasury/OutboundPayments.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/TestHelpers/Treasury/OutboundTransfers.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Treasury/OutboundTransfers.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/TestHelpers/Issuing/PersonalizationDesigns.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Issuing/PersonalizationDesigns.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Issuing/PhysicalBundles.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Climate/Products.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/TestHelpers/Terminal/Readers.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Terminal/Readers.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/TestHelpers/Treasury/ReceivedCredits.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Treasury/ReceivedCredits.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/TestHelpers/Treasury/ReceivedDebits.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Treasury/ReceivedDebits.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/TestHelpers/Refunds.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Tax/Registrations.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Reporting/ReportRuns.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Reporting/ReportTypes.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Sigma/ScheduledQueryRuns.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Apps/Secrets.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/BillingPortal/Sessions.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Checkout/Sessions.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/FinancialConnections/Sessions.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Tax/Settings.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Climate/Suppliers.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/TestHelpers/TestClocks.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Issuing/Tokens.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Treasury/TransactionEntries.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/TestHelpers/Issuing/Transactions.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/FinancialConnections/Transactions.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Issuing/Transactions.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Tax/Transactions.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Treasury/Transactions.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Radar/ValueListItems.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Radar/ValueLists.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Identity/VerificationReports.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Identity/VerificationSessions.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Accounts.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/AccountLinks.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/AccountSessions.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/ApplePayDomains.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/ApplicationFees.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Balance.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/BalanceTransactions.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Charges.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/CountrySpecs.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Coupons.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/CreditNotes.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/CustomerSessions.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Customers.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Disputes.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/EphemeralKeys.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Events.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/ExchangeRates.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/FileLinks.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/multipart.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Files.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/InvoiceItems.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Invoices.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Mandates.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/OAuth.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/PaymentIntents.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/PaymentLinks.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/PaymentMethodConfigurations.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/PaymentMethodDomains.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/PaymentMethods.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Payouts.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Plans.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Prices.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Products.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/PromotionCodes.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Quotes.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Refunds.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Reviews.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/SetupAttempts.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/SetupIntents.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/ShippingRates.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Sources.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/SubscriptionItems.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/SubscriptionSchedules.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Subscriptions.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/TaxCodes.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/TaxIds.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/TaxRates.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Tokens.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Topups.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/Transfers.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/resources/WebhookEndpoints.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/RequestSender.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/Webhooks.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/stripe.core.js","../esm/npm/stripe@14.21.0/node_modules/stripe/esm/stripe.esm.worker.js"],"sourcesContent":["/**\n * Encapsulates the logic for issuing a request to the Stripe API.\n *\n * A custom HTTP client should should implement:\n * 1. A response class which extends HttpClientResponse and wraps around their\n *    own internal representation of a response.\n * 2. A client class which extends HttpClient and implements all methods,\n *    returning their own response class when making requests.\n */\nexport class HttpClient {\n    /** The client name used for diagnostics. */\n    getClientName() {\n        throw new Error('getClientName not implemented.');\n    }\n    makeRequest(host, port, path, method, headers, requestData, protocol, timeout) {\n        throw new Error('makeRequest not implemented.');\n    }\n    /** Helper to make a consistent timeout error across implementations. */\n    static makeTimeoutError() {\n        const timeoutErr = new TypeError(HttpClient.TIMEOUT_ERROR_CODE);\n        timeoutErr.code = HttpClient.TIMEOUT_ERROR_CODE;\n        return timeoutErr;\n    }\n}\n// Public API accessible via Stripe.HttpClient\nHttpClient.CONNECTION_CLOSED_ERROR_CODES = ['ECONNRESET', 'EPIPE'];\nHttpClient.TIMEOUT_ERROR_CODE = 'ETIMEDOUT';\nexport class HttpClientResponse {\n    constructor(statusCode, headers) {\n        this._statusCode = statusCode;\n        this._headers = headers;\n    }\n    getStatusCode() {\n        return this._statusCode;\n    }\n    getHeaders() {\n        return this._headers;\n    }\n    getRawResponse() {\n        throw new Error('getRawResponse not implemented.');\n    }\n    toStream(streamCompleteCallback) {\n        throw new Error('toStream not implemented.');\n    }\n    toJSON() {\n        throw new Error('toJSON not implemented.');\n    }\n}\n","import { HttpClient, HttpClientResponse, } from './HttpClient.js';\n/**\n * HTTP client which uses a `fetch` function to issue requests.\n *\n * By default relies on the global `fetch` function, but an optional function\n * can be passed in. If passing in a function, it is expected to match the Web\n * Fetch API. As an example, this could be the function provided by the\n * node-fetch package (https://github.com/node-fetch/node-fetch).\n */\nexport class FetchHttpClient extends HttpClient {\n    constructor(fetchFn) {\n        super();\n        // Default to global fetch if available\n        if (!fetchFn) {\n            if (!globalThis.fetch) {\n                throw new Error('fetch() function not provided and is not defined in the global scope. ' +\n                    'You must provide a fetch implementation.');\n            }\n            fetchFn = globalThis.fetch;\n        }\n        // Both timeout behaviors differs from Node:\n        // - Fetch uses a single timeout for the entire length of the request.\n        // - Node is more fine-grained and resets the timeout after each stage of the request.\n        if (globalThis.AbortController) {\n            // Utilise native AbortController if available\n            // AbortController was added in Node v15.0.0, v14.17.0\n            this._fetchFn = FetchHttpClient.makeFetchWithAbortTimeout(fetchFn);\n        }\n        else {\n            // Fall back to racing against a timeout promise if not available in the runtime\n            // This does not actually cancel the underlying fetch operation or resources\n            this._fetchFn = FetchHttpClient.makeFetchWithRaceTimeout(fetchFn);\n        }\n    }\n    static makeFetchWithRaceTimeout(fetchFn) {\n        return (url, init, timeout) =\u003e {\n            let pendingTimeoutId;\n            const timeoutPromise = new Promise((_, reject) =\u003e {\n                pendingTimeoutId = setTimeout(() =\u003e {\n                    pendingTimeoutId = null;\n                    reject(HttpClient.makeTimeoutError());\n                }, timeout);\n            });\n            const fetchPromise = fetchFn(url, init);\n            return Promise.race([fetchPromise, timeoutPromise]).finally(() =\u003e {\n                if (pendingTimeoutId) {\n                    clearTimeout(pendingTimeoutId);\n                }\n            });\n        };\n    }\n    static makeFetchWithAbortTimeout(fetchFn) {\n        return async (url, init, timeout) =\u003e {\n            // Use AbortController because AbortSignal.timeout() was added later in Node v17.3.0, v16.14.0\n            const abort = new AbortController();\n            let timeoutId = setTimeout(() =\u003e {\n                timeoutId = null;\n                abort.abort(HttpClient.makeTimeoutError());\n            }, timeout);\n            try {\n                return await fetchFn(url, Object.assign(Object.assign({}, init), { signal: abort.signal }));\n            }\n            catch (err) {\n                // Some implementations, like node-fetch, do not respect the reason passed to AbortController.abort()\n                // and instead it always throws an AbortError\n                // We catch this case to normalise all timeout errors\n                if (err.name === 'AbortError') {\n                    throw HttpClient.makeTimeoutError();\n                }\n                else {\n                    throw err;\n                }\n            }\n            finally {\n                if (timeoutId) {\n                    clearTimeout(timeoutId);\n                }\n            }\n        };\n    }\n    /** @override. */\n    getClientName() {\n        return 'fetch';\n    }\n    async makeRequest(host, port, path, method, headers, requestData, protocol, timeout) {\n        const isInsecureConnection = protocol === 'http';\n        const url = new URL(path, `${isInsecureConnection ? 'http' : 'https'}://${host}`);\n        url.port = port;\n        // For methods which expect payloads, we should always pass a body value\n        // even when it is empty. Without this, some JS runtimes (eg. Deno) will\n        // inject a second Content-Length header. See https://github.com/stripe/stripe-node/issues/1519\n        // for more details.\n        const methodHasPayload = method == 'POST' || method == 'PUT' || method == 'PATCH';\n        const body = requestData || (methodHasPayload ? '' : undefined);\n        const res = await this._fetchFn(url.toString(), {\n            method,\n            // @ts-ignore\n            headers,\n            // @ts-ignore\n            body,\n        }, timeout);\n        return new FetchHttpClientResponse(res);\n    }\n}\nexport class FetchHttpClientResponse extends HttpClientResponse {\n    constructor(res) {\n        super(res.status, FetchHttpClientResponse._transformHeadersToObject(res.headers));\n        this._res = res;\n    }\n    getRawResponse() {\n        return this._res;\n    }\n    toStream(streamCompleteCallback) {\n        // Unfortunately `fetch` does not have event handlers for when the stream is\n        // completely read. We therefore invoke the streamCompleteCallback right\n        // away. This callback emits a response event with metadata and completes\n        // metrics, so it's ok to do this without waiting for the stream to be\n        // completely read.\n        streamCompleteCallback();\n        // Fetch's `body` property is expected to be a readable stream of the body.\n        return this._res.body;\n    }\n    toJSON() {\n        return this._res.json();\n    }\n    static _transformHeadersToObject(headers) {\n        // Fetch uses a Headers instance so this must be converted to a barebones\n        // JS object to meet the HttpClient interface.\n        const headersObj = {};\n        for (const entry of headers) {\n            if (!Array.isArray(entry) || entry.length != 2) {\n                throw new Error('Response objects produced by the fetch function given to FetchHttpClient do not have an iterable headers map. Response#headers should be an iterable object.');\n            }\n            headersObj[entry[0]] = entry[1];\n        }\n        return headersObj;\n    }\n}\n","/**\n * Interface encapsulating the various crypto computations used by the library,\n * allowing pluggable underlying crypto implementations.\n */\nexport class CryptoProvider {\n    /**\n     * Computes a SHA-256 HMAC given a secret and a payload (encoded in UTF-8).\n     * The output HMAC should be encoded in hexadecimal.\n     *\n     * Sample values for implementations:\n     * - computeHMACSignature('', 'test_secret') =\u003e 'f7f9bd47fb987337b5796fdc1fdb9ba221d0d5396814bfcaf9521f43fd8927fd'\n     * - computeHMACSignature('\\ud83d\\ude00', 'test_secret') =\u003e '837da296d05c4fe31f61d5d7ead035099d9585a5bcde87de952012a78f0b0c43\n     */\n    computeHMACSignature(payload, secret) {\n        throw new Error('computeHMACSignature not implemented.');\n    }\n    /**\n     * Asynchronous version of `computeHMACSignature`. Some implementations may\n     * only allow support async signature computation.\n     *\n     * Computes a SHA-256 HMAC given a secret and a payload (encoded in UTF-8).\n     * The output HMAC should be encoded in hexadecimal.\n     *\n     * Sample values for implementations:\n     * - computeHMACSignature('', 'test_secret') =\u003e 'f7f9bd47fb987337b5796fdc1fdb9ba221d0d5396814bfcaf9521f43fd8927fd'\n     * - computeHMACSignature('\\ud83d\\ude00', 'test_secret') =\u003e '837da296d05c4fe31f61d5d7ead035099d9585a5bcde87de952012a78f0b0c43\n     */\n    computeHMACSignatureAsync(payload, secret) {\n        throw new Error('computeHMACSignatureAsync not implemented.');\n    }\n}\n/**\n * If the crypto provider only supports asynchronous operations,\n * throw CryptoProviderOnlySupportsAsyncError instead of\n * a generic error so that the caller can choose to provide\n * a more helpful error message to direct the user to use\n * an asynchronous pathway.\n */\nexport class CryptoProviderOnlySupportsAsyncError extends Error {\n}\n","import { CryptoProvider, CryptoProviderOnlySupportsAsyncError, } from './CryptoProvider.js';\n/**\n * `CryptoProvider which uses the SubtleCrypto interface of the Web Crypto API.\n *\n * This only supports asynchronous operations.\n */\nexport class SubtleCryptoProvider extends CryptoProvider {\n    constructor(subtleCrypto) {\n        super();\n        // If no subtle crypto is interface, default to the global namespace. This\n        // is to allow custom interfaces (eg. using the Node webcrypto interface in\n        // tests).\n        this.subtleCrypto = subtleCrypto || crypto.subtle;\n    }\n    /** @override */\n    computeHMACSignature(payload, secret) {\n        throw new CryptoProviderOnlySupportsAsyncError('SubtleCryptoProvider cannot be used in a synchronous context.');\n    }\n    /** @override */\n    async computeHMACSignatureAsync(payload, secret) {\n        const encoder = new TextEncoder();\n        const key = await this.subtleCrypto.importKey('raw', encoder.encode(secret), {\n            name: 'HMAC',\n            hash: { name: 'SHA-256' },\n        }, false, ['sign']);\n        const signatureBuffer = await this.subtleCrypto.sign('hmac', key, encoder.encode(payload));\n        // crypto.subtle returns the signature in base64 format. This must be\n        // encoded in hex to match the CryptoProvider contract. We map each byte in\n        // the buffer to its corresponding hex octet and then combine into a string.\n        const signatureBytes = new Uint8Array(signatureBuffer);\n        const signatureHexCodes = new Array(signatureBytes.length);\n        for (let i = 0; i \u003c signatureBytes.length; i++) {\n            signatureHexCodes[i] = byteHexMapping[signatureBytes[i]];\n        }\n        return signatureHexCodes.join('');\n    }\n}\n// Cached mapping of byte to hex representation. We do this once to avoid re-\n// computing every time we need to convert the result of a signature to hex.\nconst byteHexMapping = new Array(256);\nfor (let i = 0; i \u003c byteHexMapping.length; i++) {\n    byteHexMapping[i] = i.toString(16).padStart(2, '0');\n}\n","import { FetchHttpClient } from '../net/FetchHttpClient.js';\nimport { SubtleCryptoProvider } from '../crypto/SubtleCryptoProvider.js';\n/**\n * Interface encapsulating various utility functions whose\n * implementations depend on the platform / JS runtime.\n */\nexport class PlatformFunctions {\n    constructor() {\n        this._fetchFn = null;\n        this._agent = null;\n    }\n    /**\n     * Gets uname with Node's built-in `exec` function, if available.\n     */\n    getUname() {\n        throw new Error('getUname not implemented.');\n    }\n    /**\n     * Generates a v4 UUID. See https://stackoverflow.com/a/2117523\n     */\n    uuid4() {\n        return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) =\u003e {\n            const r = (Math.random() * 16) | 0;\n            const v = c === 'x' ? r : (r \u0026 0x3) | 0x8;\n            return v.toString(16);\n        });\n    }\n    /**\n     * Compares strings in constant time.\n     */\n    secureCompare(a, b) {\n        // return early here if buffer lengths are not equal\n        if (a.length !== b.length) {\n            return false;\n        }\n        const len = a.length;\n        let result = 0;\n        for (let i = 0; i \u003c len; ++i) {\n            result |= a.charCodeAt(i) ^ b.charCodeAt(i);\n        }\n        return result === 0;\n    }\n    /**\n     * Creates an event emitter.\n     */\n    createEmitter() {\n        throw new Error('createEmitter not implemented.');\n    }\n    /**\n     * Checks if the request data is a stream. If so, read the entire stream\n     * to a buffer and return the buffer.\n     */\n    tryBufferData(data) {\n        throw new Error('tryBufferData not implemented.');\n    }\n    /**\n     * Creates an HTTP client which uses the Node `http` and `https` packages\n     * to issue requests.\n     */\n    createNodeHttpClient(agent) {\n        throw new Error('createNodeHttpClient not implemented.');\n    }\n    /**\n     * Creates an HTTP client for issuing Stripe API requests which uses the Web\n     * Fetch API.\n     *\n     * A fetch function can optionally be passed in as a parameter. If none is\n     * passed, will default to the default `fetch` function in the global scope.\n     */\n    createFetchHttpClient(fetchFn) {\n        return new FetchHttpClient(fetchFn);\n    }\n    /**\n     * Creates an HTTP client using runtime-specific APIs.\n     */\n    createDefaultHttpClient() {\n        throw new Error('createDefaultHttpClient not implemented.');\n    }\n    /**\n     * Creates a CryptoProvider which uses the Node `crypto` package for its computations.\n     */\n    createNodeCryptoProvider() {\n        throw new Error('createNodeCryptoProvider not implemented.');\n    }\n    /**\n     * Creates a CryptoProvider which uses the SubtleCrypto interface of the Web Crypto API.\n     */\n    createSubtleCryptoProvider(subtleCrypto) {\n        return new SubtleCryptoProvider(subtleCrypto);\n    }\n    createDefaultCryptoProvider() {\n        throw new Error('createDefaultCryptoProvider not implemented.');\n    }\n}\n","/**\n * @private\n * (For internal use in stripe-node.)\n * Wrapper around the Event Web API.\n */\nclass _StripeEvent extends Event {\n    constructor(eventName, data) {\n        super(eventName);\n        this.data = data;\n    }\n}\n/** Minimal EventEmitter wrapper around EventTarget. */\nexport class StripeEmitter {\n    constructor() {\n        this.eventTarget = new EventTarget();\n        this.listenerMapping = new Map();\n    }\n    on(eventName, listener) {\n        const listenerWrapper = (event) =\u003e {\n            listener(event.data);\n        };\n        this.listenerMapping.set(listener, listenerWrapper);\n        return this.eventTarget.addEventListener(eventName, listenerWrapper);\n    }\n    removeListener(eventName, listener) {\n        const listenerWrapper = this.listenerMapping.get(listener);\n        this.listenerMapping.delete(listener);\n        return this.eventTarget.removeEventListener(eventName, listenerWrapper);\n    }\n    once(eventName, listener) {\n        const listenerWrapper = (event) =\u003e {\n            listener(event.data);\n        };\n        this.listenerMapping.set(listener, listenerWrapper);\n        return this.eventTarget.addEventListener(eventName, listenerWrapper, {\n            once: true,\n        });\n    }\n    emit(eventName, data) {\n        return this.eventTarget.dispatchEvent(new _StripeEvent(eventName, data));\n    }\n}\n","import { PlatformFunctions } from './PlatformFunctions.js';\nimport { StripeEmitter } from '../StripeEmitter.js';\n/**\n * Specializes WebPlatformFunctions using APIs available in Web workers.\n */\nexport class WebPlatformFunctions extends PlatformFunctions {\n    /** @override */\n    getUname() {\n        return Promise.resolve(null);\n    }\n    /** @override */\n    createEmitter() {\n        return new StripeEmitter();\n    }\n    /** @override */\n    tryBufferData(data) {\n        if (data.file.data instanceof ReadableStream) {\n            throw new Error('Uploading a file as a stream is not supported in non-Node environments. Please open or upvote an issue at github.com/stripe/stripe-node if you use this, detailing your use-case.');\n        }\n        return Promise.resolve(data);\n    }\n    /** @override */\n    createNodeHttpClient() {\n        throw new Error('Stripe: `createNodeHttpClient()` is not available in non-Node environments. Please use `createFetchHttpClient()` instead.');\n    }\n    /** @override */\n    createDefaultHttpClient() {\n        return super.createFetchHttpClient();\n    }\n    /** @override */\n    createNodeCryptoProvider() {\n        throw new Error('Stripe: `createNodeCryptoProvider()` is not available in non-Node environments. Please use `createSubtleCryptoProvider()` instead.');\n    }\n    /** @override */\n    createDefaultCryptoProvider() {\n        return this.createSubtleCryptoProvider();\n    }\n}\n","/* eslint-disable camelcase */\nexport const generate = (rawStripeError) =\u003e {\n    switch (rawStripeError.type) {\n        case 'card_error':\n            return new StripeCardError(rawStripeError);\n        case 'invalid_request_error':\n            return new StripeInvalidRequestError(rawStripeError);\n        case 'api_error':\n            return new StripeAPIError(rawStripeError);\n        case 'authentication_error':\n            return new StripeAuthenticationError(rawStripeError);\n        case 'rate_limit_error':\n            return new StripeRateLimitError(rawStripeError);\n        case 'idempotency_error':\n            return new StripeIdempotencyError(rawStripeError);\n        case 'invalid_grant':\n            return new StripeInvalidGrantError(rawStripeError);\n        default:\n            return new StripeUnknownError(rawStripeError);\n    }\n};\n/**\n * StripeError is the base error from which all other more specific Stripe errors derive.\n * Specifically for errors returned from Stripe's REST API.\n */\nexport class StripeError extends Error {\n    constructor(raw = {}) {\n        super(raw.message);\n        this.type = this.constructor.name;\n        this.raw = raw;\n        this.rawType = raw.type;\n        this.code = raw.code;\n        this.doc_url = raw.doc_url;\n        this.param = raw.param;\n        this.detail = raw.detail;\n        this.headers = raw.headers;\n        this.requestId = raw.requestId;\n        this.statusCode = raw.statusCode;\n        // @ts-ignore\n        this.message = raw.message;\n        this.charge = raw.charge;\n        this.decline_code = raw.decline_code;\n        this.payment_intent = raw.payment_intent;\n        this.payment_method = raw.payment_method;\n        this.payment_method_type = raw.payment_method_type;\n        this.setup_intent = raw.setup_intent;\n        this.source = raw.source;\n    }\n}\n/**\n * Helper factory which takes raw stripe errors and outputs wrapping instances\n */\nStripeError.generate = generate;\n// Specific Stripe Error types:\n/**\n * CardError is raised when a user enters a card that can't be charged for\n * some reason.\n */\nexport class StripeCardError extends StripeError {\n}\n/**\n * InvalidRequestError is raised when a request is initiated with invalid\n * parameters.\n */\nexport class StripeInvalidRequestError extends StripeError {\n}\n/**\n * APIError is a generic error that may be raised in cases where none of the\n * other named errors cover the problem. It could also be raised in the case\n * that a new error has been introduced in the API, but this version of the\n * Node.JS SDK doesn't know how to handle it.\n */\nexport class StripeAPIError extends StripeError {\n}\n/**\n * AuthenticationError is raised when invalid credentials are used to connect\n * to Stripe's servers.\n */\nexport class StripeAuthenticationError extends StripeError {\n}\n/**\n * PermissionError is raised in cases where access was attempted on a resource\n * that wasn't allowed.\n */\nexport class StripePermissionError extends StripeError {\n}\n/**\n * RateLimitError is raised in cases where an account is putting too much load\n * on Stripe's API servers (usually by performing too many requests). Please\n * back off on request rate.\n */\nexport class StripeRateLimitError extends StripeError {\n}\n/**\n * StripeConnectionError is raised in the event that the SDK can't connect to\n * Stripe's servers. That can be for a variety of different reasons from a\n * downed network to a bad TLS certificate.\n */\nexport class StripeConnectionError extends StripeError {\n}\n/**\n * SignatureVerificationError is raised when the signature verification for a\n * webhook fails\n */\nexport class StripeSignatureVerificationError extends StripeError {\n    constructor(header, payload, raw = {}) {\n        super(raw);\n        this.header = header;\n        this.payload = payload;\n    }\n}\n/**\n * IdempotencyError is raised in cases where an idempotency key was used\n * improperly.\n */\nexport class StripeIdempotencyError extends StripeError {\n}\n/**\n * InvalidGrantError is raised when a specified code doesn't exist, is\n * expired, has been used, or doesn't belong to you; a refresh token doesn't\n * exist, or doesn't belong to you; or if an API key's mode (live or test)\n * doesn't match the mode of a code or refresh token.\n */\nexport class StripeInvalidGrantError extends StripeError {\n}\n/**\n * Any other error from Stripe not specifically captured above\n */\nexport class StripeUnknownError extends StripeError {\n}\n","// File generated from our OpenAPI spec\nexport const ApiVersion = '2023-10-16';\n","// File generated from our OpenAPI spec\nimport { resourceNamespace } from './ResourceNamespace.js';\nimport { Accounts as FinancialConnectionsAccounts } from './resources/FinancialConnections/Accounts.js';\nimport { Authorizations as TestHelpersIssuingAuthorizations } from './resources/TestHelpers/Issuing/Authorizations.js';\nimport { Authorizations as IssuingAuthorizations } from './resources/Issuing/Authorizations.js';\nimport { Calculations as TaxCalculations } from './resources/Tax/Calculations.js';\nimport { Cardholders as IssuingCardholders } from './resources/Issuing/Cardholders.js';\nimport { Cards as TestHelpersIssuingCards } from './resources/TestHelpers/Issuing/Cards.js';\nimport { Cards as IssuingCards } from './resources/Issuing/Cards.js';\nimport { Configurations as BillingPortalConfigurations } from './resources/BillingPortal/Configurations.js';\nimport { Configurations as TerminalConfigurations } from './resources/Terminal/Configurations.js';\nimport { ConnectionTokens as TerminalConnectionTokens } from './resources/Terminal/ConnectionTokens.js';\nimport { CreditReversals as TreasuryCreditReversals } from './resources/Treasury/CreditReversals.js';\nimport { Customers as TestHelpersCustomers } from './resources/TestHelpers/Customers.js';\nimport { DebitReversals as TreasuryDebitReversals } from './resources/Treasury/DebitReversals.js';\nimport { Disputes as IssuingDisputes } from './resources/Issuing/Disputes.js';\nimport { EarlyFraudWarnings as RadarEarlyFraudWarnings } from './resources/Radar/EarlyFraudWarnings.js';\nimport { FinancialAccounts as TreasuryFinancialAccounts } from './resources/Treasury/FinancialAccounts.js';\nimport { InboundTransfers as TestHelpersTreasuryInboundTransfers } from './resources/TestHelpers/Treasury/InboundTransfers.js';\nimport { InboundTransfers as TreasuryInboundTransfers } from './resources/Treasury/InboundTransfers.js';\nimport { Locations as TerminalLocations } from './resources/Terminal/Locations.js';\nimport { Orders as ClimateOrders } from './resources/Climate/Orders.js';\nimport { OutboundPayments as TestHelpersTreasuryOutboundPayments } from './resources/TestHelpers/Treasury/OutboundPayments.js';\nimport { OutboundPayments as TreasuryOutboundPayments } from './resources/Treasury/OutboundPayments.js';\nimport { OutboundTransfers as TestHelpersTreasuryOutboundTransfers } from './resources/TestHelpers/Treasury/OutboundTransfers.js';\nimport { OutboundTransfers as TreasuryOutboundTransfers } from './resources/Treasury/OutboundTransfers.js';\nimport { PersonalizationDesigns as TestHelpersIssuingPersonalizationDesigns } from './resources/TestHelpers/Issuing/PersonalizationDesigns.js';\nimport { PersonalizationDesigns as IssuingPersonalizationDesigns } from './resources/Issuing/PersonalizationDesigns.js';\nimport { PhysicalBundles as IssuingPhysicalBundles } from './resources/Issuing/PhysicalBundles.js';\nimport { Products as ClimateProducts } from './resources/Climate/Products.js';\nimport { Readers as TestHelpersTerminalReaders } from './resources/TestHelpers/Terminal/Readers.js';\nimport { Readers as TerminalReaders } from './resources/Terminal/Readers.js';\nimport { ReceivedCredits as TestHelpersTreasuryReceivedCredits } from './resources/TestHelpers/Treasury/ReceivedCredits.js';\nimport { ReceivedCredits as TreasuryReceivedCredits } from './resources/Treasury/ReceivedCredits.js';\nimport { ReceivedDebits as TestHelpersTreasuryReceivedDebits } from './resources/TestHelpers/Treasury/ReceivedDebits.js';\nimport { ReceivedDebits as TreasuryReceivedDebits } from './resources/Treasury/ReceivedDebits.js';\nimport { Refunds as TestHelpersRefunds } from './resources/TestHelpers/Refunds.js';\nimport { Registrations as TaxRegistrations } from './resources/Tax/Registrations.js';\nimport { ReportRuns as ReportingReportRuns } from './resources/Reporting/ReportRuns.js';\nimport { ReportTypes as ReportingReportTypes } from './resources/Reporting/ReportTypes.js';\nimport { ScheduledQueryRuns as SigmaScheduledQueryRuns } from './resources/Sigma/ScheduledQueryRuns.js';\nimport { Secrets as AppsSecrets } from './resources/Apps/Secrets.js';\nimport { Sessions as BillingPortalSessions } from './resources/BillingPortal/Sessions.js';\nimport { Sessions as CheckoutSessions } from './resources/Checkout/Sessions.js';\nimport { Sessions as FinancialConnectionsSessions } from './resources/FinancialConnections/Sessions.js';\nimport { Settings as TaxSettings } from './resources/Tax/Settings.js';\nimport { Suppliers as ClimateSuppliers } from './resources/Climate/Suppliers.js';\nimport { TestClocks as TestHelpersTestClocks } from './resources/TestHelpers/TestClocks.js';\nimport { Tokens as IssuingTokens } from './resources/Issuing/Tokens.js';\nimport { TransactionEntries as TreasuryTransactionEntries } from './resources/Treasury/TransactionEntries.js';\nimport { Transactions as TestHelpersIssuingTransactions } from './resources/TestHelpers/Issuing/Transactions.js';\nimport { Transactions as FinancialConnectionsTransactions } from './resources/FinancialConnections/Transactions.js';\nimport { Transactions as IssuingTransactions } from './resources/Issuing/Transactions.js';\nimport { Transactions as TaxTransactions } from './resources/Tax/Transactions.js';\nimport { Transactions as TreasuryTransactions } from './resources/Treasury/Transactions.js';\nimport { ValueListItems as RadarValueListItems } from './resources/Radar/ValueListItems.js';\nimport { ValueLists as RadarValueLists } from './resources/Radar/ValueLists.js';\nimport { VerificationReports as IdentityVerificationReports } from './resources/Identity/VerificationReports.js';\nimport { VerificationSessions as IdentityVerificationSessions } from './resources/Identity/VerificationSessions.js';\nexport { Accounts as Account } from './resources/Accounts.js';\nexport { AccountLinks } from './resources/AccountLinks.js';\nexport { AccountSessions } from './resources/AccountSessions.js';\nexport { Accounts } from './resources/Accounts.js';\nexport { ApplePayDomains } from './resources/ApplePayDomains.js';\nexport { ApplicationFees } from './resources/ApplicationFees.js';\nexport { Balance } from './resources/Balance.js';\nexport { BalanceTransactions } from './resources/BalanceTransactions.js';\nexport { Charges } from './resources/Charges.js';\nexport { CountrySpecs } from './resources/CountrySpecs.js';\nexport { Coupons } from './resources/Coupons.js';\nexport { CreditNotes } from './resources/CreditNotes.js';\nexport { CustomerSessions } from './resources/CustomerSessions.js';\nexport { Customers } from './resources/Customers.js';\nexport { Disputes } from './resources/Disputes.js';\nexport { EphemeralKeys } from './resources/EphemeralKeys.js';\nexport { Events } from './resources/Events.js';\nexport { ExchangeRates } from './resources/ExchangeRates.js';\nexport { FileLinks } from './resources/FileLinks.js';\nexport { Files } from './resources/Files.js';\nexport { InvoiceItems } from './resources/InvoiceItems.js';\nexport { Invoices } from './resources/Invoices.js';\nexport { Mandates } from './resources/Mandates.js';\nexport { OAuth } from './resources/OAuth.js';\nexport { PaymentIntents } from './resources/PaymentIntents.js';\nexport { PaymentLinks } from './resources/PaymentLinks.js';\nexport { PaymentMethodConfigurations } from './resources/PaymentMethodConfigurations.js';\nexport { PaymentMethodDomains } from './resources/PaymentMethodDomains.js';\nexport { PaymentMethods } from './resources/PaymentMethods.js';\nexport { Payouts } from './resources/Payouts.js';\nexport { Plans } from './resources/Plans.js';\nexport { Prices } from './resources/Prices.js';\nexport { Products } from './resources/Products.js';\nexport { PromotionCodes } from './resources/PromotionCodes.js';\nexport { Quotes } from './resources/Quotes.js';\nexport { Refunds } from './resources/Refunds.js';\nexport { Reviews } from './resources/Reviews.js';\nexport { SetupAttempts } from './resources/SetupAttempts.js';\nexport { SetupIntents } from './resources/SetupIntents.js';\nexport { ShippingRates } from './resources/ShippingRates.js';\nexport { Sources } from './resources/Sources.js';\nexport { SubscriptionItems } from './resources/SubscriptionItems.js';\nexport { SubscriptionSchedules } from './resources/SubscriptionSchedules.js';\nexport { Subscriptions } from './resources/Subscriptions.js';\nexport { TaxCodes } from './resources/TaxCodes.js';\nexport { TaxIds } from './resources/TaxIds.js';\nexport { TaxRates } from './resources/TaxRates.js';\nexport { Tokens } from './resources/Tokens.js';\nexport { Topups } from './resources/Topups.js';\nexport { Transfers } from './resources/Transfers.js';\nexport { WebhookEndpoints } from './resources/WebhookEndpoints.js';\nexport const Apps = resourceNamespace('apps', { Secrets: AppsSecrets });\nexport const BillingPortal = resourceNamespace('billingPortal', {\n    Configurations: BillingPortalConfigurations,\n    Sessions: BillingPortalSessions,\n});\nexport const Checkout = resourceNamespace('checkout', {\n    Sessions: CheckoutSessions,\n});\nexport const Climate = resourceNamespace('climate', {\n    Orders: ClimateOrders,\n    Products: ClimateProducts,\n    Suppliers: ClimateSuppliers,\n});\nexport const FinancialConnections = resourceNamespace('financialConnections', {\n    Accounts: FinancialConnectionsAccounts,\n    Sessions: FinancialConnectionsSessions,\n    Transactions: FinancialConnectionsTransactions,\n});\nexport const Identity = resourceNamespace('identity', {\n    VerificationReports: IdentityVerificationReports,\n    VerificationSessions: IdentityVerificationSessions,\n});\nexport const Issuing = resourceNamespace('issuing', {\n    Authorizations: IssuingAuthorizations,\n    Cardholders: IssuingCardholders,\n    Cards: IssuingCards,\n    Disputes: IssuingDisputes,\n    PersonalizationDesigns: IssuingPersonalizationDesigns,\n    PhysicalBundles: IssuingPhysicalBundles,\n    Tokens: IssuingTokens,\n    Transactions: IssuingTransactions,\n});\nexport const Radar = resourceNamespace('radar', {\n    EarlyFraudWarnings: RadarEarlyFraudWarnings,\n    ValueListItems: RadarValueListItems,\n    ValueLists: RadarValueLists,\n});\nexport const Reporting = resourceNamespace('reporting', {\n    ReportRuns: ReportingReportRuns,\n    ReportTypes: ReportingReportTypes,\n});\nexport const Sigma = resourceNamespace('sigma', {\n    ScheduledQueryRuns: SigmaScheduledQueryRuns,\n});\nexport const Tax = resourceNamespace('tax', {\n    Calculations: TaxCalculations,\n    Registrations: TaxRegistrations,\n    Settings: TaxSettings,\n    Transactions: TaxTransactions,\n});\nexport const Terminal = resourceNamespace('terminal', {\n    Configurations: TerminalConfigurations,\n    ConnectionTokens: TerminalConnectionTokens,\n    Locations: TerminalLocations,\n    Readers: TerminalReaders,\n});\nexport const TestHelpers = resourceNamespace('testHelpers', {\n    Customers: TestHelpersCustomers,\n    Refunds: TestHelpersRefunds,\n    TestClocks: TestHelpersTestClocks,\n    Issuing: resourceNamespace('issuing', {\n        Authorizations: TestHelpersIssuingAuthorizations,\n        Cards: TestHelpersIssuingCards,\n        PersonalizationDesigns: TestHelpersIssuingPersonalizationDesigns,\n        Transactions: TestHelpersIssuingTransactions,\n    }),\n    Terminal: resourceNamespace('terminal', {\n        Readers: TestHelpersTerminalReaders,\n    }),\n    Treasury: resourceNamespace('treasury', {\n        InboundTransfers: TestHelpersTreasuryInboundTransfers,\n        OutboundPayments: TestHelpersTreasuryOutboundPayments,\n        OutboundTransfers: TestHelpersTreasuryOutboundTransfers,\n        ReceivedCredits: TestHelpersTreasuryReceivedCredits,\n        ReceivedDebits: TestHelpersTreasuryReceivedDebits,\n    }),\n});\nexport const Treasury = resourceNamespace('treasury', {\n    CreditReversals: TreasuryCreditReversals,\n    DebitReversals: TreasuryDebitReversals,\n    FinancialAccounts: TreasuryFinancialAccounts,\n    InboundTransfers: TreasuryInboundTransfers,\n    OutboundPayments: TreasuryOutboundPayments,\n    OutboundTransfers: TreasuryOutboundTransfers,\n    ReceivedCredits: TreasuryReceivedCredits,\n    ReceivedDebits: TreasuryReceivedDebits,\n    TransactionEntries: TreasuryTransactionEntries,\n    Transactions: TreasuryTransactions,\n});\n","// ResourceNamespace allows you to create nested resources, i.e. `stripe.issuing.cards`.\n// It also works recursively, so you could do i.e. `stripe.billing.invoicing.pay`.\nfunction ResourceNamespace(stripe, resources) {\n    for (const name in resources) {\n        const camelCaseName = name[0].toLowerCase() + name.substring(1);\n        const resource = new resources[name](stripe);\n        this[camelCaseName] = resource;\n    }\n}\nexport function resourceNamespace(namespace, resources) {\n    return function (stripe) {\n        return new ResourceNamespace(stripe, resources);\n    };\n}\n","import * as qs from 'qs';\nconst OPTIONS_KEYS = [\n    'apiKey',\n    'idempotencyKey',\n    'stripeAccount',\n    'apiVersion',\n    'maxNetworkRetries',\n    'timeout',\n    'host',\n];\nexport function isOptionsHash(o) {\n    return (o \u0026\u0026\n        typeof o === 'object' \u0026\u0026\n        OPTIONS_KEYS.some((prop) =\u003e Object.prototype.hasOwnProperty.call(o, prop)));\n}\n/**\n * Stringifies an Object, accommodating nested objects\n * (forming the conventional key 'parent[child]=value')\n */\nexport function stringifyRequestData(data) {\n    return (qs\n        .stringify(data, {\n        serializeDate: (d) =\u003e Math.floor(d.getTime() / 1000).toString(),\n    })\n        // Don't use strict form encoding by changing the square bracket control\n        // characters back to their literals. This is fine by the server, and\n        // makes these parameter strings easier to read.\n        .replace(/%5B/g, '[')\n        .replace(/%5D/g, ']'));\n}\n/**\n * Outputs a new function with interpolated object property values.\n * Use like so:\n *   const fn = makeURLInterpolator('some/url/{param1}/{param2}');\n *   fn({ param1: 123, param2: 456 }); // =\u003e 'some/url/123/456'\n */\nexport const makeURLInterpolator = (() =\u003e {\n    const rc = {\n        '\\n': '\\\\n',\n        '\"': '\\\\\"',\n        '\\u2028': '\\\\u2028',\n        '\\u2029': '\\\\u2029',\n    };\n    return (str) =\u003e {\n        const cleanString = str.replace(/[\"\\n\\r\\u2028\\u2029]/g, ($0) =\u003e rc[$0]);\n        return (outputs) =\u003e {\n            return cleanString.replace(/\\{([\\s\\S]+?)\\}/g, ($0, $1) =\u003e \n            // @ts-ignore\n            encodeURIComponent(outputs[$1] || ''));\n        };\n    };\n})();\nexport function extractUrlParams(path) {\n    const params = path.match(/\\{\\w+\\}/g);\n    if (!params) {\n        return [];\n    }\n    return params.map((param) =\u003e param.replace(/[{}]/g, ''));\n}\n/**\n * Return the data argument from a list of arguments\n *\n * @param {object[]} args\n * @returns {object}\n */\nexport function getDataFromArgs(args) {\n    if (!Array.isArray(args) || !args[0] || typeof args[0] !== 'object') {\n        return {};\n    }\n    if (!isOptionsHash(args[0])) {\n        return args.shift();\n    }\n    const argKeys = Object.keys(args[0]);\n    const optionKeysInArgs = argKeys.filter((key) =\u003e OPTIONS_KEYS.includes(key));\n    // In some cases options may be the provided as the first argument.\n    // Here we're detecting a case where there are two distinct arguments\n    // (the first being args and the second options) and with known\n    // option keys in the first so that we can warn the user about it.\n    if (optionKeysInArgs.length \u003e 0 \u0026\u0026\n        optionKeysInArgs.length !== argKeys.length) {\n        emitWarning(`Options found in arguments (${optionKeysInArgs.join(', ')}). Did you mean to pass an options object? See https://github.com/stripe/stripe-node/wiki/Passing-Options.`);\n    }\n    return {};\n}\n/**\n * Return the options hash from a list of arguments\n */\nexport function getOptionsFromArgs(args) {\n    const opts = {\n        auth: null,\n        host: null,\n        headers: {},\n        settings: {},\n    };\n    if (args.length \u003e 0) {\n        const arg = args[args.length - 1];\n        if (typeof arg === 'string') {\n            opts.auth = args.pop();\n        }\n        else if (isOptionsHash(arg)) {\n            const params = Object.assign({}, args.pop());\n            const extraKeys = Object.keys(params).filter((key) =\u003e !OPTIONS_KEYS.includes(key));\n            if (extraKeys.length) {\n                emitWarning(`Invalid options found (${extraKeys.join(', ')}); ignoring.`);\n            }\n            if (params.apiKey) {\n                opts.auth = params.apiKey;\n            }\n            if (params.idempotencyKey) {\n                opts.headers['Idempotency-Key'] = params.idempotencyKey;\n            }\n            if (params.stripeAccount) {\n                opts.headers['Stripe-Account'] = params.stripeAccount;\n            }\n            if (params.apiVersion) {\n                opts.headers['Stripe-Version'] = params.apiVersion;\n            }\n            if (Number.isInteger(params.maxNetworkRetries)) {\n                opts.settings.maxNetworkRetries = params.maxNetworkRetries;\n            }\n            if (Number.isInteger(params.timeout)) {\n                opts.settings.timeout = params.timeout;\n            }\n            if (params.host) {\n                opts.host = params.host;\n            }\n        }\n    }\n    return opts;\n}\n/**\n * Provide simple \"Class\" extension mechanism.\n * \u003c!-- Public API accessible via Stripe.StripeResource.extend --\u003e\n */\nexport function protoExtend(sub) {\n    // eslint-disable-next-line @typescript-eslint/no-this-alias\n    const Super = this;\n    const Constructor = Object.prototype.hasOwnProperty.call(sub, 'constructor')\n        ? sub.constructor\n        : function (...args) {\n            Super.apply(this, args);\n        };\n    // This initialization logic is somewhat sensitive to be compatible with\n    // divergent JS implementations like the one found in Qt. See here for more\n    // context:\n    //\n    // https://github.com/stripe/stripe-node/pull/334\n    Object.assign(Constructor, Super);\n    Constructor.prototype = Object.create(Super.prototype);\n    Object.assign(Constructor.prototype, sub);\n    return Constructor;\n}\n/**\n * Remove empty values from an object\n */\nexport function removeNullish(obj) {\n    if (typeof obj !== 'object') {\n        throw new Error('Argument must be an object');\n    }\n    return Object.keys(obj).reduce((result, key) =\u003e {\n        if (obj[key] != null) {\n            result[key] = obj[key];\n        }\n        return result;\n    }, {});\n}\n/**\n * Normalize standard HTTP Headers:\n * {'foo-bar': 'hi'}\n * becomes\n * {'Foo-Bar': 'hi'}\n */\nexport function normalizeHeaders(obj) {\n    if (!(obj \u0026\u0026 typeof obj === 'object')) {\n        return obj;\n    }\n    return Object.keys(obj).reduce((result, header) =\u003e {\n        result[normalizeHeader(header)] = obj[header];\n        return result;\n    }, {});\n}\n/**\n * Stolen from https://github.com/marten-de-vries/header-case-normalizer/blob/master/index.js#L36-L41\n * without the exceptions which are irrelevant to us.\n */\nexport function normalizeHeader(header) {\n    return header\n        .split('-')\n        .map((text) =\u003e text.charAt(0).toUpperCase() + text.substr(1).toLowerCase())\n        .join('-');\n}\nexport function callbackifyPromiseWithTimeout(promise, callback) {\n    if (callback) {\n        // Ensure callback is called outside of promise stack.\n        return promise.then((res) =\u003e {\n            setTimeout(() =\u003e {\n                callback(null, res);\n            }, 0);\n        }, (err) =\u003e {\n            setTimeout(() =\u003e {\n                callback(err, null);\n            }, 0);\n        });\n    }\n    return promise;\n}\n/**\n * Allow for special capitalization cases (such as OAuth)\n */\nexport function pascalToCamelCase(name) {\n    if (name === 'OAuth') {\n        return 'oauth';\n    }\n    else {\n        return name[0].toLowerCase() + name.substring(1);\n    }\n}\nexport function emitWarning(warning) {\n    if (typeof process.emitWarning !== 'function') {\n        return console.warn(`Stripe: ${warning}`); /* eslint-disable-line no-console */\n    }\n    return process.emitWarning(warning, 'Stripe');\n}\nexport function isObject(obj) {\n    const type = typeof obj;\n    return (type === 'function' || type === 'object') \u0026\u0026 !!obj;\n}\n// For use in multipart requests\nexport function flattenAndStringify(data) {\n    const result = {};\n    const step = (obj, prevKey) =\u003e {\n        Object.keys(obj).forEach((key) =\u003e {\n            // @ts-ignore\n            const value = obj[key];\n            const newKey = prevKey ? `${prevKey}[${key}]` : key;\n            if (isObject(value)) {\n                if (!(value instanceof Uint8Array) \u0026\u0026\n                    !Object.prototype.hasOwnProperty.call(value, 'data')) {\n                    // Non-buffer non-file Objects are recursively flattened\n                    return step(value, newKey);\n                }\n                else {\n                    // Buffers and file objects are stored without modification\n                    result[newKey] = value;\n                }\n            }\n            else {\n                // Primitives are converted to strings\n                result[newKey] = String(value);\n            }\n        });\n    };\n    step(data, null);\n    return result;\n}\nexport function validateInteger(name, n, defaultVal) {\n    if (!Number.isInteger(n)) {\n        if (defaultVal !== undefined) {\n            return defaultVal;\n        }\n        else {\n            throw new Error(`${name} must be an integer`);\n        }\n    }\n    return n;\n}\nexport function determineProcessUserAgentProperties() {\n    return typeof process === 'undefined'\n        ? {}\n        : {\n            lang_version: process.version,\n            platform: process.platform,\n        };\n}\n/**\n * Joins an array of Uint8Arrays into a single Uint8Array\n */\nexport function concat(arrays) {\n    const totalLength = arrays.reduce((len, array) =\u003e len + array.length, 0);\n    const merged = new Uint8Array(totalLength);\n    let offset = 0;\n    arrays.forEach((array) =\u003e {\n        merged.set(array, offset);\n        offset += array.length;\n    });\n    return merged;\n}\n","import { callbackifyPromiseWithTimeout, getDataFromArgs } from './utils.js';\nclass StripeIterator {\n    constructor(firstPagePromise, requestArgs, spec, stripeResource) {\n        this.index = 0;\n        this.pagePromise = firstPagePromise;\n        this.promiseCache = { currentPromise: null };\n        this.requestArgs = requestArgs;\n        this.spec = spec;\n        this.stripeResource = stripeResource;\n    }\n    async iterate(pageResult) {\n        if (!(pageResult \u0026\u0026\n            pageResult.data \u0026\u0026\n            typeof pageResult.data.length === 'number')) {\n            throw Error('Unexpected: Stripe API response does not have a well-formed `data` array.');\n        }\n        const reverseIteration = isReverseIteration(this.requestArgs);\n        if (this.index \u003c pageResult.data.length) {\n            const idx = reverseIteration\n                ? pageResult.data.length - 1 - this.index\n                : this.index;\n            const value = pageResult.data[idx];\n            this.index += 1;\n            return { value, done: false };\n        }\n        else if (pageResult.has_more) {\n            // Reset counter, request next page, and recurse.\n            this.index = 0;\n            this.pagePromise = this.getNextPage(pageResult);\n            const nextPageResult = await this.pagePromise;\n            return this.iterate(nextPageResult);\n        }\n        return { done: true, value: undefined };\n    }\n    /** @abstract */\n    getNextPage(_pageResult) {\n        throw new Error('Unimplemented');\n    }\n    async _next() {\n        return this.iterate(await this.pagePromise);\n    }\n    next() {\n        /**\n         * If a user calls `.next()` multiple times in parallel,\n         * return the same result until something has resolved\n         * to prevent page-turning race conditions.\n         */\n        if (this.promiseCache.currentPromise) {\n            return this.promiseCache.currentPromise;\n        }\n        const nextPromise = (async () =\u003e {\n            const ret = await this._next();\n            this.promiseCache.currentPromise = null;\n            return ret;\n        })();\n        this.promiseCache.currentPromise = nextPromise;\n        return nextPromise;\n    }\n}\nclass ListIterator extends StripeIterator {\n    getNextPage(pageResult) {\n        const reverseIteration = isReverseIteration(this.requestArgs);\n        const lastId = getLastId(pageResult, reverseIteration);\n        return this.stripeResource._makeRequest(this.requestArgs, this.spec, {\n            [reverseIteration ? 'ending_before' : 'starting_after']: lastId,\n        });\n    }\n}\nclass SearchIterator extends StripeIterator {\n    getNextPage(pageResult) {\n        if (!pageResult.next_page) {\n            throw Error('Unexpected: Stripe API response does not have a well-formed `next_page` field, but `has_more` was true.');\n        }\n        return this.stripeResource._makeRequest(this.requestArgs, this.spec, {\n            page: pageResult.next_page,\n        });\n    }\n}\nexport const makeAutoPaginationMethods = (stripeResource, requestArgs, spec, firstPagePromise) =\u003e {\n    if (spec.methodType === 'search') {\n        return makeAutoPaginationMethodsFromIterator(new SearchIterator(firstPagePromise, requestArgs, spec, stripeResource));\n    }\n    if (spec.methodType === 'list') {\n        return makeAutoPaginationMethodsFromIterator(new ListIterator(firstPagePromise, requestArgs, spec, stripeResource));\n    }\n    return null;\n};\nconst makeAutoPaginationMethodsFromIterator = (iterator) =\u003e {\n    const autoPagingEach = makeAutoPagingEach((...args) =\u003e iterator.next(...args));\n    const autoPagingToArray = makeAutoPagingToArray(autoPagingEach);\n    const autoPaginationMethods = {\n        autoPagingEach,\n        autoPagingToArray,\n        // Async iterator functions:\n        next: () =\u003e iterator.next(),\n        return: () =\u003e {\n            // This is required for `break`.\n            return {};\n        },\n        [getAsyncIteratorSymbol()]: () =\u003e {\n            return autoPaginationMethods;\n        },\n    };\n    return autoPaginationMethods;\n};\n/**\n * ----------------\n * Private Helpers:\n * ----------------\n */\nfunction getAsyncIteratorSymbol() {\n    if (typeof Symbol !== 'undefined' \u0026\u0026 Symbol.asyncIterator) {\n        return Symbol.asyncIterator;\n    }\n    // Follow the convention from libraries like iterall: https://github.com/leebyron/iterall#asynciterator-1\n    return '@@asyncIterator';\n}\nfunction getDoneCallback(args) {\n    if (args.length \u003c 2) {\n        return null;\n    }\n    const onDone = args[1];\n    if (typeof onDone !== 'function') {\n        throw Error(`The second argument to autoPagingEach, if present, must be a callback function; received ${typeof onDone}`);\n    }\n    return onDone;\n}\n/**\n * We allow four forms of the `onItem` callback (the middle two being equivalent),\n *\n *   1. `.autoPagingEach((item) =\u003e { doSomething(item); return false; });`\n *   2. `.autoPagingEach(async (item) =\u003e { await doSomething(item); return false; });`\n *   3. `.autoPagingEach((item) =\u003e doSomething(item).then(() =\u003e false));`\n *   4. `.autoPagingEach((item, next) =\u003e { doSomething(item); next(false); });`\n *\n * In addition to standard validation, this helper\n * coalesces the former forms into the latter form.\n */\nfunction getItemCallback(args) {\n    if (args.length === 0) {\n        return undefined;\n    }\n    const onItem = args[0];\n    if (typeof onItem !== 'function') {\n        throw Error(`The first argument to autoPagingEach, if present, must be a callback function; received ${typeof onItem}`);\n    }\n    // 4. `.autoPagingEach((item, next) =\u003e { doSomething(item); next(false); });`\n    if (onItem.length === 2) {\n        return onItem;\n    }\n    if (onItem.length \u003e 2) {\n        throw Error(`The \\`onItem\\` callback function passed to autoPagingEach must accept at most two arguments; got ${onItem}`);\n    }\n    // This magically handles all three of these usecases (the latter two being functionally identical):\n    // 1. `.autoPagingEach((item) =\u003e { doSomething(item); return false; });`\n    // 2. `.autoPagingEach(async (item) =\u003e { await doSomething(item); return false; });`\n    // 3. `.autoPagingEach((item) =\u003e doSomething(item).then(() =\u003e false));`\n    return function _onItem(item, next) {\n        const shouldContinue = onItem(item);\n        next(shouldContinue);\n    };\n}\nfunction getLastId(listResult, reverseIteration) {\n    const lastIdx = reverseIteration ? 0 : listResult.data.length - 1;\n    const lastItem = listResult.data[lastIdx];\n    const lastId = lastItem \u0026\u0026 lastItem.id;\n    if (!lastId) {\n        throw Error('Unexpected: No `id` found on the last item while auto-paging a list.');\n    }\n    return lastId;\n}\nfunction makeAutoPagingEach(asyncIteratorNext) {\n    return function autoPagingEach( /* onItem?, onDone? */) {\n        const args = [].slice.call(arguments);\n        const onItem = getItemCallback(args);\n        const onDone = getDoneCallback(args);\n        if (args.length \u003e 2) {\n            throw Error(`autoPagingEach takes up to two arguments; received ${args}`);\n        }\n        const autoPagePromise = wrapAsyncIteratorWithCallback(asyncIteratorNext, \n        // @ts-ignore we might need a null check\n        onItem);\n        return callbackifyPromiseWithTimeout(autoPagePromise, onDone);\n    };\n}\nfunction makeAutoPagingToArray(autoPagingEach) {\n    return function autoPagingToArray(opts, onDone) {\n        const limit = opts \u0026\u0026 opts.limit;\n        if (!limit) {\n            throw Error('You must pass a `limit` option to autoPagingToArray, e.g., `autoPagingToArray({limit: 1000});`.');\n        }\n        if (limit \u003e 10000) {\n            throw Error('You cannot specify a limit of more than 10,000 items to fetch in `autoPagingToArray`; use `autoPagingEach` to iterate through longer lists.');\n        }\n        const promise = new Promise((resolve, reject) =\u003e {\n            const items = [];\n            autoPagingEach((item) =\u003e {\n                items.push(item);\n                if (items.length \u003e= limit) {\n                    return false;\n                }\n            })\n                .then(() =\u003e {\n                resolve(items);\n            })\n                .catch(reject);\n        });\n        // @ts-ignore\n        return callbackifyPromiseWithTimeout(promise, onDone);\n    };\n}\nfunction wrapAsyncIteratorWithCallback(asyncIteratorNext, onItem) {\n    return new Promise((resolve, reject) =\u003e {\n        function handleIteration(iterResult) {\n            if (iterResult.done) {\n                resolve();\n                return;\n            }\n            const item = iterResult.value;\n            return new Promise((next) =\u003e {\n                // Bit confusing, perhaps; we pass a `resolve` fn\n                // to the user, so they can decide when and if to continue.\n                // They can return false, or a promise which resolves to false, to break.\n                onItem(item, next);\n            }).then((shouldContinue) =\u003e {\n                if (shouldContinue === false) {\n                    return handleIteration({ done: true, value: undefined });\n                }\n                else {\n                    return asyncIteratorNext().then(handleIteration);\n                }\n            });\n        }\n        asyncIteratorNext()\n            .then(handleIteration)\n            .catch(reject);\n    });\n}\nfunction isReverseIteration(requestArgs) {\n    const args = [].slice.call(requestArgs);\n    const dataFromArgs = getDataFromArgs(args);\n    return !!dataFromArgs.ending_before;\n}\n","import { callbackifyPromiseWithTimeout, extractUrlParams } from './utils.js';\nimport { makeAutoPaginationMethods } from './autoPagination.js';\n/**\n * Create an API method from the declared spec.\n *\n * @param [spec.method='GET'] Request Method (POST, GET, DELETE, PUT)\n * @param [spec.path=''] Path to be appended to the API BASE_PATH, joined with\n *  the instance's path (e.g. 'charges' or 'customers')\n * @param [spec.fullPath=''] Fully qualified path to the method (eg. /v1/a/b/c).\n *  If this is specified, path should not be specified.\n * @param [spec.urlParams=[]] Array of required arguments in the order that they\n *  must be passed by the consumer of the API. Subsequent optional arguments are\n *  optionally passed through a hash (Object) as the penultimate argument\n *  (preceding the also-optional callback argument\n * @param [spec.encode] Function for mutating input parameters to a method.\n *  Usefully for applying transforms to data on a per-method basis.\n * @param [spec.host] Hostname for the request.\n *\n * \u003c!-- Public API accessible via Stripe.StripeResource.method --\u003e\n */\nexport function stripeMethod(spec) {\n    if (spec.path !== undefined \u0026\u0026 spec.fullPath !== undefined) {\n        throw new Error(`Method spec specified both a 'path' (${spec.path}) and a 'fullPath' (${spec.fullPath}).`);\n    }\n    return function (...args) {\n        const callback = typeof args[args.length - 1] == 'function' \u0026\u0026 args.pop();\n        spec.urlParams = extractUrlParams(spec.fullPath || this.createResourcePathWithSymbols(spec.path || ''));\n        const requestPromise = callbackifyPromiseWithTimeout(this._makeRequest(args, spec, {}), callback);\n        Object.assign(requestPromise, makeAutoPaginationMethods(this, args, spec, requestPromise));\n        return requestPromise;\n    };\n}\n","import { getDataFromArgs, getOptionsFromArgs, makeURLInterpolator, protoExtend, stringifyRequestData, } from './utils.js';\nimport { stripeMethod } from './StripeMethod.js';\n// Provide extension mechanism for Stripe Resource Sub-Classes\nStripeResource.extend = protoExtend;\n// Expose method-creator\nStripeResource.method = stripeMethod;\nStripeResource.MAX_BUFFERED_REQUEST_METRICS = 100;\n/**\n * Encapsulates request logic for a Stripe Resource\n */\nfunction StripeResource(stripe, deprecatedUrlData) {\n    this._stripe = stripe;\n    if (deprecatedUrlData) {\n        throw new Error('Support for curried url params was dropped in stripe-node v7.0.0. Instead, pass two ids.');\n    }\n    this.basePath = makeURLInterpolator(\n    // @ts-ignore changing type of basePath\n    this.basePath || stripe.getApiField('basePath'));\n    // @ts-ignore changing type of path\n    this.resourcePath = this.path;\n    // @ts-ignore changing type of path\n    this.path = makeURLInterpolator(this.path);\n    this.initialize(...arguments);\n}\nStripeResource.prototype = {\n    _stripe: null,\n    // @ts-ignore the type of path changes in ctor\n    path: '',\n    resourcePath: '',\n    // Methods that don't use the API's default '/v1' path can override it with this setting.\n    basePath: null,\n    initialize() { },\n    // Function to override the default data processor. This allows full control\n    // over how a StripeResource's request data will get converted into an HTTP\n    // body. This is useful for non-standard HTTP requests. The function should\n    // take method name, data, and headers as arguments.\n    requestDataProcessor: null,\n    // Function to add a validation checks before sending the request, errors should\n    // be thrown, and they will be passed to the callback/promise.\n    validateRequest: null,\n    createFullPath(commandPath, urlData) {\n        const urlParts = [this.basePath(urlData), this.path(urlData)];\n        if (typeof commandPath === 'function') {\n            const computedCommandPath = commandPath(urlData);\n            // If we have no actual command path, we just omit it to avoid adding a\n            // trailing slash. This is important for top-level listing requests, which\n            // do not have a command path.\n            if (computedCommandPath) {\n                urlParts.push(computedCommandPath);\n            }\n        }\n        else {\n            urlParts.push(commandPath);\n        }\n        return this._joinUrlParts(urlParts);\n    },\n    // Creates a relative resource path with symbols left in (unlike\n    // createFullPath which takes some data to replace them with). For example it\n    // might produce: /invoices/{id}\n    createResourcePathWithSymbols(pathWithSymbols) {\n        // If there is no path beyond the resource path, we want to produce just\n        // /\u003cresource path\u003e rather than /\u003cresource path\u003e/.\n        if (pathWithSymbols) {\n            return `/${this._joinUrlParts([this.resourcePath, pathWithSymbols])}`;\n        }\n        else {\n            return `/${this.resourcePath}`;\n        }\n    },\n    _joinUrlParts(parts) {\n        // Replace any accidentally doubled up slashes. This previously used\n        // path.join, which would do this as well. Unfortunately we need to do this\n        // as the functions for creating paths are technically part of the public\n        // interface and so we need to preserve backwards compatibility.\n        return parts.join('/').replace(/\\/{2,}/g, '/');\n    },\n    _getRequestOpts(requestArgs, spec, overrideData) {\n        // Extract spec values with defaults.\n        const requestMethod = (spec.method || 'GET').toUpperCase();\n        const usage = spec.usage || [];\n        const urlParams = spec.urlParams || [];\n        const encode = spec.encode || ((data) =\u003e data);\n        const isUsingFullPath = !!spec.fullPath;\n        const commandPath = makeURLInterpolator(isUsingFullPath ? spec.fullPath : spec.path || '');\n        // When using fullPath, we ignore the resource path as it should already be\n        // fully qualified.\n        const path = isUsingFullPath\n            ? spec.fullPath\n            : this.createResourcePathWithSymbols(spec.path);\n        // Don't mutate args externally.\n        const args = [].slice.call(requestArgs);\n        // Generate and validate url params.\n        const urlData = urlParams.reduce((urlData, param) =\u003e {\n            const arg = args.shift();\n            if (typeof arg !== 'string') {\n                throw new Error(`Stripe: Argument \"${param}\" must be a string, but got: ${arg} (on API request to \\`${requestMethod} ${path}\\`)`);\n            }\n            urlData[param] = arg;\n            return urlData;\n        }, {});\n        // Pull request data and options (headers, auth) from args.\n        const dataFromArgs = getDataFromArgs(args);\n        const data = encode(Object.assign({}, dataFromArgs, overrideData));\n        const options = getOptionsFromArgs(args);\n        const host = options.host || spec.host;\n        const streaming = !!spec.streaming;\n        // Validate that there are no more args.\n        if (args.filter((x) =\u003e x != null).length) {\n            throw new Error(`Stripe: Unknown arguments (${args}). Did you mean to pass an options object? See https://github.com/stripe/stripe-node/wiki/Passing-Options. (on API request to ${requestMethod} \\`${path}\\`)`);\n        }\n        // When using full path, we can just invoke the URL interpolator directly\n        // as we don't need to use the resource to create a full path.\n        const requestPath = isUsingFullPath\n            ? commandPath(urlData)\n            : this.createFullPath(commandPath, urlData);\n        const headers = Object.assign(options.headers, spec.headers);\n        if (spec.validator) {\n            spec.validator(data, { headers });\n        }\n        const dataInQuery = spec.method === 'GET' || spec.method === 'DELETE';\n        const bodyData = dataInQuery ? {} : data;\n        const queryData = dataInQuery ? data : {};\n        return {\n            requestMethod,\n            requestPath,\n            bodyData,\n            queryData,\n            auth: options.auth,\n            headers,\n            host: host !== null \u0026\u0026 host !== void 0 ? host : null,\n            streaming,\n            settings: options.settings,\n            usage,\n        };\n    },\n    _makeRequest(requestArgs, spec, overrideData) {\n        return new Promise((resolve, reject) =\u003e {\n            var _a;\n            let opts;\n            try {\n                opts = this._getRequestOpts(requestArgs, spec, overrideData);\n            }\n            catch (err) {\n                reject(err);\n                return;\n            }\n            function requestCallback(err, response) {\n                if (err) {\n                    reject(err);\n                }\n                else {\n                    resolve(spec.transformResponseData\n                        ? spec.transformResponseData(response)\n                        : response);\n                }\n            }\n            const emptyQuery = Object.keys(opts.queryData).length === 0;\n            const path = [\n                opts.requestPath,\n                emptyQuery ? '' : '?',\n                stringifyRequestData(opts.queryData),\n            ].join('');\n            const { headers, settings } = opts;\n            this._stripe._requestSender._request(opts.requestMethod, opts.host, path, opts.bodyData, opts.auth, { headers, settings, streaming: opts.streaming }, opts.usage, requestCallback, (_a = this.requestDataProcessor) === null || _a === void 0 ? void 0 : _a.bind(this));\n        });\n    },\n};\nexport { StripeResource };\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Accounts = StripeResource.extend({\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/financial_connections/accounts/{account}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/financial_connections/accounts',\n        methodType: 'list',\n    }),\n    disconnect: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/financial_connections/accounts/{account}/disconnect',\n    }),\n    listOwners: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/financial_connections/accounts/{account}/owners',\n        methodType: 'list',\n    }),\n    refresh: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/financial_connections/accounts/{account}/refresh',\n    }),\n    subscribe: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/financial_connections/accounts/{account}/subscribe',\n    }),\n    unsubscribe: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/financial_connections/accounts/{account}/unsubscribe',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Authorizations = StripeResource.extend({\n    create: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/test_helpers/issuing/authorizations',\n    }),\n    capture: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/test_helpers/issuing/authorizations/{authorization}/capture',\n    }),\n    expire: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/test_helpers/issuing/authorizations/{authorization}/expire',\n    }),\n    increment: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/test_helpers/issuing/authorizations/{authorization}/increment',\n    }),\n    reverse: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/test_helpers/issuing/authorizations/{authorization}/reverse',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Authorizations = StripeResource.extend({\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/issuing/authorizations/{authorization}',\n    }),\n    update: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/issuing/authorizations/{authorization}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/issuing/authorizations',\n        methodType: 'list',\n    }),\n    approve: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/issuing/authorizations/{authorization}/approve',\n    }),\n    decline: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/issuing/authorizations/{authorization}/decline',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Calculations = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/tax/calculations' }),\n    listLineItems: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/tax/calculations/{calculation}/line_items',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Cardholders = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/issuing/cardholders' }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/issuing/cardholders/{cardholder}',\n    }),\n    update: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/issuing/cardholders/{cardholder}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/issuing/cardholders',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Cards = StripeResource.extend({\n    deliverCard: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/test_helpers/issuing/cards/{card}/shipping/deliver',\n    }),\n    failCard: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/test_helpers/issuing/cards/{card}/shipping/fail',\n    }),\n    returnCard: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/test_helpers/issuing/cards/{card}/shipping/return',\n    }),\n    shipCard: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/test_helpers/issuing/cards/{card}/shipping/ship',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Cards = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/issuing/cards' }),\n    retrieve: stripeMethod({ method: 'GET', fullPath: '/v1/issuing/cards/{card}' }),\n    update: stripeMethod({ method: 'POST', fullPath: '/v1/issuing/cards/{card}' }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/issuing/cards',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Configurations = StripeResource.extend({\n    create: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/billing_portal/configurations',\n    }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/billing_portal/configurations/{configuration}',\n    }),\n    update: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/billing_portal/configurations/{configuration}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/billing_portal/configurations',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Configurations = StripeResource.extend({\n    create: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/terminal/configurations',\n    }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/terminal/configurations/{configuration}',\n    }),\n    update: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/terminal/configurations/{configuration}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/terminal/configurations',\n        methodType: 'list',\n    }),\n    del: stripeMethod({\n        method: 'DELETE',\n        fullPath: '/v1/terminal/configurations/{configuration}',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const ConnectionTokens = StripeResource.extend({\n    create: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/terminal/connection_tokens',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const CreditReversals = StripeResource.extend({\n    create: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/treasury/credit_reversals',\n    }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/treasury/credit_reversals/{credit_reversal}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/treasury/credit_reversals',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Customers = StripeResource.extend({\n    fundCashBalance: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/test_helpers/customers/{customer}/fund_cash_balance',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const DebitReversals = StripeResource.extend({\n    create: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/treasury/debit_reversals',\n    }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/treasury/debit_reversals/{debit_reversal}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/treasury/debit_reversals',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Disputes = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/issuing/disputes' }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/issuing/disputes/{dispute}',\n    }),\n    update: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/issuing/disputes/{dispute}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/issuing/disputes',\n        methodType: 'list',\n    }),\n    submit: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/issuing/disputes/{dispute}/submit',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const EarlyFraudWarnings = StripeResource.extend({\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/radar/early_fraud_warnings/{early_fraud_warning}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/radar/early_fraud_warnings',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const FinancialAccounts = StripeResource.extend({\n    create: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/treasury/financial_accounts',\n    }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/treasury/financial_accounts/{financial_account}',\n    }),\n    update: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/treasury/financial_accounts/{financial_account}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/treasury/financial_accounts',\n        methodType: 'list',\n    }),\n    retrieveFeatures: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/treasury/financial_accounts/{financial_account}/features',\n    }),\n    updateFeatures: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/treasury/financial_accounts/{financial_account}/features',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const InboundTransfers = StripeResource.extend({\n    fail: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/test_helpers/treasury/inbound_transfers/{id}/fail',\n    }),\n    returnInboundTransfer: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/test_helpers/treasury/inbound_transfers/{id}/return',\n    }),\n    succeed: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/test_helpers/treasury/inbound_transfers/{id}/succeed',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const InboundTransfers = StripeResource.extend({\n    create: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/treasury/inbound_transfers',\n    }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/treasury/inbound_transfers/{id}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/treasury/inbound_transfers',\n        methodType: 'list',\n    }),\n    cancel: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/treasury/inbound_transfers/{inbound_transfer}/cancel',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Locations = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/terminal/locations' }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/terminal/locations/{location}',\n    }),\n    update: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/terminal/locations/{location}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/terminal/locations',\n        methodType: 'list',\n    }),\n    del: stripeMethod({\n        method: 'DELETE',\n        fullPath: '/v1/terminal/locations/{location}',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Orders = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/climate/orders' }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/climate/orders/{order}',\n    }),\n    update: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/climate/orders/{order}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/climate/orders',\n        methodType: 'list',\n    }),\n    cancel: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/climate/orders/{order}/cancel',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const OutboundPayments = StripeResource.extend({\n    fail: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/test_helpers/treasury/outbound_payments/{id}/fail',\n    }),\n    post: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/test_helpers/treasury/outbound_payments/{id}/post',\n    }),\n    returnOutboundPayment: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/test_helpers/treasury/outbound_payments/{id}/return',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const OutboundPayments = StripeResource.extend({\n    create: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/treasury/outbound_payments',\n    }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/treasury/outbound_payments/{id}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/treasury/outbound_payments',\n        methodType: 'list',\n    }),\n    cancel: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/treasury/outbound_payments/{id}/cancel',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const OutboundTransfers = StripeResource.extend({\n    fail: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/test_helpers/treasury/outbound_transfers/{outbound_transfer}/fail',\n    }),\n    post: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/test_helpers/treasury/outbound_transfers/{outbound_transfer}/post',\n    }),\n    returnOutboundTransfer: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/test_helpers/treasury/outbound_transfers/{outbound_transfer}/return',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const OutboundTransfers = StripeResource.extend({\n    create: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/treasury/outbound_transfers',\n    }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/treasury/outbound_transfers/{outbound_transfer}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/treasury/outbound_transfers',\n        methodType: 'list',\n    }),\n    cancel: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/treasury/outbound_transfers/{outbound_transfer}/cancel',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const PersonalizationDesigns = StripeResource.extend({\n    activate: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/test_helpers/issuing/personalization_designs/{personalization_design}/activate',\n    }),\n    deactivate: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/test_helpers/issuing/personalization_designs/{personalization_design}/deactivate',\n    }),\n    reject: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/test_helpers/issuing/personalization_designs/{personalization_design}/reject',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const PersonalizationDesigns = StripeResource.extend({\n    create: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/issuing/personalization_designs',\n    }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/issuing/personalization_designs/{personalization_design}',\n    }),\n    update: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/issuing/personalization_designs/{personalization_design}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/issuing/personalization_designs',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const PhysicalBundles = StripeResource.extend({\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/issuing/physical_bundles/{physical_bundle}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/issuing/physical_bundles',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Products = StripeResource.extend({\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/climate/products/{product}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/climate/products',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Readers = StripeResource.extend({\n    presentPaymentMethod: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/test_helpers/terminal/readers/{reader}/present_payment_method',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Readers = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/terminal/readers' }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/terminal/readers/{reader}',\n    }),\n    update: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/terminal/readers/{reader}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/terminal/readers',\n        methodType: 'list',\n    }),\n    del: stripeMethod({\n        method: 'DELETE',\n        fullPath: '/v1/terminal/readers/{reader}',\n    }),\n    cancelAction: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/terminal/readers/{reader}/cancel_action',\n    }),\n    processPaymentIntent: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/terminal/readers/{reader}/process_payment_intent',\n    }),\n    processSetupIntent: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/terminal/readers/{reader}/process_setup_intent',\n    }),\n    refundPayment: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/terminal/readers/{reader}/refund_payment',\n    }),\n    setReaderDisplay: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/terminal/readers/{reader}/set_reader_display',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const ReceivedCredits = StripeResource.extend({\n    create: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/test_helpers/treasury/received_credits',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const ReceivedCredits = StripeResource.extend({\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/treasury/received_credits/{id}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/treasury/received_credits',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const ReceivedDebits = StripeResource.extend({\n    create: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/test_helpers/treasury/received_debits',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const ReceivedDebits = StripeResource.extend({\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/treasury/received_debits/{id}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/treasury/received_debits',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Refunds = StripeResource.extend({\n    expire: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/test_helpers/refunds/{refund}/expire',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Registrations = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/tax/registrations' }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/tax/registrations/{id}',\n    }),\n    update: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/tax/registrations/{id}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/tax/registrations',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const ReportRuns = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/reporting/report_runs' }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/reporting/report_runs/{report_run}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/reporting/report_runs',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const ReportTypes = StripeResource.extend({\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/reporting/report_types/{report_type}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/reporting/report_types',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const ScheduledQueryRuns = StripeResource.extend({\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/sigma/scheduled_query_runs/{scheduled_query_run}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/sigma/scheduled_query_runs',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Secrets = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/apps/secrets' }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/apps/secrets',\n        methodType: 'list',\n    }),\n    deleteWhere: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/apps/secrets/delete',\n    }),\n    find: stripeMethod({ method: 'GET', fullPath: '/v1/apps/secrets/find' }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Sessions = StripeResource.extend({\n    create: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/billing_portal/sessions',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Sessions = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/checkout/sessions' }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/checkout/sessions/{session}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/checkout/sessions',\n        methodType: 'list',\n    }),\n    expire: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/checkout/sessions/{session}/expire',\n    }),\n    listLineItems: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/checkout/sessions/{session}/line_items',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Sessions = StripeResource.extend({\n    create: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/financial_connections/sessions',\n    }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/financial_connections/sessions/{session}',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Settings = StripeResource.extend({\n    retrieve: stripeMethod({ method: 'GET', fullPath: '/v1/tax/settings' }),\n    update: stripeMethod({ method: 'POST', fullPath: '/v1/tax/settings' }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Suppliers = StripeResource.extend({\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/climate/suppliers/{supplier}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/climate/suppliers',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const TestClocks = StripeResource.extend({\n    create: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/test_helpers/test_clocks',\n    }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/test_helpers/test_clocks/{test_clock}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/test_helpers/test_clocks',\n        methodType: 'list',\n    }),\n    del: stripeMethod({\n        method: 'DELETE',\n        fullPath: '/v1/test_helpers/test_clocks/{test_clock}',\n    }),\n    advance: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/test_helpers/test_clocks/{test_clock}/advance',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Tokens = StripeResource.extend({\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/issuing/tokens/{token}',\n    }),\n    update: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/issuing/tokens/{token}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/issuing/tokens',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const TransactionEntries = StripeResource.extend({\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/treasury/transaction_entries/{id}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/treasury/transaction_entries',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Transactions = StripeResource.extend({\n    createForceCapture: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/test_helpers/issuing/transactions/create_force_capture',\n    }),\n    createUnlinkedRefund: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/test_helpers/issuing/transactions/create_unlinked_refund',\n    }),\n    refund: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/test_helpers/issuing/transactions/{transaction}/refund',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Transactions = StripeResource.extend({\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/financial_connections/transactions/{transaction}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/financial_connections/transactions',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Transactions = StripeResource.extend({\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/issuing/transactions/{transaction}',\n    }),\n    update: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/issuing/transactions/{transaction}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/issuing/transactions',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Transactions = StripeResource.extend({\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/tax/transactions/{transaction}',\n    }),\n    createFromCalculation: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/tax/transactions/create_from_calculation',\n    }),\n    createReversal: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/tax/transactions/create_reversal',\n    }),\n    listLineItems: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/tax/transactions/{transaction}/line_items',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Transactions = StripeResource.extend({\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/treasury/transactions/{id}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/treasury/transactions',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const ValueListItems = StripeResource.extend({\n    create: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/radar/value_list_items',\n    }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/radar/value_list_items/{item}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/radar/value_list_items',\n        methodType: 'list',\n    }),\n    del: stripeMethod({\n        method: 'DELETE',\n        fullPath: '/v1/radar/value_list_items/{item}',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const ValueLists = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/radar/value_lists' }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/radar/value_lists/{value_list}',\n    }),\n    update: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/radar/value_lists/{value_list}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/radar/value_lists',\n        methodType: 'list',\n    }),\n    del: stripeMethod({\n        method: 'DELETE',\n        fullPath: '/v1/radar/value_lists/{value_list}',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const VerificationReports = StripeResource.extend({\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/identity/verification_reports/{report}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/identity/verification_reports',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const VerificationSessions = StripeResource.extend({\n    create: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/identity/verification_sessions',\n    }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/identity/verification_sessions/{session}',\n    }),\n    update: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/identity/verification_sessions/{session}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/identity/verification_sessions',\n        methodType: 'list',\n    }),\n    cancel: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/identity/verification_sessions/{session}/cancel',\n    }),\n    redact: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/identity/verification_sessions/{session}/redact',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\n// Since path can either be `account` or `accounts`, support both through stripeMethod path\nexport const Accounts = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/accounts' }),\n    retrieve(id, ...args) {\n        // No longer allow an api key to be passed as the first string to this function due to ambiguity between\n        // old account ids and api keys. To request the account for an api key, send null as the id\n        if (typeof id === 'string') {\n            return stripeMethod({\n                method: 'GET',\n                fullPath: '/v1/accounts/{id}',\n            }).apply(this, [id, ...args]);\n        }\n        else {\n            if (id === null || id === undefined) {\n                // Remove id as stripeMethod would complain of unexpected argument\n                [].shift.apply([id, ...args]);\n            }\n            return stripeMethod({\n                method: 'GET',\n                fullPath: '/v1/account',\n            }).apply(this, [id, ...args]);\n        }\n    },\n    update: stripeMethod({ method: 'POST', fullPath: '/v1/accounts/{account}' }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/accounts',\n        methodType: 'list',\n    }),\n    del: stripeMethod({ method: 'DELETE', fullPath: '/v1/accounts/{account}' }),\n    createExternalAccount: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/accounts/{account}/external_accounts',\n    }),\n    createLoginLink: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/accounts/{account}/login_links',\n    }),\n    createPerson: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/accounts/{account}/persons',\n    }),\n    deleteExternalAccount: stripeMethod({\n        method: 'DELETE',\n        fullPath: '/v1/accounts/{account}/external_accounts/{id}',\n    }),\n    deletePerson: stripeMethod({\n        method: 'DELETE',\n        fullPath: '/v1/accounts/{account}/persons/{person}',\n    }),\n    listCapabilities: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/accounts/{account}/capabilities',\n        methodType: 'list',\n    }),\n    listExternalAccounts: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/accounts/{account}/external_accounts',\n        methodType: 'list',\n    }),\n    listPersons: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/accounts/{account}/persons',\n        methodType: 'list',\n    }),\n    reject: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/accounts/{account}/reject',\n    }),\n    retrieveCurrent: stripeMethod({ method: 'GET', fullPath: '/v1/account' }),\n    retrieveCapability: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/accounts/{account}/capabilities/{capability}',\n    }),\n    retrieveExternalAccount: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/accounts/{account}/external_accounts/{id}',\n    }),\n    retrievePerson: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/accounts/{account}/persons/{person}',\n    }),\n    updateCapability: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/accounts/{account}/capabilities/{capability}',\n    }),\n    updateExternalAccount: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/accounts/{account}/external_accounts/{id}',\n    }),\n    updatePerson: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/accounts/{account}/persons/{person}',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const AccountLinks = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/account_links' }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const AccountSessions = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/account_sessions' }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const ApplePayDomains = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/apple_pay/domains' }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/apple_pay/domains/{domain}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/apple_pay/domains',\n        methodType: 'list',\n    }),\n    del: stripeMethod({\n        method: 'DELETE',\n        fullPath: '/v1/apple_pay/domains/{domain}',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const ApplicationFees = StripeResource.extend({\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/application_fees/{id}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/application_fees',\n        methodType: 'list',\n    }),\n    createRefund: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/application_fees/{id}/refunds',\n    }),\n    listRefunds: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/application_fees/{id}/refunds',\n        methodType: 'list',\n    }),\n    retrieveRefund: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/application_fees/{fee}/refunds/{id}',\n    }),\n    updateRefund: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/application_fees/{fee}/refunds/{id}',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Balance = StripeResource.extend({\n    retrieve: stripeMethod({ method: 'GET', fullPath: '/v1/balance' }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const BalanceTransactions = StripeResource.extend({\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/balance_transactions/{id}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/balance_transactions',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Charges = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/charges' }),\n    retrieve: stripeMethod({ method: 'GET', fullPath: '/v1/charges/{charge}' }),\n    update: stripeMethod({ method: 'POST', fullPath: '/v1/charges/{charge}' }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/charges',\n        methodType: 'list',\n    }),\n    capture: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/charges/{charge}/capture',\n    }),\n    search: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/charges/search',\n        methodType: 'search',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const CountrySpecs = StripeResource.extend({\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/country_specs/{country}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/country_specs',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Coupons = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/coupons' }),\n    retrieve: stripeMethod({ method: 'GET', fullPath: '/v1/coupons/{coupon}' }),\n    update: stripeMethod({ method: 'POST', fullPath: '/v1/coupons/{coupon}' }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/coupons',\n        methodType: 'list',\n    }),\n    del: stripeMethod({ method: 'DELETE', fullPath: '/v1/coupons/{coupon}' }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const CreditNotes = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/credit_notes' }),\n    retrieve: stripeMethod({ method: 'GET', fullPath: '/v1/credit_notes/{id}' }),\n    update: stripeMethod({ method: 'POST', fullPath: '/v1/credit_notes/{id}' }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/credit_notes',\n        methodType: 'list',\n    }),\n    listLineItems: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/credit_notes/{credit_note}/lines',\n        methodType: 'list',\n    }),\n    listPreviewLineItems: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/credit_notes/preview/lines',\n        methodType: 'list',\n    }),\n    preview: stripeMethod({ method: 'GET', fullPath: '/v1/credit_notes/preview' }),\n    voidCreditNote: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/credit_notes/{id}/void',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const CustomerSessions = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/customer_sessions' }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Customers = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/customers' }),\n    retrieve: stripeMethod({ method: 'GET', fullPath: '/v1/customers/{customer}' }),\n    update: stripeMethod({ method: 'POST', fullPath: '/v1/customers/{customer}' }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/customers',\n        methodType: 'list',\n    }),\n    del: stripeMethod({ method: 'DELETE', fullPath: '/v1/customers/{customer}' }),\n    createBalanceTransaction: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/customers/{customer}/balance_transactions',\n    }),\n    createFundingInstructions: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/customers/{customer}/funding_instructions',\n    }),\n    createSource: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/customers/{customer}/sources',\n    }),\n    createTaxId: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/customers/{customer}/tax_ids',\n    }),\n    deleteDiscount: stripeMethod({\n        method: 'DELETE',\n        fullPath: '/v1/customers/{customer}/discount',\n    }),\n    deleteSource: stripeMethod({\n        method: 'DELETE',\n        fullPath: '/v1/customers/{customer}/sources/{id}',\n    }),\n    deleteTaxId: stripeMethod({\n        method: 'DELETE',\n        fullPath: '/v1/customers/{customer}/tax_ids/{id}',\n    }),\n    listBalanceTransactions: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/customers/{customer}/balance_transactions',\n        methodType: 'list',\n    }),\n    listCashBalanceTransactions: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/customers/{customer}/cash_balance_transactions',\n        methodType: 'list',\n    }),\n    listPaymentMethods: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/customers/{customer}/payment_methods',\n        methodType: 'list',\n    }),\n    listSources: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/customers/{customer}/sources',\n        methodType: 'list',\n    }),\n    listTaxIds: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/customers/{customer}/tax_ids',\n        methodType: 'list',\n    }),\n    retrieveBalanceTransaction: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/customers/{customer}/balance_transactions/{transaction}',\n    }),\n    retrieveCashBalance: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/customers/{customer}/cash_balance',\n    }),\n    retrieveCashBalanceTransaction: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/customers/{customer}/cash_balance_transactions/{transaction}',\n    }),\n    retrievePaymentMethod: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/customers/{customer}/payment_methods/{payment_method}',\n    }),\n    retrieveSource: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/customers/{customer}/sources/{id}',\n    }),\n    retrieveTaxId: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/customers/{customer}/tax_ids/{id}',\n    }),\n    search: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/customers/search',\n        methodType: 'search',\n    }),\n    updateBalanceTransaction: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/customers/{customer}/balance_transactions/{transaction}',\n    }),\n    updateCashBalance: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/customers/{customer}/cash_balance',\n    }),\n    updateSource: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/customers/{customer}/sources/{id}',\n    }),\n    verifySource: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/customers/{customer}/sources/{id}/verify',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Disputes = StripeResource.extend({\n    retrieve: stripeMethod({ method: 'GET', fullPath: '/v1/disputes/{dispute}' }),\n    update: stripeMethod({ method: 'POST', fullPath: '/v1/disputes/{dispute}' }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/disputes',\n        methodType: 'list',\n    }),\n    close: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/disputes/{dispute}/close',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const EphemeralKeys = StripeResource.extend({\n    create: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/ephemeral_keys',\n        validator: (data, options) =\u003e {\n            if (!options.headers || !options.headers['Stripe-Version']) {\n                throw new Error('Passing apiVersion in a separate options hash is required to create an ephemeral key. See https://stripe.com/docs/api/versioning?lang=node');\n            }\n        },\n    }),\n    del: stripeMethod({ method: 'DELETE', fullPath: '/v1/ephemeral_keys/{key}' }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Events = StripeResource.extend({\n    retrieve: stripeMethod({ method: 'GET', fullPath: '/v1/events/{id}' }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/events',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const ExchangeRates = StripeResource.extend({\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/exchange_rates/{rate_id}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/exchange_rates',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const FileLinks = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/file_links' }),\n    retrieve: stripeMethod({ method: 'GET', fullPath: '/v1/file_links/{link}' }),\n    update: stripeMethod({ method: 'POST', fullPath: '/v1/file_links/{link}' }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/file_links',\n        methodType: 'list',\n    }),\n});\n","import { flattenAndStringify, stringifyRequestData } from './utils.js';\n// Method for formatting HTTP body for the multipart/form-data specification\n// Mostly taken from Fermata.js\n// https://github.com/natevw/fermata/blob/5d9732a33d776ce925013a265935facd1626cc88/fermata.js#L315-L343\nconst multipartDataGenerator = (method, data, headers) =\u003e {\n    const segno = (Math.round(Math.random() * 1e16) + Math.round(Math.random() * 1e16)).toString();\n    headers['Content-Type'] = `multipart/form-data; boundary=${segno}`;\n    const textEncoder = new TextEncoder();\n    let buffer = new Uint8Array(0);\n    const endBuffer = textEncoder.encode('\\r\\n');\n    function push(l) {\n        const prevBuffer = buffer;\n        const newBuffer = l instanceof Uint8Array ? l : new Uint8Array(textEncoder.encode(l));\n        buffer = new Uint8Array(prevBuffer.length + newBuffer.length + 2);\n        buffer.set(prevBuffer);\n        buffer.set(newBuffer, prevBuffer.length);\n        buffer.set(endBuffer, buffer.length - 2);\n    }\n    function q(s) {\n        return `\"${s.replace(/\"|\"/g, '%22').replace(/\\r\\n|\\r|\\n/g, ' ')}\"`;\n    }\n    const flattenedData = flattenAndStringify(data);\n    for (const k in flattenedData) {\n        const v = flattenedData[k];\n        push(`--${segno}`);\n        if (Object.prototype.hasOwnProperty.call(v, 'data')) {\n            const typedEntry = v;\n            push(`Content-Disposition: form-data; name=${q(k)}; filename=${q(typedEntry.name || 'blob')}`);\n            push(`Content-Type: ${typedEntry.type || 'application/octet-stream'}`);\n            push('');\n            push(typedEntry.data);\n        }\n        else {\n            push(`Content-Disposition: form-data; name=${q(k)}`);\n            push('');\n            push(v);\n        }\n    }\n    push(`--${segno}--`);\n    return buffer;\n};\nexport function multipartRequestDataProcessor(method, data, headers, callback) {\n    data = data || {};\n    if (method !== 'POST') {\n        return callback(null, stringifyRequestData(data));\n    }\n    this._stripe._platformFunctions\n        .tryBufferData(data)\n        .then((bufferedData) =\u003e {\n        const buffer = multipartDataGenerator(method, bufferedData, headers);\n        return callback(null, buffer);\n    })\n        .catch((err) =\u003e callback(err, null));\n}\n","// File generated from our OpenAPI spec\nimport { multipartRequestDataProcessor } from '../multipart.js';\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Files = StripeResource.extend({\n    create: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/files',\n        headers: {\n            'Content-Type': 'multipart/form-data',\n        },\n        host: 'files.stripe.com',\n    }),\n    retrieve: stripeMethod({ method: 'GET', fullPath: '/v1/files/{file}' }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/files',\n        methodType: 'list',\n    }),\n    requestDataProcessor: multipartRequestDataProcessor,\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const InvoiceItems = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/invoiceitems' }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/invoiceitems/{invoiceitem}',\n    }),\n    update: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/invoiceitems/{invoiceitem}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/invoiceitems',\n        methodType: 'list',\n    }),\n    del: stripeMethod({\n        method: 'DELETE',\n        fullPath: '/v1/invoiceitems/{invoiceitem}',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Invoices = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/invoices' }),\n    retrieve: stripeMethod({ method: 'GET', fullPath: '/v1/invoices/{invoice}' }),\n    update: stripeMethod({ method: 'POST', fullPath: '/v1/invoices/{invoice}' }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/invoices',\n        methodType: 'list',\n    }),\n    del: stripeMethod({ method: 'DELETE', fullPath: '/v1/invoices/{invoice}' }),\n    finalizeInvoice: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/invoices/{invoice}/finalize',\n    }),\n    listLineItems: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/invoices/{invoice}/lines',\n        methodType: 'list',\n    }),\n    listUpcomingLines: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/invoices/upcoming/lines',\n        methodType: 'list',\n    }),\n    markUncollectible: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/invoices/{invoice}/mark_uncollectible',\n    }),\n    pay: stripeMethod({ method: 'POST', fullPath: '/v1/invoices/{invoice}/pay' }),\n    retrieveUpcoming: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/invoices/upcoming',\n    }),\n    search: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/invoices/search',\n        methodType: 'search',\n    }),\n    sendInvoice: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/invoices/{invoice}/send',\n    }),\n    updateLineItem: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/invoices/{invoice}/lines/{line_item_id}',\n    }),\n    voidInvoice: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/invoices/{invoice}/void',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Mandates = StripeResource.extend({\n    retrieve: stripeMethod({ method: 'GET', fullPath: '/v1/mandates/{mandate}' }),\n});\n","'use strict';\nimport { StripeResource } from '../StripeResource.js';\nimport { stringifyRequestData } from '../utils.js';\nconst stripeMethod = StripeResource.method;\nconst oAuthHost = 'connect.stripe.com';\nexport const OAuth = StripeResource.extend({\n    basePath: '/',\n    authorizeUrl(params, options) {\n        params = params || {};\n        options = options || {};\n        let path = 'oauth/authorize';\n        // For Express accounts, the path changes\n        if (options.express) {\n            path = `express/${path}`;\n        }\n        if (!params.response_type) {\n            params.response_type = 'code';\n        }\n        if (!params.client_id) {\n            params.client_id = this._stripe.getClientId();\n        }\n        if (!params.scope) {\n            params.scope = 'read_write';\n        }\n        return `https://${oAuthHost}/${path}?${stringifyRequestData(params)}`;\n    },\n    token: stripeMethod({\n        method: 'POST',\n        path: 'oauth/token',\n        host: oAuthHost,\n    }),\n    deauthorize(spec, ...args) {\n        if (!spec.client_id) {\n            spec.client_id = this._stripe.getClientId();\n        }\n        return stripeMethod({\n            method: 'POST',\n            path: 'oauth/deauthorize',\n            host: oAuthHost,\n        }).apply(this, [spec, ...args]);\n    },\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const PaymentIntents = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/payment_intents' }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/payment_intents/{intent}',\n    }),\n    update: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/payment_intents/{intent}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/payment_intents',\n        methodType: 'list',\n    }),\n    applyCustomerBalance: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/payment_intents/{intent}/apply_customer_balance',\n    }),\n    cancel: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/payment_intents/{intent}/cancel',\n    }),\n    capture: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/payment_intents/{intent}/capture',\n    }),\n    confirm: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/payment_intents/{intent}/confirm',\n    }),\n    incrementAuthorization: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/payment_intents/{intent}/increment_authorization',\n    }),\n    search: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/payment_intents/search',\n        methodType: 'search',\n    }),\n    verifyMicrodeposits: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/payment_intents/{intent}/verify_microdeposits',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const PaymentLinks = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/payment_links' }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/payment_links/{payment_link}',\n    }),\n    update: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/payment_links/{payment_link}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/payment_links',\n        methodType: 'list',\n    }),\n    listLineItems: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/payment_links/{payment_link}/line_items',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const PaymentMethodConfigurations = StripeResource.extend({\n    create: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/payment_method_configurations',\n    }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/payment_method_configurations/{configuration}',\n    }),\n    update: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/payment_method_configurations/{configuration}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/payment_method_configurations',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const PaymentMethodDomains = StripeResource.extend({\n    create: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/payment_method_domains',\n    }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/payment_method_domains/{payment_method_domain}',\n    }),\n    update: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/payment_method_domains/{payment_method_domain}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/payment_method_domains',\n        methodType: 'list',\n    }),\n    validate: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/payment_method_domains/{payment_method_domain}/validate',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const PaymentMethods = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/payment_methods' }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/payment_methods/{payment_method}',\n    }),\n    update: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/payment_methods/{payment_method}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/payment_methods',\n        methodType: 'list',\n    }),\n    attach: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/payment_methods/{payment_method}/attach',\n    }),\n    detach: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/payment_methods/{payment_method}/detach',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Payouts = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/payouts' }),\n    retrieve: stripeMethod({ method: 'GET', fullPath: '/v1/payouts/{payout}' }),\n    update: stripeMethod({ method: 'POST', fullPath: '/v1/payouts/{payout}' }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/payouts',\n        methodType: 'list',\n    }),\n    cancel: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/payouts/{payout}/cancel',\n    }),\n    reverse: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/payouts/{payout}/reverse',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Plans = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/plans' }),\n    retrieve: stripeMethod({ method: 'GET', fullPath: '/v1/plans/{plan}' }),\n    update: stripeMethod({ method: 'POST', fullPath: '/v1/plans/{plan}' }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/plans',\n        methodType: 'list',\n    }),\n    del: stripeMethod({ method: 'DELETE', fullPath: '/v1/plans/{plan}' }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Prices = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/prices' }),\n    retrieve: stripeMethod({ method: 'GET', fullPath: '/v1/prices/{price}' }),\n    update: stripeMethod({ method: 'POST', fullPath: '/v1/prices/{price}' }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/prices',\n        methodType: 'list',\n    }),\n    search: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/prices/search',\n        methodType: 'search',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Products = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/products' }),\n    retrieve: stripeMethod({ method: 'GET', fullPath: '/v1/products/{id}' }),\n    update: stripeMethod({ method: 'POST', fullPath: '/v1/products/{id}' }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/products',\n        methodType: 'list',\n    }),\n    del: stripeMethod({ method: 'DELETE', fullPath: '/v1/products/{id}' }),\n    search: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/products/search',\n        methodType: 'search',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const PromotionCodes = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/promotion_codes' }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/promotion_codes/{promotion_code}',\n    }),\n    update: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/promotion_codes/{promotion_code}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/promotion_codes',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Quotes = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/quotes' }),\n    retrieve: stripeMethod({ method: 'GET', fullPath: '/v1/quotes/{quote}' }),\n    update: stripeMethod({ method: 'POST', fullPath: '/v1/quotes/{quote}' }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/quotes',\n        methodType: 'list',\n    }),\n    accept: stripeMethod({ method: 'POST', fullPath: '/v1/quotes/{quote}/accept' }),\n    cancel: stripeMethod({ method: 'POST', fullPath: '/v1/quotes/{quote}/cancel' }),\n    finalizeQuote: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/quotes/{quote}/finalize',\n    }),\n    listComputedUpfrontLineItems: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/quotes/{quote}/computed_upfront_line_items',\n        methodType: 'list',\n    }),\n    listLineItems: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/quotes/{quote}/line_items',\n        methodType: 'list',\n    }),\n    pdf: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/quotes/{quote}/pdf',\n        host: 'files.stripe.com',\n        streaming: true,\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Refunds = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/refunds' }),\n    retrieve: stripeMethod({ method: 'GET', fullPath: '/v1/refunds/{refund}' }),\n    update: stripeMethod({ method: 'POST', fullPath: '/v1/refunds/{refund}' }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/refunds',\n        methodType: 'list',\n    }),\n    cancel: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/refunds/{refund}/cancel',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Reviews = StripeResource.extend({\n    retrieve: stripeMethod({ method: 'GET', fullPath: '/v1/reviews/{review}' }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/reviews',\n        methodType: 'list',\n    }),\n    approve: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/reviews/{review}/approve',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const SetupAttempts = StripeResource.extend({\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/setup_attempts',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const SetupIntents = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/setup_intents' }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/setup_intents/{intent}',\n    }),\n    update: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/setup_intents/{intent}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/setup_intents',\n        methodType: 'list',\n    }),\n    cancel: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/setup_intents/{intent}/cancel',\n    }),\n    confirm: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/setup_intents/{intent}/confirm',\n    }),\n    verifyMicrodeposits: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/setup_intents/{intent}/verify_microdeposits',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const ShippingRates = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/shipping_rates' }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/shipping_rates/{shipping_rate_token}',\n    }),\n    update: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/shipping_rates/{shipping_rate_token}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/shipping_rates',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Sources = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/sources' }),\n    retrieve: stripeMethod({ method: 'GET', fullPath: '/v1/sources/{source}' }),\n    update: stripeMethod({ method: 'POST', fullPath: '/v1/sources/{source}' }),\n    listSourceTransactions: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/sources/{source}/source_transactions',\n        methodType: 'list',\n    }),\n    verify: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/sources/{source}/verify',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const SubscriptionItems = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/subscription_items' }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/subscription_items/{item}',\n    }),\n    update: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/subscription_items/{item}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/subscription_items',\n        methodType: 'list',\n    }),\n    del: stripeMethod({\n        method: 'DELETE',\n        fullPath: '/v1/subscription_items/{item}',\n    }),\n    createUsageRecord: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/subscription_items/{subscription_item}/usage_records',\n    }),\n    listUsageRecordSummaries: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/subscription_items/{subscription_item}/usage_record_summaries',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const SubscriptionSchedules = StripeResource.extend({\n    create: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/subscription_schedules',\n    }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/subscription_schedules/{schedule}',\n    }),\n    update: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/subscription_schedules/{schedule}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/subscription_schedules',\n        methodType: 'list',\n    }),\n    cancel: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/subscription_schedules/{schedule}/cancel',\n    }),\n    release: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/subscription_schedules/{schedule}/release',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Subscriptions = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/subscriptions' }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/subscriptions/{subscription_exposed_id}',\n    }),\n    update: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/subscriptions/{subscription_exposed_id}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/subscriptions',\n        methodType: 'list',\n    }),\n    cancel: stripeMethod({\n        method: 'DELETE',\n        fullPath: '/v1/subscriptions/{subscription_exposed_id}',\n    }),\n    deleteDiscount: stripeMethod({\n        method: 'DELETE',\n        fullPath: '/v1/subscriptions/{subscription_exposed_id}/discount',\n    }),\n    resume: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/subscriptions/{subscription}/resume',\n    }),\n    search: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/subscriptions/search',\n        methodType: 'search',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const TaxCodes = StripeResource.extend({\n    retrieve: stripeMethod({ method: 'GET', fullPath: '/v1/tax_codes/{id}' }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/tax_codes',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const TaxIds = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/tax_ids' }),\n    retrieve: stripeMethod({ method: 'GET', fullPath: '/v1/tax_ids/{id}' }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/tax_ids',\n        methodType: 'list',\n    }),\n    del: stripeMethod({ method: 'DELETE', fullPath: '/v1/tax_ids/{id}' }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const TaxRates = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/tax_rates' }),\n    retrieve: stripeMethod({ method: 'GET', fullPath: '/v1/tax_rates/{tax_rate}' }),\n    update: stripeMethod({ method: 'POST', fullPath: '/v1/tax_rates/{tax_rate}' }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/tax_rates',\n        methodType: 'list',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Tokens = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/tokens' }),\n    retrieve: stripeMethod({ method: 'GET', fullPath: '/v1/tokens/{token}' }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Topups = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/topups' }),\n    retrieve: stripeMethod({ method: 'GET', fullPath: '/v1/topups/{topup}' }),\n    update: stripeMethod({ method: 'POST', fullPath: '/v1/topups/{topup}' }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/topups',\n        methodType: 'list',\n    }),\n    cancel: stripeMethod({ method: 'POST', fullPath: '/v1/topups/{topup}/cancel' }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const Transfers = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/transfers' }),\n    retrieve: stripeMethod({ method: 'GET', fullPath: '/v1/transfers/{transfer}' }),\n    update: stripeMethod({ method: 'POST', fullPath: '/v1/transfers/{transfer}' }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/transfers',\n        methodType: 'list',\n    }),\n    createReversal: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/transfers/{id}/reversals',\n    }),\n    listReversals: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/transfers/{id}/reversals',\n        methodType: 'list',\n    }),\n    retrieveReversal: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/transfers/{transfer}/reversals/{id}',\n    }),\n    updateReversal: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/transfers/{transfer}/reversals/{id}',\n    }),\n});\n","// File generated from our OpenAPI spec\nimport { StripeResource } from '../StripeResource.js';\nconst stripeMethod = StripeResource.method;\nexport const WebhookEndpoints = StripeResource.extend({\n    create: stripeMethod({ method: 'POST', fullPath: '/v1/webhook_endpoints' }),\n    retrieve: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/webhook_endpoints/{webhook_endpoint}',\n    }),\n    update: stripeMethod({\n        method: 'POST',\n        fullPath: '/v1/webhook_endpoints/{webhook_endpoint}',\n    }),\n    list: stripeMethod({\n        method: 'GET',\n        fullPath: '/v1/webhook_endpoints',\n        methodType: 'list',\n    }),\n    del: stripeMethod({\n        method: 'DELETE',\n        fullPath: '/v1/webhook_endpoints/{webhook_endpoint}',\n    }),\n});\n","import { StripeAPIError, StripeAuthenticationError, StripeConnectionError, StripeError, StripePermissionError, StripeRateLimitError, } from './Error.js';\nimport { emitWarning, normalizeHeaders, removeNullish, stringifyRequestData, } from './utils.js';\nimport { HttpClient } from './net/HttpClient.js';\nconst MAX_RETRY_AFTER_WAIT = 60;\nexport class RequestSender {\n    constructor(stripe, maxBufferedRequestMetric) {\n        this._stripe = stripe;\n        this._maxBufferedRequestMetric = maxBufferedRequestMetric;\n    }\n    _addHeadersDirectlyToObject(obj, headers) {\n        // For convenience, make some headers easily accessible on\n        // lastResponse.\n        // NOTE: Stripe responds with lowercase header names/keys.\n        obj.requestId = headers['request-id'];\n        obj.stripeAccount = obj.stripeAccount || headers['stripe-account'];\n        obj.apiVersion = obj.apiVersion || headers['stripe-version'];\n        obj.idempotencyKey = obj.idempotencyKey || headers['idempotency-key'];\n    }\n    _makeResponseEvent(requestEvent, statusCode, headers) {\n        const requestEndTime = Date.now();\n        const requestDurationMs = requestEndTime - requestEvent.request_start_time;\n        return removeNullish({\n            api_version: headers['stripe-version'],\n            account: headers['stripe-account'],\n            idempotency_key: headers['idempotency-key'],\n            method: requestEvent.method,\n            path: requestEvent.path,\n            status: statusCode,\n            request_id: this._getRequestId(headers),\n            elapsed: requestDurationMs,\n            request_start_time: requestEvent.request_start_time,\n            request_end_time: requestEndTime,\n        });\n    }\n    _getRequestId(headers) {\n        return headers['request-id'];\n    }\n    /**\n     * Used by methods with spec.streaming === true. For these methods, we do not\n     * buffer successful responses into memory or do parse them into stripe\n     * objects, we delegate that all of that to the user and pass back the raw\n     * http.Response object to the callback.\n     *\n     * (Unsuccessful responses shouldn't make it here, they should\n     * still be buffered/parsed and handled by _jsonResponseHandler -- see\n     * makeRequest)\n     */\n    _streamingResponseHandler(requestEvent, usage, callback) {\n        return (res) =\u003e {\n            const headers = res.getHeaders();\n            const streamCompleteCallback = () =\u003e {\n                const responseEvent = this._makeResponseEvent(requestEvent, res.getStatusCode(), headers);\n                this._stripe._emitter.emit('response', responseEvent);\n                this._recordRequestMetrics(this._getRequestId(headers), responseEvent.elapsed, usage);\n            };\n            const stream = res.toStream(streamCompleteCallback);\n            // This is here for backwards compatibility, as the stream is a raw\n            // HTTP response in Node and the legacy behavior was to mutate this\n            // response.\n            this._addHeadersDirectlyToObject(stream, headers);\n            return callback(null, stream);\n        };\n    }\n    /**\n     * Default handler for Stripe responses. Buffers the response into memory,\n     * parses the JSON and returns it (i.e. passes it to the callback) if there\n     * is no \"error\" field. Otherwise constructs/passes an appropriate Error.\n     */\n    _jsonResponseHandler(requestEvent, usage, callback) {\n        return (res) =\u003e {\n            const headers = res.getHeaders();\n            const requestId = this._getRequestId(headers);\n            const statusCode = res.getStatusCode();\n            const responseEvent = this._makeResponseEvent(requestEvent, statusCode, headers);\n            this._stripe._emitter.emit('response', responseEvent);\n            res\n                .toJSON()\n                .then((jsonResponse) =\u003e {\n                if (jsonResponse.error) {\n                    let err;\n                    // Convert OAuth error responses into a standard format\n                    // so that the rest of the error logic can be shared\n                    if (typeof jsonResponse.error === 'string') {\n                        jsonResponse.error = {\n                            type: jsonResponse.error,\n                            message: jsonResponse.error_description,\n                        };\n                    }\n                    jsonResponse.error.headers = headers;\n                    jsonResponse.error.statusCode = statusCode;\n                    jsonResponse.error.requestId = requestId;\n                    if (statusCode === 401) {\n                        err = new StripeAuthenticationError(jsonResponse.error);\n                    }\n                    else if (statusCode === 403) {\n                        err = new StripePermissionError(jsonResponse.error);\n                    }\n                    else if (statusCode === 429) {\n                        err = new StripeRateLimitError(jsonResponse.error);\n                    }\n                    else {\n                        err = StripeError.generate(jsonResponse.error);\n                    }\n                    throw err;\n                }\n                return jsonResponse;\n            }, (e) =\u003e {\n                throw new StripeAPIError({\n                    message: 'Invalid JSON received from the Stripe API',\n                    exception: e,\n                    requestId: headers['request-id'],\n                });\n            })\n                .then((jsonResponse) =\u003e {\n                this._recordRequestMetrics(requestId, responseEvent.elapsed, usage);\n                // Expose raw response object.\n                const rawResponse = res.getRawResponse();\n                this._addHeadersDirectlyToObject(rawResponse, headers);\n                Object.defineProperty(jsonResponse, 'lastResponse', {\n                    enumerable: false,\n                    writable: false,\n                    value: rawResponse,\n                });\n                callback(null, jsonResponse);\n            }, (e) =\u003e callback(e, null));\n        };\n    }\n    static _generateConnectionErrorMessage(requestRetries) {\n        return `An error occurred with our connection to Stripe.${requestRetries \u003e 0 ? ` Request was retried ${requestRetries} times.` : ''}`;\n    }\n    // For more on when and how to retry API requests, see https://stripe.com/docs/error-handling#safely-retrying-requests-with-idempotency\n    static _shouldRetry(res, numRetries, maxRetries, error) {\n        if (error \u0026\u0026\n            numRetries === 0 \u0026\u0026\n            HttpClient.CONNECTION_CLOSED_ERROR_CODES.includes(error.code)) {\n            return true;\n        }\n        // Do not retry if we are out of retries.\n        if (numRetries \u003e= maxRetries) {\n            return false;\n        }\n        // Retry on connection error.\n        if (!res) {\n            return true;\n        }\n        // The API may ask us not to retry (e.g., if doing so would be a no-op)\n        // or advise us to retry (e.g., in cases of lock timeouts); we defer to that.\n        if (res.getHeaders()['stripe-should-retry'] === 'false') {\n            return false;\n        }\n        if (res.getHeaders()['stripe-should-retry'] === 'true') {\n            return true;\n        }\n        // Retry on conflict errors.\n        if (res.getStatusCode() === 409) {\n            return true;\n        }\n        // Retry on 500, 503, and other internal errors.\n        //\n        // Note that we expect the stripe-should-retry header to be false\n        // in most cases when a 500 is returned, since our idempotency framework\n        // would typically replay it anyway.\n        if (res.getStatusCode() \u003e= 500) {\n            return true;\n        }\n        return false;\n    }\n    _getSleepTimeInMS(numRetries, retryAfter = null) {\n        const initialNetworkRetryDelay = this._stripe.getInitialNetworkRetryDelay();\n        const maxNetworkRetryDelay = this._stripe.getMaxNetworkRetryDelay();\n        // Apply exponential backoff with initialNetworkRetryDelay on the\n        // number of numRetries so far as inputs. Do not allow the number to exceed\n        // maxNetworkRetryDelay.\n        let sleepSeconds = Math.min(initialNetworkRetryDelay * Math.pow(numRetries - 1, 2), maxNetworkRetryDelay);\n        // Apply some jitter by randomizing the value in the range of\n        // (sleepSeconds / 2) to (sleepSeconds).\n        sleepSeconds *= 0.5 * (1 + Math.random());\n        // But never sleep less than the base sleep seconds.\n        sleepSeconds = Math.max(initialNetworkRetryDelay, sleepSeconds);\n        // And never sleep less than the time the API asks us to wait, assuming it's a reasonable ask.\n        if (Number.isInteger(retryAfter) \u0026\u0026 retryAfter \u003c= MAX_RETRY_AFTER_WAIT) {\n            sleepSeconds = Math.max(sleepSeconds, retryAfter);\n        }\n        return sleepSeconds * 1000;\n    }\n    // Max retries can be set on a per request basis. Favor those over the global setting\n    _getMaxNetworkRetries(settings = {}) {\n        return settings.maxNetworkRetries !== undefined \u0026\u0026\n            Number.isInteger(settings.maxNetworkRetries)\n            ? settings.maxNetworkRetries\n            : this._stripe.getMaxNetworkRetries();\n    }\n    _defaultIdempotencyKey(method, settings) {\n        // If this is a POST and we allow multiple retries, ensure an idempotency key.\n        const maxRetries = this._getMaxNetworkRetries(settings);\n        if (method === 'POST' \u0026\u0026 maxRetries \u003e 0) {\n            return `stripe-node-retry-${this._stripe._platformFunctions.uuid4()}`;\n        }\n        return null;\n    }\n    _makeHeaders(auth, contentLength, apiVersion, clientUserAgent, method, userSuppliedHeaders, userSuppliedSettings) {\n        const defaultHeaders = {\n            // Use specified auth token or use default from this stripe instance:\n            Authorization: auth ? `Bearer ${auth}` : this._stripe.getApiField('auth'),\n            Accept: 'application/json',\n            'Content-Type': 'application/x-www-form-urlencoded',\n            'User-Agent': this._getUserAgentString(),\n            'X-Stripe-Client-User-Agent': clientUserAgent,\n            'X-Stripe-Client-Telemetry': this._getTelemetryHeader(),\n            'Stripe-Version': apiVersion,\n            'Stripe-Account': this._stripe.getApiField('stripeAccount'),\n            'Idempotency-Key': this._defaultIdempotencyKey(method, userSuppliedSettings),\n        };\n        // As per https://datatracker.ietf.org/doc/html/rfc7230#section-3.3.2:\n        //   A user agent SHOULD send a Content-Length in a request message when\n        //   no Transfer-Encoding is sent and the request method defines a meaning\n        //   for an enclosed payload body.  For example, a Content-Length header\n        //   field is normally sent in a POST request even when the value is 0\n        //   (indicating an empty payload body).  A user agent SHOULD NOT send a\n        //   Content-Length header field when the request message does not contain\n        //   a payload body and the method semantics do not anticipate such a\n        //   body.\n        //\n        // These method types are expected to have bodies and so we should always\n        // include a Content-Length.\n        const methodHasPayload = method == 'POST' || method == 'PUT' || method == 'PATCH';\n        // If a content length was specified, we always include it regardless of\n        // whether the method semantics anticipate such a body. This keeps us\n        // consistent with historical behavior. We do however want to warn on this\n        // and fix these cases as they are semantically incorrect.\n        if (methodHasPayload || contentLength) {\n            if (!methodHasPayload) {\n                emitWarning(`${method} method had non-zero contentLength but no payload is expected for this verb`);\n            }\n            defaultHeaders['Content-Length'] = contentLength;\n        }\n        return Object.assign(removeNullish(defaultHeaders), \n        // If the user supplied, say 'idempotency-key', override instead of appending by ensuring caps are the same.\n        normalizeHeaders(userSuppliedHeaders));\n    }\n    _getUserAgentString() {\n        const packageVersion = this._stripe.getConstant('PACKAGE_VERSION');\n        const appInfo = this._stripe._appInfo\n            ? this._stripe.getAppInfoAsString()\n            : '';\n        return `Stripe/v1 NodeBindings/${packageVersion} ${appInfo}`.trim();\n    }\n    _getTelemetryHeader() {\n        if (this._stripe.getTelemetryEnabled() \u0026\u0026\n            this._stripe._prevRequestMetrics.length \u003e 0) {\n            const metrics = this._stripe._prevRequestMetrics.shift();\n            return JSON.stringify({\n                last_request_metrics: metrics,\n            });\n        }\n    }\n    _recordRequestMetrics(requestId, requestDurationMs, usage) {\n        if (this._stripe.getTelemetryEnabled() \u0026\u0026 requestId) {\n            if (this._stripe._prevRequestMetrics.length \u003e this._maxBufferedRequestMetric) {\n                emitWarning('Request metrics buffer is full, dropping telemetry message.');\n            }\n            else {\n                const m = {\n                    request_id: requestId,\n                    request_duration_ms: requestDurationMs,\n                };\n                if (usage \u0026\u0026 usage.length \u003e 0) {\n                    m.usage = usage;\n                }\n                this._stripe._prevRequestMetrics.push(m);\n            }\n        }\n    }\n    _request(method, host, path, data, auth, options = {}, usage = [], callback, requestDataProcessor = null) {\n        let requestData;\n        const retryRequest = (requestFn, apiVersion, headers, requestRetries, retryAfter) =\u003e {\n            return setTimeout(requestFn, this._getSleepTimeInMS(requestRetries, retryAfter), apiVersion, headers, requestRetries + 1);\n        };\n        const makeRequest = (apiVersion, headers, numRetries) =\u003e {\n            // timeout can be set on a per-request basis. Favor that over the global setting\n            const timeout = options.settings \u0026\u0026\n                options.settings.timeout \u0026\u0026\n                Number.isInteger(options.settings.timeout) \u0026\u0026\n                options.settings.timeout \u003e= 0\n                ? options.settings.timeout\n                : this._stripe.getApiField('timeout');\n            const req = this._stripe\n                .getApiField('httpClient')\n                .makeRequest(host || this._stripe.getApiField('host'), this._stripe.getApiField('port'), path, method, headers, requestData, this._stripe.getApiField('protocol'), timeout);\n            const requestStartTime = Date.now();\n            // @ts-ignore\n            const requestEvent = removeNullish({\n                api_version: apiVersion,\n                account: headers['Stripe-Account'],\n                idempotency_key: headers['Idempotency-Key'],\n                method,\n                path,\n                request_start_time: requestStartTime,\n            });\n            const requestRetries = numRetries || 0;\n            const maxRetries = this._getMaxNetworkRetries(options.settings || {});\n            this._stripe._emitter.emit('request', requestEvent);\n            req\n                .then((res) =\u003e {\n                if (RequestSender._shouldRetry(res, requestRetries, maxRetries)) {\n                    return retryRequest(makeRequest, apiVersion, headers, requestRetries, \n                    // @ts-ignore\n                    res.getHeaders()['retry-after']);\n                }\n                else if (options.streaming \u0026\u0026 res.getStatusCode() \u003c 400) {\n                    return this._streamingResponseHandler(requestEvent, usage, callback)(res);\n                }\n                else {\n                    return this._jsonResponseHandler(requestEvent, usage, callback)(res);\n                }\n            })\n                .catch((error) =\u003e {\n                if (RequestSender._shouldRetry(null, requestRetries, maxRetries, error)) {\n                    return retryRequest(makeRequest, apiVersion, headers, requestRetries, null);\n                }\n                else {\n                    const isTimeoutError = error.code \u0026\u0026 error.code === HttpClient.TIMEOUT_ERROR_CODE;\n                    return callback(new StripeConnectionError({\n                        message: isTimeoutError\n                            ? `Request aborted due to timeout being reached (${timeout}ms)`\n                            : RequestSender._generateConnectionErrorMessage(requestRetries),\n                        // @ts-ignore\n                        detail: error,\n                    }));\n                }\n            });\n        };\n        const prepareAndMakeRequest = (error, data) =\u003e {\n            if (error) {\n                return callback(error);\n            }\n            requestData = data;\n            this._stripe.getClientUserAgent((clientUserAgent) =\u003e {\n                var _a, _b;\n                const apiVersion = this._stripe.getApiField('version');\n                const headers = this._makeHeaders(auth, requestData.length, apiVersion, clientUserAgent, method, (_a = options.headers) !== null \u0026\u0026 _a !== void 0 ? _a : null, (_b = options.settings) !== null \u0026\u0026 _b !== void 0 ? _b : {});\n                makeRequest(apiVersion, headers, 0);\n            });\n        };\n        if (requestDataProcessor) {\n            requestDataProcessor(method, data, options.headers, prepareAndMakeRequest);\n        }\n        else {\n            prepareAndMakeRequest(null, stringifyRequestData(data || {}));\n        }\n    }\n}\n","import { StripeError, StripeSignatureVerificationError } from './Error.js';\nimport { CryptoProviderOnlySupportsAsyncError, } from './crypto/CryptoProvider.js';\nexport function createWebhooks(platformFunctions) {\n    const Webhook = {\n        DEFAULT_TOLERANCE: 300,\n        // @ts-ignore\n        signature: null,\n        constructEvent(payload, header, secret, tolerance, cryptoProvider, receivedAt) {\n            try {\n                this.signature.verifyHeader(payload, header, secret, tolerance || Webhook.DEFAULT_TOLERANCE, cryptoProvider, receivedAt);\n            }\n            catch (e) {\n                if (e instanceof CryptoProviderOnlySupportsAsyncError) {\n                    e.message +=\n                        '\\nUse `await constructEventAsync(...)` instead of `constructEvent(...)`';\n                }\n                throw e;\n            }\n            const jsonPayload = payload instanceof Uint8Array\n                ? JSON.parse(new TextDecoder('utf8').decode(payload))\n                : JSON.parse(payload);\n            return jsonPayload;\n        },\n        async constructEventAsync(payload, header, secret, tolerance, cryptoProvider, receivedAt) {\n            await this.signature.verifyHeaderAsync(payload, header, secret, tolerance || Webhook.DEFAULT_TOLERANCE, cryptoProvider, receivedAt);\n            const jsonPayload = payload instanceof Uint8Array\n                ? JSON.parse(new TextDecoder('utf8').decode(payload))\n                : JSON.parse(payload);\n            return jsonPayload;\n        },\n        /**\n         * Generates a header to be used for webhook mocking\n         *\n         * @typedef {object} opts\n         * @property {number} timestamp - Timestamp of the header. Defaults to Date.now()\n         * @property {string} payload - JSON stringified payload object, containing the 'id' and 'object' parameters\n         * @property {string} secret - Stripe webhook secret 'whsec_...'\n         * @property {string} scheme - Version of API to hit. Defaults to 'v1'.\n         * @property {string} signature - Computed webhook signature\n         * @property {CryptoProvider} cryptoProvider - Crypto provider to use for computing the signature if none was provided. Defaults to NodeCryptoProvider.\n         */\n        generateTestHeaderString: function (opts) {\n            if (!opts) {\n                throw new StripeError({\n                    message: 'Options are required',\n                });\n            }\n            opts.timestamp =\n                Math.floor(opts.timestamp) || Math.floor(Date.now() / 1000);\n            opts.scheme = opts.scheme || signature.EXPECTED_SCHEME;\n            opts.cryptoProvider = opts.cryptoProvider || getCryptoProvider();\n            opts.signature =\n                opts.signature ||\n                    opts.cryptoProvider.computeHMACSignature(opts.timestamp + '.' + opts.payload, opts.secret);\n            const generatedHeader = [\n                't=' + opts.timestamp,\n                opts.scheme + '=' + opts.signature,\n            ].join(',');\n            return generatedHeader;\n        },\n    };\n    const signature = {\n        EXPECTED_SCHEME: 'v1',\n        verifyHeader(encodedPayload, encodedHeader, secret, tolerance, cryptoProvider, receivedAt) {\n            const { decodedHeader: header, decodedPayload: payload, details, suspectPayloadType, } = parseEventDetails(encodedPayload, encodedHeader, this.EXPECTED_SCHEME);\n            const secretContainsWhitespace = /\\s/.test(secret);\n            cryptoProvider = cryptoProvider || getCryptoProvider();\n            const expectedSignature = cryptoProvider.computeHMACSignature(makeHMACContent(payload, details), secret);\n            validateComputedSignature(payload, header, details, expectedSignature, tolerance, suspectPayloadType, secretContainsWhitespace, receivedAt);\n            return true;\n        },\n        async verifyHeaderAsync(encodedPayload, encodedHeader, secret, tolerance, cryptoProvider, receivedAt) {\n            const { decodedHeader: header, decodedPayload: payload, details, suspectPayloadType, } = parseEventDetails(encodedPayload, encodedHeader, this.EXPECTED_SCHEME);\n            const secretContainsWhitespace = /\\s/.test(secret);\n            cryptoProvider = cryptoProvider || getCryptoProvider();\n            const expectedSignature = await cryptoProvider.computeHMACSignatureAsync(makeHMACContent(payload, details), secret);\n            return validateComputedSignature(payload, header, details, expectedSignature, tolerance, suspectPayloadType, secretContainsWhitespace, receivedAt);\n        },\n    };\n    function makeHMACContent(payload, details) {\n        return `${details.timestamp}.${payload}`;\n    }\n    function parseEventDetails(encodedPayload, encodedHeader, expectedScheme) {\n        if (!encodedPayload) {\n            throw new StripeSignatureVerificationError(encodedHeader, encodedPayload, {\n                message: 'No webhook payload was provided.',\n            });\n        }\n        const suspectPayloadType = typeof encodedPayload != 'string' \u0026\u0026\n            !(encodedPayload instanceof Uint8Array);\n        const textDecoder = new TextDecoder('utf8');\n        const decodedPayload = encodedPayload instanceof Uint8Array\n            ? textDecoder.decode(encodedPayload)\n            : encodedPayload;\n        // Express's type for `Request#headers` is `string | []string`\n        // which is because the `set-cookie` header is an array,\n        // but no other headers are an array (docs: https://nodejs.org/api/http.html#http_message_headers)\n        // (Express's Request class is an extension of http.IncomingMessage, and doesn't appear to be relevantly modified: https://github.com/expressjs/express/blob/master/lib/request.js#L31)\n        if (Array.isArray(encodedHeader)) {\n            throw new Error('Unexpected: An array was passed as a header, which should not be possible for the stripe-signature header.');\n        }\n        if (encodedHeader == null || encodedHeader == '') {\n            throw new StripeSignatureVerificationError(encodedHeader, encodedPayload, {\n                message: 'No stripe-signature header value was provided.',\n            });\n        }\n        const decodedHeader = encodedHeader instanceof Uint8Array\n            ? textDecoder.decode(encodedHeader)\n            : encodedHeader;\n        const details = parseHeader(decodedHeader, expectedScheme);\n        if (!details || details.timestamp === -1) {\n            throw new StripeSignatureVerificationError(decodedHeader, decodedPayload, {\n                message: 'Unable to extract timestamp and signatures from header',\n            });\n        }\n        if (!details.signatures.length) {\n            throw new StripeSignatureVerificationError(decodedHeader, decodedPayload, {\n                message: 'No signatures found with expected scheme',\n            });\n        }\n        return {\n            decodedPayload,\n            decodedHeader,\n            details,\n            suspectPayloadType,\n        };\n    }\n    function validateComputedSignature(payload, header, details, expectedSignature, tolerance, suspectPayloadType, secretContainsWhitespace, receivedAt) {\n        const signatureFound = !!details.signatures.filter(platformFunctions.secureCompare.bind(platformFunctions, expectedSignature)).length;\n        const docsLocation = '\\nLearn more about webhook signing and explore webhook integration examples for various frameworks at ' +\n            'https://github.com/stripe/stripe-node#webhook-signing';\n        const whitespaceMessage = secretContainsWhitespace\n            ? '\\n\\nNote: The provided signing secret contains whitespace. This often indicates an extra newline or space is in the value'\n            : '';\n        if (!signatureFound) {\n            if (suspectPayloadType) {\n                throw new StripeSignatureVerificationError(header, payload, {\n                    message: 'Webhook payload must be provided as a string or a Buffer (https://nodejs.org/api/buffer.html) instance representing the _raw_ request body.' +\n                        'Payload was provided as a parsed JavaScript object instead. \\n' +\n                        'Signature verification is impossible without access to the original signed material. \\n' +\n                        docsLocation +\n                        '\\n' +\n                        whitespaceMessage,\n                });\n            }\n            throw new StripeSignatureVerificationError(header, payload, {\n                message: 'No signatures found matching the expected signature for payload.' +\n                    ' Are you passing the raw request body you received from Stripe? \\n' +\n                    ' If a webhook request is being forwarded by a third-party tool,' +\n                    ' ensure that the exact request body, including JSON formatting and new line style, is preserved.\\n' +\n                    docsLocation +\n                    '\\n' +\n                    whitespaceMessage,\n            });\n        }\n        const timestampAge = Math.floor((typeof receivedAt === 'number' ? receivedAt : Date.now()) / 1000) - details.timestamp;\n        if (tolerance \u003e 0 \u0026\u0026 timestampAge \u003e tolerance) {\n            // @ts-ignore\n            throw new StripeSignatureVerificationError(header, payload, {\n                message: 'Timestamp outside the tolerance zone',\n            });\n        }\n        return true;\n    }\n    function parseHeader(header, scheme) {\n        if (typeof header !== 'string') {\n            return null;\n        }\n        return header.split(',').reduce((accum, item) =\u003e {\n            const kv = item.split('=');\n            if (kv[0] === 't') {\n                accum.timestamp = parseInt(kv[1], 10);\n            }\n            if (kv[0] === scheme) {\n                accum.signatures.push(kv[1]);\n            }\n            return accum;\n        }, {\n            timestamp: -1,\n            signatures: [],\n        });\n    }\n    let webhooksCryptoProviderInstance = null;\n    /**\n     * Lazily instantiate a CryptoProvider instance. This is a stateless object\n     * so a singleton can be used here.\n     */\n    function getCryptoProvider() {\n        if (!webhooksCryptoProviderInstance) {\n            webhooksCryptoProviderInstance = platformFunctions.createDefaultCryptoProvider();\n        }\n        return webhooksCryptoProviderInstance;\n    }\n    Webhook.signature = signature;\n    return Webhook;\n}\n","import * as _Error from './Error.js';\nimport * as apiVersion from './apiVersion.js';\nimport * as resources from './resources.js';\nimport { HttpClient, HttpClientResponse } from './net/HttpClient.js';\nimport { determineProcessUserAgentProperties, pascalToCamelCase, validateInteger, } from './utils.js';\nimport { CryptoProvider } from './crypto/CryptoProvider.js';\nimport { RequestSender } from './RequestSender.js';\nimport { StripeResource } from './StripeResource.js';\nimport { createWebhooks } from './Webhooks.js';\nconst DEFAULT_HOST = 'api.stripe.com';\nconst DEFAULT_PORT = '443';\nconst DEFAULT_BASE_PATH = '/v1/';\nconst DEFAULT_API_VERSION = apiVersion.ApiVersion;\nconst DEFAULT_TIMEOUT = 80000;\nconst MAX_NETWORK_RETRY_DELAY_SEC = 2;\nconst INITIAL_NETWORK_RETRY_DELAY_SEC = 0.5;\nconst APP_INFO_PROPERTIES = ['name', 'version', 'url', 'partner_id'];\nconst ALLOWED_CONFIG_PROPERTIES = [\n    'apiVersion',\n    'typescript',\n    'maxNetworkRetries',\n    'httpAgent',\n    'httpClient',\n    'timeout',\n    'host',\n    'port',\n    'protocol',\n    'telemetry',\n    'appInfo',\n    'stripeAccount',\n];\nconst defaultRequestSenderFactory = (stripe) =\u003e new RequestSender(stripe, StripeResource.MAX_BUFFERED_REQUEST_METRICS);\nexport function createStripe(platformFunctions, requestSender = defaultRequestSenderFactory) {\n    Stripe.PACKAGE_VERSION = '14.21.0';\n    Stripe.USER_AGENT = Object.assign({ bindings_version: Stripe.PACKAGE_VERSION, lang: 'node', publisher: 'stripe', uname: null, typescript: false }, determineProcessUserAgentProperties());\n    Stripe.StripeResource = StripeResource;\n    Stripe.resources = resources;\n    Stripe.HttpClient = HttpClient;\n    Stripe.HttpClientResponse = HttpClientResponse;\n    Stripe.CryptoProvider = CryptoProvider;\n    // Previously Stripe.webhooks was just the createWebhooks() factory function\n    // however going forward it will be a WebhookObject instance. To maintain\n    // backwards compatibility it is currently a factory function that also\n    // complies to the WebhookObject signature. The factory function signature\n    // will be removed as a breaking change in the next major release.\n    // See https://github.com/stripe/stripe-node/issues/1956\n    function createWebhooksDefault(fns = platformFunctions) {\n        return createWebhooks(fns);\n    }\n    Stripe.webhooks = Object.assign(createWebhooksDefault, createWebhooks(platformFunctions));\n    function Stripe(key, config = {}) {\n        if (!(this instanceof Stripe)) {\n            return new Stripe(key, config);\n        }\n        const props = this._getPropsFromConfig(config);\n        this._platformFunctions = platformFunctions;\n        Object.defineProperty(this, '_emitter', {\n            value: this._platformFunctions.createEmitter(),\n            enumerable: false,\n            configurable: false,\n            writable: false,\n        });\n        this.VERSION = Stripe.PACKAGE_VERSION;\n        this.on = this._emitter.on.bind(this._emitter);\n        this.once = this._emitter.once.bind(this._emitter);\n        this.off = this._emitter.removeListener.bind(this._emitter);\n        const agent = props.httpAgent || null;\n        this._api = {\n            auth: null,\n            host: props.host || DEFAULT_HOST,\n            port: props.port || DEFAULT_PORT,\n            protocol: props.protocol || 'https',\n            basePath: DEFAULT_BASE_PATH,\n            version: props.apiVersion || DEFAULT_API_VERSION,\n            timeout: validateInteger('timeout', props.timeout, DEFAULT_TIMEOUT),\n            maxNetworkRetries: validateInteger('maxNetworkRetries', props.maxNetworkRetries, 1),\n            agent: agent,\n            httpClient: props.httpClient ||\n                (agent\n                    ? this._platformFunctions.createNodeHttpClient(agent)\n                    : this._platformFunctions.createDefaultHttpClient()),\n            dev: false,\n            stripeAccount: props.stripeAccount || null,\n        };\n        const typescript = props.typescript || false;\n        if (typescript !== Stripe.USER_AGENT.typescript) {\n            // The mutation here is uncomfortable, but likely fastest;\n            // serializing the user agent involves shelling out to the system,\n            // and given some users may instantiate the library many times without switching between TS and non-TS,\n            // we only want to incur the performance hit when that actually happens.\n            Stripe.USER_AGENT.typescript = typescript;\n        }\n        if (props.appInfo) {\n            this._setAppInfo(props.appInfo);\n        }\n        this._prepResources();\n        this._setApiKey(key);\n        this.errors = _Error;\n        // Once Stripe.webhooks looses the factory function signature in a future release\n        // then this should become this.webhooks = Stripe.webhooks\n        this.webhooks = createWebhooksDefault();\n        this._prevRequestMetrics = [];\n        this._enableTelemetry = props.telemetry !== false;\n        this._requestSender = requestSender(this);\n        // Expose StripeResource on the instance too\n        // @ts-ignore\n        this.StripeResource = Stripe.StripeResource;\n    }\n    Stripe.errors = _Error;\n    Stripe.createNodeHttpClient = platformFunctions.createNodeHttpClient;\n    /**\n     * Creates an HTTP client for issuing Stripe API requests which uses the Web\n     * Fetch API.\n     *\n     * A fetch function can optionally be passed in as a parameter. If none is\n     * passed, will default to the default `fetch` function in the global scope.\n     */\n    Stripe.createFetchHttpClient = platformFunctions.createFetchHttpClient;\n    /**\n     * Create a CryptoProvider which uses the built-in Node crypto libraries for\n     * its crypto operations.\n     */\n    Stripe.createNodeCryptoProvider = platformFunctions.createNodeCryptoProvider;\n    /**\n     * Creates a CryptoProvider which uses the Subtle Crypto API from the Web\n     * Crypto API spec for its crypto operations.\n     *\n     * A SubtleCrypto interface can optionally be passed in as a parameter. If none\n     * is passed, will default to the default `crypto.subtle` object in the global\n     * scope.\n     */\n    Stripe.createSubtleCryptoProvider =\n        platformFunctions.createSubtleCryptoProvider;\n    Stripe.prototype = {\n        // Properties are set in the constructor above\n        _appInfo: undefined,\n        on: null,\n        off: null,\n        once: null,\n        VERSION: null,\n        StripeResource: null,\n        webhooks: null,\n        errors: null,\n        _api: null,\n        _prevRequestMetrics: null,\n        _emitter: null,\n        _enableTelemetry: null,\n        _requestSender: null,\n        _platformFunctions: null,\n        /**\n         * @private\n         */\n        _setApiKey(key) {\n            if (key) {\n                this._setApiField('auth', `Bearer ${key}`);\n            }\n        },\n        /**\n         * @private\n         * This may be removed in the future.\n         */\n        _setAppInfo(info) {\n            if (info \u0026\u0026 typeof info !== 'object') {\n                throw new Error('AppInfo must be an object.');\n            }\n            if (info \u0026\u0026 !info.name) {\n                throw new Error('AppInfo.name is required');\n            }\n            info = info || {};\n            this._appInfo = APP_INFO_PROPERTIES.reduce((accum, prop) =\u003e {\n                if (typeof info[prop] == 'string') {\n                    accum = accum || {};\n                    accum[prop] = info[prop];\n                }\n                return accum;\n            }, \n            // @ts-ignore\n            undefined);\n        },\n        /**\n         * @private\n         * This may be removed in the future.\n         */\n        _setApiField(key, value) {\n            this._api[key] = value;\n        },\n        /**\n         * @private\n         * Please open or upvote an issue at github.com/stripe/stripe-node\n         * if you use this, detailing your use-case.\n         *\n         * It may be deprecated and removed in the future.\n         */\n        getApiField(key) {\n            return this._api[key];\n        },\n        setClientId(clientId) {\n            this._clientId = clientId;\n        },\n        getClientId() {\n            return this._clientId;\n        },\n        /**\n         * @private\n         * Please open or upvote an issue at github.com/stripe/stripe-node\n         * if you use this, detailing your use-case.\n         *\n         * It may be deprecated and removed in the future.\n         */\n        getConstant: (c) =\u003e {\n            switch (c) {\n                case 'DEFAULT_HOST':\n                    return DEFAULT_HOST;\n                case 'DEFAULT_PORT':\n                    return DEFAULT_PORT;\n                case 'DEFAULT_BASE_PATH':\n                    return DEFAULT_BASE_PATH;\n                case 'DEFAULT_API_VERSION':\n                    return DEFAULT_API_VERSION;\n                case 'DEFAULT_TIMEOUT':\n                    return DEFAULT_TIMEOUT;\n                case 'MAX_NETWORK_RETRY_DELAY_SEC':\n                    return MAX_NETWORK_RETRY_DELAY_SEC;\n                case 'INITIAL_NETWORK_RETRY_DELAY_SEC':\n                    return INITIAL_NETWORK_RETRY_DELAY_SEC;\n            }\n            return Stripe[c];\n        },\n        getMaxNetworkRetries() {\n            return this.getApiField('maxNetworkRetries');\n        },\n        /**\n         * @private\n         * This may be removed in the future.\n         */\n        _setApiNumberField(prop, n, defaultVal) {\n            const val = validateInteger(prop, n, defaultVal);\n            this._setApiField(prop, val);\n        },\n        getMaxNetworkRetryDelay() {\n            return MAX_NETWORK_RETRY_DELAY_SEC;\n        },\n        getInitialNetworkRetryDelay() {\n            return INITIAL_NETWORK_RETRY_DELAY_SEC;\n        },\n        /**\n         * @private\n         * Please open or upvote an issue at github.com/stripe/stripe-node\n         * if you use this, detailing your use-case.\n         *\n         * It may be deprecated and removed in the future.\n         *\n         * Gets a JSON version of a User-Agent and uses a cached version for a slight\n         * speed advantage.\n         */\n        getClientUserAgent(cb) {\n            return this.getClientUserAgentSeeded(Stripe.USER_AGENT, cb);\n        },\n        /**\n         * @private\n         * Please open or upvote an issue at github.com/stripe/stripe-node\n         * if you use this, detailing your use-case.\n         *\n         * It may be deprecated and removed in the future.\n         *\n         * Gets a JSON version of a User-Agent by encoding a seeded object and\n         * fetching a uname from the system.\n         */\n        getClientUserAgentSeeded(seed, cb) {\n            this._platformFunctions.getUname().then((uname) =\u003e {\n                var _a;\n                const userAgent = {};\n                for (const field in seed) {\n                    userAgent[field] = encodeURIComponent((_a = seed[field]) !== null \u0026\u0026 _a !== void 0 ? _a : 'null');\n                }\n                // URI-encode in case there are unusual characters in the system's uname.\n                userAgent.uname = encodeURIComponent(uname || 'UNKNOWN');\n                const client = this.getApiField('httpClient');\n                if (client) {\n                    userAgent.httplib = encodeURIComponent(client.getClientName());\n                }\n                if (this._appInfo) {\n                    userAgent.application = this._appInfo;\n                }\n                cb(JSON.stringify(userAgent));\n            });\n        },\n        /**\n         * @private\n         * Please open or upvote an issue at github.com/stripe/stripe-node\n         * if you use this, detailing your use-case.\n         *\n         * It may be deprecated and removed in the future.\n         */\n        getAppInfoAsString() {\n            if (!this._appInfo) {\n                return '';\n            }\n            let formatted = this._appInfo.name;\n            if (this._appInfo.version) {\n                formatted += `/${this._appInfo.version}`;\n            }\n            if (this._appInfo.url) {\n                formatted += ` (${this._appInfo.url})`;\n            }\n            return formatted;\n        },\n        getTelemetryEnabled() {\n            return this._enableTelemetry;\n        },\n        /**\n         * @private\n         * This may be removed in the future.\n         */\n        _prepResources() {\n            for (const name in resources) {\n                // @ts-ignore\n                this[pascalToCamelCase(name)] = new resources[name](this);\n            }\n        },\n        /**\n         * @private\n         * This may be removed in the future.\n         */\n        _getPropsFromConfig(config) {\n            // If config is null or undefined, just bail early with no props\n            if (!config) {\n                return {};\n            }\n            // config can be an object or a string\n            const isString = typeof config === 'string';\n            const isObject = config === Object(config) \u0026\u0026 !Array.isArray(config);\n            if (!isObject \u0026\u0026 !isString) {\n                throw new Error('Config must either be an object or a string');\n            }\n            // If config is a string, we assume the old behavior of passing in a string representation of the api version\n            if (isString) {\n                return {\n                    apiVersion: config,\n                };\n            }\n            // If config is an object, we assume the new behavior and make sure it doesn't contain any unexpected values\n            const values = Object.keys(config).filter((value) =\u003e !ALLOWED_CONFIG_PROPERTIES.includes(value));\n            if (values.length \u003e 0) {\n                throw new Error(`Config object may only contain the following: ${ALLOWED_CONFIG_PROPERTIES.join(', ')}`);\n            }\n            return config;\n        },\n    };\n    return Stripe;\n}\n","import { WebPlatformFunctions } from './platform/WebPlatformFunctions.js';\nimport { createStripe } from './stripe.core.js';\nexport const Stripe = createStripe(new WebPlatformFunctions());\nexport default Stripe;\n"],"version":3}
