UNPKG

react-native-nami-sdk

Version:

React Native SDK for Nami - No-code paywall management with A/B testing.

394 lines (361 loc) 7.88 kB
export type NamiConfiguration = { appPlatformID: string; logLevel: string; namiCommands?: string[]; namiLanguageCode?: NamiLanguageCodes; initialConfig?: string; }; export type NamiLanguageCodes = | 'af' | 'ar' | 'ar-dz' | 'ast' | 'az' | 'bg' | 'be' | 'bn' | 'br' | 'bs' | 'ca' | 'cs' | 'cy' | 'da' | 'de' | 'dsb' | 'el' | 'en' | 'en-au' | 'en-gb' | 'eo' | 'es' | 'es-ar' | 'es-co' | 'es-mx' | 'es-ni' | 'es-ve' | 'et' | 'eu' | 'fa' | 'fi' | 'fr' | 'fy' | 'ga' | 'gd' | 'gl' | 'he' | 'hi' | 'hr' | 'hsb' | 'hu' | 'hy' | 'ia' | 'id' | 'ig' | 'io' | 'is' | 'it' | 'ja' | 'ka' | 'kab' | 'kk' | 'km' | 'kn' | 'ko' | 'ky' | 'lb' | 'lt' | 'lv' | 'mk' | 'ml' | 'mn' | 'mr' | 'my' | 'nb' | 'ne' | 'nl' | 'nn' | 'os' | 'pa' | 'pl' | 'pt' | 'pt-br' | 'ro' | 'ru' | 'sk' | 'sl' | 'sq' | 'sr' | 'sr-latn' | 'sv' | 'sw' | 'ta' | 'te' | 'tg' | 'th' | 'tk' | 'tr' | 'tt' | 'udm' | 'uk' | 'ur' | 'uz' | 'vi' | 'zh-hans' | 'zh-hant'; export type NamiSKU = { id: string; name?: string; skuId: string; appleProduct?: AppleProduct; googleProduct?: GoogleProduct; amazonProduct?: AmazonProduct; type: NamiSKUType; promoId?: string | null; promoToken?: string | null; promoOffer?: { [key: string]: string } | null; }; export enum NamiPurchaseState { PENDING = 'pending', PURCHASED = 'purchased', CONSUMED = 'consumed', RESUBSCRIBED = 'resubscribed', UNSUBSCRIBED = 'unsubscribed', DEFERRED = 'deferred', FAILED = 'failed', CANCELLED = 'cancelled', UNKNOWN = 'unknown', } export enum NamiRestorePurchasesState { STARTED = 'started', FINISHED = 'finished', ERROR = 'error', } export type NamiSKUType = 'unknown' | 'one_time_purchase' | 'subscription'; export type AppleProduct = { localizedDescription: string; localizedMultipliedPrice: string; localizedPrice: string; localizedTitle: string; price: string; priceCurrency: string; priceLanguage: string; }; export type GoogleProduct = Record<string, never>; export type AmazonProduct = Record<string, never>; // NamiCampaignManager export type NamiCampaign = { name: string; rule: string; segment: string; paywall: string; type: NamiCampaignRuleType; value?: string | null; form_factors: NamiFormFactor[]; external_segment: string | null; }; export enum NamiCampaignRuleType { DEFAULT = 'default', LABEL = 'label', UNKNOWN = 'unknown', URL = 'url', } type NamiFormFactor = { form_factor?: string; supports_portrait?: boolean; supports_landscape?: boolean; }; export enum LaunchCampaignError { DEFAULT_CAMPAIGN_NOT_FOUND = 0, LABELED_CAMPAIGN_NOT_FOUND = 1, CAMPAIGN_DATA_NOT_FOUND = 2, PAYWALL_ALREADY_DISPLAYED = 3, SDK_NOT_INITIALIZED = 4, PAYWALL_COULD_NOT_DISPLAY = 5, URL_CAMPAIGN_NOT_FOUND = 6, PRODUCT_DATA_NOT_FOUND = 7, PRODUCT_GROUPS_NOT_FOUND = 8, } export enum LaunchCampaignResultAction { FAILURE = 'FAILURE', SUCCESS = 'SUCCESS', } export type FailureResultObject = { error: string; }; export type PaywallLaunchContext = { // Can contain multiple product group identifiers productGroups?: string[]; // Key-value pairs used to override template values customAttributes: { [key: string]: string; }; // Custom object used as data source for advanced paywall components customObject?: { [key: string]: unknown; }; }; export type CustomerJourneyState = { formerSubscriber: boolean; inGracePeriod: boolean; inTrialPeriod: boolean; inIntroOfferPeriod: boolean; isCancelled: boolean; inPause: boolean; inAccountHold: boolean; }; export type AccountStateAction = | 'login' | 'logout' | 'advertising_id_set' | 'vendor_id_set' | 'customer_data_platform_id_set' | 'nami_device_id_set' | 'advertising_id_cleared' | 'vendor_id_cleared' | 'customer_data_platform_id_cleared' | 'nami_device_id_cleared' | 'anonymous_mode_on' | 'anonymous_mode_off'; // NamiEntitlementManager export type NamiEntitlement = { activePurchases: NamiPurchase[]; desc: string; name: string; purchasedSkus: NamiSKU[]; referenceId: string; relatedSkus: NamiSKU[]; }; export type NamiPurchaseDetails = { product: NamiSKU; transactionID?: string; originalTransactionID?: string; orderId?: string; purchaseToken?: string; receiptId?: string; localizedPrice?: string; price?: string; currencyCode?: string; userId?: string; marketplace?: string; storeType?: string; // 'Apple', 'GooglePlay', 'Amazon' }; export type NamiPurchaseSuccessApple = { product: NamiSKU; transactionID: string; originalTransactionID: string; price: string; currencyCode: string; }; export type NamiPurchaseSuccessGooglePlay = { product: NamiSKU; orderId: string; purchaseToken: string; }; export type NamiPurchaseSuccessAmazon = { product: NamiSKU; receiptId: string; localizedPrice: string; userId: string; marketplace: string; }; export enum NamiPaywallAction { BUY_SKU = 'BUY_SKU', SELECT_SKU = 'SELECT_SKU', RESTORE_PURCHASES = 'RESTORE_PURCHASES', SIGN_IN = 'SIGN_IN', CLOSE_PAYWALL = 'CLOSE_PAYWALL', SHOW_PAYWALL = 'SHOW_PAYWALL', PURCHASE_SELECTED_SKU = 'PURCHASE_SELECTED_SKU', PURCHASE_SUCCESS = 'PURCHASE_SUCCESS', PURCHASE_FAILED = 'PURCHASE_FAILED', PURCHASE_CANCELLED = 'PURCHASE_CANCELLED', PURCHASE_PENDING = 'PURCHASE_PENDING', PURCHASE_UNKNOWN = 'PURCHASE_UNKNOWN', PURCHASE_DEFERRED = 'PURCHASE_DEFERRED', DEEPLINK = 'DEEPLINK', TOGGLE_CHANGE = 'TOGGLE_CHANGE', PAGE_CHANGE = 'PAGE_CHANGE', SLIDE_CHANGE = 'SLIDE_CHANGE', COLLAPSIBLE_DRAWER_OPEN = 'COLLAPSIBLE_DRAWER_OPEN', COLLAPSIBLE_DRAWER_CLOSE = 'COLLAPSIBLE_DRAWER_CLOSE', VIDEO_STARTED = 'VIDEO_STARTED', VIDEO_PAUSED = 'VIDEO_PAUSED', VIDEO_RESUMED = 'VIDEO_RESUMED', VIDEO_ENDED = 'VIDEO_ENDED', VIDEO_CHANGED = 'VIDEO_CHANGED', VIDEO_MUTED = 'VIDEO_MUTED', VIDEO_UNMUTED = 'VIDEO_UNMUTED', UNKNOWN = 'UNKNOWN', } // NamiPurchaseManager export type NamiPurchase = { sku?: NamiSKU; skuId: string; transactionIdentifier?: string; purchaseToken?: string; expires?: Date; purchaseInitiatedTimestamp: Date; purchaseSource?: 'CAMPAIGN' | 'MARKETPLACE' | 'UNKNOWN'; }; export type NamiPurchaseFromBridge = { sku?: NamiSKU; skuId: string; transactionIdentifier?: string; purchaseToken?: string; expires?: number; purchaseInitiatedTimestamp: number; purchaseSource?: 'CAMPAIGN' | 'MARKETPLACE' | 'UNKNOWN'; }; export type NamiPurchasesState = | 'pending' | 'purchased' | 'consumed' | 'resubscribed' | 'unsubscribed' | 'deferred' | 'failed' | 'cancelled' | 'unknown'; export type NamiPaywallEvent = { action: NamiPaywallAction; campaignId?: string; campaignName?: string; campaignType?: string; campaignLabel?: string; campaignUrl?: string; paywallId?: string; paywallName?: string; componentChange?: NamiPaywallComponentChange; segmentId?: string; externalSegmentId?: string; deeplinkUrl?: string; sku?: NamiSKU; purchaseError?: string; purchases?: NamiPurchase[]; videoMetadata?: NamiPaywallEventVideoMetadata; timeSpentOnPaywall?: number; }; export type NamiPaywallActionHandler = (event: NamiPaywallEvent) => void; export type NamiPaywallComponentChange = { id?: string; name?: string; }; export type NamiPaywallEventVideoMetadata = { id?: string; name?: string; url?: string; loopVideo: boolean; muteByDefault: boolean; autoplayVideo: boolean; contentTimecode?: number; contentDuration?: number; }; export type NamiFlowHandoffPayload = { handoffTag: string; handoffData?: Record<string, unknown>; }; export type NamiAccountStateEvent = { action: AccountStateAction; success: boolean; error?: number; };