import { type StyleProp, type ViewStyle } from "react-native"; import { type CustomerInfo, PAYWALL_RESULT, type PurchasesError, type PurchasesOffering, type PurchasesPackage, type PurchasesStoreTransaction, REFUND_REQUEST_STATUS } from "@revenuecat/purchases-typescript-internal"; import React, { type ReactNode } from "react"; export { PAYWALL_RESULT } from "@revenuecat/purchases-typescript-internal"; export interface PresentPaywallParams { /** * Whether to display the close button or not. * Only available for original template paywalls. Ignored for V2 Paywalls. */ displayCloseButton?: boolean; /** * The offering to load the paywall with. This will be the "current" offering by default. */ offering?: PurchasesOffering; /** * The fontFamily name to use in the Paywall. In order to add a font family, add it in the react native app and make * sure to run `npx react-native-asset` so it's added to the native components. * Supported font types are `.ttf` and `.otf`. * Make sure the file names follow the convention: * - Regular: MyFont.ttf/MyFont.otf * - Bold: MyFont_bold.ttf/MyFont_bold.otf * - Italic: MyFont_italic.ttf/MyFont_italic.otf * - Bold and Italic: MyFont_bold_italic.ttf/MyFont_bold_italic.otf * Only available for original template paywalls. Ignored for V2 Paywalls. */ fontFamily?: string | null; } export type PresentPaywallIfNeededParams = PresentPaywallParams & { /** * The paywall will only be presented if this entitlement is not active. */ requiredEntitlementIdentifier: string; }; export interface PaywallViewOptions { /** * The offering to load the paywall with. This will be the "current" offering by default. */ offering?: PurchasesOffering | null; /** * The fontFamily name to use in the Paywall. In order to add a font family, add it in the react native app and make * sure to run `npx react-native-asset` so it's added to the native components. * Supported font types are `.ttf` and `.otf`. * Make sure the file names follow the convention: * - Regular: MyFont.ttf/MyFont.otf * - Bold: MyFont_bold.ttf/MyFont_bold.otf * - Italic: MyFont_italic.ttf/MyFont_italic.otf * - Bold and Italic: MyFont_bold_italic.ttf/MyFont_bold_italic.otf * Only available for original template paywalls. Ignored for V2 Paywalls. */ fontFamily?: string | null; } export interface FullScreenPaywallViewOptions extends PaywallViewOptions { /** * Whether to display the close button or not. * Only available for original template paywalls. Ignored for V2 Paywalls. */ displayCloseButton?: boolean | false; } export interface FooterPaywallViewOptions extends PaywallViewOptions { } type FullScreenPaywallViewProps = { style?: StyleProp; children?: ReactNode; options?: FullScreenPaywallViewOptions; onPurchaseStarted?: ({ packageBeingPurchased }: { packageBeingPurchased: PurchasesPackage; }) => void; onPurchaseCompleted?: ({ customerInfo, storeTransaction }: { customerInfo: CustomerInfo; storeTransaction: PurchasesStoreTransaction; }) => void; onPurchaseError?: ({ error }: { error: PurchasesError; }) => void; onPurchaseCancelled?: () => void; onRestoreStarted?: () => void; onRestoreCompleted?: ({ customerInfo }: { customerInfo: CustomerInfo; }) => void; onRestoreError?: ({ error }: { error: PurchasesError; }) => void; onDismiss?: () => void; }; type FooterPaywallViewProps = { style?: StyleProp; children?: ReactNode; options?: FooterPaywallViewOptions; onPurchaseStarted?: ({ packageBeingPurchased }: { packageBeingPurchased: PurchasesPackage; }) => void; onPurchaseCompleted?: ({ customerInfo, storeTransaction }: { customerInfo: CustomerInfo; storeTransaction: PurchasesStoreTransaction; }) => void; onPurchaseError?: ({ error }: { error: PurchasesError; }) => void; onPurchaseCancelled?: () => void; onRestoreStarted?: () => void; onRestoreCompleted?: ({ customerInfo }: { customerInfo: CustomerInfo; }) => void; onRestoreError?: ({ error }: { error: PurchasesError; }) => void; onDismiss?: () => void; }; export type CustomerCenterManagementOption = 'cancel' | 'custom_url' | 'missing_purchase' | 'refund_request' | 'change_plans' | 'unknown' | string; export type CustomerCenterManagementOptionEvent = { option: 'custom_url'; url: string; } | { option: Exclude; url: null; }; export interface CustomerCenterCallbacks { /** * Called when a feedback survey is completed with the selected option ID. */ onFeedbackSurveyCompleted?: ({ feedbackSurveyOptionId }: { feedbackSurveyOptionId: string; }) => void; /** * Called when the manage subscriptions section is being shown. */ onShowingManageSubscriptions?: () => void; /** * Called when a restore operation is completed successfully. */ onRestoreCompleted?: ({ customerInfo }: { customerInfo: CustomerInfo; }) => void; /** * Called when a restore operation fails. */ onRestoreFailed?: ({ error }: { error: PurchasesError; }) => void; /** * Called when a restore operation starts. */ onRestoreStarted?: () => void; /** * Called when a refund request starts with the product identifier. iOS-only callback. */ onRefundRequestStarted?: ({ productIdentifier }: { productIdentifier: string; }) => void; /** * Called when a refund request completes with status information. iOS-only callback. */ onRefundRequestCompleted?: ({ productIdentifier, refundRequestStatus }: { productIdentifier: string; refundRequestStatus: REFUND_REQUEST_STATUS; }) => void; /** * Called when a customer center management option is selected. * For 'custom_url' options, the url parameter will contain the URL. * For all other options, the url parameter will be null. */ onManagementOptionSelected?: (event: CustomerCenterManagementOptionEvent) => void; } export interface PresentCustomerCenterParams { /** * Optional callbacks for customer center events. */ callbacks?: CustomerCenterCallbacks; } export default class RevenueCatUI { private static Defaults; /** * The result of presenting a paywall. This will be the last situation the user experienced before the paywall closed. * @readonly * @enum {string} */ static PAYWALL_RESULT: typeof PAYWALL_RESULT; /** * Presents a paywall to the user with optional customization. * * This method allows for presenting a specific offering's paywall to the user. The caller * can decide whether to display a close button on the paywall through the `displayCloseButton` * parameter. By default, the close button is displayed. * * @param {PresentPaywallParams} params - The options for presenting the paywall. * @returns {Promise} A promise that resolves with the result of the paywall presentation. */ static presentPaywall({ offering, displayCloseButton, fontFamily, }?: PresentPaywallParams): Promise; /** * Presents a paywall to the user if a specific entitlement is not already owned. * * This method evaluates whether the user already owns the specified entitlement. * If the entitlement is not owned, it presents a paywall for the specified offering (if provided), or the * default offering (if no offering is provided), to the user. The paywall will be presented * allowing the user the opportunity to purchase the offering. The caller * can decide whether to display a close button on the paywall through the `displayCloseButton` * parameter. By default, the close button is displayed. * * @param {PresentPaywallIfNeededParams} params - The parameters for presenting the paywall. * @returns {Promise} A promise that resolves with the result of the paywall presentation. */ static presentPaywallIfNeeded({ requiredEntitlementIdentifier, offering, displayCloseButton, fontFamily, }: PresentPaywallIfNeededParams): Promise; static Paywall: React.FC; static OriginalTemplatePaywallFooterContainerView: React.FC; /** * Presents the customer center to the user. * * @param {PresentCustomerCenterParams} params - Optional parameters for presenting the customer center. * @returns {Promise} A promise that resolves when the customer center is presented. */ static presentCustomerCenter(params?: PresentCustomerCenterParams): Promise; /** * @deprecated, Use {@link OriginalTemplatePaywallFooterContainerView} instead */ static PaywallFooterContainerView: React.FC; private static logWarningIfPreviewAPIMode; } //# sourceMappingURL=index.d.ts.map