UNPKG

@cedros/pay-react

Version:

React frontend library for Cedros Pay - unified Stripe and Solana x402 payments

113 lines 4.67 kB
import { PaymentResult, SubscriptionSessionRequest, SubscriptionSessionResponse, SubscriptionStatusRequest, SubscriptionStatusResponse, SubscriptionQuote, BillingInterval, CancelSubscriptionRequest, CancelSubscriptionResponse, BillingPortalRequest, BillingPortalResponse, ActivateX402SubscriptionRequest, ActivateX402SubscriptionResponse } from '../types'; import { RouteDiscoveryManager } from './RouteDiscoveryManager'; /** * Options for requesting a subscription quote (x402) */ export interface SubscriptionQuoteOptions { /** Coupon code for discount */ couponCode?: string; /** Custom interval in days (for 'custom' interval) */ intervalDays?: number; } /** * Public interface for subscription management. * * Use this interface for type annotations instead of the concrete SubscriptionManager class. * * @example * ```tsx * function MyComponent() { * const { subscriptionManager } = useCedrosContext(); * await subscriptionManager.processSubscription({ * resource: 'plan-pro', * interval: 'monthly', * }); * } * ``` */ export interface ISubscriptionManager { /** * Initialize Stripe.js library (for redirect flow) */ initialize(): Promise<void>; /** * Create a Stripe subscription checkout session */ createSubscriptionSession(request: SubscriptionSessionRequest): Promise<SubscriptionSessionResponse>; /** * Redirect to Stripe checkout page */ redirectToCheckout(sessionId: string): Promise<PaymentResult>; /** * Complete subscription flow: create session and redirect (Stripe) */ processSubscription(request: SubscriptionSessionRequest): Promise<PaymentResult>; /** * Check subscription status (for x402 gating) */ checkSubscriptionStatus(request: SubscriptionStatusRequest): Promise<SubscriptionStatusResponse>; /** * Request a subscription quote for x402 crypto payment */ requestSubscriptionQuote(resource: string, interval: BillingInterval, options?: SubscriptionQuoteOptions): Promise<SubscriptionQuote>; /** * Cancel a subscription */ cancelSubscription(request: CancelSubscriptionRequest): Promise<CancelSubscriptionResponse>; /** * Get Stripe billing portal URL for subscription management */ getBillingPortalUrl(request: BillingPortalRequest): Promise<BillingPortalResponse>; /** * Activate x402 subscription after payment verification */ activateX402Subscription(request: ActivateX402SubscriptionRequest): Promise<ActivateX402SubscriptionResponse>; } /** * Internal implementation of subscription management. * * @internal * **DO NOT USE THIS CLASS DIRECTLY** * * @see {@link ISubscriptionManager} for the stable interface */ export declare class SubscriptionManager implements ISubscriptionManager { private stripe; private readonly publicKey; private readonly routeDiscovery; private readonly sessionRateLimiter; private readonly statusRateLimiter; private readonly circuitBreaker; constructor(publicKey: string, routeDiscovery: RouteDiscoveryManager); /** Initialize Stripe.js library */ initialize(): Promise<void>; /** Internal helper: execute with rate limiting, circuit breaker, and retry */ private executeWithResilience; /** * Create a Stripe subscription checkout session */ createSubscriptionSession(request: SubscriptionSessionRequest): Promise<SubscriptionSessionResponse>; /** * Redirect to Stripe checkout */ redirectToCheckout(sessionId: string): Promise<PaymentResult>; /** * Complete subscription flow: create session and redirect */ processSubscription(request: SubscriptionSessionRequest): Promise<PaymentResult>; /** * Check subscription status (for x402 gating) */ checkSubscriptionStatus(request: SubscriptionStatusRequest): Promise<SubscriptionStatusResponse>; /** * Request a subscription quote for x402 crypto payment */ requestSubscriptionQuote(resource: string, interval: BillingInterval, options?: SubscriptionQuoteOptions): Promise<SubscriptionQuote>; /** Cancel a subscription */ cancelSubscription(request: CancelSubscriptionRequest): Promise<CancelSubscriptionResponse>; /** Get Stripe billing portal URL for subscription management */ getBillingPortalUrl(request: BillingPortalRequest): Promise<BillingPortalResponse>; /** Activate x402 subscription after payment verification */ activateX402Subscription(request: ActivateX402SubscriptionRequest): Promise<ActivateX402SubscriptionResponse>; } //# sourceMappingURL=SubscriptionManager.d.ts.map