title: Binding PayPalMobile iOS library in Xamarin
body: <p>I need help binding PayPalMobile (objective-C) library in Xamarin. </p>
  
  <p>I found several PayPal binding but they are outdated and using iOS8.x. I want to bind the latest <a href="https://github.com/paypal/PayPal-iOS-SDK" rel="nofollow">PayPalMobile</a> with iOS9.2. </p>
  
  <p>I followed <a href="https://developer.xamarin.com/guides/ios/advanced_topics/binding_objective-c/walkthrough/" rel="nofollow">Xamarin walkthrough</a> on binding Objective-C libraries to help me bind the PayPalMobile library. </p>
  
  <p>Following the walkthrough, I passed the top-level header file, PayPalMobile.h to Objective Sharpie. I copied the contents (except for the namespace) of the two files generated by Objective Sharpie to my solution and build it. </p>
  
  <p>Upon building I received several errors:</p>
  
  <p>Error CS0246: The type or namespace name 'Verify' could not be found. Are you missing an assembly reference? (CS0246)</p>
  
  <p>Error CS0246: The type or namespace name 'Native' could not be found. Are you missing an assembly reference? (CS0246)</p>
  
  <p>Error CS0579: The attribute 'StaticAttribute' cannot be applied multiple times (CS0579)</p>
  
  <p>Now, my question is: <strong>how do I fix this errors?</strong> Furthermore, the attributes:</p>
  
  <p>BaseType, NullAllowed, Abstract, Wrap, Static, Verify, ConstantsInterfaceAssociation, StronglyTypedNSArray, PayPalPaymentViewControllerState, MethodToProperty </p>
  
  <p>are in red which do not exist in the current context. Am I missing some resources?</p>
  
  <p>Let say the errors above are fixed. Will that be all to do in order to use the new binding?</p>
  
  <p><strong>ApiDefinitions:</strong></p>
  
  <pre><code>using System;
  
  using UIKit;
  using Foundation;
  using ObjCRuntime;
  using CoreGraphics;
  
  namespace PayPalMobileIOSBinding
  {
      // @interface PayPalConfiguration : NSObject &lt;NSCopying&gt;
      [BaseType (typeof(NSObject))]
      interface PayPalConfiguration : INSCopying
      {
          // @property (readwrite, copy, nonatomic) NSString * _Nullable defaultUserEmail;
          [NullAllowed, Export ("defaultUserEmail")]
          string DefaultUserEmail { get; set; }
  
          // @property (readwrite, copy, nonatomic) NSString * _Nullable defaultUserPhoneCountryCode;
          [NullAllowed, Export ("defaultUserPhoneCountryCode")]
          string DefaultUserPhoneCountryCode { get; set; }
  
          // @property (readwrite, copy, nonatomic) NSString * _Nullable defaultUserPhoneNumber;
          [NullAllowed, Export ("defaultUserPhoneNumber")]
          string DefaultUserPhoneNumber { get; set; }
  
          // @property (readwrite, copy, nonatomic) NSString * _Nullable merchantName;
          [NullAllowed, Export ("merchantName")]
          string MerchantName { get; set; }
  
          // @property (readwrite, copy, nonatomic) NSURL * _Nullable merchantPrivacyPolicyURL;
          [NullAllowed, Export ("merchantPrivacyPolicyURL", ArgumentSemantic.Copy)]
          NSUrl MerchantPrivacyPolicyURL { get; set; }
  
          // @property (readwrite, copy, nonatomic) NSURL * _Nullable merchantUserAgreementURL;
          [NullAllowed, Export ("merchantUserAgreementURL", ArgumentSemantic.Copy)]
          NSUrl MerchantUserAgreementURL { get; set; }
  
          // @property (assign, readwrite, nonatomic) BOOL acceptCreditCards;
          [Export ("acceptCreditCards")]
          bool AcceptCreditCards { get; set; }
  
          // @property (assign, readwrite, nonatomic) PayPalShippingAddressOption payPalShippingAddressOption;
          [Export ("payPalShippingAddressOption", ArgumentSemantic.Assign)]
          PayPalShippingAddressOption PayPalShippingAddressOption { get; set; }
  
          // @property (assign, readwrite, nonatomic) BOOL rememberUser;
          [Export ("rememberUser")]
          bool RememberUser { get; set; }
  
          // @property (readwrite, copy, nonatomic) NSString * _Nullable languageOrLocale;
          [NullAllowed, Export ("languageOrLocale")]
          string LanguageOrLocale { get; set; }
  
          // @property (assign, readwrite, nonatomic) BOOL alwaysDisplayCurrencyCodes;
          [Export ("alwaysDisplayCurrencyCodes")]
          bool AlwaysDisplayCurrencyCodes { get; set; }
  
          // @property (assign, readwrite, nonatomic) BOOL disableBlurWhenBackgrounding;
          [Export ("disableBlurWhenBackgrounding")]
          bool DisableBlurWhenBackgrounding { get; set; }
  
          // @property (assign, readwrite, nonatomic) BOOL presentingInPopover;
          [Export ("presentingInPopover")]
          bool PresentingInPopover { get; set; }
  
          // @property (assign, readwrite, nonatomic) BOOL forceDefaultsInSandbox;
          [Export ("forceDefaultsInSandbox")]
          bool ForceDefaultsInSandbox { get; set; }
  
          // @property (readwrite, copy, nonatomic) NSString * _Nullable sandboxUserPassword;
          [NullAllowed, Export ("sandboxUserPassword")]
          string SandboxUserPassword { get; set; }
  
          // @property (readwrite, copy, nonatomic) NSString * _Nullable sandboxUserPin;
          [NullAllowed, Export ("sandboxUserPin")]
          string SandboxUserPin { get; set; }
      }
  
      // typedef void (^PayPalFuturePaymentDelegateCompletionBlock)();
      delegate void PayPalFuturePaymentDelegateCompletionBlock ();
  
      // @protocol PayPalFuturePaymentDelegate &lt;NSObject&gt;
      [Protocol, Model]
      [BaseType (typeof(NSObject))]
      interface PayPalFuturePaymentDelegate
      {
          // @required -(void)payPalFuturePaymentDidCancel:(PayPalFuturePaymentViewController * _Nonnull)futurePaymentViewController;
          [Abstract]
          [Export ("payPalFuturePaymentDidCancel:")]
          void PayPalFuturePaymentDidCancel (PayPalFuturePaymentViewController futurePaymentViewController);
  
          // @required -(void)payPalFuturePaymentViewController:(PayPalFuturePaymentViewController * _Nonnull)futurePaymentViewController didAuthorizeFuturePayment:(NSDictionary * _Nonnull)futurePaymentAuthorization;
          [Abstract]
          [Export ("payPalFuturePaymentViewController:didAuthorizeFuturePayment:")]
          void PayPalFuturePaymentViewController (PayPalFuturePaymentViewController futurePaymentViewController, NSDictionary futurePaymentAuthorization);
  
          // @optional -(void)payPalFuturePaymentViewController:(PayPalFuturePaymentViewController * _Nonnull)futurePaymentViewController willAuthorizeFuturePayment:(NSDictionary * _Nonnull)futurePaymentAuthorization completionBlock:(PayPalFuturePaymentDelegateCompletionBlock _Nonnull)completionBlock;
          [Export ("payPalFuturePaymentViewController:willAuthorizeFuturePayment:completionBlock:")]
          void PayPalFuturePaymentViewController (PayPalFuturePaymentViewController futurePaymentViewController, NSDictionary futurePaymentAuthorization, PayPalFuturePaymentDelegateCompletionBlock completionBlock);
      }
  
      // @interface PayPalFuturePaymentViewController : UINavigationController
      [BaseType (typeof(UINavigationController))]
      interface PayPalFuturePaymentViewController
      {
          // -(instancetype _Nullable)initWithConfiguration:(PayPalConfiguration * _Nonnull)configuration delegate:(id&lt;PayPalFuturePaymentDelegate&gt; _Nullable)delegate;
          [Export ("initWithConfiguration:delegate:")]
          IntPtr Constructor (PayPalConfiguration configuration, [NullAllowed] PayPalFuturePaymentDelegate @delegate);
  
          [Wrap ("WeakFuturePaymentDelegate")]
          [NullAllowed]
          PayPalFuturePaymentDelegate FuturePaymentDelegate { get; }
  
          // @property (readonly, nonatomic, weak) id&lt;PayPalFuturePaymentDelegate&gt; _Nullable futurePaymentDelegate;
          [NullAllowed, Export ("futurePaymentDelegate", ArgumentSemantic.Weak)]
          NSObject WeakFuturePaymentDelegate { get; }
      }
  
      [Static]
      [Verify (ConstantsInterfaceAssociation)]
      partial interface Constants
      {
          // extern NSString *const _Nonnull kPayPalOAuth2ScopeFuturePayments;
          [Field ("kPayPalOAuth2ScopeFuturePayments", "__Internal")]
          NSString kPayPalOAuth2ScopeFuturePayments { get; }
  
          // extern NSString *const _Nonnull kPayPalOAuth2ScopeProfile;
          [Field ("kPayPalOAuth2ScopeProfile", "__Internal")]
          NSString kPayPalOAuth2ScopeProfile { get; }
  
          // extern NSString *const _Nonnull kPayPalOAuth2ScopeOpenId;
          [Field ("kPayPalOAuth2ScopeOpenId", "__Internal")]
          NSString kPayPalOAuth2ScopeOpenId { get; }
  
          // extern NSString *const _Nonnull kPayPalOAuth2ScopePayPalAttributes;
          [Field ("kPayPalOAuth2ScopePayPalAttributes", "__Internal")]
          NSString kPayPalOAuth2ScopePayPalAttributes { get; }
  
          // extern NSString *const _Nonnull kPayPalOAuth2ScopeEmail;
          [Field ("kPayPalOAuth2ScopeEmail", "__Internal")]
          NSString kPayPalOAuth2ScopeEmail { get; }
  
          // extern NSString *const _Nonnull kPayPalOAuth2ScopeAddress;
          [Field ("kPayPalOAuth2ScopeAddress", "__Internal")]
          NSString kPayPalOAuth2ScopeAddress { get; }
  
          // extern NSString *const _Nonnull kPayPalOAuth2ScopePhone;
          [Field ("kPayPalOAuth2ScopePhone", "__Internal")]
          NSString kPayPalOAuth2ScopePhone { get; }
      }
  
      // @interface PayPalPaymentDetails : NSObject &lt;NSCopying&gt;
      [BaseType (typeof(NSObject))]
      interface PayPalPaymentDetails : INSCopying
      {
          // +(PayPalPaymentDetails * _Nonnull)paymentDetailsWithSubtotal:(NSDecimalNumber * _Nullable)subtotal withShipping:(NSDecimalNumber * _Nullable)shipping withTax:(NSDecimalNumber * _Nullable)tax;
          [Static]
          [Export ("paymentDetailsWithSubtotal:withShipping:withTax:")]
          PayPalPaymentDetails PaymentDetailsWithSubtotal ([NullAllowed] NSDecimalNumber subtotal, [NullAllowed] NSDecimalNumber shipping, [NullAllowed] NSDecimalNumber tax);
  
          // @property (readwrite, copy, nonatomic) NSDecimalNumber * _Nullable subtotal;
          [NullAllowed, Export ("subtotal", ArgumentSemantic.Copy)]
          NSDecimalNumber Subtotal { get; set; }
  
          // @property (readwrite, copy, nonatomic) NSDecimalNumber * _Nullable shipping;
          [NullAllowed, Export ("shipping", ArgumentSemantic.Copy)]
          NSDecimalNumber Shipping { get; set; }
  
          // @property (readwrite, copy, nonatomic) NSDecimalNumber * _Nullable tax;
          [NullAllowed, Export ("tax", ArgumentSemantic.Copy)]
          NSDecimalNumber Tax { get; set; }
      }
  
      // @interface PayPalItem : NSObject &lt;NSCopying&gt;
      [BaseType (typeof(NSObject))]
      interface PayPalItem : INSCopying
      {
          // +(PayPalItem * _Nonnull)itemWithName:(NSString * _Nonnull)name withQuantity:(NSUInteger)quantity withPrice:(NSDecimalNumber * _Nonnull)price withCurrency:(NSString * _Nonnull)currency withSku:(NSString * _Nullable)sku;
          [Static]
          [Export ("itemWithName:withQuantity:withPrice:withCurrency:withSku:")]
          PayPalItem ItemWithName (string name, nuint quantity, NSDecimalNumber price, string currency, [NullAllowed] string sku);
  
          // +(NSDecimalNumber * _Nonnull)totalPriceForItems:(NSArray * _Nonnull)items;
          [Static]
          [Export ("totalPriceForItems:")]
          [Verify (StronglyTypedNSArray)]
          NSDecimalNumber TotalPriceForItems (NSObject[] items);
  
          // @property (readwrite, copy, nonatomic) NSString * _Nonnull name;
          [Export ("name")]
          string Name { get; set; }
  
          // @property (assign, readwrite, nonatomic) NSUInteger quantity;
          [Export ("quantity")]
          nuint Quantity { get; set; }
  
          // @property (readwrite, copy, nonatomic) NSDecimalNumber * _Nonnull price;
          [Export ("price", ArgumentSemantic.Copy)]
          NSDecimalNumber Price { get; set; }
  
          // @property (readwrite, copy, nonatomic) NSString * _Nonnull currency;
          [Export ("currency")]
          string Currency { get; set; }
  
          // @property (readwrite, copy, nonatomic) NSString * _Nullable sku;
          [NullAllowed, Export ("sku")]
          string Sku { get; set; }
      }
  
      // @interface PayPalShippingAddress : NSObject &lt;NSCopying&gt;
      [BaseType (typeof(NSObject))]
      interface PayPalShippingAddress : INSCopying
      {
          // +(PayPalShippingAddress * _Nonnull)shippingAddressWithRecipientName:(NSString * _Nonnull)recipientName withLine1:(NSString * _Nonnull)line1 withLine2:(NSString * _Nullable)line2 withCity:(NSString * _Nonnull)city withState:(NSString * _Nullable)state withPostalCode:(NSString * _Nullable)postalCode withCountryCode:(NSString * _Nonnull)countryCode;
          [Static]
          [Export ("shippingAddressWithRecipientName:withLine1:withLine2:withCity:withState:withPostalCode:withCountryCode:")]
          PayPalShippingAddress ShippingAddressWithRecipientName (string recipientName, string line1, [NullAllowed] string line2, string city, [NullAllowed] string state, [NullAllowed] string postalCode, string countryCode);
  
          // @property (readwrite, copy, nonatomic) NSString * _Nonnull recipientName;
          [Export ("recipientName")]
          string RecipientName { get; set; }
  
          // @property (readwrite, copy, nonatomic) NSString * _Nonnull line1;
          [Export ("line1")]
          string Line1 { get; set; }
  
          // @property (readwrite, copy, nonatomic) NSString * _Nullable line2;
          [NullAllowed, Export ("line2")]
          string Line2 { get; set; }
  
          // @property (readwrite, copy, nonatomic) NSString * _Nonnull city;
          [Export ("city")]
          string City { get; set; }
  
          // @property (readwrite, copy, nonatomic) NSString * _Nullable state;
          [NullAllowed, Export ("state")]
          string State { get; set; }
  
          // @property (readwrite, copy, nonatomic) NSString * _Nullable postalCode;
          [NullAllowed, Export ("postalCode")]
          string PostalCode { get; set; }
  
          // @property (readwrite, copy, nonatomic) NSString * _Nonnull countryCode;
          [Export ("countryCode")]
          string CountryCode { get; set; }
      }
  
      // @interface PayPalPayment : NSObject &lt;NSCopying&gt;
      [BaseType (typeof(NSObject))]
      interface PayPalPayment : INSCopying
      {
          // +(PayPalPayment * _Nonnull)paymentWithAmount:(NSDecimalNumber * _Nonnull)amount currencyCode:(NSString * _Nonnull)currencyCode shortDescription:(NSString * _Nonnull)shortDescription intent:(PayPalPaymentIntent)intent;
          [Static]
          [Export ("paymentWithAmount:currencyCode:shortDescription:intent:")]
          PayPalPayment PaymentWithAmount (NSDecimalNumber amount, string currencyCode, string shortDescription, PayPalPaymentIntent intent);
  
          // @property (readwrite, copy, nonatomic) NSString * _Nonnull currencyCode;
          [Export ("currencyCode")]
          string CurrencyCode { get; set; }
  
          // @property (readwrite, copy, nonatomic) NSDecimalNumber * _Nonnull amount;
          [Export ("amount", ArgumentSemantic.Copy)]
          NSDecimalNumber Amount { get; set; }
  
          // @property (readwrite, copy, nonatomic) NSString * _Nonnull shortDescription;
          [Export ("shortDescription")]
          string ShortDescription { get; set; }
  
          // @property (assign, readwrite, nonatomic) PayPalPaymentIntent intent;
          [Export ("intent", ArgumentSemantic.Assign)]
          PayPalPaymentIntent Intent { get; set; }
  
          // @property (readwrite, copy, nonatomic) PayPalPaymentDetails * _Nullable paymentDetails;
          [NullAllowed, Export ("paymentDetails", ArgumentSemantic.Copy)]
          PayPalPaymentDetails PaymentDetails { get; set; }
  
          // @property (readwrite, copy, nonatomic) NSArray * _Nullable items;
          [NullAllowed, Export ("items", ArgumentSemantic.Copy)]
          [Verify (StronglyTypedNSArray)]
          NSObject[] Items { get; set; }
  
          // @property (readwrite, copy, nonatomic) PayPalShippingAddress * _Nullable shippingAddress;
          [NullAllowed, Export ("shippingAddress", ArgumentSemantic.Copy)]
          PayPalShippingAddress ShippingAddress { get; set; }
  
          // @property (readwrite, copy, nonatomic) NSString * _Nullable invoiceNumber;
          [NullAllowed, Export ("invoiceNumber")]
          string InvoiceNumber { get; set; }
  
          // @property (readwrite, copy, nonatomic) NSString * _Nullable custom;
          [NullAllowed, Export ("custom")]
          string Custom { get; set; }
  
          // @property (readwrite, copy, nonatomic) NSString * _Nullable softDescriptor;
          [NullAllowed, Export ("softDescriptor")]
          string SoftDescriptor { get; set; }
  
          // @property (readwrite, copy, nonatomic) NSString * _Nullable bnCode;
          [NullAllowed, Export ("bnCode")]
          string BnCode { get; set; }
  
          // @property (readonly, assign, nonatomic) BOOL processable;
          [Export ("processable")]
          bool Processable { get; }
  
          // @property (readonly, copy, nonatomic) NSString * _Nonnull localizedAmountForDisplay;
          [Export ("localizedAmountForDisplay")]
          string LocalizedAmountForDisplay { get; }
  
          // @property (readonly, copy, nonatomic) NSDictionary * _Nonnull confirmation;
          [Export ("confirmation", ArgumentSemantic.Copy)]
          NSDictionary Confirmation { get; }
      }
  
      // typedef void (^PayPalPaymentDelegateCompletionBlock)();
      delegate void PayPalPaymentDelegateCompletionBlock ();
  
      // @protocol PayPalPaymentDelegate &lt;NSObject&gt;
      [Protocol, Model]
      [BaseType (typeof(NSObject))]
      interface PayPalPaymentDelegate
      {
          // @required -(void)payPalPaymentDidCancel:(PayPalPaymentViewController * _Nonnull)paymentViewController;
          [Abstract]
          [Export ("payPalPaymentDidCancel:")]
          void PayPalPaymentDidCancel (PayPalPaymentViewController paymentViewController);
  
          // @required -(void)payPalPaymentViewController:(PayPalPaymentViewController * _Nonnull)paymentViewController didCompletePayment:(PayPalPayment * _Nonnull)completedPayment;
          [Abstract]
          [Export ("payPalPaymentViewController:didCompletePayment:")]
          void PayPalPaymentViewController (PayPalPaymentViewController paymentViewController, PayPalPayment completedPayment);
  
          // @optional -(void)payPalPaymentViewController:(PayPalPaymentViewController * _Nonnull)paymentViewController willCompletePayment:(PayPalPayment * _Nonnull)completedPayment completionBlock:(PayPalPaymentDelegateCompletionBlock _Nonnull)completionBlock;
          [Export ("payPalPaymentViewController:willCompletePayment:completionBlock:")]
          void PayPalPaymentViewController (PayPalPaymentViewController paymentViewController, PayPalPayment completedPayment, PayPalPaymentDelegateCompletionBlock completionBlock);
      }
  
      // @interface PayPalPaymentViewController : UINavigationController
      [BaseType (typeof(UINavigationController))]
      interface PayPalPaymentViewController
      {
          // -(instancetype _Nullable)initWithPayment:(PayPalPayment * _Nonnull)payment configuration:(PayPalConfiguration * _Nullable)configuration delegate:(id&lt;PayPalPaymentDelegate&gt; _Nonnull)delegate;
          [Export ("initWithPayment:configuration:delegate:")]
          IntPtr Constructor (PayPalPayment payment, [NullAllowed] PayPalConfiguration configuration, PayPalPaymentDelegate @delegate);
  
          [Wrap ("WeakPaymentDelegate")]
          [NullAllowed]
          PayPalPaymentDelegate PaymentDelegate { get; }
  
          // @property (readonly, nonatomic, weak) id&lt;PayPalPaymentDelegate&gt; _Nullable paymentDelegate;
          [NullAllowed, Export ("paymentDelegate", ArgumentSemantic.Weak)]
          NSObject WeakPaymentDelegate { get; }
  
          // @property (readonly, assign, nonatomic) PayPalPaymentViewControllerState state;
          [Export ("state", ArgumentSemantic.Assign)]
          PayPalPaymentViewControllerState State { get; }
      }
  
      // typedef void (^PayPalProfileSharingDelegateCompletionBlock)();
      delegate void PayPalProfileSharingDelegateCompletionBlock ();
  
      // @protocol PayPalProfileSharingDelegate &lt;NSObject&gt;
      [Protocol, Model]
      [BaseType (typeof(NSObject))]
      interface PayPalProfileSharingDelegate
      {
          // @required -(void)userDidCancelPayPalProfileSharingViewController:(PayPalProfileSharingViewController * _Nonnull)profileSharingViewController;
          [Abstract]
          [Export ("userDidCancelPayPalProfileSharingViewController:")]
          void UserDidCancelPayPalProfileSharingViewController (PayPalProfileSharingViewController profileSharingViewController);
  
          // @required -(void)payPalProfileSharingViewController:(PayPalProfileSharingViewController * _Nonnull)profileSharingViewController userDidLogInWithAuthorization:(NSDictionary * _Nonnull)profileSharingAuthorization;
          [Abstract]
          [Export ("payPalProfileSharingViewController:userDidLogInWithAuthorization:")]
          void PayPalProfileSharingViewController (PayPalProfileSharingViewController profileSharingViewController, NSDictionary profileSharingAuthorization);
  
          // @optional -(void)payPalProfileSharingViewController:(PayPalProfileSharingViewController * _Nonnull)profileSharingViewController userWillLogInWithAuthorization:(NSDictionary * _Nonnull)profileSharingAuthorization completionBlock:(PayPalProfileSharingDelegateCompletionBlock _Nonnull)completionBlock;
          [Export ("payPalProfileSharingViewController:userWillLogInWithAuthorization:completionBlock:")]
          void PayPalProfileSharingViewController (PayPalProfileSharingViewController profileSharingViewController, NSDictionary profileSharingAuthorization, PayPalProfileSharingDelegateCompletionBlock completionBlock);
      }
  
      // @interface PayPalProfileSharingViewController : UINavigationController
      [BaseType (typeof(UINavigationController))]
      interface PayPalProfileSharingViewController
      {
          // -(instancetype _Nullable)initWithScopeValues:(NSSet * _Nonnull)scopeValues configuration:(PayPalConfiguration * _Nonnull)configuration delegate:(id&lt;PayPalProfileSharingDelegate&gt; _Nullable)delegate;
          [Export ("initWithScopeValues:configuration:delegate:")]
          IntPtr Constructor (NSSet scopeValues, PayPalConfiguration configuration, [NullAllowed] PayPalProfileSharingDelegate @delegate);
  
          [Wrap ("WeakProfileSharingDelegate")]
          [NullAllowed]
          PayPalProfileSharingDelegate ProfileSharingDelegate { get; }
  
          // @property (readonly, nonatomic, weak) id&lt;PayPalProfileSharingDelegate&gt; _Nullable profileSharingDelegate;
          [NullAllowed, Export ("profileSharingDelegate", ArgumentSemantic.Weak)]
          NSObject WeakProfileSharingDelegate { get; }
      }
  
      [Static]
      [Verify (ConstantsInterfaceAssociation)]
      partial interface Constants
      {
          // extern NSString *const _Nonnull PayPalEnvironmentProduction;
          [Field ("PayPalEnvironmentProduction", "__Internal")]
          NSString PayPalEnvironmentProduction { get; }
  
          // extern NSString *const _Nonnull PayPalEnvironmentSandbox;
          [Field ("PayPalEnvironmentSandbox", "__Internal")]
          NSString PayPalEnvironmentSandbox { get; }
  
          // extern NSString *const _Nonnull PayPalEnvironmentNoNetwork;
          [Field ("PayPalEnvironmentNoNetwork", "__Internal")]
          NSString PayPalEnvironmentNoNetwork { get; }
      }
  
      // @interface PayPalMobile : NSObject
      [BaseType (typeof(NSObject))]
      interface PayPalMobile
      {
          // +(void)initializeWithClientIdsForEnvironments:(NSDictionary * _Nonnull)clientIdsForEnvironments;
          [Static]
          [Export ("initializeWithClientIdsForEnvironments:")]
          void InitializeWithClientIdsForEnvironments (NSDictionary clientIdsForEnvironments);
  
          // +(void)preconnectWithEnvironment:(NSString * _Nonnull)environment;
          [Static]
          [Export ("preconnectWithEnvironment:")]
          void PreconnectWithEnvironment (string environment);
  
          // +(NSString * _Nonnull)clientMetadataID;
          [Static]
          [Export ("clientMetadataID")]
          [Verify (MethodToProperty)]
          string ClientMetadataID { get; }
  
          // +(NSString * _Nonnull)applicationCorrelationIDForEnvironment:(NSString * _Nonnull)environment __attribute__((deprecated("Use clientMetadataID instead.")));
          [Static]
          [Export ("applicationCorrelationIDForEnvironment:")]
          string ApplicationCorrelationIDForEnvironment (string environment);
  
          // +(void)clearAllUserData;
          [Static]
          [Export ("clearAllUserData")]
          void ClearAllUserData ();
  
          // +(NSString * _Nonnull)libraryVersion;
          [Static]
          [Export ("libraryVersion")]
          [Verify (MethodToProperty)]
          string LibraryVersion { get; }
      }
  }
  </code></pre>
  
  <p><strong>StructsAndEnums.cs</strong></p>
  
  <pre><code>using System;
  using ObjCRuntime;
  
  namespace PayPalMobileIOSBinding
  {
      [Native]
      public enum PayPalShippingAddressOption// : nint
      {
          None = 0,
          Provided = 1,
          PayPal = 2,
          Both = 3
      }
  
      [Native]
      public enum PayPalPaymentIntent// : nint
      {
          Sale = 0,
          Authorize = 1,
          Order = 2
      }
  
      [Native]
      public enum PayPalPaymentViewControllerState// : nint
      {
          Unsent = 0,
          InProgress = 1
      }
  }
  </code></pre>