import { PayKitProvider } from '@paykit-sdk/core/src/paykit-provider';
import { CreateCheckoutParams, Checkout, CreateCustomerParams, Customer, UpdateCustomerParams, Subscription, UpdateSubscriptionParams, WebhookEventPayload } from '@paykit-sdk/core/src/resources';
import { WithPaymentProviderConfig } from '@paykit-sdk/core/src/types';
import Stripe from 'stripe';

interface StripeConfig extends WithPaymentProviderConfig<Stripe.StripeConfig> {
    apiVersion?: Stripe.LatestApiVersion;
}
declare class StripeProvider implements PayKitProvider {
    private stripe;
    constructor(config: StripeConfig);
    /**
     * Checkout management
     */
    createCheckout: (params: CreateCheckoutParams) => Promise<Checkout>;
    retrieveCheckout: (id: string) => Promise<Checkout>;
    /**
     * Customer management
     */
    createCustomer: (params: CreateCustomerParams) => Promise<Customer>;
    updateCustomer: (id: string, params: UpdateCustomerParams) => Promise<Customer>;
    deleteCustomer: (id: string) => Promise<void>;
    retrieveCustomer: (id: string) => Promise<Customer | null>;
    /**
     * Subscription management
     */
    cancelSubscription: (id: string) => Promise<Subscription>;
    updateSubscription: (id: string, params: UpdateSubscriptionParams) => Promise<Subscription>;
    retrieveSubscription: (id: string) => Promise<Subscription>;
    /**
     * Webhook management
     */
    handleWebhook: (payload: string, signature: string, secret: string) => Promise<WebhookEventPayload>;
}

declare const createStripe: (config: StripeConfig) => StripeProvider;
declare const stripe: () => StripeProvider;

export { createStripe, stripe };
