/// <reference types="applepayjs" />
import type { Container } from '../../components/container';
import { type ApplePayRawDataInitialization, type ApplePayStyles, type IApplePayShippingOption } from '../../components/param';
import type { EventEmitter } from '../../helper/event-emitter';
import { type IWalletService, type IWalletServiceMeta, type IWalletServiceUpdate, WalletService } from './wallet-service';
declare global {
    interface Window {
        ApplePaySession: ApplePaySession;
        safari: unknown;
    }
}
interface LatestShippingData {
    shippingContact?: ApplePayJS.ApplePayPaymentContact;
    shippingMethod?: ApplePayJS.ApplePayShippingMethod;
}
export declare class AppleWalletService extends WalletService implements IWalletService {
    protected gatewayName: string;
    protected eventEmitter: EventEmitter;
    private paymentSession;
    protected latestShippingChangePromiseResolve: (value: unknown) => void;
    protected latestShippingChangePromiseReject: () => void;
    protected selectedShippingOption: IApplePayShippingOption;
    protected latestShippingData: LatestShippingData;
    constructor(publicKey: string, meta: IWalletServiceMeta, gatewayName: string, eventEmitter: EventEmitter);
    protected getGatewayName(): string;
    protected getMerchantId(): string;
    protected getMetaStyles(): ApplePayStyles;
    protected getMetaRawDataInitialization(): ApplePayRawDataInitialization;
    protected isShippingRequired(): boolean;
    protected hasShippingOptions(): boolean;
    load(container: Container): Promise<void>;
    private onScriptLoaded;
    update(data: IWalletServiceUpdate): void;
    private checkAvailability;
    private mount;
    private onApplePayButtonClicked;
    private onCancelPayment;
    private createRequest;
    private getMerchantSession;
    private onValidateMerchant;
    private onPaymentAuthorized;
    private onShippingContactSelected;
    private onShippingMethodSelected;
    private parseUpdateData;
    private formatShippingOptions;
    private formatCapabilities;
    private createButtonStyle;
    private isUnsuportedBrowser;
}
export {};
//# sourceMappingURL=apple.wallet-service.d.ts.map