import { WithPaymentProviderConfig } from '@paykit-sdk/core/src/types';
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 { SDKOptions } from '@polar-sh/sdk';

interface PolarConfig extends WithPaymentProviderConfig<Omit<SDKOptions, 'accessToken'>> {
}
declare class PolarProvider implements PayKitProvider {
    private config;
    private polar;
    private readonly productionURL;
    private readonly sandboxURL;
    constructor(config: PolarConfig);
    /**
     * 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>;
    retrieveCustomer: (id: string) => Promise<Customer>;
    /**
     * Subscription management
     */
    cancelSubscription: (id: string) => Promise<Subscription>;
    retrieveSubscription: (id: string) => Promise<Subscription>;
    updateSubscription: (id: string, params: UpdateSubscriptionParams) => Promise<Subscription>;
    /**
     * Webhook management
     */
    handleWebhook: (payload: string, signature: string, secret: string) => Promise<WebhookEventPayload>;
}

declare const createPolar: (config: WithPaymentProviderConfig<PolarConfig>) => PolarProvider;
declare const polar: () => PolarProvider;

export { createPolar, polar };
