import type { TurboModule } from 'react-native'; import { TurboModuleRegistry } from 'react-native'; export interface Spec extends TurboModule { launch( label: string | null, withUrl: string | null, context: { productGroups?: string[]; customAttributes?: { [key: string]: string }; customObject?: { [key: string]: unknown }; } | null, completion: ( successAction: boolean, error: { domain: string; code: number; message: string } | null, ) => void, paywallCompletion: (event: { campaignId?: string; campaignName?: string; campaignType?: string; campaignLabel?: string; campaignUrl?: string; paywallId?: string; paywallName?: string; segmentId?: string; externalSegmentId?: string; action: string; sku?: { id?: string; name?: string; skuId?: string; type?: string; promoId?: string; promoToken?: string; promoOffer?: { [key: string]: string } | null; }; purchaseError?: string; purchases?: Array<{ sku?: { id: string; skuId: string; name: string; type: string; }; skuId: string; transactionIdentifier?: string; purchaseToken?: string; expires?: number; // timestamp (ms) purchaseInitiatedTimestamp: number; // timestamp (ms) purchaseSource?: 'CAMPAIGN' | 'MARKETPLACE' | 'UNKNOWN'; }>; deeplinkUrl?: string; componentChange?: { id?: string; name?: string; }; videoMetadata?: { id?: string; name?: string; url?: string; loopVideo?: boolean; muteByDefault?: boolean; autoplayVideo?: boolean; contentTimecode?: string; contentDuration?: string; }; timeSpentOnPaywall?: number; }) => void, ): void; allCampaigns(): Promise< { id?: string; rule?: string; segment?: string; paywall?: string; type: string; value?: string; }[] >; isCampaignAvailable(source?: string): Promise; isFlow(label?: string | null, withUrl?: string | null): Promise; refresh(): Promise< { id?: string; rule?: string; segment?: string; paywall?: string; type: string; value?: string; }[] >; registerAvailableCampaignsHandler(): void; productGroups( label: string | null, withUrl: string | null, ): Promise; } export default TurboModuleRegistry.getEnforcing('RNNamiCampaignManager');