react-native-qonversion
Version:
Qonversion provides full in-app purchases infrastructure, so you do not need to build your own server for receipt validation. Implement in-app subscriptions, validate user receipts, check subscription status, and provide access to your app features and co
303 lines (302 loc) • 12.2 kB
TypeScript
import { EntitlementGrantType, EntitlementSource, ExperimentGroupType, IntroEligibilityStatus, OfferingTag, PricingPhaseRecurrenceMode, PricingPhaseType, ProductType, QonversionErrorCode, RemoteConfigurationAssignmentType, RemoteConfigurationSourceType, SKPeriodUnit, SKProductDiscountPaymentMode, SKProductDiscountType, SubscriptionPeriodUnit, TransactionEnvironment, TransactionOwnershipType, TransactionType, UserPropertyKey, NoCodesErrorCode } from "../dto/enums";
import IntroEligibility from "../dto/IntroEligibility";
import Offering from "../dto/Offering";
import Offerings from "../dto/Offerings";
import Entitlement from "../dto/Entitlement";
import Product from "../dto/Product";
import SKProduct from "../dto/storeProducts/SKProduct";
import SKProductDiscount from "../dto/storeProducts/SKProductDiscount";
import SKSubscriptionPeriod from "../dto/storeProducts/SKSubscriptionPeriod";
import SkuDetails from "../dto/storeProducts/SkuDetails";
import User from '../dto/User';
import ScreenPresentationConfig from '../dto/ScreenPresentationConfig';
import SubscriptionPeriod from "../dto/SubscriptionPeriod";
import RemoteConfig from "../dto/RemoteConfig";
import RemoteConfigList from '../dto/RemoteConfigList';
import UserProperties from '../dto/UserProperties';
import Transaction from "../dto/Transaction";
import ProductStoreDetails from "../dto/storeProducts/ProductStoreDetails";
import ProductOfferDetails from "../dto/storeProducts/ProductOfferDetails";
import ProductInAppDetails from "../dto/storeProducts/ProductInAppDetails";
import ProductPrice from "../dto/storeProducts/ProductPrice";
import ProductPricingPhase from "../dto/storeProducts/ProductPricingPhase";
import ProductInstallmentPlanDetails from '../dto/storeProducts/ProductInstallmentPlanDetails';
import PromotionalOffer from '../dto/PromotionalOffer';
import SKPaymentDiscount from '../dto/storeProducts/SKPaymentDiscount';
import NoCodesAction from '../dto/NoCodesAction';
import QonversionError from '../dto/QonversionError';
import NoCodesError from '../dto/NoCodesError';
type QProduct = {
id: string;
storeId: string;
basePlanId?: string | null;
type: string;
subscriptionPeriod?: QSubscriptionPeriod | null;
trialPeriod?: QSubscriptionPeriod | null;
skuDetails?: QSkuDetails | null;
storeDetails?: QProductStoreDetails;
skProduct?: QSKProduct | null;
prettyPrice?: string | null;
offeringId?: string | null;
};
type QProductStoreDetails = {
basePlanId?: string | null;
productId: string;
name: string;
title: string;
description: string;
subscriptionOfferDetails?: QProductOfferDetails[] | null;
defaultSubscriptionOfferDetails?: QProductOfferDetails | null;
basePlanSubscriptionOfferDetails?: QProductOfferDetails | null;
inAppOfferDetails?: QProductInAppDetails | null;
hasTrialOffer: boolean;
hasIntroOffer: boolean;
hasTrialOrIntroOffer: boolean;
productType: string;
isInApp: boolean;
isSubscription: boolean;
isPrepaid: boolean;
isInstallment: boolean;
};
type QSubscriptionPeriod = {
unitCount: number;
unit: string;
iso: string;
};
type QProductPricingPhase = {
price: QProductPrice;
billingPeriod: QSubscriptionPeriod;
billingCycleCount: number;
recurrenceMode: string;
type: string;
isTrial: boolean;
isIntro: boolean;
isBasePlan: boolean;
};
type QProductInstallmentPlanDetails = {
commitmentPaymentsCount: number;
subsequentCommitmentPaymentsCount: number;
};
type QPromotionalOffer = {
productDiscount: QProductDiscount;
paymentDiscount: QPaymentDiscount;
};
type QProductOfferDetails = {
basePlanId: string;
offerId?: string | null;
offerToken: string;
tags: string[];
pricingPhases: QProductPricingPhase[];
basePlan?: QProductPricingPhase | null;
installmentPlanDetails?: QProductInstallmentPlanDetails | null;
trialPhase?: QProductPricingPhase | null;
introPhase: QProductPricingPhase | null;
hasTrial: boolean;
hasIntro: boolean;
hasTrialOrIntro: boolean;
};
type QProductPrice = {
priceAmountMicros: number;
priceCurrencyCode: string;
formattedPrice: string;
isFree: boolean;
currencySymbol: string;
};
type QProductInAppDetails = {
price: QProductPrice;
};
type QSkuDetails = {
description: string;
freeTrialPeriod: string;
iconUrl: string;
introductoryPrice: string;
introductoryPriceAmountMicros: number;
introductoryPriceCycles: number;
introductoryPricePeriod: string;
originalJson: string;
originalPrice: string;
originalPriceAmountMicros: number;
price: string;
priceAmountMicros: number;
priceCurrencyCode: string;
sku: string;
subscriptionPeriod: string;
title: string;
type: string;
hashCode: number;
toString: string;
};
type QSKProduct = {
subscriptionPeriod: null | QSKSubscriptionPeriod;
introductoryPrice: QProductDiscount | null;
discounts: Array<QProductDiscount> | null;
localizedDescription: string | undefined;
localizedTitle: string | undefined;
price: string;
priceLocale: QLocale;
productIdentifier: string | undefined;
isDownloadable: boolean | undefined;
downloadContentVersion: string | undefined;
downloadContentLengths: number[] | undefined;
productDiscount: SKProductDiscount | undefined;
subscriptionGroupIdentifier: string | undefined;
isFamilyShareable: boolean | undefined;
};
type QSKSubscriptionPeriod = {
numberOfUnits: number;
unit: keyof typeof SKPeriodUnit;
};
type QProductDiscount = {
subscriptionPeriod: null | QSKSubscriptionPeriod;
price: string;
numberOfPeriods: number;
paymentMode: keyof typeof SKProductDiscountPaymentMode;
identifier?: string;
type: keyof typeof SKProductDiscountType;
priceLocale: QLocale;
};
type QPaymentDiscount = {
identifier: string;
keyIdentifier: string;
nonce: string;
signature: string;
timestamp: number;
};
type QLocale = {
currencySymbol: string | null;
currencyCode: string | null;
localeIdentifier: string;
};
export type QEntitlement = {
id: string;
productId: string;
active: boolean;
renewState: string;
source: string;
startedTimestamp: number;
expirationTimestamp: number;
renewsCount: number;
trialStartTimestamp: number;
firstPurchaseTimestamp: number;
lastPurchaseTimestamp: number;
lastActivatedOfferCode: string;
grantType: string;
autoRenewDisableTimestamp: number;
transactions?: Array<QTransaction>;
};
type QTransaction = {
originalTransactionId: string;
transactionId: string;
offerCode: string;
transactionTimestamp: number;
expirationTimestamp: number;
transactionRevocationTimestamp: number;
environment: string;
ownershipType: string;
type: string;
promoOfferId: string;
};
type QOfferings = {
availableOfferings?: Array<QOffering>;
main: QOffering;
};
type QOffering = {
id: string;
tag: keyof typeof OfferingTag;
products: Array<QProduct>;
};
type QUser = {
qonversionId: string;
identityId?: string | null;
};
type QRemoteConfig = {
payload: Record<string, Object>;
experiment?: QExperiment | null;
source: QRemoteConfigurationSource;
};
type QRemoteConfigList = {
remoteConfigs: Array<QRemoteConfig>;
};
type QRemoteConfigurationSource = {
id: string;
name: string;
type: string;
assignmentType: string;
contextKey: string | null | undefined;
};
type QExperiment = {
id: string;
name: string;
group: QExperimentGroup;
};
type QExperimentGroup = {
id: string;
name: string;
type: string;
};
type QUserProperty = {
key: string;
value: string;
};
type QUserProperties = {
properties: QUserProperty[];
};
type QQonversionError = {
code: string | undefined;
description: string | null | undefined;
additionalMessage: string | null | undefined;
domain: string | null | undefined;
};
type QNoCodesError = QQonversionError & {
qonversionError?: QQonversionError | null;
};
declare class Mapper {
static convertPromoOffer(promoOffer: QPromotionalOffer | null | undefined): PromotionalOffer | null;
static convertEntitlements(entitlements: Record<string, QEntitlement> | null | undefined): Map<string, Entitlement>;
static convertTransaction(transaction: QTransaction): Transaction;
static convertTransactionType(typeKey: string): TransactionType;
static convertTransactionOwnershipType(ownershipTypeKey: string): TransactionOwnershipType;
static convertTransactionEnvironment(envKey: string): TransactionEnvironment;
static convertEntitlementSource(sourceKey: string): EntitlementSource;
static convertEntitlementGrantType(typeKey: string): EntitlementGrantType;
static convertDefinedUserPropertyKey(sourceKey: string): UserPropertyKey;
static convertUserProperties(properties: QUserProperties): UserProperties;
static convertProducts(products: Record<string, QProduct> | null | undefined): Map<string, Product>;
static convertProduct(product: QProduct): Product;
static convertOfferings(offerings: QOfferings | null | undefined): Offerings | null;
static convertOffering(offering: QOffering): Offering;
static convertSkuDetails(skuDetails: QSkuDetails): SkuDetails;
static convertProductType(productType: string): ProductType;
static convertSubscriptionPeriod(productPeriod: QSubscriptionPeriod | null | undefined): SubscriptionPeriod | null;
static convertSubscriptionPeriodUnit(unit: string): SubscriptionPeriodUnit;
static convertProductPricingPhase(pricingPhase: QProductPricingPhase | null | undefined): ProductPricingPhase | null;
static convertPrisingPhaseRecurrenceMode(recurrenceMode: string): PricingPhaseRecurrenceMode;
static convertPrisingPhaseType(type: string): PricingPhaseType;
static convertProductInstallmentPlanDetails(installmentPlanDetails: QProductInstallmentPlanDetails | null | undefined): ProductInstallmentPlanDetails | null;
static convertProductOfferDetails(offerDetails: QProductOfferDetails): ProductOfferDetails;
static convertInAppOfferDetails(inAppOfferDetails: QProductInAppDetails): ProductInAppDetails;
static convertProductPrice(productPrice: QProductPrice): ProductPrice;
static convertProductStoreDetails(productStoreDetails: QProductStoreDetails): ProductStoreDetails;
static convertSKProduct(skProduct: QSKProduct): SKProduct;
static convertSKSubscriptionPeriod(subscriptionPeriod: QSKSubscriptionPeriod): SKSubscriptionPeriod;
static convertPaymentDiscount(discount: QPaymentDiscount): SKPaymentDiscount;
static convertProductDiscount(discount: QProductDiscount): SKProductDiscount;
static convertDiscounts(discounts: Array<QProductDiscount>): SKProductDiscount[];
static convertEligibility(eligibilityMap: Record<string, {
status: "non_intro_or_trial_product" | "intro_or_trial_eligible" | "intro_or_trial_ineligible";
}> | null | undefined): Map<string, IntroEligibility>;
static convertEligibilityStatus(status: string): IntroEligibilityStatus;
static convertUserInfo(user: QUser): User;
static convertRemoteConfig(remoteConfig: QRemoteConfig): RemoteConfig;
static convertRemoteConfigList(remoteConfigList: QRemoteConfigList): RemoteConfigList;
static convertRemoteConfigurationSourceType(type: String): RemoteConfigurationSourceType;
static convertRemoteConfigurationAssignmentType(type: String): RemoteConfigurationAssignmentType;
static convertGroupType(type: String): ExperimentGroupType;
static convertAction(payload: Record<string, any>): NoCodesAction;
static convertNoCodesError(payload: QNoCodesError | undefined): NoCodesError | undefined;
static convertQonversionError(payload: QQonversionError | undefined): QonversionError | undefined;
static convertScreenPresentationConfig(config: ScreenPresentationConfig): Object;
static convertNoCodesErrorCode(code: string | undefined): NoCodesErrorCode;
static convertQonversionErrorCode(code: string | undefined): QonversionErrorCode;
}
export default Mapper;