@namiml/web-sdk
Version:
Nami Web SDK makes subscriptions & in-app purchases easy, with powerful built-in paywalls and A/B testing
108 lines (107 loc) • 3.08 kB
TypeScript
import { NamiPurchase } from "./purchase";
import { NamiSKU } from "./sku";
export { PaywallManagerEvents as NamiPaywallManagerEvents } from '../paywall';
/**
* @enum NamiPaywallAction
* Types of actions paywall will have
*/
export declare 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"
}
/**
* @type NamiPaywallEvent
* Represents the events(actions) triggered by rendered paywall
*/
export type NamiPaywallEvent = {
/**
* Any action from [NamiPaywallAction]
*/
action: NamiPaywallAction;
sku?: NamiSKU;
campaignId?: string;
campaignName?: string;
campaignType?: string;
campaignLabel?: string;
campaignUrl?: string;
paywallId?: string;
paywallName?: string;
componentChange?: NamiPaywallComponentChange;
/**
* segment from [NamiCampaign]
*/
segmentId?: string;
/**
* external_segment from [NamiCampaign]
*/
externalSegmentId: string | null;
deeplinkUrl?: string;
purchaseError?: string;
purchases?: NamiPurchase[];
/**
* Total time user has spent on paywall page,
* From rendering paywall to clicking on close button of paywall
*/
timeSpentOnPaywall?: number;
videoMetaData?: NamiPaywallEventVideoMetadata;
purchaseChannel?: string;
};
export type NamiPaywallActionHandler = (event: NamiPaywallEvent) => void;
/**
* @type NamiPaywallLaunchContext
* Will be used to pass custom context while launching paywall
*/
export type NamiPaywallLaunchContext = {
productGroups?: string[];
customAttributes: {
[key: string]: string;
};
customObject?: {
[key: string]: any;
};
};
/**
* @type NamiPaywallComponentChange
*/
export type NamiPaywallComponentChange = {
id?: string;
name?: string;
};
/**
* @type NamiPaywallEventVideoMetadata
*/
export type NamiPaywallEventVideoMetadata = {
id?: string;
name?: string;
url?: string;
loopVideo: boolean;
muteByDefault: boolean;
autoplayVideo: boolean;
contentTimecode?: number;
contentDuration?: number;
};