import { IApplePayConfig, IApplePayPaymentRequest, IApplePayError, ApplePayConfig, IMerchantSession, IApplePayService, IApplePayPaymentProcessRequest, IApplePayPaymentResponse, IApplePayToken } from '../ApplePay';
export declare enum ApplePayServiceErrorCode {
    UNAVAILABLE = "UNAVAILABLE",
    SESSION_ERROR = "SESSION_ERROR",
    MERCHANT_VALIDATION_ERROR = "MERCHANT_VALIDATION_ERROR",
    PAYMENT_PROCESSING_ERROR = "PAYMENT_PROCESSING_ERROR",
    USER_CANCELLED = "USER_CANCELLED"
}
export declare class ApplePayService implements IApplePayService {
    private applePayConfig?;
    private currentSession?;
    private currentPaymentRequest?;
    private api;
    /**
     * Initialize Apple Pay configuration
     */
    initialize(applePayConfig: IApplePayConfig): void;
    /**
     * Validate merchant with Apple Pay servers via API
     */
    validateMerchant(authToken: string, accountId: string): Promise<IMerchantSession>;
    /**
     * Process Apple Pay payment via API (fixed to match original logic)
     */
    processPayment(authToken: string, accountId: string, payload: IApplePayPaymentProcessRequest): Promise<{
        success: boolean;
        data: IApplePayPaymentResponse;
    }>;
    /**
     * Check if Apple Pay is available on this device/browser
     */
    isAvailable(): boolean;
    /**
     * Check if the user has an active card for the merchant
     */
    canMakePaymentsWithActiveCard(): Promise<boolean>;
    /**
     * Start Apple Pay session
     */
    startPaymentSession(paymentRequest: IApplePayPaymentRequest, authToken: string, accountId: string): Promise<{
        success: boolean;
        token?: IApplePayToken;
        paymentMethodId?: string;
        error?: IApplePayError;
    }>;
    /**
     * Abort current Apple Pay session
     */
    abortPaymentSession(): void;
    /**
     * Setup Apple Pay session event handlers
     */
    private setupSessionEventHandlers;
    /**
     * Create a basic payment request
     */
    static createPaymentRequest(amount: number, label: string, countryCode?: string, currencyCode?: string): IApplePayPaymentRequest;
    /**
     * Get current configuration
     */
    getApplePayConfig(): ApplePayConfig | undefined;
}
