import type { Product, SubscriptionProduct, ProductPurchase, SubscriptionPurchase } from 'expo-iap';
import { CustomerInfo, PurchasesOffering, PurchasesOfferings, PurchasesPackage, PACKAGE_TYPE } from "./revenuecat-types";
export { CustomerInfo, PurchasesOffering, PurchasesOfferings, PurchasesPackage, PACKAGE_TYPE };
export declare enum PURCHASES_ERROR_CODE {
    UNKNOWN_ERROR = 0,
    PURCHASE_CANCELLED_ERROR = 1,
    STORE_PROBLEM_ERROR = 2,
    PURCHASE_NOT_ALLOWED_ERROR = 3,
    PURCHASE_INVALID_ERROR = 4,
    PRODUCT_NOT_AVAILABLE_FOR_PURCHASE_ERROR = 5,
    PRODUCT_ALREADY_PURCHASED_ERROR = 6,
    RECEIPT_ALREADY_IN_USE_ERROR = 7,
    INVALID_RECEIPT_ERROR = 8,
    MISSING_RECEIPT_FILE_ERROR = 9,
    NETWORK_ERROR = 10,
    INVALID_CREDENTIALS_ERROR = 11,
    UNEXPECTED_BACKEND_RESPONSE_ERROR = 12,
    RECEIPT_IN_USE_BY_OTHER_SUBSCRIBER_ERROR = 13,
    INVALID_APP_USER_ID_ERROR = 14,
    OPERATION_ALREADY_IN_PROGRESS_ERROR = 15,
    UNKNOWN_BACKEND_ERROR = 16,
    MISSING_PROJECT_ID_ERROR = 17,
    INITIALIZATION_ERROR = 100,
    PRODUCT_NOT_AVAILABLE_ERROR = 101,
    PURCHASE_IN_PROGRESS_ERROR = 102,
    REFRESH_ERROR = 103,
    RESTORE_ERROR = 104,
    BACKEND_VALIDATION_ERROR = 105,
    SERVICE_UNAVAILABLE = 106,
    NATIVE_IAP_UNAVAILABLE_ERROR = 107
}
export interface LibraryError extends Error {
    code: PURCHASES_ERROR_CODE;
    underlyingError?: any;
    userCancelled?: boolean;
}
export interface PurchasesError {
    code: PURCHASES_ERROR_CODE;
    message: string;
    readableErrorCode?: string;
    userInfo?: {
        readableErrorCode?: string;
    };
    underlyingErrorMessage?: string;
    userCancelled?: boolean;
}
export type PLATFORM_TYPES = 'ios' | 'android' | 'stripe' | 'amazon' | 'global';
export interface BackendProduct {
    id: string;
    name: string;
    appId: string;
    type: 'consumable' | 'non_consumable' | 'subscription';
    price: number;
    currency: string;
    durationUnit?: string;
    durationValue?: number;
    platform: PLATFORM_TYPES;
    storeProductId: string;
    trialPeriod?: string;
    description?: string;
    status: 'active' | 'inactive';
    createdAt: string;
    updatedAt: string;
}
export interface BackendProductListResponse {
    products: BackendProduct[];
}
export interface BackendPackage {
    id: string;
    identifier: string;
    displayName: string;
    appId: string;
    description?: string;
    offeringId: string;
    packageType: PACKAGE_TYPE;
    products: string[];
    entitlements: string[];
    createdAt: string;
    updatedAt: string;
}
export interface MakePurchaseResult {
    productIdentifier: string;
    customerInfo: CustomerInfo;
    transaction: {
        transactionIdentifier: string;
        productIdentifier: string;
        purchaseDate: string;
    };
}
export type StoreProduct = (Product | SubscriptionProduct) & {
    id?: string;
    productId?: string;
};
export type Purchase = (ProductPurchase | SubscriptionPurchase) & {
    id: string;
    productId?: string;
};
export interface PurchaseSuccessResult {
    customerInfo: CustomerInfo;
    productIdentifier: string;
    transactionId?: string;
}
export interface A0Config {
    projectId: string;
    live: boolean;
    snackUrl: string;
    apiUrl: string;
    iconUrl: string;
    ek: string;
    apiKey: string;
    runtimeVersion: string;
    initialDeployment: {
        deploymentId: string;
        deploymentData: string;
    };
}
export interface PurchasesConfig {
    /**
     * Enable debug logging for the purchases service
     * @default false
     */
    debug?: boolean;
    /**
     * Optional custom App User ID to use instead of anonymous ID
     * If not provided, an anonymous ID will be generated
     */
    appUserId?: string;
}
//# sourceMappingURL=types.d.ts.map