//
//  PPOTCheckoutRequest_Internal.h
//  PayPalOneTouch
//
//  Copyright © 2015 PayPal, Inc. All rights reserved.
//

#import "PPOTRequest.h"

@interface PPOTCheckoutRequest ()

/// Factory method. Non-empty values for all parameters MUST be provided.
///
/// @param approvalURL Client has already created a payment on PayPal server; this is the resulting HATEOS ApprovalURL
/// @param clientID The app's Client ID, as obtained from developer.paypal.com
/// @param environment PayPalEnvironmentProduction, PayPalEnvironmentMock, or PayPalEnvironmentSandbox;
///        or else a stage indicated as `base-url:port`
/// @param callbackURLScheme The URL scheme to be used for returning to this app, following an app-switch
+ (nullable instancetype)requestWithApprovalURL:(nonnull NSURL *)approvalURL
                                       clientID:(nonnull NSString *)clientID
                                    environment:(nonnull NSString *)environment
                              callbackURLScheme:(nonnull NSString *)callbackURLScheme;

/// Factory method. Only pairingId can be nil.
///
/// @param approvalURL Client has already created a payment on PayPal server; this is the resulting HATEOS ApprovalURL
/// @param pairingId The pairingId for the risk component
/// @param clientID The app's Client ID, as obtained from developer.paypal.com
/// @param environment PayPalEnvironmentProduction, PayPalEnvironmentMock, or PayPalEnvironmentSandbox;
///        or else a stage indicated as `base-url:port`
/// @param callbackURLScheme The URL scheme to be used for returning to this app, following an app-switch
+ (nullable instancetype)requestWithApprovalURL:(nonnull NSURL *)approvalURL
                                      pairingId:(nullable NSString *)pairingId
                                       clientID:(nonnull NSString *)clientID
                                    environment:(nonnull NSString *)environment
                              callbackURLScheme:(nonnull NSString *)callbackURLScheme;

@end
