import { NamiPurchase } from "./purchase";
import { NamiSKU } from "./sku";
/**
 * @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;
};
