import { PaykitProviderOptions, AbstractPayKitProvider, PayKitProvider, ProviderMetadataRegistry, CreateCheckoutSchema, Checkout, UpdateCheckoutSchema, CreateCustomerParams, Customer, UpdateCustomerParams, CreateSubscriptionSchema, Subscription, UpdateSubscriptionSchema, CreatePaymentSchema, Payment, UpdatePaymentSchema, CapturePaymentSchema, CreateRefundSchema, Refund, WebhookHandlerConfig, WebhookEventPayload } from '@paykit-sdk/core';
import { SDKOptions, Polar } from '@polar-sh/sdk';
import { validateEvent } from '@polar-sh/sdk/webhooks';

interface PolarMetadata extends ProviderMetadataRegistry {
}
type PolarWebhookPayload = ReturnType<typeof validateEvent>;
type PolarRawEvents = {
    [E in PolarWebhookPayload as `polar.${E['type']}`]: E;
};
interface PolarOptions extends PaykitProviderOptions, Pick<SDKOptions, 'userAgent' | 'retryConfig' | 'timeoutMs'> {
    accessToken: string;
    isSandbox: boolean;
}
declare class PolarProvider extends AbstractPayKitProvider implements PayKitProvider<PolarMetadata, Polar, PolarRawEvents> {
    private config;
    readonly providerName = "polar";
    private polar;
    private refunds;
    readonly isSandbox: boolean;
    private readonly productionURL;
    private readonly sandboxURL;
    constructor(config: PolarOptions);
    get _native(): Polar;
    /**
     * Checkout management
     */
    createCheckout: (params: CreateCheckoutSchema) => Promise<Checkout>;
    updateCheckout: (id: string, params: UpdateCheckoutSchema) => Promise<Checkout>;
    retrieveCheckout: (id: string) => Promise<Checkout>;
    deleteCheckout: (id: string) => Promise<null>;
    /**
     * Customer management
     */
    createCustomer: (params: CreateCustomerParams) => Promise<Customer>;
    updateCustomer: (id: string, params: UpdateCustomerParams) => Promise<Customer>;
    retrieveCustomer: (id: string) => Promise<Customer>;
    deleteCustomer: (id: string) => Promise<null>;
    /**
     * Subscription management
     */
    createSubscription: (params: CreateSubscriptionSchema) => Promise<Subscription>;
    cancelSubscription: (id: string) => Promise<Subscription>;
    retrieveSubscription: (id: string) => Promise<Subscription>;
    updateSubscription: (id: string, params: UpdateSubscriptionSchema) => Promise<Subscription>;
    deleteSubscription: (id: string) => Promise<null>;
    createPayment: (params: CreatePaymentSchema) => Promise<Payment>;
    updatePayment: (id: string, params: UpdatePaymentSchema) => Promise<Payment>;
    capturePayment: (id: string, params: CapturePaymentSchema) => Promise<Payment>;
    cancelPayment: (id: string) => Promise<Payment>;
    deletePayment: (id: string) => Promise<null>;
    retrievePayment: (id: string) => Promise<Payment>;
    createRefund: (params: CreateRefundSchema) => Promise<Refund>;
    handleWebhook: (params: WebhookHandlerConfig, webhookSecret: string | null) => Promise<Array<WebhookEventPayload<PolarRawEvents>>>;
}

export { type PolarOptions, PolarProvider };
