import { JWTInput } from 'google-auth-library'; import { F as FetchLike } from '../http-CqI0d_bz.cjs'; /** Input for verifying an iOS receipt from server code. * @example * await verifyIosReceipt({ receipt, sharedSecret: process.env.BDK_IOS_INAPP_SHARED_SECRET }); */ interface VerifyIosReceiptInput { receipt: string; sharedSecret?: string; sandbox?: boolean; useSandboxFallback?: boolean; fetch?: FetchLike; } /** Result returned after verifying an iOS receipt. * @example * if (result.isValid) console.log(result.resultData); */ interface IosReceiptValidationResult { isValid: boolean; resultData: unknown | null; errorData: string | null; raw: unknown; } interface AppleVerifyReceiptResponse { status?: number; receipt?: { in_app?: IosInAppReceipt[]; }; latest_receipt_info?: IosInAppReceipt[]; [key: string]: unknown; } /** iOS in-app receipt item. * @example * const item: IosInAppReceipt = { product_id: "pro" }; */ interface IosInAppReceipt { product_id?: string; purchase_date_ms?: string; original_purchase_date_ms?: string; expires_date_ms?: string; [key: string]: unknown; } /** Input for reading one product from Apple receipt data. * @example * readIosReceipt({ receiptData: appleResponse, productId: "pro" }); */ interface ReadIosReceiptInput { receiptData: AppleVerifyReceiptResponse; productId: string; } /** Parsed iOS receipt fields for one product. * @example * console.log(result.id, result.expiresDateMs); */ interface ReadIosReceiptResult { id: string | null; purchaseDateMs: string | null; originalPurchaseDateMs: string | null; expiresDateMs: string | null; jsonData: string | null; } /** Android product type. * @example * const type: AndroidProductType = "subscription"; */ type AndroidProductType = "product" | "subscription"; /** Google Play authentication input. * @example * const auth: GooglePlayAuthInput = { serviceAccount: JSON.parse(process.env.BDK_GOOGLE_PLAY_SERVICE_ACCOUNT_JSON!) }; */ interface GooglePlayAuthInput { accessToken?: string; serviceAccount?: JWTInput; } /** Input for verifying an Android purchase token. * @example * await verifyAndroidReceipt({ serviceAccount: JSON.parse(process.env.BDK_GOOGLE_PLAY_SERVICE_ACCOUNT_JSON!), packageName, productId, purchaseToken, productType: "subscription" }); */ interface VerifyAndroidReceiptInput extends GooglePlayAuthInput { packageName: string; productId: string; purchaseToken: string; productType: AndroidProductType; fetch?: FetchLike; } /** Input for consuming an Android purchase token. * @example * await consumeAndroidPurchase({ serviceAccount: JSON.parse(process.env.BDK_GOOGLE_PLAY_SERVICE_ACCOUNT_JSON!), packageName, productId, purchaseToken }); */ interface ConsumeAndroidPurchaseInput extends GooglePlayAuthInput { packageName: string; productId: string; purchaseToken: string; fetch?: FetchLike; } /** Result returned after verifying an Android purchase token. * @example * if (result.isValid) console.log(result.payload); */ interface AndroidReceiptValidationResult { isValid: boolean; payload: unknown | null; errorMessage: string | null; raw: unknown; } /** Android purchase data returned by Google Play. * @example * const purchase: AndroidPurchaseData = { productId: "pro", purchaseToken: "token" }; */ interface AndroidPurchaseData { productId?: string; startTimeMillis?: string; expiryTimeMillis?: string; cancelReason?: number; acknowledgementState?: number; quantity?: number; [key: string]: unknown; } /** Input for reading one product from Android purchase data. * @example * readAndroidReceipt({ receiptData: purchases, productId: "pro" }); */ interface ReadAndroidReceiptInput { receiptData: AndroidPurchaseData[]; productId: string; } /** Parsed Android receipt fields for one product. * @example * console.log(result.id, result.expiresDateMs); */ interface ReadAndroidReceiptResult { id: string | null; purchaseDateMs: string | null; expiresDateMs: string | null; cancelReason: number | null; acknowledgementState: number | null; quantity: number | null; jsonData: string | null; } /** Verify an iOS receipt with Apple. * @example * await verifyIosReceipt({ receipt, sharedSecret: process.env.BDK_IOS_INAPP_SHARED_SECRET }); */ declare function verifyIosReceipt(input: VerifyIosReceiptInput): Promise; /** Read one iOS product from verified Apple receipt data. * @example * const entitlement = readIosReceipt({ receiptData: appleResponse, productId: "pro" }); */ declare function readIosReceipt(input: ReadIosReceiptInput): ReadIosReceiptResult; /** Verify an Android purchase token with Google Play. * @example * await verifyAndroidReceipt({ serviceAccount: JSON.parse(process.env.BDK_GOOGLE_PLAY_SERVICE_ACCOUNT_JSON!), packageName, productId, purchaseToken, productType: "subscription" }); */ declare function verifyAndroidReceipt(input: VerifyAndroidReceiptInput): Promise; /** Consume an Android one-time purchase. * @example * await consumeAndroidPurchase({ serviceAccount: JSON.parse(process.env.BDK_GOOGLE_PLAY_SERVICE_ACCOUNT_JSON!), packageName, productId, purchaseToken }); */ declare function consumeAndroidPurchase(input: ConsumeAndroidPurchaseInput): Promise<{ success: true; raw: unknown; }>; /** Read one Android product from Google Play purchase data. * @example * const entitlement = readAndroidReceipt({ receiptData: purchases, productId: "pro" }); */ declare function readAndroidReceipt(input: ReadAndroidReceiptInput): ReadAndroidReceiptResult; export { type AndroidProductType, type AndroidPurchaseData, type AndroidReceiptValidationResult, type ConsumeAndroidPurchaseInput, type GooglePlayAuthInput, type IosInAppReceipt, type IosReceiptValidationResult, type ReadAndroidReceiptInput, type ReadAndroidReceiptResult, type ReadIosReceiptInput, type ReadIosReceiptResult, type VerifyAndroidReceiptInput, type VerifyIosReceiptInput, consumeAndroidPurchase, readAndroidReceipt, readIosReceipt, verifyAndroidReceipt, verifyIosReceipt };