///
import { BraintreeSdk } from '@bigcommerce/checkout-sdk/braintree-utils';
import { BuyNowCartRequestBody } from '@bigcommerce/checkout-sdk/payment-integration-api';
import { CheckoutButtonInitializeOptions } from '@bigcommerce/checkout-sdk/payment-integration-api';
import { CheckoutButtonStrategy } from '@bigcommerce/checkout-sdk/payment-integration-api';
import { CheckoutButtonStrategyFactory } from '@bigcommerce/checkout-sdk/payment-integration-api';
import { CustomerInitializeOptions } from '@bigcommerce/checkout-sdk/payment-integration-api';
import { CustomerStrategy } from '@bigcommerce/checkout-sdk/payment-integration-api';
import { CustomerStrategyFactory } from '@bigcommerce/checkout-sdk/payment-integration-api';
import { ExecutePaymentMethodCheckoutOptions } from '@bigcommerce/checkout-sdk/payment-integration-api';
import { OrderRequestBody } from '@bigcommerce/checkout-sdk/payment-integration-api';
import { PaymentInitializeOptions } from '@bigcommerce/checkout-sdk/payment-integration-api';
import { PaymentIntegrationService } from '@bigcommerce/checkout-sdk/payment-integration-api';
import { PaymentRequestOptions } from '@bigcommerce/checkout-sdk/payment-integration-api';
import { PaymentStrategy } from '@bigcommerce/checkout-sdk/payment-integration-api';
import { PaymentStrategyFactory } from '@bigcommerce/checkout-sdk/payment-integration-api';
import { RequestSender } from '@bigcommerce/request-sender';
import { ScriptLoader } from '@bigcommerce/script-loader';
/**
* A set of options that are required to initialize ApplePay in cart.
*
* When ApplePay is initialized, an ApplePay button will be inserted into the
* DOM. When a customer clicks on it, it will trigger Apple sheet.
*/
declare interface ApplePayButtonInitializeOptions {
/**
* This option indicates if product requires shipping
*/
requiresShipping?: boolean;
/**
* The options that are required to initialize Buy Now functionality.
*/
buyNowInitializeOptions?: {
getBuyNowCartRequestBody?(): BuyNowCartRequestBody | void;
};
/**
* A callback that gets called when a payment is successfully completed.
*/
onPaymentAuthorize(): void;
}
declare class ApplePayButtonStrategy implements CheckoutButtonStrategy {
private _requestSender;
private _paymentIntegrationService;
private _sessionFactory;
private _braintreeSdk;
private _applePayScriptLoader;
private _paymentMethod?;
private _applePayButton?;
private _requiresShipping?;
private _buyNowInitializeOptions?;
private _onAuthorizeCallback;
private _subTotalLabel;
private _shippingLabel;
constructor(_requestSender: RequestSender, _paymentIntegrationService: PaymentIntegrationService, _sessionFactory: ApplePaySessionFactory, _braintreeSdk: BraintreeSdk, _applePayScriptLoader: ApplePayScriptLoader);
initialize(options: CheckoutButtonInitializeOptions & WithApplePayButtonInitializeOptions): Promise;
deinitialize(): Promise;
private _createButton;
private _createApplePayButtonElement;
private _handleWalletButtonClick;
private _getRequestWithEmptyTotal;
private _getBaseRequest;
private _handleApplePayEvents;
private _createBuyNowCart;
private _handlePaymentMethodSelected;
private _handleShippingContactSelected;
private _handleShippingMethodSelected;
private _getUpdatedLineItems;
private _updateShippingOption;
private _onValidateMerchant;
private _onPaymentAuthorized;
private _transformContactToAddress;
private _getBraintreeDeviceData;
}
/**
* A set of options that are required to initialize the customer step of
* checkout in order to support ApplePay.
*
* When ApplePay is initialized, a sign-in button will be inserted into the
* DOM. When the customer clicks on it, it will trigger apple sheet
*/
declare interface ApplePayCustomerInitializeOptions {
/**
* The ID of a container which the sign-in button should insert into.
*/
container: string;
/**
* Shipping label to be passed to apple sheet.
*/
shippingLabel?: string;
/**
* Sub total label to be passed to apple sheet.
*/
subtotalLabel?: string;
/**
* A callback that gets called when a payment is successfully completed.
*/
onPaymentAuthorize(): void;
/**
* A callback that gets called if unable to initialize the widget or select
* one of the address options provided by the widget.
*
* @param error - The error object describing the failure.
*/
onError?(error?: Error): void;
/**
* A callback that gets called when wallet button clicked
*/
onClick?(): void;
}
declare class ApplePayCustomerStrategy implements CustomerStrategy {
private _requestSender;
private _paymentIntegrationService;
private _sessionFactory;
private _braintreeSdk;
private _applePayScriptLoader;
private _paymentMethod?;
private _applePayButton?;
private _onAuthorizeCallback;
private _onError;
private _onClick;
private _subTotalLabel;
private _shippingLabel;
private _hasApplePaySession;
constructor(_requestSender: RequestSender, _paymentIntegrationService: PaymentIntegrationService, _sessionFactory: ApplePaySessionFactory, _braintreeSdk: BraintreeSdk, _applePayScriptLoader: ApplePayScriptLoader);
initialize(options: CustomerInitializeOptions & WithApplePayCustomerInitializeOptions): Promise;
deinitialize(): Promise;
signIn(): Promise;
signOut(): Promise;
executePaymentMethodCheckout(options?: ExecutePaymentMethodCheckoutOptions): Promise;
private _createButton;
private _createApplePayButtonElement;
private _handleWalletButtonClick;
private _getBaseRequest;
private _handleApplePayEvents;
private _handleShippingContactSelected;
private _handleShippingMethodSelected;
private _getUpdatedLineItems;
private _updateShippingOption;
private _onValidateMerchant;
private _onPaymentAuthorized;
private _transformContactToAddress;
private _getBraintreeDeviceData;
}
/**
* A set of options that are required to initialize the Applepay payment method with:
*
* 1) ApplePay:
*
* ```js
* service.initializePayment({
* methodId: 'applepay',
* applepay: {
* shippingLabel: 'Shipping',
* subtotalLabel: 'Sub total',
* }
* });
* ```
*/
declare interface ApplePayPaymentInitializeOptions {
/**
* Shipping label to be passed to apple sheet.
*/
shippingLabel?: string;
/**
* Store credit label to be passed to apple sheet.
*/
storeCreditLabel?: string;
/**
* Sub total label to be passed to apple sheet.
*/
subtotalLabel?: string;
}
declare class ApplePayPaymentStrategy implements PaymentStrategy {
private _requestSender;
private _paymentIntegrationService;
private _sessionFactory;
private _braintreeSdk;
private _applePayScriptLoader;
private _shippingLabel;
private _subTotalLabel;
private _storeCreditLabel;
constructor(_requestSender: RequestSender, _paymentIntegrationService: PaymentIntegrationService, _sessionFactory: ApplePaySessionFactory, _braintreeSdk: BraintreeSdk, _applePayScriptLoader: ApplePayScriptLoader);
initialize(options?: PaymentInitializeOptions & WithApplePayPaymentInitializeOptions): Promise;
execute(payload: OrderRequestBody, options?: PaymentRequestOptions): Promise;
finalize(): Promise;
deinitialize(): Promise;
private _getBaseRequest;
private _handleApplePayEvents;
private _onValidateMerchant;
private _onPaymentAuthorized;
private _getBraintreeDeviceData;
}
declare class ApplePayScriptLoader {
private scriptLoader;
private sdkVersion;
constructor(scriptLoader: ScriptLoader);
loadSdk(): Promise;
}
declare class ApplePaySessionFactory {
create(request: ApplePayJS.ApplePayPaymentRequest): ApplePaySession;
}
declare interface WithApplePayButtonInitializeOptions {
applepay?: ApplePayButtonInitializeOptions;
}
declare interface WithApplePayCustomerInitializeOptions {
/**
* The options that are required to initialize the customer step of checkout
* when using ApplePay.
*/
applepay?: ApplePayCustomerInitializeOptions;
}
declare interface WithApplePayPaymentInitializeOptions {
/**
* The options that are required to initialize the Apple Pay payment
* method. They can be omitted unless you need to support Apple Pay.
*/
applepay?: ApplePayPaymentInitializeOptions;
}
export declare const createApplePayButtonStrategy: import("../../payment-integration-api/src/resolvable-module").default, {
id: string;
}>;
export declare const createApplePayCustomerStrategy: import("../../payment-integration-api/src/resolvable-module").default, {
id: string;
}>;
export declare const createApplePayPaymentStrategy: import("../../payment-integration-api/src/resolvable-module").default, {
id: string;
}>;