@kirz/react-native-toolkit
Version:
Toolkit to speed up React Native development
122 lines • 3.62 kB
TypeScript
import { FormatNumberOptions } from '@formatjs/intl';
import 'intl';
import 'intl/dist/Intl.complete';
export interface RemoteConfig {
}
export interface IProduct {
productId: string;
title: string;
description: string;
price: number;
localizedPrice: string;
currency: string;
consumable: boolean;
originalData: any;
}
export interface ISubscription extends Omit<IProduct, 'consumable'> {
periodUnit: 'day' | 'week' | 'month' | 'year';
numberOfPeriods: number;
trial?: {
periodUnit: 'day' | 'week' | 'month' | 'year';
numberOfPeriods: number;
};
}
export declare class Product implements IProduct {
productId: string;
title: string;
description: string;
price: number;
localizedPrice: string;
currency: string;
consumable: boolean;
originalData: any;
constructor(obj: IProduct);
formatPrice(options?: {
options?: FormatNumberOptions;
formatter?: (value: number) => number;
}): string;
}
export declare class Subscription extends Product implements ISubscription {
periodUnit: 'day' | 'week' | 'month' | 'year';
numberOfPeriods: number;
trial?: {
periodUnit: 'day' | 'week' | 'month' | 'year';
numberOfPeriods: number;
} | undefined;
constructor(obj: ISubscription);
}
export type PurchasedSubscriptionInfo = {
productId: string;
cancelledAt?: string;
startedAt: string;
expiresAt: string;
isActive: boolean;
isAutoRenewEnabled: boolean;
isSandbox: boolean;
};
export type PurchasedProductInfo = {
productId: string;
purchasedAt: string;
canceledAt?: string;
};
export type Purchase = {
productId: string;
transactionDate: string;
transactionReceipt: string;
originalData: any;
};
export interface NetworkPluginData {
isInternetReachable: () => Promise<boolean>;
}
export interface IRemoteConfigPlugin {
readonly remoteValues: RemoteConfig;
}
export interface IAnalyticsProvider {
logEvent: (event: string, parameters?: Record<string, any>) => Promise<void>;
}
export interface IReceiptValidator {
/**
* Checks whether the given subscription is eligible for purchasing introductory offer (free trial, pay as you go or pay up front modes)
*/
isTrialAvailable(subscriptionId: string): Promise<boolean>;
/**
* Returns true if user has active subscription or non renewing purchase (lifetime)
*/
hasPremiumAccess(): Promise<boolean>;
/**
* Returns true if user has active subscription
*/
hasActiveSubscription(): Promise<boolean>;
/**
* Returns an array of all subscriptions that this user has ever purchased
*/
getPurchasedSubscriptions(): Promise<PurchasedSubscriptionInfo[]>;
/**
* Returns an active subscription
*/
getActiveSubscription(): Promise<PurchasedSubscriptionInfo | null>;
/**
* Returns an array of all in-app purchases
*/
getPurchasedProducts(): Promise<PurchasedProductInfo[]>;
/**
* Returns an array of all in-app purchases
*/
isProductPurchased(productId: string): Promise<boolean>;
/**
* Restores users purchases
*/
restorePurchases(): Promise<void>;
/**
* Handles purchase
*/
handlePurchase(): Promise<void>;
}
export interface IAppPurchasePlugin {
readonly products: Product[];
readonly subscriptions: Subscription[];
readonly receiptValidator: IReceiptValidator;
purchaseProduct(productId: string): Promise<Purchase>;
refetchProducts(): Promise<void>;
}
//# sourceMappingURL=types.d.ts.map