diff --git a/ios/manifest b/ios/manifest
index 43fc643..cc5d3b5 100644
--- a/ios/manifest
+++ b/ios/manifest
@@ -2,7 +2,7 @@
# this is your module manifest and used by Titanium
# during compilation, packaging, distribution, etc.
#
-version: 8.0.0
+version: 8.0.1
apiversion: 2
architectures: arm64 x86_64
description: titanium-firebase-analytics
diff --git a/ios/shared/FBLPromises.xcframework/Info.plist b/ios/shared/FBLPromises.xcframework/Info.plist
new file mode 100644
index 0000000..86621e8
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/Info.plist
@@ -0,0 +1,95 @@
+
+
+
+
+ AvailableLibraries
+
+
+ LibraryIdentifier
+ ios-arm64_x86_64-simulator
+ LibraryPath
+ FBLPromises.framework
+ SupportedArchitectures
+
+ arm64
+ x86_64
+
+ SupportedPlatform
+ ios
+ SupportedPlatformVariant
+ simulator
+
+
+ LibraryIdentifier
+ tvos-arm64_x86_64-simulator
+ LibraryPath
+ FBLPromises.framework
+ SupportedArchitectures
+
+ arm64
+ x86_64
+
+ SupportedPlatform
+ tvos
+ SupportedPlatformVariant
+ simulator
+
+
+ LibraryIdentifier
+ ios-arm64
+ LibraryPath
+ FBLPromises.framework
+ SupportedArchitectures
+
+ arm64
+
+ SupportedPlatform
+ ios
+
+
+ LibraryIdentifier
+ ios-arm64_x86_64-maccatalyst
+ LibraryPath
+ FBLPromises.framework
+ SupportedArchitectures
+
+ arm64
+ x86_64
+
+ SupportedPlatform
+ ios
+ SupportedPlatformVariant
+ maccatalyst
+
+
+ LibraryIdentifier
+ macos-arm64_x86_64
+ LibraryPath
+ FBLPromises.framework
+ SupportedArchitectures
+
+ arm64
+ x86_64
+
+ SupportedPlatform
+ macos
+
+
+ LibraryIdentifier
+ tvos-arm64
+ LibraryPath
+ FBLPromises.framework
+ SupportedArchitectures
+
+ arm64
+
+ SupportedPlatform
+ tvos
+
+
+ CFBundlePackageType
+ XFWK
+ XCFrameworkFormatVersion
+ 1.0
+
+
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/FBLPromises b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/FBLPromises
new file mode 100644
index 0000000..0486e5d
Binary files /dev/null and b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/FBLPromises differ
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+All.h b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+All.h
new file mode 100644
index 0000000..9c0090e
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+All.h
@@ -0,0 +1,63 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(AllAdditions)
+
+/**
+ Wait until all of the given promises are fulfilled.
+ If one of the given promises is rejected, then the returned promise is rejected with same error.
+ If any other arbitrary value or `NSError` appears in the array instead of `FBLPromise`,
+ it's implicitly considered a pre-fulfilled or pre-rejected `FBLPromise` correspondingly.
+ Promises resolved with `nil` become `NSNull` instances in the resulting array.
+
+ @param promises Promises to wait for.
+ @return Promise of an array containing the values of input promises in the same order.
+ */
++ (FBLPromise *)all:(NSArray *)promises NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Wait until all of the given promises are fulfilled.
+ If one of the given promises is rejected, then the returned promise is rejected with same error.
+ If any other arbitrary value or `NSError` appears in the array instead of `FBLPromise`,
+ it's implicitly considered a pre-fulfilled or pre-rejected FBLPromise correspondingly.
+ Promises resolved with `nil` become `NSNull` instances in the resulting array.
+
+ @param queue A queue to dispatch on.
+ @param promises Promises to wait for.
+ @return Promise of an array containing the values of input promises in the same order.
+ */
++ (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ all:(NSArray *)promises NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `all` operators.
+ Usage: FBLPromise.all(@[ ... ])
+ */
+@interface FBLPromise(DotSyntax_AllAdditions)
+
++ (FBLPromise * (^)(NSArray *))all FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise * (^)(dispatch_queue_t, NSArray *))allOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Always.h b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Always.h
new file mode 100644
index 0000000..13000f5
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Always.h
@@ -0,0 +1,54 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(AlwaysAdditions)
+
+typedef void (^FBLPromiseAlwaysWorkBlock)(void) NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block that always executes, no matter if the receiver is rejected or fulfilled.
+ @return A new pending promise to be resolved with same resolution as the receiver.
+ */
+- (FBLPromise *)always:(FBLPromiseAlwaysWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to dispatch on.
+ @param work A block that always executes, no matter if the receiver is rejected or fulfilled.
+ @return A new pending promise to be resolved with same resolution as the receiver.
+ */
+- (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ always:(FBLPromiseAlwaysWorkBlock)work NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `always` operators.
+ Usage: promise.always(^{...})
+ */
+@interface FBLPromise(DotSyntax_AlwaysAdditions)
+
+- (FBLPromise* (^)(FBLPromiseAlwaysWorkBlock))always FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+- (FBLPromise* (^)(dispatch_queue_t, FBLPromiseAlwaysWorkBlock))alwaysOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Any.h b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Any.h
new file mode 100644
index 0000000..82875bf
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Any.h
@@ -0,0 +1,69 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(AnyAdditions)
+
+/**
+ Waits until all of the given promises are either fulfilled or rejected.
+ If all promises are rejected, then the returned promise is rejected with same error
+ as the last one rejected.
+ If at least one of the promises is fulfilled, the resulting promise is fulfilled with an array of
+ values or `NSErrors`, matching the original order of fulfilled or rejected promises respectively.
+ If any other arbitrary value or `NSError` appears in the array instead of `FBLPromise`,
+ it's implicitly considered a pre-fulfilled or pre-rejected `FBLPromise` correspondingly.
+ Promises resolved with `nil` become `NSNull` instances in the resulting array.
+
+ @param promises Promises to wait for.
+ @return Promise of array containing the values or `NSError`s of input promises in the same order.
+ */
++ (FBLPromise *)any:(NSArray *)promises NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Waits until all of the given promises are either fulfilled or rejected.
+ If all promises are rejected, then the returned promise is rejected with same error
+ as the last one rejected.
+ If at least one of the promises is fulfilled, the resulting promise is fulfilled with an array of
+ values or `NSError`s, matching the original order of fulfilled or rejected promises respectively.
+ If any other arbitrary value or `NSError` appears in the array instead of `FBLPromise`,
+ it's implicitly considered a pre-fulfilled or pre-rejected `FBLPromise` correspondingly.
+ Promises resolved with `nil` become `NSNull` instances in the resulting array.
+
+ @param queue A queue to dispatch on.
+ @param promises Promises to wait for.
+ @return Promise of array containing the values or `NSError`s of input promises in the same order.
+ */
++ (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ any:(NSArray *)promises NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `any` operators.
+ Usage: FBLPromise.any(@[ ... ])
+ */
+@interface FBLPromise(DotSyntax_AnyAdditions)
+
++ (FBLPromise * (^)(NSArray *))any FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise * (^)(dispatch_queue_t, NSArray *))anyOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Async.h b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Async.h
new file mode 100644
index 0000000..0588a9e
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Async.h
@@ -0,0 +1,60 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(AsyncAdditions)
+
+typedef void (^FBLPromiseFulfillBlock)(Value __nullable value) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseRejectBlock)(NSError *error) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseAsyncWorkBlock)(FBLPromiseFulfillBlock fulfill,
+ FBLPromiseRejectBlock reject) NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise and executes `work` block asynchronously.
+
+ @param work A block to perform any operations needed to resolve the promise.
+ @return A new pending promise.
+ */
++ (instancetype)async:(FBLPromiseAsyncWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise and executes `work` block asynchronously on the given queue.
+
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @return A new pending promise.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ async:(FBLPromiseAsyncWorkBlock)work NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `async` operators.
+ Usage: FBLPromise.async(^(FBLPromiseFulfillBlock fulfill, FBLPromiseRejectBlock reject) { ... })
+ */
+@interface FBLPromise(DotSyntax_AsyncAdditions)
+
++ (FBLPromise* (^)(FBLPromiseAsyncWorkBlock))async FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t, FBLPromiseAsyncWorkBlock))asyncOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Await.h b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Await.h
new file mode 100644
index 0000000..c97a1ba
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Await.h
@@ -0,0 +1,32 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Waits for promise resolution. The current thread blocks until the promise is resolved.
+
+ @param promise Promise to wait for.
+ @param error Error the promise was rejected with, or `nil` if the promise was fulfilled.
+ @return Value the promise was fulfilled with. If the promise was rejected, the return value
+ is always `nil`, but the error out arg is not.
+ */
+FOUNDATION_EXTERN id __nullable FBLPromiseAwait(FBLPromise *promise,
+ NSError **error) NS_REFINED_FOR_SWIFT;
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Catch.h b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Catch.h
new file mode 100644
index 0000000..a9ff170
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Catch.h
@@ -0,0 +1,59 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(CatchAdditions)
+
+typedef void (^FBLPromiseCatchWorkBlock)(NSError *error) NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise which eventually gets resolved with same resolution as the receiver.
+ If receiver is rejected, then `reject` block is executed asynchronously.
+
+ @param reject A block to handle the error that receiver was rejected with.
+ @return A new pending promise.
+ */
+- (FBLPromise *)catch:(FBLPromiseCatchWorkBlock)reject NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise which eventually gets resolved with same resolution as the receiver.
+ If receiver is rejected, then `reject` block is executed asynchronously on the given queue.
+
+ @param queue A queue to invoke the `reject` block on.
+ @param reject A block to handle the error that receiver was rejected with.
+ @return A new pending promise.
+ */
+- (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ catch:(FBLPromiseCatchWorkBlock)reject NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `catch` operators.
+ Usage: promise.catch(^(NSError *error) { ... })
+ */
+@interface FBLPromise(DotSyntax_CatchAdditions)
+
+- (FBLPromise* (^)(FBLPromiseCatchWorkBlock))catch FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
+- (FBLPromise* (^)(dispatch_queue_t, FBLPromiseCatchWorkBlock))catchOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Delay.h b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Delay.h
new file mode 100644
index 0000000..557df48
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Delay.h
@@ -0,0 +1,59 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(DelayAdditions)
+
+/**
+ Creates a new pending promise that fulfills with the same value as `self` after the `delay`, or
+ rejects with the same error immediately.
+
+ @param interval Time to wait in seconds.
+ @return A new pending promise that fulfills at least `delay` seconds later than `self`, or rejects
+ with the same error immediately.
+ */
+- (FBLPromise *)delay:(NSTimeInterval)interval NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a new pending promise that fulfills with the same value as `self` after the `delay`, or
+ rejects with the same error immediately.
+
+ @param queue A queue to dispatch on.
+ @param interval Time to wait in seconds.
+ @return A new pending promise that fulfills at least `delay` seconds later than `self`, or rejects
+ with the same error immediately.
+ */
+- (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ delay:(NSTimeInterval)interval NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `delay` operators.
+ Usage: promise.delay(...)
+ */
+@interface FBLPromise(DotSyntax_DelayAdditions)
+
+- (FBLPromise * (^)(NSTimeInterval))delay FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
+- (FBLPromise * (^)(dispatch_queue_t, NSTimeInterval))delayOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Do.h b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Do.h
new file mode 100644
index 0000000..6838e0a
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Do.h
@@ -0,0 +1,55 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(DoAdditions)
+
+typedef id __nullable (^FBLPromiseDoWorkBlock)(void) NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise and executes `work` block asynchronously.
+
+ @param work A block that returns a value or an error used to resolve the promise.
+ @return A new pending promise.
+ */
++ (instancetype)do:(FBLPromiseDoWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise and executes `work` block asynchronously on the given queue.
+
+ @param queue A queue to invoke the `work` block on.
+ @param work A block that returns a value or an error used to resolve the promise.
+ @return A new pending promise.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue do:(FBLPromiseDoWorkBlock)work NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `do` operators.
+ Usage: FBLPromise.doOn(queue, ^(NSError *error) { ... })
+ */
+@interface FBLPromise(DotSyntax_DoAdditions)
+
++ (FBLPromise * (^)(dispatch_queue_t, FBLPromiseDoWorkBlock))doOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Race.h b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Race.h
new file mode 100644
index 0000000..2f67258
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Race.h
@@ -0,0 +1,62 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(RaceAdditions)
+
+/**
+ Wait until any of the given promises are fulfilled.
+ If one of the promises is rejected, then the returned promise is rejected with same error.
+ If any other arbitrary value or `NSError` appears in the array instead of `FBLPromise`,
+ it's implicitly considered a pre-fulfilled or pre-rejected `FBLPromise` correspondingly.
+
+ @param promises Promises to wait for.
+ @return A new pending promise to be resolved with the same resolution as the first promise, among
+ the given ones, which was resolved.
+ */
++ (instancetype)race:(NSArray *)promises NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Wait until any of the given promises are fulfilled.
+ If one of the promises is rejected, then the returned promise is rejected with same error.
+ If any other arbitrary value or `NSError` appears in the array instead of `FBLPromise`,
+ it's implicitly considered a pre-fulfilled or pre-rejected `FBLPromise` correspondingly.
+
+ @param queue A queue to dispatch on.
+ @param promises Promises to wait for.
+ @return A new pending promise to be resolved with the same resolution as the first promise, among
+ the given ones, which was resolved.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue race:(NSArray *)promises NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `race` operators.
+ Usage: FBLPromise.race(@[ ... ])
+ */
+@interface FBLPromise(DotSyntax_RaceAdditions)
+
++ (FBLPromise * (^)(NSArray *))race FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise * (^)(dispatch_queue_t, NSArray *))raceOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Recover.h b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Recover.h
new file mode 100644
index 0000000..bb7df7e
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Recover.h
@@ -0,0 +1,60 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(RecoverAdditions)
+
+typedef id __nullable (^FBLPromiseRecoverWorkBlock)(NSError *error) NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Provides a new promise to recover in case the receiver gets rejected.
+
+ @param recovery A block to handle the error that the receiver was rejected with.
+ @return A new pending promise to use instead of the rejected one that gets resolved with resolution
+ returned from `recovery` block.
+ */
+- (FBLPromise *)recover:(FBLPromiseRecoverWorkBlock)recovery NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Provides a new promise to recover in case the receiver gets rejected.
+
+ @param queue A queue to dispatch on.
+ @param recovery A block to handle the error that the receiver was rejected with.
+ @return A new pending promise to use instead of the rejected one that gets resolved with resolution
+ returned from `recovery` block.
+ */
+- (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ recover:(FBLPromiseRecoverWorkBlock)recovery NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `recover` operators.
+ Usage: promise.recover(^id(NSError *error) {...})
+ */
+@interface FBLPromise(DotSyntax_RecoverAdditions)
+
+- (FBLPromise * (^)(FBLPromiseRecoverWorkBlock))recover FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+- (FBLPromise * (^)(dispatch_queue_t, FBLPromiseRecoverWorkBlock))recoverOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Reduce.h b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Reduce.h
new file mode 100644
index 0000000..5bb1eee
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Reduce.h
@@ -0,0 +1,71 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(ReduceAdditions)
+
+typedef id __nullable (^FBLPromiseReducerBlock)(Value __nullable partial, id next)
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Sequentially reduces a collection of values to a single promise using a given combining block
+ and the value `self` resolves with as initial value.
+
+ @param items An array of values to process in order.
+ @param reducer A block to combine an accumulating value and an element of the sequence into
+ the new accumulating value or a promise resolved with it, to be used in the next
+ call of the `reducer` or returned to the caller.
+ @return A new pending promise returned from the last `reducer` invocation.
+ Or `self` if `items` is empty.
+ */
+- (FBLPromise *)reduce:(NSArray *)items
+ combine:(FBLPromiseReducerBlock)reducer NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Sequentially reduces a collection of values to a single promise using a given combining block
+ and the value `self` resolves with as initial value.
+
+ @param queue A queue to dispatch on.
+ @param items An array of values to process in order.
+ @param reducer A block to combine an accumulating value and an element of the sequence into
+ the new accumulating value or a promise resolved with it, to be used in the next
+ call of the `reducer` or returned to the caller.
+ @return A new pending promise returned from the last `reducer` invocation.
+ Or `self` if `items` is empty.
+ */
+- (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ reduce:(NSArray *)items
+ combine:(FBLPromiseReducerBlock)reducer NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `reduce` operators.
+ Usage: promise.reduce(values, ^id(id partial, id next) { ... })
+ */
+@interface FBLPromise(DotSyntax_ReduceAdditions)
+
+- (FBLPromise * (^)(NSArray *, FBLPromiseReducerBlock))reduce FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+- (FBLPromise * (^)(dispatch_queue_t, NSArray *, FBLPromiseReducerBlock))reduceOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Retry.h b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Retry.h
new file mode 100644
index 0000000..414a17a
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Retry.h
@@ -0,0 +1,165 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** The default number of retry attempts is 1. */
+FOUNDATION_EXTERN NSInteger const FBLPromiseRetryDefaultAttemptsCount NS_REFINED_FOR_SWIFT;
+
+/** The default delay interval before making a retry attempt is 1.0 second. */
+FOUNDATION_EXTERN NSTimeInterval const FBLPromiseRetryDefaultDelayInterval NS_REFINED_FOR_SWIFT;
+
+@interface FBLPromise(RetryAdditions)
+
+typedef id __nullable (^FBLPromiseRetryWorkBlock)(void) NS_SWIFT_UNAVAILABLE("");
+typedef BOOL (^FBLPromiseRetryPredicateBlock)(NSInteger, NSError *) NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise that fulfills with the same value as the promise returned from `work`
+ block, which executes asynchronously, or rejects with the same error after all retry attempts have
+ been exhausted. Defaults to `FBLPromiseRetryDefaultAttemptsCount` attempt(s) on rejection where the
+ `work` block is retried after a delay of `FBLPromiseRetryDefaultDelayInterval` second(s).
+
+ @param work A block that executes asynchronously on the default queue and returns a value or an
+ error used to resolve the promise.
+ @return A new pending promise that fulfills with the same value as the promise returned from `work`
+ block, or rejects with the same error after all retry attempts have been exhausted.
+ */
++ (instancetype)retry:(FBLPromiseRetryWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise that fulfills with the same value as the promise returned from `work`
+ block, which executes asynchronously on the given `queue`, or rejects with the same error after all
+ retry attempts have been exhausted. Defaults to `FBLPromiseRetryDefaultAttemptsCount` attempt(s) on
+ rejection where the `work` block is retried on the given `queue` after a delay of
+ `FBLPromiseRetryDefaultDelayInterval` second(s).
+
+ @param queue A queue to invoke the `work` block on.
+ @param work A block that executes asynchronously on the given `queue` and returns a value or an
+ error used to resolve the promise.
+ @return A new pending promise that fulfills with the same value as the promise returned from `work`
+ block, or rejects with the same error after all retry attempts have been exhausted.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ retry:(FBLPromiseRetryWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise that fulfills with the same value as the promise returned from `work`
+ block, which executes asynchronously, or rejects with the same error after all retry attempts have
+ been exhausted.
+
+ @param count Max number of retry attempts. The `work` block will be executed once if the specified
+ count is less than or equal to zero.
+ @param work A block that executes asynchronously on the default queue and returns a value or an
+ error used to resolve the promise.
+ @return A new pending promise that fulfills with the same value as the promise returned from `work`
+ block, or rejects with the same error after all retry attempts have been exhausted.
+ */
++ (instancetype)attempts:(NSInteger)count
+ retry:(FBLPromiseRetryWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise that fulfills with the same value as the promise returned from `work`
+ block, which executes asynchronously on the given `queue`, or rejects with the same error after all
+ retry attempts have been exhausted.
+
+ @param queue A queue to invoke the `work` block on.
+ @param count Max number of retry attempts. The `work` block will be executed once if the specified
+ count is less than or equal to zero.
+ @param work A block that executes asynchronously on the given `queue` and returns a value or an
+ error used to resolve the promise.
+ @return A new pending promise that fulfills with the same value as the promise returned from `work`
+ block, or rejects with the same error after all retry attempts have been exhausted.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ attempts:(NSInteger)count
+ retry:(FBLPromiseRetryWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise that fulfills with the same value as the promise returned from `work`
+ block, which executes asynchronously, or rejects with the same error after all retry attempts have
+ been exhausted. On rejection, the `work` block is retried after the given delay `interval` and will
+ continue to retry until the number of specified attempts have been exhausted or will bail early if
+ the given condition is not met.
+
+ @param count Max number of retry attempts. The `work` block will be executed once if the specified
+ count is less than or equal to zero.
+ @param interval Time to wait before the next retry attempt.
+ @param predicate Condition to check before the next retry attempt. The predicate block provides the
+ the number of remaining retry attempts and the error that the promise was rejected
+ with.
+ @param work A block that executes asynchronously on the default queue and returns a value or an
+ error used to resolve the promise.
+ @return A new pending promise that fulfills with the same value as the promise returned from `work`
+ block, or rejects with the same error after all retry attempts have been exhausted or if
+ the given condition is not met.
+ */
++ (instancetype)attempts:(NSInteger)count
+ delay:(NSTimeInterval)interval
+ condition:(nullable FBLPromiseRetryPredicateBlock)predicate
+ retry:(FBLPromiseRetryWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise that fulfills with the same value as the promise returned from `work`
+ block, which executes asynchronously on the given `queue`, or rejects with the same error after all
+ retry attempts have been exhausted. On rejection, the `work` block is retried after the given
+ delay `interval` and will continue to retry until the number of specified attempts have been
+ exhausted or will bail early if the given condition is not met.
+
+ @param queue A queue to invoke the `work` block on.
+ @param count Max number of retry attempts. The `work` block will be executed once if the specified
+ count is less than or equal to zero.
+ @param interval Time to wait before the next retry attempt.
+ @param predicate Condition to check before the next retry attempt. The predicate block provides the
+ the number of remaining retry attempts and the error that the promise was rejected
+ with.
+ @param work A block that executes asynchronously on the given `queue` and returns a value or an
+ error used to resolve the promise.
+ @return A new pending promise that fulfills with the same value as the promise returned from `work`
+ block, or rejects with the same error after all retry attempts have been exhausted or if
+ the given condition is not met.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ attempts:(NSInteger)count
+ delay:(NSTimeInterval)interval
+ condition:(nullable FBLPromiseRetryPredicateBlock)predicate
+ retry:(FBLPromiseRetryWorkBlock)work NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise+Retry` operators.
+ Usage: FBLPromise.retry(^id { ... })
+ */
+@interface FBLPromise(DotSyntax_RetryAdditions)
+
++ (FBLPromise * (^)(FBLPromiseRetryWorkBlock))retry FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise * (^)(dispatch_queue_t, FBLPromiseRetryWorkBlock))retryOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise * (^)(NSInteger, NSTimeInterval, FBLPromiseRetryPredicateBlock __nullable,
+ FBLPromiseRetryWorkBlock))retryAgain FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise * (^)(dispatch_queue_t, NSInteger, NSTimeInterval,
+ FBLPromiseRetryPredicateBlock __nullable,
+ FBLPromiseRetryWorkBlock))retryAgainOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Testing.h b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Testing.h
new file mode 100644
index 0000000..8478ae2
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Testing.h
@@ -0,0 +1,57 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Waits for all scheduled promises blocks.
+
+ @param timeout Maximum time to wait.
+ @return YES if all promises blocks have completed before the timeout and NO otherwise.
+ */
+FOUNDATION_EXTERN BOOL FBLWaitForPromisesWithTimeout(NSTimeInterval timeout) NS_REFINED_FOR_SWIFT;
+
+@interface FBLPromise(TestingAdditions)
+
+/**
+ Dispatch group for promises that is typically used to wait for all scheduled blocks.
+ */
+@property(class, nonatomic, readonly) dispatch_group_t dispatchGroup NS_REFINED_FOR_SWIFT;
+
+/**
+ Properties to get the current state of the promise.
+ */
+@property(nonatomic, readonly) BOOL isPending NS_REFINED_FOR_SWIFT;
+@property(nonatomic, readonly) BOOL isFulfilled NS_REFINED_FOR_SWIFT;
+@property(nonatomic, readonly) BOOL isRejected NS_REFINED_FOR_SWIFT;
+
+/**
+ Value the promise was fulfilled with.
+ Can be nil if the promise is still pending, was resolved with nil or after it has been rejected.
+ */
+@property(nonatomic, readonly, nullable) Value value NS_REFINED_FOR_SWIFT;
+
+/**
+ Error the promise was rejected with.
+ Can be nil if the promise is still pending or after it has been fulfilled.
+ */
+@property(nonatomic, readonly, nullable) NSError *error NS_REFINED_FOR_SWIFT;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Then.h b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Then.h
new file mode 100644
index 0000000..32027e6
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Then.h
@@ -0,0 +1,63 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(ThenAdditions)
+
+typedef id __nullable (^FBLPromiseThenWorkBlock)(Value __nullable value) NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise which eventually gets resolved with resolution returned from `work`
+ block: either value, error or another promise. The `work` block is executed asynchronously only
+ when the receiver is fulfilled. If receiver is rejected, the returned promise is also rejected with
+ the same error.
+
+ @param work A block to handle the value that receiver was fulfilled with.
+ @return A new pending promise to be resolved with resolution returned from the `work` block.
+ */
+- (FBLPromise *)then:(FBLPromiseThenWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise which eventually gets resolved with resolution returned from `work`
+ block: either value, error or another promise. The `work` block is executed asynchronously when the
+ receiver is fulfilled. If receiver is rejected, the returned promise is also rejected with the same
+ error.
+
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to handle the value that receiver was fulfilled with.
+ @return A new pending promise to be resolved with resolution returned from the `work` block.
+ */
+- (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ then:(FBLPromiseThenWorkBlock)work NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `then` operators.
+ Usage: promise.then(^id(id value) { ... })
+ */
+@interface FBLPromise(DotSyntax_ThenAdditions)
+
+- (FBLPromise* (^)(FBLPromiseThenWorkBlock))then FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
+- (FBLPromise* (^)(dispatch_queue_t, FBLPromiseThenWorkBlock))thenOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Timeout.h b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Timeout.h
new file mode 100644
index 0000000..184ba16
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Timeout.h
@@ -0,0 +1,57 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(TimeoutAdditions)
+
+/**
+ Waits for a promise with the specified `timeout`.
+
+ @param interval Time to wait in seconds.
+ @return A new pending promise that gets either resolved with same resolution as the receiver or
+ rejected with `FBLPromiseErrorCodeTimedOut` error code in `FBLPromiseErrorDomain`.
+ */
+- (FBLPromise *)timeout:(NSTimeInterval)interval NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Waits for a promise with the specified `timeout`.
+
+ @param queue A queue to dispatch on.
+ @param interval Time to wait in seconds.
+ @return A new pending promise that gets either resolved with same resolution as the receiver or
+ rejected with `FBLPromiseErrorCodeTimedOut` error code in `FBLPromiseErrorDomain`.
+ */
+- (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ timeout:(NSTimeInterval)interval NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `timeout` operators.
+ Usage: promise.timeout(...)
+ */
+@interface FBLPromise(DotSyntax_TimeoutAdditions)
+
+- (FBLPromise* (^)(NSTimeInterval))timeout FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
+- (FBLPromise* (^)(dispatch_queue_t, NSTimeInterval))timeoutOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Validate.h b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Validate.h
new file mode 100644
index 0000000..9dfa2f1
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Validate.h
@@ -0,0 +1,60 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(ValidateAdditions)
+
+typedef BOOL (^FBLPromiseValidateWorkBlock)(Value __nullable value) NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Validates a fulfilled value or rejects the value if it can not be validated.
+
+ @param predicate An expression to validate.
+ @return A new pending promise that gets either resolved with same resolution as the receiver or
+ rejected with `FBLPromiseErrorCodeValidationFailure` error code in `FBLPromiseErrorDomain`.
+ */
+- (FBLPromise *)validate:(FBLPromiseValidateWorkBlock)predicate NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Validates a fulfilled value or rejects the value if it can not be validated.
+
+ @param queue A queue to dispatch on.
+ @param predicate An expression to validate.
+ @return A new pending promise that gets either resolved with same resolution as the receiver or
+ rejected with `FBLPromiseErrorCodeValidationFailure` error code in `FBLPromiseErrorDomain`.
+ */
+- (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ validate:(FBLPromiseValidateWorkBlock)predicate NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `validate` operators.
+ Usage: promise.validate(^BOOL(id value) { ... })
+ */
+@interface FBLPromise(DotSyntax_ValidateAdditions)
+
+- (FBLPromise * (^)(FBLPromiseValidateWorkBlock))validate FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+- (FBLPromise * (^)(dispatch_queue_t, FBLPromiseValidateWorkBlock))validateOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Wrap.h b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Wrap.h
new file mode 100644
index 0000000..664e1bb
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise+Wrap.h
@@ -0,0 +1,316 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Different types of completion handlers available to be wrapped with promise.
+ */
+typedef void (^FBLPromiseCompletion)(void) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseObjectCompletion)(id __nullable) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseErrorCompletion)(NSError* __nullable) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseObjectOrErrorCompletion)(id __nullable, NSError* __nullable)
+ NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseErrorOrObjectCompletion)(NSError* __nullable, id __nullable)
+ NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromise2ObjectsOrErrorCompletion)(id __nullable, id __nullable,
+ NSError* __nullable) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseBoolCompletion)(BOOL) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseBoolOrErrorCompletion)(BOOL, NSError* __nullable) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseIntegerCompletion)(NSInteger) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseIntegerOrErrorCompletion)(NSInteger, NSError* __nullable)
+ NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseDoubleCompletion)(double) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseDoubleOrErrorCompletion)(double, NSError* __nullable)
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Provides an easy way to convert methods that use common callback patterns into promises.
+ */
+@interface FBLPromise(WrapAdditions)
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with `nil` when completion handler is invoked.
+ */
++ (instancetype)wrapCompletion:(void (^)(FBLPromiseCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with `nil` when completion handler is invoked.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ wrapCompletion:(void (^)(FBLPromiseCompletion handler))work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an object provided by completion handler.
+ */
++ (instancetype)wrapObjectCompletion:(void (^)(FBLPromiseObjectCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an object provided by completion handler.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ wrapObjectCompletion:(void (^)(FBLPromiseObjectCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an error provided by completion handler.
+ If error is `nil`, fulfills with `nil`, otherwise rejects with the error.
+ */
++ (instancetype)wrapErrorCompletion:(void (^)(FBLPromiseErrorCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an error provided by completion handler.
+ If error is `nil`, fulfills with `nil`, otherwise rejects with the error.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ wrapErrorCompletion:(void (^)(FBLPromiseErrorCompletion handler))work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an object provided by completion handler if error is `nil`.
+ Otherwise, rejects with the error.
+ */
++ (instancetype)wrapObjectOrErrorCompletion:
+ (void (^)(FBLPromiseObjectOrErrorCompletion handler))work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an object provided by completion handler if error is `nil`.
+ Otherwise, rejects with the error.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ wrapObjectOrErrorCompletion:(void (^)(FBLPromiseObjectOrErrorCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an error or object provided by completion handler. If error
+ is not `nil`, rejects with the error.
+ */
++ (instancetype)wrapErrorOrObjectCompletion:
+ (void (^)(FBLPromiseErrorOrObjectCompletion handler))work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an error or object provided by completion handler. If error
+ is not `nil`, rejects with the error.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ wrapErrorOrObjectCompletion:(void (^)(FBLPromiseErrorOrObjectCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an array of objects provided by completion handler in order
+ if error is `nil`. Otherwise, rejects with the error.
+ */
++ (FBLPromise*)wrap2ObjectsOrErrorCompletion:
+ (void (^)(FBLPromise2ObjectsOrErrorCompletion handler))work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an array of objects provided by completion handler in order
+ if error is `nil`. Otherwise, rejects with the error.
+ */
++ (FBLPromise*)onQueue:(dispatch_queue_t)queue
+ wrap2ObjectsOrErrorCompletion:(void (^)(FBLPromise2ObjectsOrErrorCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping YES/NO.
+ */
++ (FBLPromise*)wrapBoolCompletion:(void (^)(FBLPromiseBoolCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping YES/NO.
+ */
++ (FBLPromise*)onQueue:(dispatch_queue_t)queue
+ wrapBoolCompletion:(void (^)(FBLPromiseBoolCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping YES/NO when error is `nil`.
+ Otherwise rejects with the error.
+ */
++ (FBLPromise*)wrapBoolOrErrorCompletion:
+ (void (^)(FBLPromiseBoolOrErrorCompletion handler))work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping YES/NO when error is `nil`.
+ Otherwise rejects with the error.
+ */
++ (FBLPromise*)onQueue:(dispatch_queue_t)queue
+ wrapBoolOrErrorCompletion:(void (^)(FBLPromiseBoolOrErrorCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping an integer.
+ */
++ (FBLPromise*)wrapIntegerCompletion:(void (^)(FBLPromiseIntegerCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping an integer.
+ */
++ (FBLPromise*)onQueue:(dispatch_queue_t)queue
+ wrapIntegerCompletion:(void (^)(FBLPromiseIntegerCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping an integer when error is `nil`.
+ Otherwise rejects with the error.
+ */
++ (FBLPromise*)wrapIntegerOrErrorCompletion:
+ (void (^)(FBLPromiseIntegerOrErrorCompletion handler))work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping an integer when error is `nil`.
+ Otherwise rejects with the error.
+ */
++ (FBLPromise*)onQueue:(dispatch_queue_t)queue
+ wrapIntegerOrErrorCompletion:(void (^)(FBLPromiseIntegerOrErrorCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping a double.
+ */
++ (FBLPromise*)wrapDoubleCompletion:(void (^)(FBLPromiseDoubleCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping a double.
+ */
++ (FBLPromise*)onQueue:(dispatch_queue_t)queue
+ wrapDoubleCompletion:(void (^)(FBLPromiseDoubleCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping a double when error is `nil`.
+ Otherwise rejects with the error.
+ */
++ (FBLPromise*)wrapDoubleOrErrorCompletion:
+ (void (^)(FBLPromiseDoubleOrErrorCompletion handler))work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping a double when error is `nil`.
+ Otherwise rejects with the error.
+ */
++ (FBLPromise*)onQueue:(dispatch_queue_t)queue
+ wrapDoubleOrErrorCompletion:(void (^)(FBLPromiseDoubleOrErrorCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `wrap` operators.
+ Usage: FBLPromise.wrapCompletion(^(FBLPromiseCompletion handler) {...})
+ */
+@interface FBLPromise(DotSyntax_WrapAdditions)
+
++ (FBLPromise* (^)(void (^)(FBLPromiseCompletion)))wrapCompletion FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t, void (^)(FBLPromiseCompletion)))wrapCompletionOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromiseObjectCompletion)))wrapObjectCompletion
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t, void (^)(FBLPromiseObjectCompletion)))wrapObjectCompletionOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromiseErrorCompletion)))wrapErrorCompletion FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t, void (^)(FBLPromiseErrorCompletion)))wrapErrorCompletionOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromiseObjectOrErrorCompletion)))wrapObjectOrErrorCompletion
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t,
+ void (^)(FBLPromiseObjectOrErrorCompletion)))wrapObjectOrErrorCompletionOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromiseErrorOrObjectCompletion)))wrapErrorOrObjectCompletion
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t,
+ void (^)(FBLPromiseErrorOrObjectCompletion)))wrapErrorOrObjectCompletionOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromise2ObjectsOrErrorCompletion)))
+ wrap2ObjectsOrErrorCompletion FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t, void (^)(FBLPromise2ObjectsOrErrorCompletion)))
+ wrap2ObjectsOrErrorCompletionOn FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromiseBoolCompletion)))wrapBoolCompletion
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t,
+ void (^)(FBLPromiseBoolCompletion)))wrapBoolCompletionOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromiseBoolOrErrorCompletion)))wrapBoolOrErrorCompletion
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t,
+ void (^)(FBLPromiseBoolOrErrorCompletion)))wrapBoolOrErrorCompletionOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromiseIntegerCompletion)))wrapIntegerCompletion
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t,
+ void (^)(FBLPromiseIntegerCompletion)))wrapIntegerCompletionOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromiseIntegerOrErrorCompletion)))
+ wrapIntegerOrErrorCompletion FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t, void (^)(FBLPromiseIntegerOrErrorCompletion)))
+ wrapIntegerOrErrorCompletionOn FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromiseDoubleCompletion)))wrapDoubleCompletion
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t,
+ void (^)(FBLPromiseDoubleCompletion)))wrapDoubleCompletionOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromiseDoubleOrErrorCompletion)))
+ wrapDoubleOrErrorCompletion FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t, void (^)(FBLPromiseDoubleOrErrorCompletion)))
+ wrapDoubleOrErrorCompletionOn FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise.h b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise.h
new file mode 100644
index 0000000..b1380dc
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromise.h
@@ -0,0 +1,93 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromiseError.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Promises synchronization construct in Objective-C.
+ */
+@interface FBLPromise<__covariant Value> : NSObject
+
+/**
+ Default dispatch queue used for `FBLPromise`, which is `main` if a queue is not specified.
+ */
+@property(class) dispatch_queue_t defaultDispatchQueue NS_REFINED_FOR_SWIFT;
+
+/**
+ Creates a pending promise.
+ */
++ (instancetype)pendingPromise NS_REFINED_FOR_SWIFT;
+
+/**
+ Creates a resolved promise.
+
+ @param resolution An object to resolve the promise with: either a value or an error.
+ @return A new resolved promise.
+ */
++ (instancetype)resolvedWith:(nullable id)resolution NS_REFINED_FOR_SWIFT;
+
+/**
+ Synchronously fulfills the promise with a value.
+
+ @param value An arbitrary value to fulfill the promise with, including `nil`.
+ */
+- (void)fulfill:(nullable Value)value NS_REFINED_FOR_SWIFT;
+
+/**
+ Synchronously rejects the promise with an error.
+
+ @param error An error to reject the promise with.
+ */
+- (void)reject:(NSError *)error NS_REFINED_FOR_SWIFT;
+
++ (instancetype)new NS_UNAVAILABLE;
+- (instancetype)init NS_UNAVAILABLE;
+@end
+
+@interface FBLPromise()
+
+/**
+ Adds an object to the set of pending objects to keep strongly while the promise is pending.
+ Used by the Swift wrappers to keep them alive until the underlying ObjC promise is resolved.
+
+ @param object An object to add.
+ */
+- (void)addPendingObject:(id)object NS_REFINED_FOR_SWIFT;
+
+@end
+
+#ifdef FBL_PROMISES_DOT_SYNTAX_IS_DEPRECATED
+#define FBL_PROMISES_DOT_SYNTAX __attribute__((deprecated))
+#else
+#define FBL_PROMISES_DOT_SYNTAX
+#endif
+
+@interface FBLPromise(DotSyntaxAdditions)
+
+/**
+ Convenience dot-syntax wrappers for FBLPromise.
+ Usage: FBLPromise.pending()
+ FBLPromise.resolved(value)
+
+ */
++ (instancetype (^)(void))pending FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (instancetype (^)(id __nullable))resolved FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromiseError.h b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromiseError.h
new file mode 100644
index 0000000..d37af53
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromiseError.h
@@ -0,0 +1,43 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+
+FOUNDATION_EXTERN NSErrorDomain const FBLPromiseErrorDomain NS_REFINED_FOR_SWIFT;
+
+/**
+ Possible error codes in `FBLPromiseErrorDomain`.
+ */
+typedef NS_ENUM(NSInteger, FBLPromiseErrorCode) {
+ /** Promise failed to resolve in time. */
+ FBLPromiseErrorCodeTimedOut = 1,
+ /** Validation predicate returned false. */
+ FBLPromiseErrorCodeValidationFailure = 2,
+} NS_REFINED_FOR_SWIFT;
+
+NS_INLINE BOOL FBLPromiseErrorIsTimedOut(NSError *error) NS_SWIFT_UNAVAILABLE("") {
+ return error.domain == FBLPromiseErrorDomain &&
+ error.code == FBLPromiseErrorCodeTimedOut;
+}
+
+NS_INLINE BOOL FBLPromiseErrorIsValidationFailure(NSError *error) NS_SWIFT_UNAVAILABLE("") {
+ return error.domain == FBLPromiseErrorDomain &&
+ error.code == FBLPromiseErrorCodeValidationFailure;
+}
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromises.h b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromises.h
new file mode 100644
index 0000000..2d90bad
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/FBLPromises.h
@@ -0,0 +1,32 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise+All.h"
+#import "FBLPromise+Always.h"
+#import "FBLPromise+Any.h"
+#import "FBLPromise+Async.h"
+#import "FBLPromise+Await.h"
+#import "FBLPromise+Catch.h"
+#import "FBLPromise+Delay.h"
+#import "FBLPromise+Do.h"
+#import "FBLPromise+Race.h"
+#import "FBLPromise+Recover.h"
+#import "FBLPromise+Reduce.h"
+#import "FBLPromise+Retry.h"
+#import "FBLPromise+Then.h"
+#import "FBLPromise+Timeout.h"
+#import "FBLPromise+Validate.h"
+#import "FBLPromise+Wrap.h"
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/PromisesObjC-umbrella.h b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/PromisesObjC-umbrella.h
new file mode 100644
index 0000000..5b014a8
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Headers/PromisesObjC-umbrella.h
@@ -0,0 +1,36 @@
+#ifdef __OBJC__
+#import
+#else
+#ifndef FOUNDATION_EXPORT
+#if defined(__cplusplus)
+#define FOUNDATION_EXPORT extern "C"
+#else
+#define FOUNDATION_EXPORT extern
+#endif
+#endif
+#endif
+
+#import "FBLPromise+All.h"
+#import "FBLPromise+Always.h"
+#import "FBLPromise+Any.h"
+#import "FBLPromise+Async.h"
+#import "FBLPromise+Await.h"
+#import "FBLPromise+Catch.h"
+#import "FBLPromise+Delay.h"
+#import "FBLPromise+Do.h"
+#import "FBLPromise+Race.h"
+#import "FBLPromise+Recover.h"
+#import "FBLPromise+Reduce.h"
+#import "FBLPromise+Retry.h"
+#import "FBLPromise+Testing.h"
+#import "FBLPromise+Then.h"
+#import "FBLPromise+Timeout.h"
+#import "FBLPromise+Validate.h"
+#import "FBLPromise+Wrap.h"
+#import "FBLPromise.h"
+#import "FBLPromiseError.h"
+#import "FBLPromises.h"
+
+FOUNDATION_EXPORT double FBLPromisesVersionNumber;
+FOUNDATION_EXPORT const unsigned char FBLPromisesVersionString[];
+
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Info.plist b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Info.plist
new file mode 100644
index 0000000..a963a05
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Info.plist
@@ -0,0 +1,20 @@
+
+
+
+
+ CFBundleExecutable
+ FBLPromises
+ CFBundleIdentifier
+ com.firebase.Firebase-FBLPromises
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ FBLPromises
+ CFBundlePackageType
+ FMWK
+ CFBundleVersion
+ 2.2.0
+ DTSDKName
+ iphonesimulator11.2
+
+
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Modules/module.modulemap b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Modules/module.modulemap
new file mode 100644
index 0000000..bd7b48e
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64/FBLPromises.framework/Modules/module.modulemap
@@ -0,0 +1,5 @@
+framework module PromisesObjC {
+umbrella header "PromisesObjC-umbrella.h"
+export *
+module * { export * }
+}
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/FBLPromises b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/FBLPromises
new file mode 100644
index 0000000..159976d
Binary files /dev/null and b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/FBLPromises differ
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+All.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+All.h
new file mode 100644
index 0000000..9c0090e
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+All.h
@@ -0,0 +1,63 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(AllAdditions)
+
+/**
+ Wait until all of the given promises are fulfilled.
+ If one of the given promises is rejected, then the returned promise is rejected with same error.
+ If any other arbitrary value or `NSError` appears in the array instead of `FBLPromise`,
+ it's implicitly considered a pre-fulfilled or pre-rejected `FBLPromise` correspondingly.
+ Promises resolved with `nil` become `NSNull` instances in the resulting array.
+
+ @param promises Promises to wait for.
+ @return Promise of an array containing the values of input promises in the same order.
+ */
++ (FBLPromise *)all:(NSArray *)promises NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Wait until all of the given promises are fulfilled.
+ If one of the given promises is rejected, then the returned promise is rejected with same error.
+ If any other arbitrary value or `NSError` appears in the array instead of `FBLPromise`,
+ it's implicitly considered a pre-fulfilled or pre-rejected FBLPromise correspondingly.
+ Promises resolved with `nil` become `NSNull` instances in the resulting array.
+
+ @param queue A queue to dispatch on.
+ @param promises Promises to wait for.
+ @return Promise of an array containing the values of input promises in the same order.
+ */
++ (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ all:(NSArray *)promises NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `all` operators.
+ Usage: FBLPromise.all(@[ ... ])
+ */
+@interface FBLPromise(DotSyntax_AllAdditions)
+
++ (FBLPromise * (^)(NSArray *))all FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise * (^)(dispatch_queue_t, NSArray *))allOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Always.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Always.h
new file mode 100644
index 0000000..13000f5
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Always.h
@@ -0,0 +1,54 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(AlwaysAdditions)
+
+typedef void (^FBLPromiseAlwaysWorkBlock)(void) NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block that always executes, no matter if the receiver is rejected or fulfilled.
+ @return A new pending promise to be resolved with same resolution as the receiver.
+ */
+- (FBLPromise *)always:(FBLPromiseAlwaysWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to dispatch on.
+ @param work A block that always executes, no matter if the receiver is rejected or fulfilled.
+ @return A new pending promise to be resolved with same resolution as the receiver.
+ */
+- (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ always:(FBLPromiseAlwaysWorkBlock)work NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `always` operators.
+ Usage: promise.always(^{...})
+ */
+@interface FBLPromise(DotSyntax_AlwaysAdditions)
+
+- (FBLPromise* (^)(FBLPromiseAlwaysWorkBlock))always FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+- (FBLPromise* (^)(dispatch_queue_t, FBLPromiseAlwaysWorkBlock))alwaysOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Any.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Any.h
new file mode 100644
index 0000000..82875bf
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Any.h
@@ -0,0 +1,69 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(AnyAdditions)
+
+/**
+ Waits until all of the given promises are either fulfilled or rejected.
+ If all promises are rejected, then the returned promise is rejected with same error
+ as the last one rejected.
+ If at least one of the promises is fulfilled, the resulting promise is fulfilled with an array of
+ values or `NSErrors`, matching the original order of fulfilled or rejected promises respectively.
+ If any other arbitrary value or `NSError` appears in the array instead of `FBLPromise`,
+ it's implicitly considered a pre-fulfilled or pre-rejected `FBLPromise` correspondingly.
+ Promises resolved with `nil` become `NSNull` instances in the resulting array.
+
+ @param promises Promises to wait for.
+ @return Promise of array containing the values or `NSError`s of input promises in the same order.
+ */
++ (FBLPromise *)any:(NSArray *)promises NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Waits until all of the given promises are either fulfilled or rejected.
+ If all promises are rejected, then the returned promise is rejected with same error
+ as the last one rejected.
+ If at least one of the promises is fulfilled, the resulting promise is fulfilled with an array of
+ values or `NSError`s, matching the original order of fulfilled or rejected promises respectively.
+ If any other arbitrary value or `NSError` appears in the array instead of `FBLPromise`,
+ it's implicitly considered a pre-fulfilled or pre-rejected `FBLPromise` correspondingly.
+ Promises resolved with `nil` become `NSNull` instances in the resulting array.
+
+ @param queue A queue to dispatch on.
+ @param promises Promises to wait for.
+ @return Promise of array containing the values or `NSError`s of input promises in the same order.
+ */
++ (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ any:(NSArray *)promises NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `any` operators.
+ Usage: FBLPromise.any(@[ ... ])
+ */
+@interface FBLPromise(DotSyntax_AnyAdditions)
+
++ (FBLPromise * (^)(NSArray *))any FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise * (^)(dispatch_queue_t, NSArray *))anyOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Async.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Async.h
new file mode 100644
index 0000000..0588a9e
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Async.h
@@ -0,0 +1,60 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(AsyncAdditions)
+
+typedef void (^FBLPromiseFulfillBlock)(Value __nullable value) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseRejectBlock)(NSError *error) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseAsyncWorkBlock)(FBLPromiseFulfillBlock fulfill,
+ FBLPromiseRejectBlock reject) NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise and executes `work` block asynchronously.
+
+ @param work A block to perform any operations needed to resolve the promise.
+ @return A new pending promise.
+ */
++ (instancetype)async:(FBLPromiseAsyncWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise and executes `work` block asynchronously on the given queue.
+
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @return A new pending promise.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ async:(FBLPromiseAsyncWorkBlock)work NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `async` operators.
+ Usage: FBLPromise.async(^(FBLPromiseFulfillBlock fulfill, FBLPromiseRejectBlock reject) { ... })
+ */
+@interface FBLPromise(DotSyntax_AsyncAdditions)
+
++ (FBLPromise* (^)(FBLPromiseAsyncWorkBlock))async FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t, FBLPromiseAsyncWorkBlock))asyncOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Await.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Await.h
new file mode 100644
index 0000000..c97a1ba
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Await.h
@@ -0,0 +1,32 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Waits for promise resolution. The current thread blocks until the promise is resolved.
+
+ @param promise Promise to wait for.
+ @param error Error the promise was rejected with, or `nil` if the promise was fulfilled.
+ @return Value the promise was fulfilled with. If the promise was rejected, the return value
+ is always `nil`, but the error out arg is not.
+ */
+FOUNDATION_EXTERN id __nullable FBLPromiseAwait(FBLPromise *promise,
+ NSError **error) NS_REFINED_FOR_SWIFT;
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Catch.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Catch.h
new file mode 100644
index 0000000..a9ff170
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Catch.h
@@ -0,0 +1,59 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(CatchAdditions)
+
+typedef void (^FBLPromiseCatchWorkBlock)(NSError *error) NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise which eventually gets resolved with same resolution as the receiver.
+ If receiver is rejected, then `reject` block is executed asynchronously.
+
+ @param reject A block to handle the error that receiver was rejected with.
+ @return A new pending promise.
+ */
+- (FBLPromise *)catch:(FBLPromiseCatchWorkBlock)reject NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise which eventually gets resolved with same resolution as the receiver.
+ If receiver is rejected, then `reject` block is executed asynchronously on the given queue.
+
+ @param queue A queue to invoke the `reject` block on.
+ @param reject A block to handle the error that receiver was rejected with.
+ @return A new pending promise.
+ */
+- (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ catch:(FBLPromiseCatchWorkBlock)reject NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `catch` operators.
+ Usage: promise.catch(^(NSError *error) { ... })
+ */
+@interface FBLPromise(DotSyntax_CatchAdditions)
+
+- (FBLPromise* (^)(FBLPromiseCatchWorkBlock))catch FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
+- (FBLPromise* (^)(dispatch_queue_t, FBLPromiseCatchWorkBlock))catchOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Delay.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Delay.h
new file mode 100644
index 0000000..557df48
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Delay.h
@@ -0,0 +1,59 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(DelayAdditions)
+
+/**
+ Creates a new pending promise that fulfills with the same value as `self` after the `delay`, or
+ rejects with the same error immediately.
+
+ @param interval Time to wait in seconds.
+ @return A new pending promise that fulfills at least `delay` seconds later than `self`, or rejects
+ with the same error immediately.
+ */
+- (FBLPromise *)delay:(NSTimeInterval)interval NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a new pending promise that fulfills with the same value as `self` after the `delay`, or
+ rejects with the same error immediately.
+
+ @param queue A queue to dispatch on.
+ @param interval Time to wait in seconds.
+ @return A new pending promise that fulfills at least `delay` seconds later than `self`, or rejects
+ with the same error immediately.
+ */
+- (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ delay:(NSTimeInterval)interval NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `delay` operators.
+ Usage: promise.delay(...)
+ */
+@interface FBLPromise(DotSyntax_DelayAdditions)
+
+- (FBLPromise * (^)(NSTimeInterval))delay FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
+- (FBLPromise * (^)(dispatch_queue_t, NSTimeInterval))delayOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Do.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Do.h
new file mode 100644
index 0000000..6838e0a
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Do.h
@@ -0,0 +1,55 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(DoAdditions)
+
+typedef id __nullable (^FBLPromiseDoWorkBlock)(void) NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise and executes `work` block asynchronously.
+
+ @param work A block that returns a value or an error used to resolve the promise.
+ @return A new pending promise.
+ */
++ (instancetype)do:(FBLPromiseDoWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise and executes `work` block asynchronously on the given queue.
+
+ @param queue A queue to invoke the `work` block on.
+ @param work A block that returns a value or an error used to resolve the promise.
+ @return A new pending promise.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue do:(FBLPromiseDoWorkBlock)work NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `do` operators.
+ Usage: FBLPromise.doOn(queue, ^(NSError *error) { ... })
+ */
+@interface FBLPromise(DotSyntax_DoAdditions)
+
++ (FBLPromise * (^)(dispatch_queue_t, FBLPromiseDoWorkBlock))doOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Race.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Race.h
new file mode 100644
index 0000000..2f67258
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Race.h
@@ -0,0 +1,62 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(RaceAdditions)
+
+/**
+ Wait until any of the given promises are fulfilled.
+ If one of the promises is rejected, then the returned promise is rejected with same error.
+ If any other arbitrary value or `NSError` appears in the array instead of `FBLPromise`,
+ it's implicitly considered a pre-fulfilled or pre-rejected `FBLPromise` correspondingly.
+
+ @param promises Promises to wait for.
+ @return A new pending promise to be resolved with the same resolution as the first promise, among
+ the given ones, which was resolved.
+ */
++ (instancetype)race:(NSArray *)promises NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Wait until any of the given promises are fulfilled.
+ If one of the promises is rejected, then the returned promise is rejected with same error.
+ If any other arbitrary value or `NSError` appears in the array instead of `FBLPromise`,
+ it's implicitly considered a pre-fulfilled or pre-rejected `FBLPromise` correspondingly.
+
+ @param queue A queue to dispatch on.
+ @param promises Promises to wait for.
+ @return A new pending promise to be resolved with the same resolution as the first promise, among
+ the given ones, which was resolved.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue race:(NSArray *)promises NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `race` operators.
+ Usage: FBLPromise.race(@[ ... ])
+ */
+@interface FBLPromise(DotSyntax_RaceAdditions)
+
++ (FBLPromise * (^)(NSArray *))race FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise * (^)(dispatch_queue_t, NSArray *))raceOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Recover.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Recover.h
new file mode 100644
index 0000000..bb7df7e
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Recover.h
@@ -0,0 +1,60 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(RecoverAdditions)
+
+typedef id __nullable (^FBLPromiseRecoverWorkBlock)(NSError *error) NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Provides a new promise to recover in case the receiver gets rejected.
+
+ @param recovery A block to handle the error that the receiver was rejected with.
+ @return A new pending promise to use instead of the rejected one that gets resolved with resolution
+ returned from `recovery` block.
+ */
+- (FBLPromise *)recover:(FBLPromiseRecoverWorkBlock)recovery NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Provides a new promise to recover in case the receiver gets rejected.
+
+ @param queue A queue to dispatch on.
+ @param recovery A block to handle the error that the receiver was rejected with.
+ @return A new pending promise to use instead of the rejected one that gets resolved with resolution
+ returned from `recovery` block.
+ */
+- (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ recover:(FBLPromiseRecoverWorkBlock)recovery NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `recover` operators.
+ Usage: promise.recover(^id(NSError *error) {...})
+ */
+@interface FBLPromise(DotSyntax_RecoverAdditions)
+
+- (FBLPromise * (^)(FBLPromiseRecoverWorkBlock))recover FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+- (FBLPromise * (^)(dispatch_queue_t, FBLPromiseRecoverWorkBlock))recoverOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Reduce.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Reduce.h
new file mode 100644
index 0000000..5bb1eee
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Reduce.h
@@ -0,0 +1,71 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(ReduceAdditions)
+
+typedef id __nullable (^FBLPromiseReducerBlock)(Value __nullable partial, id next)
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Sequentially reduces a collection of values to a single promise using a given combining block
+ and the value `self` resolves with as initial value.
+
+ @param items An array of values to process in order.
+ @param reducer A block to combine an accumulating value and an element of the sequence into
+ the new accumulating value or a promise resolved with it, to be used in the next
+ call of the `reducer` or returned to the caller.
+ @return A new pending promise returned from the last `reducer` invocation.
+ Or `self` if `items` is empty.
+ */
+- (FBLPromise *)reduce:(NSArray *)items
+ combine:(FBLPromiseReducerBlock)reducer NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Sequentially reduces a collection of values to a single promise using a given combining block
+ and the value `self` resolves with as initial value.
+
+ @param queue A queue to dispatch on.
+ @param items An array of values to process in order.
+ @param reducer A block to combine an accumulating value and an element of the sequence into
+ the new accumulating value or a promise resolved with it, to be used in the next
+ call of the `reducer` or returned to the caller.
+ @return A new pending promise returned from the last `reducer` invocation.
+ Or `self` if `items` is empty.
+ */
+- (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ reduce:(NSArray *)items
+ combine:(FBLPromiseReducerBlock)reducer NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `reduce` operators.
+ Usage: promise.reduce(values, ^id(id partial, id next) { ... })
+ */
+@interface FBLPromise(DotSyntax_ReduceAdditions)
+
+- (FBLPromise * (^)(NSArray *, FBLPromiseReducerBlock))reduce FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+- (FBLPromise * (^)(dispatch_queue_t, NSArray *, FBLPromiseReducerBlock))reduceOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Retry.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Retry.h
new file mode 100644
index 0000000..414a17a
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Retry.h
@@ -0,0 +1,165 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** The default number of retry attempts is 1. */
+FOUNDATION_EXTERN NSInteger const FBLPromiseRetryDefaultAttemptsCount NS_REFINED_FOR_SWIFT;
+
+/** The default delay interval before making a retry attempt is 1.0 second. */
+FOUNDATION_EXTERN NSTimeInterval const FBLPromiseRetryDefaultDelayInterval NS_REFINED_FOR_SWIFT;
+
+@interface FBLPromise(RetryAdditions)
+
+typedef id __nullable (^FBLPromiseRetryWorkBlock)(void) NS_SWIFT_UNAVAILABLE("");
+typedef BOOL (^FBLPromiseRetryPredicateBlock)(NSInteger, NSError *) NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise that fulfills with the same value as the promise returned from `work`
+ block, which executes asynchronously, or rejects with the same error after all retry attempts have
+ been exhausted. Defaults to `FBLPromiseRetryDefaultAttemptsCount` attempt(s) on rejection where the
+ `work` block is retried after a delay of `FBLPromiseRetryDefaultDelayInterval` second(s).
+
+ @param work A block that executes asynchronously on the default queue and returns a value or an
+ error used to resolve the promise.
+ @return A new pending promise that fulfills with the same value as the promise returned from `work`
+ block, or rejects with the same error after all retry attempts have been exhausted.
+ */
++ (instancetype)retry:(FBLPromiseRetryWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise that fulfills with the same value as the promise returned from `work`
+ block, which executes asynchronously on the given `queue`, or rejects with the same error after all
+ retry attempts have been exhausted. Defaults to `FBLPromiseRetryDefaultAttemptsCount` attempt(s) on
+ rejection where the `work` block is retried on the given `queue` after a delay of
+ `FBLPromiseRetryDefaultDelayInterval` second(s).
+
+ @param queue A queue to invoke the `work` block on.
+ @param work A block that executes asynchronously on the given `queue` and returns a value or an
+ error used to resolve the promise.
+ @return A new pending promise that fulfills with the same value as the promise returned from `work`
+ block, or rejects with the same error after all retry attempts have been exhausted.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ retry:(FBLPromiseRetryWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise that fulfills with the same value as the promise returned from `work`
+ block, which executes asynchronously, or rejects with the same error after all retry attempts have
+ been exhausted.
+
+ @param count Max number of retry attempts. The `work` block will be executed once if the specified
+ count is less than or equal to zero.
+ @param work A block that executes asynchronously on the default queue and returns a value or an
+ error used to resolve the promise.
+ @return A new pending promise that fulfills with the same value as the promise returned from `work`
+ block, or rejects with the same error after all retry attempts have been exhausted.
+ */
++ (instancetype)attempts:(NSInteger)count
+ retry:(FBLPromiseRetryWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise that fulfills with the same value as the promise returned from `work`
+ block, which executes asynchronously on the given `queue`, or rejects with the same error after all
+ retry attempts have been exhausted.
+
+ @param queue A queue to invoke the `work` block on.
+ @param count Max number of retry attempts. The `work` block will be executed once if the specified
+ count is less than or equal to zero.
+ @param work A block that executes asynchronously on the given `queue` and returns a value or an
+ error used to resolve the promise.
+ @return A new pending promise that fulfills with the same value as the promise returned from `work`
+ block, or rejects with the same error after all retry attempts have been exhausted.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ attempts:(NSInteger)count
+ retry:(FBLPromiseRetryWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise that fulfills with the same value as the promise returned from `work`
+ block, which executes asynchronously, or rejects with the same error after all retry attempts have
+ been exhausted. On rejection, the `work` block is retried after the given delay `interval` and will
+ continue to retry until the number of specified attempts have been exhausted or will bail early if
+ the given condition is not met.
+
+ @param count Max number of retry attempts. The `work` block will be executed once if the specified
+ count is less than or equal to zero.
+ @param interval Time to wait before the next retry attempt.
+ @param predicate Condition to check before the next retry attempt. The predicate block provides the
+ the number of remaining retry attempts and the error that the promise was rejected
+ with.
+ @param work A block that executes asynchronously on the default queue and returns a value or an
+ error used to resolve the promise.
+ @return A new pending promise that fulfills with the same value as the promise returned from `work`
+ block, or rejects with the same error after all retry attempts have been exhausted or if
+ the given condition is not met.
+ */
++ (instancetype)attempts:(NSInteger)count
+ delay:(NSTimeInterval)interval
+ condition:(nullable FBLPromiseRetryPredicateBlock)predicate
+ retry:(FBLPromiseRetryWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise that fulfills with the same value as the promise returned from `work`
+ block, which executes asynchronously on the given `queue`, or rejects with the same error after all
+ retry attempts have been exhausted. On rejection, the `work` block is retried after the given
+ delay `interval` and will continue to retry until the number of specified attempts have been
+ exhausted or will bail early if the given condition is not met.
+
+ @param queue A queue to invoke the `work` block on.
+ @param count Max number of retry attempts. The `work` block will be executed once if the specified
+ count is less than or equal to zero.
+ @param interval Time to wait before the next retry attempt.
+ @param predicate Condition to check before the next retry attempt. The predicate block provides the
+ the number of remaining retry attempts and the error that the promise was rejected
+ with.
+ @param work A block that executes asynchronously on the given `queue` and returns a value or an
+ error used to resolve the promise.
+ @return A new pending promise that fulfills with the same value as the promise returned from `work`
+ block, or rejects with the same error after all retry attempts have been exhausted or if
+ the given condition is not met.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ attempts:(NSInteger)count
+ delay:(NSTimeInterval)interval
+ condition:(nullable FBLPromiseRetryPredicateBlock)predicate
+ retry:(FBLPromiseRetryWorkBlock)work NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise+Retry` operators.
+ Usage: FBLPromise.retry(^id { ... })
+ */
+@interface FBLPromise(DotSyntax_RetryAdditions)
+
++ (FBLPromise * (^)(FBLPromiseRetryWorkBlock))retry FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise * (^)(dispatch_queue_t, FBLPromiseRetryWorkBlock))retryOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise * (^)(NSInteger, NSTimeInterval, FBLPromiseRetryPredicateBlock __nullable,
+ FBLPromiseRetryWorkBlock))retryAgain FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise * (^)(dispatch_queue_t, NSInteger, NSTimeInterval,
+ FBLPromiseRetryPredicateBlock __nullable,
+ FBLPromiseRetryWorkBlock))retryAgainOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Testing.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Testing.h
new file mode 100644
index 0000000..8478ae2
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Testing.h
@@ -0,0 +1,57 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Waits for all scheduled promises blocks.
+
+ @param timeout Maximum time to wait.
+ @return YES if all promises blocks have completed before the timeout and NO otherwise.
+ */
+FOUNDATION_EXTERN BOOL FBLWaitForPromisesWithTimeout(NSTimeInterval timeout) NS_REFINED_FOR_SWIFT;
+
+@interface FBLPromise(TestingAdditions)
+
+/**
+ Dispatch group for promises that is typically used to wait for all scheduled blocks.
+ */
+@property(class, nonatomic, readonly) dispatch_group_t dispatchGroup NS_REFINED_FOR_SWIFT;
+
+/**
+ Properties to get the current state of the promise.
+ */
+@property(nonatomic, readonly) BOOL isPending NS_REFINED_FOR_SWIFT;
+@property(nonatomic, readonly) BOOL isFulfilled NS_REFINED_FOR_SWIFT;
+@property(nonatomic, readonly) BOOL isRejected NS_REFINED_FOR_SWIFT;
+
+/**
+ Value the promise was fulfilled with.
+ Can be nil if the promise is still pending, was resolved with nil or after it has been rejected.
+ */
+@property(nonatomic, readonly, nullable) Value value NS_REFINED_FOR_SWIFT;
+
+/**
+ Error the promise was rejected with.
+ Can be nil if the promise is still pending or after it has been fulfilled.
+ */
+@property(nonatomic, readonly, nullable) NSError *error NS_REFINED_FOR_SWIFT;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Then.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Then.h
new file mode 100644
index 0000000..32027e6
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Then.h
@@ -0,0 +1,63 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(ThenAdditions)
+
+typedef id __nullable (^FBLPromiseThenWorkBlock)(Value __nullable value) NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise which eventually gets resolved with resolution returned from `work`
+ block: either value, error or another promise. The `work` block is executed asynchronously only
+ when the receiver is fulfilled. If receiver is rejected, the returned promise is also rejected with
+ the same error.
+
+ @param work A block to handle the value that receiver was fulfilled with.
+ @return A new pending promise to be resolved with resolution returned from the `work` block.
+ */
+- (FBLPromise *)then:(FBLPromiseThenWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise which eventually gets resolved with resolution returned from `work`
+ block: either value, error or another promise. The `work` block is executed asynchronously when the
+ receiver is fulfilled. If receiver is rejected, the returned promise is also rejected with the same
+ error.
+
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to handle the value that receiver was fulfilled with.
+ @return A new pending promise to be resolved with resolution returned from the `work` block.
+ */
+- (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ then:(FBLPromiseThenWorkBlock)work NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `then` operators.
+ Usage: promise.then(^id(id value) { ... })
+ */
+@interface FBLPromise(DotSyntax_ThenAdditions)
+
+- (FBLPromise* (^)(FBLPromiseThenWorkBlock))then FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
+- (FBLPromise* (^)(dispatch_queue_t, FBLPromiseThenWorkBlock))thenOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Timeout.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Timeout.h
new file mode 100644
index 0000000..184ba16
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Timeout.h
@@ -0,0 +1,57 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(TimeoutAdditions)
+
+/**
+ Waits for a promise with the specified `timeout`.
+
+ @param interval Time to wait in seconds.
+ @return A new pending promise that gets either resolved with same resolution as the receiver or
+ rejected with `FBLPromiseErrorCodeTimedOut` error code in `FBLPromiseErrorDomain`.
+ */
+- (FBLPromise *)timeout:(NSTimeInterval)interval NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Waits for a promise with the specified `timeout`.
+
+ @param queue A queue to dispatch on.
+ @param interval Time to wait in seconds.
+ @return A new pending promise that gets either resolved with same resolution as the receiver or
+ rejected with `FBLPromiseErrorCodeTimedOut` error code in `FBLPromiseErrorDomain`.
+ */
+- (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ timeout:(NSTimeInterval)interval NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `timeout` operators.
+ Usage: promise.timeout(...)
+ */
+@interface FBLPromise(DotSyntax_TimeoutAdditions)
+
+- (FBLPromise* (^)(NSTimeInterval))timeout FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
+- (FBLPromise* (^)(dispatch_queue_t, NSTimeInterval))timeoutOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Validate.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Validate.h
new file mode 100644
index 0000000..9dfa2f1
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Validate.h
@@ -0,0 +1,60 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(ValidateAdditions)
+
+typedef BOOL (^FBLPromiseValidateWorkBlock)(Value __nullable value) NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Validates a fulfilled value or rejects the value if it can not be validated.
+
+ @param predicate An expression to validate.
+ @return A new pending promise that gets either resolved with same resolution as the receiver or
+ rejected with `FBLPromiseErrorCodeValidationFailure` error code in `FBLPromiseErrorDomain`.
+ */
+- (FBLPromise *)validate:(FBLPromiseValidateWorkBlock)predicate NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Validates a fulfilled value or rejects the value if it can not be validated.
+
+ @param queue A queue to dispatch on.
+ @param predicate An expression to validate.
+ @return A new pending promise that gets either resolved with same resolution as the receiver or
+ rejected with `FBLPromiseErrorCodeValidationFailure` error code in `FBLPromiseErrorDomain`.
+ */
+- (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ validate:(FBLPromiseValidateWorkBlock)predicate NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `validate` operators.
+ Usage: promise.validate(^BOOL(id value) { ... })
+ */
+@interface FBLPromise(DotSyntax_ValidateAdditions)
+
+- (FBLPromise * (^)(FBLPromiseValidateWorkBlock))validate FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+- (FBLPromise * (^)(dispatch_queue_t, FBLPromiseValidateWorkBlock))validateOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Wrap.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Wrap.h
new file mode 100644
index 0000000..664e1bb
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise+Wrap.h
@@ -0,0 +1,316 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Different types of completion handlers available to be wrapped with promise.
+ */
+typedef void (^FBLPromiseCompletion)(void) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseObjectCompletion)(id __nullable) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseErrorCompletion)(NSError* __nullable) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseObjectOrErrorCompletion)(id __nullable, NSError* __nullable)
+ NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseErrorOrObjectCompletion)(NSError* __nullable, id __nullable)
+ NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromise2ObjectsOrErrorCompletion)(id __nullable, id __nullable,
+ NSError* __nullable) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseBoolCompletion)(BOOL) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseBoolOrErrorCompletion)(BOOL, NSError* __nullable) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseIntegerCompletion)(NSInteger) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseIntegerOrErrorCompletion)(NSInteger, NSError* __nullable)
+ NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseDoubleCompletion)(double) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseDoubleOrErrorCompletion)(double, NSError* __nullable)
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Provides an easy way to convert methods that use common callback patterns into promises.
+ */
+@interface FBLPromise(WrapAdditions)
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with `nil` when completion handler is invoked.
+ */
++ (instancetype)wrapCompletion:(void (^)(FBLPromiseCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with `nil` when completion handler is invoked.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ wrapCompletion:(void (^)(FBLPromiseCompletion handler))work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an object provided by completion handler.
+ */
++ (instancetype)wrapObjectCompletion:(void (^)(FBLPromiseObjectCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an object provided by completion handler.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ wrapObjectCompletion:(void (^)(FBLPromiseObjectCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an error provided by completion handler.
+ If error is `nil`, fulfills with `nil`, otherwise rejects with the error.
+ */
++ (instancetype)wrapErrorCompletion:(void (^)(FBLPromiseErrorCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an error provided by completion handler.
+ If error is `nil`, fulfills with `nil`, otherwise rejects with the error.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ wrapErrorCompletion:(void (^)(FBLPromiseErrorCompletion handler))work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an object provided by completion handler if error is `nil`.
+ Otherwise, rejects with the error.
+ */
++ (instancetype)wrapObjectOrErrorCompletion:
+ (void (^)(FBLPromiseObjectOrErrorCompletion handler))work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an object provided by completion handler if error is `nil`.
+ Otherwise, rejects with the error.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ wrapObjectOrErrorCompletion:(void (^)(FBLPromiseObjectOrErrorCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an error or object provided by completion handler. If error
+ is not `nil`, rejects with the error.
+ */
++ (instancetype)wrapErrorOrObjectCompletion:
+ (void (^)(FBLPromiseErrorOrObjectCompletion handler))work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an error or object provided by completion handler. If error
+ is not `nil`, rejects with the error.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ wrapErrorOrObjectCompletion:(void (^)(FBLPromiseErrorOrObjectCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an array of objects provided by completion handler in order
+ if error is `nil`. Otherwise, rejects with the error.
+ */
++ (FBLPromise*)wrap2ObjectsOrErrorCompletion:
+ (void (^)(FBLPromise2ObjectsOrErrorCompletion handler))work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an array of objects provided by completion handler in order
+ if error is `nil`. Otherwise, rejects with the error.
+ */
++ (FBLPromise*)onQueue:(dispatch_queue_t)queue
+ wrap2ObjectsOrErrorCompletion:(void (^)(FBLPromise2ObjectsOrErrorCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping YES/NO.
+ */
++ (FBLPromise*)wrapBoolCompletion:(void (^)(FBLPromiseBoolCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping YES/NO.
+ */
++ (FBLPromise*)onQueue:(dispatch_queue_t)queue
+ wrapBoolCompletion:(void (^)(FBLPromiseBoolCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping YES/NO when error is `nil`.
+ Otherwise rejects with the error.
+ */
++ (FBLPromise*)wrapBoolOrErrorCompletion:
+ (void (^)(FBLPromiseBoolOrErrorCompletion handler))work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping YES/NO when error is `nil`.
+ Otherwise rejects with the error.
+ */
++ (FBLPromise*)onQueue:(dispatch_queue_t)queue
+ wrapBoolOrErrorCompletion:(void (^)(FBLPromiseBoolOrErrorCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping an integer.
+ */
++ (FBLPromise*)wrapIntegerCompletion:(void (^)(FBLPromiseIntegerCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping an integer.
+ */
++ (FBLPromise*)onQueue:(dispatch_queue_t)queue
+ wrapIntegerCompletion:(void (^)(FBLPromiseIntegerCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping an integer when error is `nil`.
+ Otherwise rejects with the error.
+ */
++ (FBLPromise*)wrapIntegerOrErrorCompletion:
+ (void (^)(FBLPromiseIntegerOrErrorCompletion handler))work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping an integer when error is `nil`.
+ Otherwise rejects with the error.
+ */
++ (FBLPromise*)onQueue:(dispatch_queue_t)queue
+ wrapIntegerOrErrorCompletion:(void (^)(FBLPromiseIntegerOrErrorCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping a double.
+ */
++ (FBLPromise*)wrapDoubleCompletion:(void (^)(FBLPromiseDoubleCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping a double.
+ */
++ (FBLPromise*)onQueue:(dispatch_queue_t)queue
+ wrapDoubleCompletion:(void (^)(FBLPromiseDoubleCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping a double when error is `nil`.
+ Otherwise rejects with the error.
+ */
++ (FBLPromise*)wrapDoubleOrErrorCompletion:
+ (void (^)(FBLPromiseDoubleOrErrorCompletion handler))work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping a double when error is `nil`.
+ Otherwise rejects with the error.
+ */
++ (FBLPromise*)onQueue:(dispatch_queue_t)queue
+ wrapDoubleOrErrorCompletion:(void (^)(FBLPromiseDoubleOrErrorCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `wrap` operators.
+ Usage: FBLPromise.wrapCompletion(^(FBLPromiseCompletion handler) {...})
+ */
+@interface FBLPromise(DotSyntax_WrapAdditions)
+
++ (FBLPromise* (^)(void (^)(FBLPromiseCompletion)))wrapCompletion FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t, void (^)(FBLPromiseCompletion)))wrapCompletionOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromiseObjectCompletion)))wrapObjectCompletion
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t, void (^)(FBLPromiseObjectCompletion)))wrapObjectCompletionOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromiseErrorCompletion)))wrapErrorCompletion FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t, void (^)(FBLPromiseErrorCompletion)))wrapErrorCompletionOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromiseObjectOrErrorCompletion)))wrapObjectOrErrorCompletion
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t,
+ void (^)(FBLPromiseObjectOrErrorCompletion)))wrapObjectOrErrorCompletionOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromiseErrorOrObjectCompletion)))wrapErrorOrObjectCompletion
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t,
+ void (^)(FBLPromiseErrorOrObjectCompletion)))wrapErrorOrObjectCompletionOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromise2ObjectsOrErrorCompletion)))
+ wrap2ObjectsOrErrorCompletion FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t, void (^)(FBLPromise2ObjectsOrErrorCompletion)))
+ wrap2ObjectsOrErrorCompletionOn FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromiseBoolCompletion)))wrapBoolCompletion
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t,
+ void (^)(FBLPromiseBoolCompletion)))wrapBoolCompletionOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromiseBoolOrErrorCompletion)))wrapBoolOrErrorCompletion
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t,
+ void (^)(FBLPromiseBoolOrErrorCompletion)))wrapBoolOrErrorCompletionOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromiseIntegerCompletion)))wrapIntegerCompletion
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t,
+ void (^)(FBLPromiseIntegerCompletion)))wrapIntegerCompletionOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromiseIntegerOrErrorCompletion)))
+ wrapIntegerOrErrorCompletion FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t, void (^)(FBLPromiseIntegerOrErrorCompletion)))
+ wrapIntegerOrErrorCompletionOn FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromiseDoubleCompletion)))wrapDoubleCompletion
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t,
+ void (^)(FBLPromiseDoubleCompletion)))wrapDoubleCompletionOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromiseDoubleOrErrorCompletion)))
+ wrapDoubleOrErrorCompletion FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t, void (^)(FBLPromiseDoubleOrErrorCompletion)))
+ wrapDoubleOrErrorCompletionOn FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise.h
new file mode 100644
index 0000000..b1380dc
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromise.h
@@ -0,0 +1,93 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromiseError.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Promises synchronization construct in Objective-C.
+ */
+@interface FBLPromise<__covariant Value> : NSObject
+
+/**
+ Default dispatch queue used for `FBLPromise`, which is `main` if a queue is not specified.
+ */
+@property(class) dispatch_queue_t defaultDispatchQueue NS_REFINED_FOR_SWIFT;
+
+/**
+ Creates a pending promise.
+ */
++ (instancetype)pendingPromise NS_REFINED_FOR_SWIFT;
+
+/**
+ Creates a resolved promise.
+
+ @param resolution An object to resolve the promise with: either a value or an error.
+ @return A new resolved promise.
+ */
++ (instancetype)resolvedWith:(nullable id)resolution NS_REFINED_FOR_SWIFT;
+
+/**
+ Synchronously fulfills the promise with a value.
+
+ @param value An arbitrary value to fulfill the promise with, including `nil`.
+ */
+- (void)fulfill:(nullable Value)value NS_REFINED_FOR_SWIFT;
+
+/**
+ Synchronously rejects the promise with an error.
+
+ @param error An error to reject the promise with.
+ */
+- (void)reject:(NSError *)error NS_REFINED_FOR_SWIFT;
+
++ (instancetype)new NS_UNAVAILABLE;
+- (instancetype)init NS_UNAVAILABLE;
+@end
+
+@interface FBLPromise()
+
+/**
+ Adds an object to the set of pending objects to keep strongly while the promise is pending.
+ Used by the Swift wrappers to keep them alive until the underlying ObjC promise is resolved.
+
+ @param object An object to add.
+ */
+- (void)addPendingObject:(id)object NS_REFINED_FOR_SWIFT;
+
+@end
+
+#ifdef FBL_PROMISES_DOT_SYNTAX_IS_DEPRECATED
+#define FBL_PROMISES_DOT_SYNTAX __attribute__((deprecated))
+#else
+#define FBL_PROMISES_DOT_SYNTAX
+#endif
+
+@interface FBLPromise(DotSyntaxAdditions)
+
+/**
+ Convenience dot-syntax wrappers for FBLPromise.
+ Usage: FBLPromise.pending()
+ FBLPromise.resolved(value)
+
+ */
++ (instancetype (^)(void))pending FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (instancetype (^)(id __nullable))resolved FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromiseError.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromiseError.h
new file mode 100644
index 0000000..d37af53
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromiseError.h
@@ -0,0 +1,43 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+
+FOUNDATION_EXTERN NSErrorDomain const FBLPromiseErrorDomain NS_REFINED_FOR_SWIFT;
+
+/**
+ Possible error codes in `FBLPromiseErrorDomain`.
+ */
+typedef NS_ENUM(NSInteger, FBLPromiseErrorCode) {
+ /** Promise failed to resolve in time. */
+ FBLPromiseErrorCodeTimedOut = 1,
+ /** Validation predicate returned false. */
+ FBLPromiseErrorCodeValidationFailure = 2,
+} NS_REFINED_FOR_SWIFT;
+
+NS_INLINE BOOL FBLPromiseErrorIsTimedOut(NSError *error) NS_SWIFT_UNAVAILABLE("") {
+ return error.domain == FBLPromiseErrorDomain &&
+ error.code == FBLPromiseErrorCodeTimedOut;
+}
+
+NS_INLINE BOOL FBLPromiseErrorIsValidationFailure(NSError *error) NS_SWIFT_UNAVAILABLE("") {
+ return error.domain == FBLPromiseErrorDomain &&
+ error.code == FBLPromiseErrorCodeValidationFailure;
+}
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromises.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromises.h
new file mode 100644
index 0000000..2d90bad
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/FBLPromises.h
@@ -0,0 +1,32 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise+All.h"
+#import "FBLPromise+Always.h"
+#import "FBLPromise+Any.h"
+#import "FBLPromise+Async.h"
+#import "FBLPromise+Await.h"
+#import "FBLPromise+Catch.h"
+#import "FBLPromise+Delay.h"
+#import "FBLPromise+Do.h"
+#import "FBLPromise+Race.h"
+#import "FBLPromise+Recover.h"
+#import "FBLPromise+Reduce.h"
+#import "FBLPromise+Retry.h"
+#import "FBLPromise+Then.h"
+#import "FBLPromise+Timeout.h"
+#import "FBLPromise+Validate.h"
+#import "FBLPromise+Wrap.h"
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/PromisesObjC-umbrella.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/PromisesObjC-umbrella.h
new file mode 100644
index 0000000..5b014a8
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Headers/PromisesObjC-umbrella.h
@@ -0,0 +1,36 @@
+#ifdef __OBJC__
+#import
+#else
+#ifndef FOUNDATION_EXPORT
+#if defined(__cplusplus)
+#define FOUNDATION_EXPORT extern "C"
+#else
+#define FOUNDATION_EXPORT extern
+#endif
+#endif
+#endif
+
+#import "FBLPromise+All.h"
+#import "FBLPromise+Always.h"
+#import "FBLPromise+Any.h"
+#import "FBLPromise+Async.h"
+#import "FBLPromise+Await.h"
+#import "FBLPromise+Catch.h"
+#import "FBLPromise+Delay.h"
+#import "FBLPromise+Do.h"
+#import "FBLPromise+Race.h"
+#import "FBLPromise+Recover.h"
+#import "FBLPromise+Reduce.h"
+#import "FBLPromise+Retry.h"
+#import "FBLPromise+Testing.h"
+#import "FBLPromise+Then.h"
+#import "FBLPromise+Timeout.h"
+#import "FBLPromise+Validate.h"
+#import "FBLPromise+Wrap.h"
+#import "FBLPromise.h"
+#import "FBLPromiseError.h"
+#import "FBLPromises.h"
+
+FOUNDATION_EXPORT double FBLPromisesVersionNumber;
+FOUNDATION_EXPORT const unsigned char FBLPromisesVersionString[];
+
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Info.plist b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Info.plist
new file mode 100644
index 0000000..a963a05
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Info.plist
@@ -0,0 +1,20 @@
+
+
+
+
+ CFBundleExecutable
+ FBLPromises
+ CFBundleIdentifier
+ com.firebase.Firebase-FBLPromises
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ FBLPromises
+ CFBundlePackageType
+ FMWK
+ CFBundleVersion
+ 2.2.0
+ DTSDKName
+ iphonesimulator11.2
+
+
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Modules/module.modulemap b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Modules/module.modulemap
new file mode 100644
index 0000000..bd7b48e
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-maccatalyst/FBLPromises.framework/Modules/module.modulemap
@@ -0,0 +1,5 @@
+framework module PromisesObjC {
+umbrella header "PromisesObjC-umbrella.h"
+export *
+module * { export * }
+}
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/FBLPromises b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/FBLPromises
new file mode 100644
index 0000000..84980b0
Binary files /dev/null and b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/FBLPromises differ
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+All.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+All.h
new file mode 100644
index 0000000..9c0090e
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+All.h
@@ -0,0 +1,63 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(AllAdditions)
+
+/**
+ Wait until all of the given promises are fulfilled.
+ If one of the given promises is rejected, then the returned promise is rejected with same error.
+ If any other arbitrary value or `NSError` appears in the array instead of `FBLPromise`,
+ it's implicitly considered a pre-fulfilled or pre-rejected `FBLPromise` correspondingly.
+ Promises resolved with `nil` become `NSNull` instances in the resulting array.
+
+ @param promises Promises to wait for.
+ @return Promise of an array containing the values of input promises in the same order.
+ */
++ (FBLPromise *)all:(NSArray *)promises NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Wait until all of the given promises are fulfilled.
+ If one of the given promises is rejected, then the returned promise is rejected with same error.
+ If any other arbitrary value or `NSError` appears in the array instead of `FBLPromise`,
+ it's implicitly considered a pre-fulfilled or pre-rejected FBLPromise correspondingly.
+ Promises resolved with `nil` become `NSNull` instances in the resulting array.
+
+ @param queue A queue to dispatch on.
+ @param promises Promises to wait for.
+ @return Promise of an array containing the values of input promises in the same order.
+ */
++ (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ all:(NSArray *)promises NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `all` operators.
+ Usage: FBLPromise.all(@[ ... ])
+ */
+@interface FBLPromise(DotSyntax_AllAdditions)
+
++ (FBLPromise * (^)(NSArray *))all FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise * (^)(dispatch_queue_t, NSArray *))allOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Always.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Always.h
new file mode 100644
index 0000000..13000f5
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Always.h
@@ -0,0 +1,54 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(AlwaysAdditions)
+
+typedef void (^FBLPromiseAlwaysWorkBlock)(void) NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block that always executes, no matter if the receiver is rejected or fulfilled.
+ @return A new pending promise to be resolved with same resolution as the receiver.
+ */
+- (FBLPromise *)always:(FBLPromiseAlwaysWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to dispatch on.
+ @param work A block that always executes, no matter if the receiver is rejected or fulfilled.
+ @return A new pending promise to be resolved with same resolution as the receiver.
+ */
+- (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ always:(FBLPromiseAlwaysWorkBlock)work NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `always` operators.
+ Usage: promise.always(^{...})
+ */
+@interface FBLPromise(DotSyntax_AlwaysAdditions)
+
+- (FBLPromise* (^)(FBLPromiseAlwaysWorkBlock))always FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+- (FBLPromise* (^)(dispatch_queue_t, FBLPromiseAlwaysWorkBlock))alwaysOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Any.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Any.h
new file mode 100644
index 0000000..82875bf
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Any.h
@@ -0,0 +1,69 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(AnyAdditions)
+
+/**
+ Waits until all of the given promises are either fulfilled or rejected.
+ If all promises are rejected, then the returned promise is rejected with same error
+ as the last one rejected.
+ If at least one of the promises is fulfilled, the resulting promise is fulfilled with an array of
+ values or `NSErrors`, matching the original order of fulfilled or rejected promises respectively.
+ If any other arbitrary value or `NSError` appears in the array instead of `FBLPromise`,
+ it's implicitly considered a pre-fulfilled or pre-rejected `FBLPromise` correspondingly.
+ Promises resolved with `nil` become `NSNull` instances in the resulting array.
+
+ @param promises Promises to wait for.
+ @return Promise of array containing the values or `NSError`s of input promises in the same order.
+ */
++ (FBLPromise *)any:(NSArray *)promises NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Waits until all of the given promises are either fulfilled or rejected.
+ If all promises are rejected, then the returned promise is rejected with same error
+ as the last one rejected.
+ If at least one of the promises is fulfilled, the resulting promise is fulfilled with an array of
+ values or `NSError`s, matching the original order of fulfilled or rejected promises respectively.
+ If any other arbitrary value or `NSError` appears in the array instead of `FBLPromise`,
+ it's implicitly considered a pre-fulfilled or pre-rejected `FBLPromise` correspondingly.
+ Promises resolved with `nil` become `NSNull` instances in the resulting array.
+
+ @param queue A queue to dispatch on.
+ @param promises Promises to wait for.
+ @return Promise of array containing the values or `NSError`s of input promises in the same order.
+ */
++ (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ any:(NSArray *)promises NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `any` operators.
+ Usage: FBLPromise.any(@[ ... ])
+ */
+@interface FBLPromise(DotSyntax_AnyAdditions)
+
++ (FBLPromise * (^)(NSArray *))any FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise * (^)(dispatch_queue_t, NSArray *))anyOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Async.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Async.h
new file mode 100644
index 0000000..0588a9e
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Async.h
@@ -0,0 +1,60 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(AsyncAdditions)
+
+typedef void (^FBLPromiseFulfillBlock)(Value __nullable value) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseRejectBlock)(NSError *error) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseAsyncWorkBlock)(FBLPromiseFulfillBlock fulfill,
+ FBLPromiseRejectBlock reject) NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise and executes `work` block asynchronously.
+
+ @param work A block to perform any operations needed to resolve the promise.
+ @return A new pending promise.
+ */
++ (instancetype)async:(FBLPromiseAsyncWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise and executes `work` block asynchronously on the given queue.
+
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @return A new pending promise.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ async:(FBLPromiseAsyncWorkBlock)work NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `async` operators.
+ Usage: FBLPromise.async(^(FBLPromiseFulfillBlock fulfill, FBLPromiseRejectBlock reject) { ... })
+ */
+@interface FBLPromise(DotSyntax_AsyncAdditions)
+
++ (FBLPromise* (^)(FBLPromiseAsyncWorkBlock))async FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t, FBLPromiseAsyncWorkBlock))asyncOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Await.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Await.h
new file mode 100644
index 0000000..c97a1ba
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Await.h
@@ -0,0 +1,32 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Waits for promise resolution. The current thread blocks until the promise is resolved.
+
+ @param promise Promise to wait for.
+ @param error Error the promise was rejected with, or `nil` if the promise was fulfilled.
+ @return Value the promise was fulfilled with. If the promise was rejected, the return value
+ is always `nil`, but the error out arg is not.
+ */
+FOUNDATION_EXTERN id __nullable FBLPromiseAwait(FBLPromise *promise,
+ NSError **error) NS_REFINED_FOR_SWIFT;
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Catch.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Catch.h
new file mode 100644
index 0000000..a9ff170
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Catch.h
@@ -0,0 +1,59 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(CatchAdditions)
+
+typedef void (^FBLPromiseCatchWorkBlock)(NSError *error) NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise which eventually gets resolved with same resolution as the receiver.
+ If receiver is rejected, then `reject` block is executed asynchronously.
+
+ @param reject A block to handle the error that receiver was rejected with.
+ @return A new pending promise.
+ */
+- (FBLPromise *)catch:(FBLPromiseCatchWorkBlock)reject NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise which eventually gets resolved with same resolution as the receiver.
+ If receiver is rejected, then `reject` block is executed asynchronously on the given queue.
+
+ @param queue A queue to invoke the `reject` block on.
+ @param reject A block to handle the error that receiver was rejected with.
+ @return A new pending promise.
+ */
+- (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ catch:(FBLPromiseCatchWorkBlock)reject NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `catch` operators.
+ Usage: promise.catch(^(NSError *error) { ... })
+ */
+@interface FBLPromise(DotSyntax_CatchAdditions)
+
+- (FBLPromise* (^)(FBLPromiseCatchWorkBlock))catch FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
+- (FBLPromise* (^)(dispatch_queue_t, FBLPromiseCatchWorkBlock))catchOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Delay.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Delay.h
new file mode 100644
index 0000000..557df48
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Delay.h
@@ -0,0 +1,59 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(DelayAdditions)
+
+/**
+ Creates a new pending promise that fulfills with the same value as `self` after the `delay`, or
+ rejects with the same error immediately.
+
+ @param interval Time to wait in seconds.
+ @return A new pending promise that fulfills at least `delay` seconds later than `self`, or rejects
+ with the same error immediately.
+ */
+- (FBLPromise *)delay:(NSTimeInterval)interval NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a new pending promise that fulfills with the same value as `self` after the `delay`, or
+ rejects with the same error immediately.
+
+ @param queue A queue to dispatch on.
+ @param interval Time to wait in seconds.
+ @return A new pending promise that fulfills at least `delay` seconds later than `self`, or rejects
+ with the same error immediately.
+ */
+- (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ delay:(NSTimeInterval)interval NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `delay` operators.
+ Usage: promise.delay(...)
+ */
+@interface FBLPromise(DotSyntax_DelayAdditions)
+
+- (FBLPromise * (^)(NSTimeInterval))delay FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
+- (FBLPromise * (^)(dispatch_queue_t, NSTimeInterval))delayOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Do.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Do.h
new file mode 100644
index 0000000..6838e0a
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Do.h
@@ -0,0 +1,55 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(DoAdditions)
+
+typedef id __nullable (^FBLPromiseDoWorkBlock)(void) NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise and executes `work` block asynchronously.
+
+ @param work A block that returns a value or an error used to resolve the promise.
+ @return A new pending promise.
+ */
++ (instancetype)do:(FBLPromiseDoWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise and executes `work` block asynchronously on the given queue.
+
+ @param queue A queue to invoke the `work` block on.
+ @param work A block that returns a value or an error used to resolve the promise.
+ @return A new pending promise.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue do:(FBLPromiseDoWorkBlock)work NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `do` operators.
+ Usage: FBLPromise.doOn(queue, ^(NSError *error) { ... })
+ */
+@interface FBLPromise(DotSyntax_DoAdditions)
+
++ (FBLPromise * (^)(dispatch_queue_t, FBLPromiseDoWorkBlock))doOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Race.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Race.h
new file mode 100644
index 0000000..2f67258
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Race.h
@@ -0,0 +1,62 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(RaceAdditions)
+
+/**
+ Wait until any of the given promises are fulfilled.
+ If one of the promises is rejected, then the returned promise is rejected with same error.
+ If any other arbitrary value or `NSError` appears in the array instead of `FBLPromise`,
+ it's implicitly considered a pre-fulfilled or pre-rejected `FBLPromise` correspondingly.
+
+ @param promises Promises to wait for.
+ @return A new pending promise to be resolved with the same resolution as the first promise, among
+ the given ones, which was resolved.
+ */
++ (instancetype)race:(NSArray *)promises NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Wait until any of the given promises are fulfilled.
+ If one of the promises is rejected, then the returned promise is rejected with same error.
+ If any other arbitrary value or `NSError` appears in the array instead of `FBLPromise`,
+ it's implicitly considered a pre-fulfilled or pre-rejected `FBLPromise` correspondingly.
+
+ @param queue A queue to dispatch on.
+ @param promises Promises to wait for.
+ @return A new pending promise to be resolved with the same resolution as the first promise, among
+ the given ones, which was resolved.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue race:(NSArray *)promises NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `race` operators.
+ Usage: FBLPromise.race(@[ ... ])
+ */
+@interface FBLPromise(DotSyntax_RaceAdditions)
+
++ (FBLPromise * (^)(NSArray *))race FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise * (^)(dispatch_queue_t, NSArray *))raceOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Recover.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Recover.h
new file mode 100644
index 0000000..bb7df7e
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Recover.h
@@ -0,0 +1,60 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(RecoverAdditions)
+
+typedef id __nullable (^FBLPromiseRecoverWorkBlock)(NSError *error) NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Provides a new promise to recover in case the receiver gets rejected.
+
+ @param recovery A block to handle the error that the receiver was rejected with.
+ @return A new pending promise to use instead of the rejected one that gets resolved with resolution
+ returned from `recovery` block.
+ */
+- (FBLPromise *)recover:(FBLPromiseRecoverWorkBlock)recovery NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Provides a new promise to recover in case the receiver gets rejected.
+
+ @param queue A queue to dispatch on.
+ @param recovery A block to handle the error that the receiver was rejected with.
+ @return A new pending promise to use instead of the rejected one that gets resolved with resolution
+ returned from `recovery` block.
+ */
+- (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ recover:(FBLPromiseRecoverWorkBlock)recovery NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `recover` operators.
+ Usage: promise.recover(^id(NSError *error) {...})
+ */
+@interface FBLPromise(DotSyntax_RecoverAdditions)
+
+- (FBLPromise * (^)(FBLPromiseRecoverWorkBlock))recover FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+- (FBLPromise * (^)(dispatch_queue_t, FBLPromiseRecoverWorkBlock))recoverOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Reduce.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Reduce.h
new file mode 100644
index 0000000..5bb1eee
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Reduce.h
@@ -0,0 +1,71 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(ReduceAdditions)
+
+typedef id __nullable (^FBLPromiseReducerBlock)(Value __nullable partial, id next)
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Sequentially reduces a collection of values to a single promise using a given combining block
+ and the value `self` resolves with as initial value.
+
+ @param items An array of values to process in order.
+ @param reducer A block to combine an accumulating value and an element of the sequence into
+ the new accumulating value or a promise resolved with it, to be used in the next
+ call of the `reducer` or returned to the caller.
+ @return A new pending promise returned from the last `reducer` invocation.
+ Or `self` if `items` is empty.
+ */
+- (FBLPromise *)reduce:(NSArray *)items
+ combine:(FBLPromiseReducerBlock)reducer NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Sequentially reduces a collection of values to a single promise using a given combining block
+ and the value `self` resolves with as initial value.
+
+ @param queue A queue to dispatch on.
+ @param items An array of values to process in order.
+ @param reducer A block to combine an accumulating value and an element of the sequence into
+ the new accumulating value or a promise resolved with it, to be used in the next
+ call of the `reducer` or returned to the caller.
+ @return A new pending promise returned from the last `reducer` invocation.
+ Or `self` if `items` is empty.
+ */
+- (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ reduce:(NSArray *)items
+ combine:(FBLPromiseReducerBlock)reducer NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `reduce` operators.
+ Usage: promise.reduce(values, ^id(id partial, id next) { ... })
+ */
+@interface FBLPromise(DotSyntax_ReduceAdditions)
+
+- (FBLPromise * (^)(NSArray *, FBLPromiseReducerBlock))reduce FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+- (FBLPromise * (^)(dispatch_queue_t, NSArray *, FBLPromiseReducerBlock))reduceOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Retry.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Retry.h
new file mode 100644
index 0000000..414a17a
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Retry.h
@@ -0,0 +1,165 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** The default number of retry attempts is 1. */
+FOUNDATION_EXTERN NSInteger const FBLPromiseRetryDefaultAttemptsCount NS_REFINED_FOR_SWIFT;
+
+/** The default delay interval before making a retry attempt is 1.0 second. */
+FOUNDATION_EXTERN NSTimeInterval const FBLPromiseRetryDefaultDelayInterval NS_REFINED_FOR_SWIFT;
+
+@interface FBLPromise(RetryAdditions)
+
+typedef id __nullable (^FBLPromiseRetryWorkBlock)(void) NS_SWIFT_UNAVAILABLE("");
+typedef BOOL (^FBLPromiseRetryPredicateBlock)(NSInteger, NSError *) NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise that fulfills with the same value as the promise returned from `work`
+ block, which executes asynchronously, or rejects with the same error after all retry attempts have
+ been exhausted. Defaults to `FBLPromiseRetryDefaultAttemptsCount` attempt(s) on rejection where the
+ `work` block is retried after a delay of `FBLPromiseRetryDefaultDelayInterval` second(s).
+
+ @param work A block that executes asynchronously on the default queue and returns a value or an
+ error used to resolve the promise.
+ @return A new pending promise that fulfills with the same value as the promise returned from `work`
+ block, or rejects with the same error after all retry attempts have been exhausted.
+ */
++ (instancetype)retry:(FBLPromiseRetryWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise that fulfills with the same value as the promise returned from `work`
+ block, which executes asynchronously on the given `queue`, or rejects with the same error after all
+ retry attempts have been exhausted. Defaults to `FBLPromiseRetryDefaultAttemptsCount` attempt(s) on
+ rejection where the `work` block is retried on the given `queue` after a delay of
+ `FBLPromiseRetryDefaultDelayInterval` second(s).
+
+ @param queue A queue to invoke the `work` block on.
+ @param work A block that executes asynchronously on the given `queue` and returns a value or an
+ error used to resolve the promise.
+ @return A new pending promise that fulfills with the same value as the promise returned from `work`
+ block, or rejects with the same error after all retry attempts have been exhausted.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ retry:(FBLPromiseRetryWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise that fulfills with the same value as the promise returned from `work`
+ block, which executes asynchronously, or rejects with the same error after all retry attempts have
+ been exhausted.
+
+ @param count Max number of retry attempts. The `work` block will be executed once if the specified
+ count is less than or equal to zero.
+ @param work A block that executes asynchronously on the default queue and returns a value or an
+ error used to resolve the promise.
+ @return A new pending promise that fulfills with the same value as the promise returned from `work`
+ block, or rejects with the same error after all retry attempts have been exhausted.
+ */
++ (instancetype)attempts:(NSInteger)count
+ retry:(FBLPromiseRetryWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise that fulfills with the same value as the promise returned from `work`
+ block, which executes asynchronously on the given `queue`, or rejects with the same error after all
+ retry attempts have been exhausted.
+
+ @param queue A queue to invoke the `work` block on.
+ @param count Max number of retry attempts. The `work` block will be executed once if the specified
+ count is less than or equal to zero.
+ @param work A block that executes asynchronously on the given `queue` and returns a value or an
+ error used to resolve the promise.
+ @return A new pending promise that fulfills with the same value as the promise returned from `work`
+ block, or rejects with the same error after all retry attempts have been exhausted.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ attempts:(NSInteger)count
+ retry:(FBLPromiseRetryWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise that fulfills with the same value as the promise returned from `work`
+ block, which executes asynchronously, or rejects with the same error after all retry attempts have
+ been exhausted. On rejection, the `work` block is retried after the given delay `interval` and will
+ continue to retry until the number of specified attempts have been exhausted or will bail early if
+ the given condition is not met.
+
+ @param count Max number of retry attempts. The `work` block will be executed once if the specified
+ count is less than or equal to zero.
+ @param interval Time to wait before the next retry attempt.
+ @param predicate Condition to check before the next retry attempt. The predicate block provides the
+ the number of remaining retry attempts and the error that the promise was rejected
+ with.
+ @param work A block that executes asynchronously on the default queue and returns a value or an
+ error used to resolve the promise.
+ @return A new pending promise that fulfills with the same value as the promise returned from `work`
+ block, or rejects with the same error after all retry attempts have been exhausted or if
+ the given condition is not met.
+ */
++ (instancetype)attempts:(NSInteger)count
+ delay:(NSTimeInterval)interval
+ condition:(nullable FBLPromiseRetryPredicateBlock)predicate
+ retry:(FBLPromiseRetryWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise that fulfills with the same value as the promise returned from `work`
+ block, which executes asynchronously on the given `queue`, or rejects with the same error after all
+ retry attempts have been exhausted. On rejection, the `work` block is retried after the given
+ delay `interval` and will continue to retry until the number of specified attempts have been
+ exhausted or will bail early if the given condition is not met.
+
+ @param queue A queue to invoke the `work` block on.
+ @param count Max number of retry attempts. The `work` block will be executed once if the specified
+ count is less than or equal to zero.
+ @param interval Time to wait before the next retry attempt.
+ @param predicate Condition to check before the next retry attempt. The predicate block provides the
+ the number of remaining retry attempts and the error that the promise was rejected
+ with.
+ @param work A block that executes asynchronously on the given `queue` and returns a value or an
+ error used to resolve the promise.
+ @return A new pending promise that fulfills with the same value as the promise returned from `work`
+ block, or rejects with the same error after all retry attempts have been exhausted or if
+ the given condition is not met.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ attempts:(NSInteger)count
+ delay:(NSTimeInterval)interval
+ condition:(nullable FBLPromiseRetryPredicateBlock)predicate
+ retry:(FBLPromiseRetryWorkBlock)work NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise+Retry` operators.
+ Usage: FBLPromise.retry(^id { ... })
+ */
+@interface FBLPromise(DotSyntax_RetryAdditions)
+
++ (FBLPromise * (^)(FBLPromiseRetryWorkBlock))retry FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise * (^)(dispatch_queue_t, FBLPromiseRetryWorkBlock))retryOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise * (^)(NSInteger, NSTimeInterval, FBLPromiseRetryPredicateBlock __nullable,
+ FBLPromiseRetryWorkBlock))retryAgain FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise * (^)(dispatch_queue_t, NSInteger, NSTimeInterval,
+ FBLPromiseRetryPredicateBlock __nullable,
+ FBLPromiseRetryWorkBlock))retryAgainOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Testing.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Testing.h
new file mode 100644
index 0000000..8478ae2
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Testing.h
@@ -0,0 +1,57 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Waits for all scheduled promises blocks.
+
+ @param timeout Maximum time to wait.
+ @return YES if all promises blocks have completed before the timeout and NO otherwise.
+ */
+FOUNDATION_EXTERN BOOL FBLWaitForPromisesWithTimeout(NSTimeInterval timeout) NS_REFINED_FOR_SWIFT;
+
+@interface FBLPromise(TestingAdditions)
+
+/**
+ Dispatch group for promises that is typically used to wait for all scheduled blocks.
+ */
+@property(class, nonatomic, readonly) dispatch_group_t dispatchGroup NS_REFINED_FOR_SWIFT;
+
+/**
+ Properties to get the current state of the promise.
+ */
+@property(nonatomic, readonly) BOOL isPending NS_REFINED_FOR_SWIFT;
+@property(nonatomic, readonly) BOOL isFulfilled NS_REFINED_FOR_SWIFT;
+@property(nonatomic, readonly) BOOL isRejected NS_REFINED_FOR_SWIFT;
+
+/**
+ Value the promise was fulfilled with.
+ Can be nil if the promise is still pending, was resolved with nil or after it has been rejected.
+ */
+@property(nonatomic, readonly, nullable) Value value NS_REFINED_FOR_SWIFT;
+
+/**
+ Error the promise was rejected with.
+ Can be nil if the promise is still pending or after it has been fulfilled.
+ */
+@property(nonatomic, readonly, nullable) NSError *error NS_REFINED_FOR_SWIFT;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Then.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Then.h
new file mode 100644
index 0000000..32027e6
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Then.h
@@ -0,0 +1,63 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(ThenAdditions)
+
+typedef id __nullable (^FBLPromiseThenWorkBlock)(Value __nullable value) NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise which eventually gets resolved with resolution returned from `work`
+ block: either value, error or another promise. The `work` block is executed asynchronously only
+ when the receiver is fulfilled. If receiver is rejected, the returned promise is also rejected with
+ the same error.
+
+ @param work A block to handle the value that receiver was fulfilled with.
+ @return A new pending promise to be resolved with resolution returned from the `work` block.
+ */
+- (FBLPromise *)then:(FBLPromiseThenWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise which eventually gets resolved with resolution returned from `work`
+ block: either value, error or another promise. The `work` block is executed asynchronously when the
+ receiver is fulfilled. If receiver is rejected, the returned promise is also rejected with the same
+ error.
+
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to handle the value that receiver was fulfilled with.
+ @return A new pending promise to be resolved with resolution returned from the `work` block.
+ */
+- (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ then:(FBLPromiseThenWorkBlock)work NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `then` operators.
+ Usage: promise.then(^id(id value) { ... })
+ */
+@interface FBLPromise(DotSyntax_ThenAdditions)
+
+- (FBLPromise* (^)(FBLPromiseThenWorkBlock))then FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
+- (FBLPromise* (^)(dispatch_queue_t, FBLPromiseThenWorkBlock))thenOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Timeout.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Timeout.h
new file mode 100644
index 0000000..184ba16
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Timeout.h
@@ -0,0 +1,57 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(TimeoutAdditions)
+
+/**
+ Waits for a promise with the specified `timeout`.
+
+ @param interval Time to wait in seconds.
+ @return A new pending promise that gets either resolved with same resolution as the receiver or
+ rejected with `FBLPromiseErrorCodeTimedOut` error code in `FBLPromiseErrorDomain`.
+ */
+- (FBLPromise *)timeout:(NSTimeInterval)interval NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Waits for a promise with the specified `timeout`.
+
+ @param queue A queue to dispatch on.
+ @param interval Time to wait in seconds.
+ @return A new pending promise that gets either resolved with same resolution as the receiver or
+ rejected with `FBLPromiseErrorCodeTimedOut` error code in `FBLPromiseErrorDomain`.
+ */
+- (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ timeout:(NSTimeInterval)interval NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `timeout` operators.
+ Usage: promise.timeout(...)
+ */
+@interface FBLPromise(DotSyntax_TimeoutAdditions)
+
+- (FBLPromise* (^)(NSTimeInterval))timeout FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
+- (FBLPromise* (^)(dispatch_queue_t, NSTimeInterval))timeoutOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Validate.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Validate.h
new file mode 100644
index 0000000..9dfa2f1
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Validate.h
@@ -0,0 +1,60 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(ValidateAdditions)
+
+typedef BOOL (^FBLPromiseValidateWorkBlock)(Value __nullable value) NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Validates a fulfilled value or rejects the value if it can not be validated.
+
+ @param predicate An expression to validate.
+ @return A new pending promise that gets either resolved with same resolution as the receiver or
+ rejected with `FBLPromiseErrorCodeValidationFailure` error code in `FBLPromiseErrorDomain`.
+ */
+- (FBLPromise *)validate:(FBLPromiseValidateWorkBlock)predicate NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Validates a fulfilled value or rejects the value if it can not be validated.
+
+ @param queue A queue to dispatch on.
+ @param predicate An expression to validate.
+ @return A new pending promise that gets either resolved with same resolution as the receiver or
+ rejected with `FBLPromiseErrorCodeValidationFailure` error code in `FBLPromiseErrorDomain`.
+ */
+- (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ validate:(FBLPromiseValidateWorkBlock)predicate NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `validate` operators.
+ Usage: promise.validate(^BOOL(id value) { ... })
+ */
+@interface FBLPromise(DotSyntax_ValidateAdditions)
+
+- (FBLPromise * (^)(FBLPromiseValidateWorkBlock))validate FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+- (FBLPromise * (^)(dispatch_queue_t, FBLPromiseValidateWorkBlock))validateOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Wrap.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Wrap.h
new file mode 100644
index 0000000..664e1bb
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise+Wrap.h
@@ -0,0 +1,316 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Different types of completion handlers available to be wrapped with promise.
+ */
+typedef void (^FBLPromiseCompletion)(void) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseObjectCompletion)(id __nullable) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseErrorCompletion)(NSError* __nullable) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseObjectOrErrorCompletion)(id __nullable, NSError* __nullable)
+ NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseErrorOrObjectCompletion)(NSError* __nullable, id __nullable)
+ NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromise2ObjectsOrErrorCompletion)(id __nullable, id __nullable,
+ NSError* __nullable) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseBoolCompletion)(BOOL) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseBoolOrErrorCompletion)(BOOL, NSError* __nullable) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseIntegerCompletion)(NSInteger) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseIntegerOrErrorCompletion)(NSInteger, NSError* __nullable)
+ NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseDoubleCompletion)(double) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseDoubleOrErrorCompletion)(double, NSError* __nullable)
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Provides an easy way to convert methods that use common callback patterns into promises.
+ */
+@interface FBLPromise(WrapAdditions)
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with `nil` when completion handler is invoked.
+ */
++ (instancetype)wrapCompletion:(void (^)(FBLPromiseCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with `nil` when completion handler is invoked.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ wrapCompletion:(void (^)(FBLPromiseCompletion handler))work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an object provided by completion handler.
+ */
++ (instancetype)wrapObjectCompletion:(void (^)(FBLPromiseObjectCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an object provided by completion handler.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ wrapObjectCompletion:(void (^)(FBLPromiseObjectCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an error provided by completion handler.
+ If error is `nil`, fulfills with `nil`, otherwise rejects with the error.
+ */
++ (instancetype)wrapErrorCompletion:(void (^)(FBLPromiseErrorCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an error provided by completion handler.
+ If error is `nil`, fulfills with `nil`, otherwise rejects with the error.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ wrapErrorCompletion:(void (^)(FBLPromiseErrorCompletion handler))work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an object provided by completion handler if error is `nil`.
+ Otherwise, rejects with the error.
+ */
++ (instancetype)wrapObjectOrErrorCompletion:
+ (void (^)(FBLPromiseObjectOrErrorCompletion handler))work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an object provided by completion handler if error is `nil`.
+ Otherwise, rejects with the error.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ wrapObjectOrErrorCompletion:(void (^)(FBLPromiseObjectOrErrorCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an error or object provided by completion handler. If error
+ is not `nil`, rejects with the error.
+ */
++ (instancetype)wrapErrorOrObjectCompletion:
+ (void (^)(FBLPromiseErrorOrObjectCompletion handler))work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an error or object provided by completion handler. If error
+ is not `nil`, rejects with the error.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ wrapErrorOrObjectCompletion:(void (^)(FBLPromiseErrorOrObjectCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an array of objects provided by completion handler in order
+ if error is `nil`. Otherwise, rejects with the error.
+ */
++ (FBLPromise*)wrap2ObjectsOrErrorCompletion:
+ (void (^)(FBLPromise2ObjectsOrErrorCompletion handler))work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an array of objects provided by completion handler in order
+ if error is `nil`. Otherwise, rejects with the error.
+ */
++ (FBLPromise*)onQueue:(dispatch_queue_t)queue
+ wrap2ObjectsOrErrorCompletion:(void (^)(FBLPromise2ObjectsOrErrorCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping YES/NO.
+ */
++ (FBLPromise*)wrapBoolCompletion:(void (^)(FBLPromiseBoolCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping YES/NO.
+ */
++ (FBLPromise*)onQueue:(dispatch_queue_t)queue
+ wrapBoolCompletion:(void (^)(FBLPromiseBoolCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping YES/NO when error is `nil`.
+ Otherwise rejects with the error.
+ */
++ (FBLPromise*)wrapBoolOrErrorCompletion:
+ (void (^)(FBLPromiseBoolOrErrorCompletion handler))work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping YES/NO when error is `nil`.
+ Otherwise rejects with the error.
+ */
++ (FBLPromise*)onQueue:(dispatch_queue_t)queue
+ wrapBoolOrErrorCompletion:(void (^)(FBLPromiseBoolOrErrorCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping an integer.
+ */
++ (FBLPromise*)wrapIntegerCompletion:(void (^)(FBLPromiseIntegerCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping an integer.
+ */
++ (FBLPromise*)onQueue:(dispatch_queue_t)queue
+ wrapIntegerCompletion:(void (^)(FBLPromiseIntegerCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping an integer when error is `nil`.
+ Otherwise rejects with the error.
+ */
++ (FBLPromise*)wrapIntegerOrErrorCompletion:
+ (void (^)(FBLPromiseIntegerOrErrorCompletion handler))work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping an integer when error is `nil`.
+ Otherwise rejects with the error.
+ */
++ (FBLPromise*)onQueue:(dispatch_queue_t)queue
+ wrapIntegerOrErrorCompletion:(void (^)(FBLPromiseIntegerOrErrorCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping a double.
+ */
++ (FBLPromise*)wrapDoubleCompletion:(void (^)(FBLPromiseDoubleCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping a double.
+ */
++ (FBLPromise*)onQueue:(dispatch_queue_t)queue
+ wrapDoubleCompletion:(void (^)(FBLPromiseDoubleCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping a double when error is `nil`.
+ Otherwise rejects with the error.
+ */
++ (FBLPromise*)wrapDoubleOrErrorCompletion:
+ (void (^)(FBLPromiseDoubleOrErrorCompletion handler))work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping a double when error is `nil`.
+ Otherwise rejects with the error.
+ */
++ (FBLPromise*)onQueue:(dispatch_queue_t)queue
+ wrapDoubleOrErrorCompletion:(void (^)(FBLPromiseDoubleOrErrorCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `wrap` operators.
+ Usage: FBLPromise.wrapCompletion(^(FBLPromiseCompletion handler) {...})
+ */
+@interface FBLPromise(DotSyntax_WrapAdditions)
+
++ (FBLPromise* (^)(void (^)(FBLPromiseCompletion)))wrapCompletion FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t, void (^)(FBLPromiseCompletion)))wrapCompletionOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromiseObjectCompletion)))wrapObjectCompletion
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t, void (^)(FBLPromiseObjectCompletion)))wrapObjectCompletionOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromiseErrorCompletion)))wrapErrorCompletion FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t, void (^)(FBLPromiseErrorCompletion)))wrapErrorCompletionOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromiseObjectOrErrorCompletion)))wrapObjectOrErrorCompletion
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t,
+ void (^)(FBLPromiseObjectOrErrorCompletion)))wrapObjectOrErrorCompletionOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromiseErrorOrObjectCompletion)))wrapErrorOrObjectCompletion
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t,
+ void (^)(FBLPromiseErrorOrObjectCompletion)))wrapErrorOrObjectCompletionOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromise2ObjectsOrErrorCompletion)))
+ wrap2ObjectsOrErrorCompletion FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t, void (^)(FBLPromise2ObjectsOrErrorCompletion)))
+ wrap2ObjectsOrErrorCompletionOn FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromiseBoolCompletion)))wrapBoolCompletion
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t,
+ void (^)(FBLPromiseBoolCompletion)))wrapBoolCompletionOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromiseBoolOrErrorCompletion)))wrapBoolOrErrorCompletion
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t,
+ void (^)(FBLPromiseBoolOrErrorCompletion)))wrapBoolOrErrorCompletionOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromiseIntegerCompletion)))wrapIntegerCompletion
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t,
+ void (^)(FBLPromiseIntegerCompletion)))wrapIntegerCompletionOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromiseIntegerOrErrorCompletion)))
+ wrapIntegerOrErrorCompletion FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t, void (^)(FBLPromiseIntegerOrErrorCompletion)))
+ wrapIntegerOrErrorCompletionOn FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromiseDoubleCompletion)))wrapDoubleCompletion
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t,
+ void (^)(FBLPromiseDoubleCompletion)))wrapDoubleCompletionOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(void (^)(FBLPromiseDoubleOrErrorCompletion)))
+ wrapDoubleOrErrorCompletion FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t, void (^)(FBLPromiseDoubleOrErrorCompletion)))
+ wrapDoubleOrErrorCompletionOn FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise.h
new file mode 100644
index 0000000..b1380dc
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromise.h
@@ -0,0 +1,93 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromiseError.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Promises synchronization construct in Objective-C.
+ */
+@interface FBLPromise<__covariant Value> : NSObject
+
+/**
+ Default dispatch queue used for `FBLPromise`, which is `main` if a queue is not specified.
+ */
+@property(class) dispatch_queue_t defaultDispatchQueue NS_REFINED_FOR_SWIFT;
+
+/**
+ Creates a pending promise.
+ */
++ (instancetype)pendingPromise NS_REFINED_FOR_SWIFT;
+
+/**
+ Creates a resolved promise.
+
+ @param resolution An object to resolve the promise with: either a value or an error.
+ @return A new resolved promise.
+ */
++ (instancetype)resolvedWith:(nullable id)resolution NS_REFINED_FOR_SWIFT;
+
+/**
+ Synchronously fulfills the promise with a value.
+
+ @param value An arbitrary value to fulfill the promise with, including `nil`.
+ */
+- (void)fulfill:(nullable Value)value NS_REFINED_FOR_SWIFT;
+
+/**
+ Synchronously rejects the promise with an error.
+
+ @param error An error to reject the promise with.
+ */
+- (void)reject:(NSError *)error NS_REFINED_FOR_SWIFT;
+
++ (instancetype)new NS_UNAVAILABLE;
+- (instancetype)init NS_UNAVAILABLE;
+@end
+
+@interface FBLPromise()
+
+/**
+ Adds an object to the set of pending objects to keep strongly while the promise is pending.
+ Used by the Swift wrappers to keep them alive until the underlying ObjC promise is resolved.
+
+ @param object An object to add.
+ */
+- (void)addPendingObject:(id)object NS_REFINED_FOR_SWIFT;
+
+@end
+
+#ifdef FBL_PROMISES_DOT_SYNTAX_IS_DEPRECATED
+#define FBL_PROMISES_DOT_SYNTAX __attribute__((deprecated))
+#else
+#define FBL_PROMISES_DOT_SYNTAX
+#endif
+
+@interface FBLPromise(DotSyntaxAdditions)
+
+/**
+ Convenience dot-syntax wrappers for FBLPromise.
+ Usage: FBLPromise.pending()
+ FBLPromise.resolved(value)
+
+ */
++ (instancetype (^)(void))pending FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (instancetype (^)(id __nullable))resolved FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromiseError.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromiseError.h
new file mode 100644
index 0000000..d37af53
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromiseError.h
@@ -0,0 +1,43 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import
+
+NS_ASSUME_NONNULL_BEGIN
+
+FOUNDATION_EXTERN NSErrorDomain const FBLPromiseErrorDomain NS_REFINED_FOR_SWIFT;
+
+/**
+ Possible error codes in `FBLPromiseErrorDomain`.
+ */
+typedef NS_ENUM(NSInteger, FBLPromiseErrorCode) {
+ /** Promise failed to resolve in time. */
+ FBLPromiseErrorCodeTimedOut = 1,
+ /** Validation predicate returned false. */
+ FBLPromiseErrorCodeValidationFailure = 2,
+} NS_REFINED_FOR_SWIFT;
+
+NS_INLINE BOOL FBLPromiseErrorIsTimedOut(NSError *error) NS_SWIFT_UNAVAILABLE("") {
+ return error.domain == FBLPromiseErrorDomain &&
+ error.code == FBLPromiseErrorCodeTimedOut;
+}
+
+NS_INLINE BOOL FBLPromiseErrorIsValidationFailure(NSError *error) NS_SWIFT_UNAVAILABLE("") {
+ return error.domain == FBLPromiseErrorDomain &&
+ error.code == FBLPromiseErrorCodeValidationFailure;
+}
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromises.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromises.h
new file mode 100644
index 0000000..2d90bad
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/FBLPromises.h
@@ -0,0 +1,32 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise+All.h"
+#import "FBLPromise+Always.h"
+#import "FBLPromise+Any.h"
+#import "FBLPromise+Async.h"
+#import "FBLPromise+Await.h"
+#import "FBLPromise+Catch.h"
+#import "FBLPromise+Delay.h"
+#import "FBLPromise+Do.h"
+#import "FBLPromise+Race.h"
+#import "FBLPromise+Recover.h"
+#import "FBLPromise+Reduce.h"
+#import "FBLPromise+Retry.h"
+#import "FBLPromise+Then.h"
+#import "FBLPromise+Timeout.h"
+#import "FBLPromise+Validate.h"
+#import "FBLPromise+Wrap.h"
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/PromisesObjC-umbrella.h b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/PromisesObjC-umbrella.h
new file mode 100644
index 0000000..5b014a8
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Headers/PromisesObjC-umbrella.h
@@ -0,0 +1,36 @@
+#ifdef __OBJC__
+#import
+#else
+#ifndef FOUNDATION_EXPORT
+#if defined(__cplusplus)
+#define FOUNDATION_EXPORT extern "C"
+#else
+#define FOUNDATION_EXPORT extern
+#endif
+#endif
+#endif
+
+#import "FBLPromise+All.h"
+#import "FBLPromise+Always.h"
+#import "FBLPromise+Any.h"
+#import "FBLPromise+Async.h"
+#import "FBLPromise+Await.h"
+#import "FBLPromise+Catch.h"
+#import "FBLPromise+Delay.h"
+#import "FBLPromise+Do.h"
+#import "FBLPromise+Race.h"
+#import "FBLPromise+Recover.h"
+#import "FBLPromise+Reduce.h"
+#import "FBLPromise+Retry.h"
+#import "FBLPromise+Testing.h"
+#import "FBLPromise+Then.h"
+#import "FBLPromise+Timeout.h"
+#import "FBLPromise+Validate.h"
+#import "FBLPromise+Wrap.h"
+#import "FBLPromise.h"
+#import "FBLPromiseError.h"
+#import "FBLPromises.h"
+
+FOUNDATION_EXPORT double FBLPromisesVersionNumber;
+FOUNDATION_EXPORT const unsigned char FBLPromisesVersionString[];
+
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Info.plist b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Info.plist
new file mode 100644
index 0000000..a963a05
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Info.plist
@@ -0,0 +1,20 @@
+
+
+
+
+ CFBundleExecutable
+ FBLPromises
+ CFBundleIdentifier
+ com.firebase.Firebase-FBLPromises
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ FBLPromises
+ CFBundlePackageType
+ FMWK
+ CFBundleVersion
+ 2.2.0
+ DTSDKName
+ iphonesimulator11.2
+
+
diff --git a/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Modules/module.modulemap b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Modules/module.modulemap
new file mode 100644
index 0000000..bd7b48e
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/ios-arm64_x86_64-simulator/FBLPromises.framework/Modules/module.modulemap
@@ -0,0 +1,5 @@
+framework module PromisesObjC {
+umbrella header "PromisesObjC-umbrella.h"
+export *
+module * { export * }
+}
diff --git a/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/FBLPromises b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/FBLPromises
new file mode 100644
index 0000000..37867fb
Binary files /dev/null and b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/FBLPromises differ
diff --git a/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+All.h b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+All.h
new file mode 100644
index 0000000..9c0090e
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+All.h
@@ -0,0 +1,63 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(AllAdditions)
+
+/**
+ Wait until all of the given promises are fulfilled.
+ If one of the given promises is rejected, then the returned promise is rejected with same error.
+ If any other arbitrary value or `NSError` appears in the array instead of `FBLPromise`,
+ it's implicitly considered a pre-fulfilled or pre-rejected `FBLPromise` correspondingly.
+ Promises resolved with `nil` become `NSNull` instances in the resulting array.
+
+ @param promises Promises to wait for.
+ @return Promise of an array containing the values of input promises in the same order.
+ */
++ (FBLPromise *)all:(NSArray *)promises NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Wait until all of the given promises are fulfilled.
+ If one of the given promises is rejected, then the returned promise is rejected with same error.
+ If any other arbitrary value or `NSError` appears in the array instead of `FBLPromise`,
+ it's implicitly considered a pre-fulfilled or pre-rejected FBLPromise correspondingly.
+ Promises resolved with `nil` become `NSNull` instances in the resulting array.
+
+ @param queue A queue to dispatch on.
+ @param promises Promises to wait for.
+ @return Promise of an array containing the values of input promises in the same order.
+ */
++ (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ all:(NSArray *)promises NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `all` operators.
+ Usage: FBLPromise.all(@[ ... ])
+ */
+@interface FBLPromise(DotSyntax_AllAdditions)
+
++ (FBLPromise * (^)(NSArray *))all FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise * (^)(dispatch_queue_t, NSArray *))allOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Always.h b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Always.h
new file mode 100644
index 0000000..13000f5
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Always.h
@@ -0,0 +1,54 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(AlwaysAdditions)
+
+typedef void (^FBLPromiseAlwaysWorkBlock)(void) NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block that always executes, no matter if the receiver is rejected or fulfilled.
+ @return A new pending promise to be resolved with same resolution as the receiver.
+ */
+- (FBLPromise *)always:(FBLPromiseAlwaysWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to dispatch on.
+ @param work A block that always executes, no matter if the receiver is rejected or fulfilled.
+ @return A new pending promise to be resolved with same resolution as the receiver.
+ */
+- (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ always:(FBLPromiseAlwaysWorkBlock)work NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `always` operators.
+ Usage: promise.always(^{...})
+ */
+@interface FBLPromise(DotSyntax_AlwaysAdditions)
+
+- (FBLPromise* (^)(FBLPromiseAlwaysWorkBlock))always FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+- (FBLPromise* (^)(dispatch_queue_t, FBLPromiseAlwaysWorkBlock))alwaysOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Any.h b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Any.h
new file mode 100644
index 0000000..82875bf
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Any.h
@@ -0,0 +1,69 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(AnyAdditions)
+
+/**
+ Waits until all of the given promises are either fulfilled or rejected.
+ If all promises are rejected, then the returned promise is rejected with same error
+ as the last one rejected.
+ If at least one of the promises is fulfilled, the resulting promise is fulfilled with an array of
+ values or `NSErrors`, matching the original order of fulfilled or rejected promises respectively.
+ If any other arbitrary value or `NSError` appears in the array instead of `FBLPromise`,
+ it's implicitly considered a pre-fulfilled or pre-rejected `FBLPromise` correspondingly.
+ Promises resolved with `nil` become `NSNull` instances in the resulting array.
+
+ @param promises Promises to wait for.
+ @return Promise of array containing the values or `NSError`s of input promises in the same order.
+ */
++ (FBLPromise *)any:(NSArray *)promises NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Waits until all of the given promises are either fulfilled or rejected.
+ If all promises are rejected, then the returned promise is rejected with same error
+ as the last one rejected.
+ If at least one of the promises is fulfilled, the resulting promise is fulfilled with an array of
+ values or `NSError`s, matching the original order of fulfilled or rejected promises respectively.
+ If any other arbitrary value or `NSError` appears in the array instead of `FBLPromise`,
+ it's implicitly considered a pre-fulfilled or pre-rejected `FBLPromise` correspondingly.
+ Promises resolved with `nil` become `NSNull` instances in the resulting array.
+
+ @param queue A queue to dispatch on.
+ @param promises Promises to wait for.
+ @return Promise of array containing the values or `NSError`s of input promises in the same order.
+ */
++ (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ any:(NSArray *)promises NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `any` operators.
+ Usage: FBLPromise.any(@[ ... ])
+ */
+@interface FBLPromise(DotSyntax_AnyAdditions)
+
++ (FBLPromise * (^)(NSArray *))any FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise * (^)(dispatch_queue_t, NSArray *))anyOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Async.h b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Async.h
new file mode 100644
index 0000000..0588a9e
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Async.h
@@ -0,0 +1,60 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(AsyncAdditions)
+
+typedef void (^FBLPromiseFulfillBlock)(Value __nullable value) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseRejectBlock)(NSError *error) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseAsyncWorkBlock)(FBLPromiseFulfillBlock fulfill,
+ FBLPromiseRejectBlock reject) NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise and executes `work` block asynchronously.
+
+ @param work A block to perform any operations needed to resolve the promise.
+ @return A new pending promise.
+ */
++ (instancetype)async:(FBLPromiseAsyncWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise and executes `work` block asynchronously on the given queue.
+
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @return A new pending promise.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ async:(FBLPromiseAsyncWorkBlock)work NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `async` operators.
+ Usage: FBLPromise.async(^(FBLPromiseFulfillBlock fulfill, FBLPromiseRejectBlock reject) { ... })
+ */
+@interface FBLPromise(DotSyntax_AsyncAdditions)
+
++ (FBLPromise* (^)(FBLPromiseAsyncWorkBlock))async FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise* (^)(dispatch_queue_t, FBLPromiseAsyncWorkBlock))asyncOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Await.h b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Await.h
new file mode 100644
index 0000000..c97a1ba
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Await.h
@@ -0,0 +1,32 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Waits for promise resolution. The current thread blocks until the promise is resolved.
+
+ @param promise Promise to wait for.
+ @param error Error the promise was rejected with, or `nil` if the promise was fulfilled.
+ @return Value the promise was fulfilled with. If the promise was rejected, the return value
+ is always `nil`, but the error out arg is not.
+ */
+FOUNDATION_EXTERN id __nullable FBLPromiseAwait(FBLPromise *promise,
+ NSError **error) NS_REFINED_FOR_SWIFT;
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Catch.h b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Catch.h
new file mode 100644
index 0000000..a9ff170
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Catch.h
@@ -0,0 +1,59 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(CatchAdditions)
+
+typedef void (^FBLPromiseCatchWorkBlock)(NSError *error) NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise which eventually gets resolved with same resolution as the receiver.
+ If receiver is rejected, then `reject` block is executed asynchronously.
+
+ @param reject A block to handle the error that receiver was rejected with.
+ @return A new pending promise.
+ */
+- (FBLPromise *)catch:(FBLPromiseCatchWorkBlock)reject NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise which eventually gets resolved with same resolution as the receiver.
+ If receiver is rejected, then `reject` block is executed asynchronously on the given queue.
+
+ @param queue A queue to invoke the `reject` block on.
+ @param reject A block to handle the error that receiver was rejected with.
+ @return A new pending promise.
+ */
+- (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ catch:(FBLPromiseCatchWorkBlock)reject NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `catch` operators.
+ Usage: promise.catch(^(NSError *error) { ... })
+ */
+@interface FBLPromise(DotSyntax_CatchAdditions)
+
+- (FBLPromise* (^)(FBLPromiseCatchWorkBlock))catch FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
+- (FBLPromise* (^)(dispatch_queue_t, FBLPromiseCatchWorkBlock))catchOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Delay.h b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Delay.h
new file mode 100644
index 0000000..557df48
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Delay.h
@@ -0,0 +1,59 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(DelayAdditions)
+
+/**
+ Creates a new pending promise that fulfills with the same value as `self` after the `delay`, or
+ rejects with the same error immediately.
+
+ @param interval Time to wait in seconds.
+ @return A new pending promise that fulfills at least `delay` seconds later than `self`, or rejects
+ with the same error immediately.
+ */
+- (FBLPromise *)delay:(NSTimeInterval)interval NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a new pending promise that fulfills with the same value as `self` after the `delay`, or
+ rejects with the same error immediately.
+
+ @param queue A queue to dispatch on.
+ @param interval Time to wait in seconds.
+ @return A new pending promise that fulfills at least `delay` seconds later than `self`, or rejects
+ with the same error immediately.
+ */
+- (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ delay:(NSTimeInterval)interval NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `delay` operators.
+ Usage: promise.delay(...)
+ */
+@interface FBLPromise(DotSyntax_DelayAdditions)
+
+- (FBLPromise * (^)(NSTimeInterval))delay FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
+- (FBLPromise * (^)(dispatch_queue_t, NSTimeInterval))delayOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Do.h b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Do.h
new file mode 100644
index 0000000..6838e0a
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Do.h
@@ -0,0 +1,55 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(DoAdditions)
+
+typedef id __nullable (^FBLPromiseDoWorkBlock)(void) NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise and executes `work` block asynchronously.
+
+ @param work A block that returns a value or an error used to resolve the promise.
+ @return A new pending promise.
+ */
++ (instancetype)do:(FBLPromiseDoWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise and executes `work` block asynchronously on the given queue.
+
+ @param queue A queue to invoke the `work` block on.
+ @param work A block that returns a value or an error used to resolve the promise.
+ @return A new pending promise.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue do:(FBLPromiseDoWorkBlock)work NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `do` operators.
+ Usage: FBLPromise.doOn(queue, ^(NSError *error) { ... })
+ */
+@interface FBLPromise(DotSyntax_DoAdditions)
+
++ (FBLPromise * (^)(dispatch_queue_t, FBLPromiseDoWorkBlock))doOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Race.h b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Race.h
new file mode 100644
index 0000000..2f67258
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Race.h
@@ -0,0 +1,62 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(RaceAdditions)
+
+/**
+ Wait until any of the given promises are fulfilled.
+ If one of the promises is rejected, then the returned promise is rejected with same error.
+ If any other arbitrary value or `NSError` appears in the array instead of `FBLPromise`,
+ it's implicitly considered a pre-fulfilled or pre-rejected `FBLPromise` correspondingly.
+
+ @param promises Promises to wait for.
+ @return A new pending promise to be resolved with the same resolution as the first promise, among
+ the given ones, which was resolved.
+ */
++ (instancetype)race:(NSArray *)promises NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Wait until any of the given promises are fulfilled.
+ If one of the promises is rejected, then the returned promise is rejected with same error.
+ If any other arbitrary value or `NSError` appears in the array instead of `FBLPromise`,
+ it's implicitly considered a pre-fulfilled or pre-rejected `FBLPromise` correspondingly.
+
+ @param queue A queue to dispatch on.
+ @param promises Promises to wait for.
+ @return A new pending promise to be resolved with the same resolution as the first promise, among
+ the given ones, which was resolved.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue race:(NSArray *)promises NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `race` operators.
+ Usage: FBLPromise.race(@[ ... ])
+ */
+@interface FBLPromise(DotSyntax_RaceAdditions)
+
++ (FBLPromise * (^)(NSArray *))race FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise * (^)(dispatch_queue_t, NSArray *))raceOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Recover.h b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Recover.h
new file mode 100644
index 0000000..bb7df7e
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Recover.h
@@ -0,0 +1,60 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(RecoverAdditions)
+
+typedef id __nullable (^FBLPromiseRecoverWorkBlock)(NSError *error) NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Provides a new promise to recover in case the receiver gets rejected.
+
+ @param recovery A block to handle the error that the receiver was rejected with.
+ @return A new pending promise to use instead of the rejected one that gets resolved with resolution
+ returned from `recovery` block.
+ */
+- (FBLPromise *)recover:(FBLPromiseRecoverWorkBlock)recovery NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Provides a new promise to recover in case the receiver gets rejected.
+
+ @param queue A queue to dispatch on.
+ @param recovery A block to handle the error that the receiver was rejected with.
+ @return A new pending promise to use instead of the rejected one that gets resolved with resolution
+ returned from `recovery` block.
+ */
+- (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ recover:(FBLPromiseRecoverWorkBlock)recovery NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `recover` operators.
+ Usage: promise.recover(^id(NSError *error) {...})
+ */
+@interface FBLPromise(DotSyntax_RecoverAdditions)
+
+- (FBLPromise * (^)(FBLPromiseRecoverWorkBlock))recover FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+- (FBLPromise * (^)(dispatch_queue_t, FBLPromiseRecoverWorkBlock))recoverOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Reduce.h b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Reduce.h
new file mode 100644
index 0000000..5bb1eee
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Reduce.h
@@ -0,0 +1,71 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(ReduceAdditions)
+
+typedef id __nullable (^FBLPromiseReducerBlock)(Value __nullable partial, id next)
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Sequentially reduces a collection of values to a single promise using a given combining block
+ and the value `self` resolves with as initial value.
+
+ @param items An array of values to process in order.
+ @param reducer A block to combine an accumulating value and an element of the sequence into
+ the new accumulating value or a promise resolved with it, to be used in the next
+ call of the `reducer` or returned to the caller.
+ @return A new pending promise returned from the last `reducer` invocation.
+ Or `self` if `items` is empty.
+ */
+- (FBLPromise *)reduce:(NSArray *)items
+ combine:(FBLPromiseReducerBlock)reducer NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Sequentially reduces a collection of values to a single promise using a given combining block
+ and the value `self` resolves with as initial value.
+
+ @param queue A queue to dispatch on.
+ @param items An array of values to process in order.
+ @param reducer A block to combine an accumulating value and an element of the sequence into
+ the new accumulating value or a promise resolved with it, to be used in the next
+ call of the `reducer` or returned to the caller.
+ @return A new pending promise returned from the last `reducer` invocation.
+ Or `self` if `items` is empty.
+ */
+- (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ reduce:(NSArray *)items
+ combine:(FBLPromiseReducerBlock)reducer NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `reduce` operators.
+ Usage: promise.reduce(values, ^id(id partial, id next) { ... })
+ */
+@interface FBLPromise(DotSyntax_ReduceAdditions)
+
+- (FBLPromise * (^)(NSArray *, FBLPromiseReducerBlock))reduce FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+- (FBLPromise * (^)(dispatch_queue_t, NSArray *, FBLPromiseReducerBlock))reduceOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Retry.h b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Retry.h
new file mode 100644
index 0000000..414a17a
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Retry.h
@@ -0,0 +1,165 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/** The default number of retry attempts is 1. */
+FOUNDATION_EXTERN NSInteger const FBLPromiseRetryDefaultAttemptsCount NS_REFINED_FOR_SWIFT;
+
+/** The default delay interval before making a retry attempt is 1.0 second. */
+FOUNDATION_EXTERN NSTimeInterval const FBLPromiseRetryDefaultDelayInterval NS_REFINED_FOR_SWIFT;
+
+@interface FBLPromise(RetryAdditions)
+
+typedef id __nullable (^FBLPromiseRetryWorkBlock)(void) NS_SWIFT_UNAVAILABLE("");
+typedef BOOL (^FBLPromiseRetryPredicateBlock)(NSInteger, NSError *) NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise that fulfills with the same value as the promise returned from `work`
+ block, which executes asynchronously, or rejects with the same error after all retry attempts have
+ been exhausted. Defaults to `FBLPromiseRetryDefaultAttemptsCount` attempt(s) on rejection where the
+ `work` block is retried after a delay of `FBLPromiseRetryDefaultDelayInterval` second(s).
+
+ @param work A block that executes asynchronously on the default queue and returns a value or an
+ error used to resolve the promise.
+ @return A new pending promise that fulfills with the same value as the promise returned from `work`
+ block, or rejects with the same error after all retry attempts have been exhausted.
+ */
++ (instancetype)retry:(FBLPromiseRetryWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise that fulfills with the same value as the promise returned from `work`
+ block, which executes asynchronously on the given `queue`, or rejects with the same error after all
+ retry attempts have been exhausted. Defaults to `FBLPromiseRetryDefaultAttemptsCount` attempt(s) on
+ rejection where the `work` block is retried on the given `queue` after a delay of
+ `FBLPromiseRetryDefaultDelayInterval` second(s).
+
+ @param queue A queue to invoke the `work` block on.
+ @param work A block that executes asynchronously on the given `queue` and returns a value or an
+ error used to resolve the promise.
+ @return A new pending promise that fulfills with the same value as the promise returned from `work`
+ block, or rejects with the same error after all retry attempts have been exhausted.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ retry:(FBLPromiseRetryWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise that fulfills with the same value as the promise returned from `work`
+ block, which executes asynchronously, or rejects with the same error after all retry attempts have
+ been exhausted.
+
+ @param count Max number of retry attempts. The `work` block will be executed once if the specified
+ count is less than or equal to zero.
+ @param work A block that executes asynchronously on the default queue and returns a value or an
+ error used to resolve the promise.
+ @return A new pending promise that fulfills with the same value as the promise returned from `work`
+ block, or rejects with the same error after all retry attempts have been exhausted.
+ */
++ (instancetype)attempts:(NSInteger)count
+ retry:(FBLPromiseRetryWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise that fulfills with the same value as the promise returned from `work`
+ block, which executes asynchronously on the given `queue`, or rejects with the same error after all
+ retry attempts have been exhausted.
+
+ @param queue A queue to invoke the `work` block on.
+ @param count Max number of retry attempts. The `work` block will be executed once if the specified
+ count is less than or equal to zero.
+ @param work A block that executes asynchronously on the given `queue` and returns a value or an
+ error used to resolve the promise.
+ @return A new pending promise that fulfills with the same value as the promise returned from `work`
+ block, or rejects with the same error after all retry attempts have been exhausted.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ attempts:(NSInteger)count
+ retry:(FBLPromiseRetryWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise that fulfills with the same value as the promise returned from `work`
+ block, which executes asynchronously, or rejects with the same error after all retry attempts have
+ been exhausted. On rejection, the `work` block is retried after the given delay `interval` and will
+ continue to retry until the number of specified attempts have been exhausted or will bail early if
+ the given condition is not met.
+
+ @param count Max number of retry attempts. The `work` block will be executed once if the specified
+ count is less than or equal to zero.
+ @param interval Time to wait before the next retry attempt.
+ @param predicate Condition to check before the next retry attempt. The predicate block provides the
+ the number of remaining retry attempts and the error that the promise was rejected
+ with.
+ @param work A block that executes asynchronously on the default queue and returns a value or an
+ error used to resolve the promise.
+ @return A new pending promise that fulfills with the same value as the promise returned from `work`
+ block, or rejects with the same error after all retry attempts have been exhausted or if
+ the given condition is not met.
+ */
++ (instancetype)attempts:(NSInteger)count
+ delay:(NSTimeInterval)interval
+ condition:(nullable FBLPromiseRetryPredicateBlock)predicate
+ retry:(FBLPromiseRetryWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise that fulfills with the same value as the promise returned from `work`
+ block, which executes asynchronously on the given `queue`, or rejects with the same error after all
+ retry attempts have been exhausted. On rejection, the `work` block is retried after the given
+ delay `interval` and will continue to retry until the number of specified attempts have been
+ exhausted or will bail early if the given condition is not met.
+
+ @param queue A queue to invoke the `work` block on.
+ @param count Max number of retry attempts. The `work` block will be executed once if the specified
+ count is less than or equal to zero.
+ @param interval Time to wait before the next retry attempt.
+ @param predicate Condition to check before the next retry attempt. The predicate block provides the
+ the number of remaining retry attempts and the error that the promise was rejected
+ with.
+ @param work A block that executes asynchronously on the given `queue` and returns a value or an
+ error used to resolve the promise.
+ @return A new pending promise that fulfills with the same value as the promise returned from `work`
+ block, or rejects with the same error after all retry attempts have been exhausted or if
+ the given condition is not met.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ attempts:(NSInteger)count
+ delay:(NSTimeInterval)interval
+ condition:(nullable FBLPromiseRetryPredicateBlock)predicate
+ retry:(FBLPromiseRetryWorkBlock)work NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise+Retry` operators.
+ Usage: FBLPromise.retry(^id { ... })
+ */
+@interface FBLPromise(DotSyntax_RetryAdditions)
+
++ (FBLPromise * (^)(FBLPromiseRetryWorkBlock))retry FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise * (^)(dispatch_queue_t, FBLPromiseRetryWorkBlock))retryOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise * (^)(NSInteger, NSTimeInterval, FBLPromiseRetryPredicateBlock __nullable,
+ FBLPromiseRetryWorkBlock))retryAgain FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
++ (FBLPromise * (^)(dispatch_queue_t, NSInteger, NSTimeInterval,
+ FBLPromiseRetryPredicateBlock __nullable,
+ FBLPromiseRetryWorkBlock))retryAgainOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Testing.h b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Testing.h
new file mode 100644
index 0000000..8478ae2
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Testing.h
@@ -0,0 +1,57 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Waits for all scheduled promises blocks.
+
+ @param timeout Maximum time to wait.
+ @return YES if all promises blocks have completed before the timeout and NO otherwise.
+ */
+FOUNDATION_EXTERN BOOL FBLWaitForPromisesWithTimeout(NSTimeInterval timeout) NS_REFINED_FOR_SWIFT;
+
+@interface FBLPromise(TestingAdditions)
+
+/**
+ Dispatch group for promises that is typically used to wait for all scheduled blocks.
+ */
+@property(class, nonatomic, readonly) dispatch_group_t dispatchGroup NS_REFINED_FOR_SWIFT;
+
+/**
+ Properties to get the current state of the promise.
+ */
+@property(nonatomic, readonly) BOOL isPending NS_REFINED_FOR_SWIFT;
+@property(nonatomic, readonly) BOOL isFulfilled NS_REFINED_FOR_SWIFT;
+@property(nonatomic, readonly) BOOL isRejected NS_REFINED_FOR_SWIFT;
+
+/**
+ Value the promise was fulfilled with.
+ Can be nil if the promise is still pending, was resolved with nil or after it has been rejected.
+ */
+@property(nonatomic, readonly, nullable) Value value NS_REFINED_FOR_SWIFT;
+
+/**
+ Error the promise was rejected with.
+ Can be nil if the promise is still pending or after it has been fulfilled.
+ */
+@property(nonatomic, readonly, nullable) NSError *error NS_REFINED_FOR_SWIFT;
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Then.h b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Then.h
new file mode 100644
index 0000000..32027e6
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Then.h
@@ -0,0 +1,63 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(ThenAdditions)
+
+typedef id __nullable (^FBLPromiseThenWorkBlock)(Value __nullable value) NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise which eventually gets resolved with resolution returned from `work`
+ block: either value, error or another promise. The `work` block is executed asynchronously only
+ when the receiver is fulfilled. If receiver is rejected, the returned promise is also rejected with
+ the same error.
+
+ @param work A block to handle the value that receiver was fulfilled with.
+ @return A new pending promise to be resolved with resolution returned from the `work` block.
+ */
+- (FBLPromise *)then:(FBLPromiseThenWorkBlock)work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Creates a pending promise which eventually gets resolved with resolution returned from `work`
+ block: either value, error or another promise. The `work` block is executed asynchronously when the
+ receiver is fulfilled. If receiver is rejected, the returned promise is also rejected with the same
+ error.
+
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to handle the value that receiver was fulfilled with.
+ @return A new pending promise to be resolved with resolution returned from the `work` block.
+ */
+- (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ then:(FBLPromiseThenWorkBlock)work NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `then` operators.
+ Usage: promise.then(^id(id value) { ... })
+ */
+@interface FBLPromise(DotSyntax_ThenAdditions)
+
+- (FBLPromise* (^)(FBLPromiseThenWorkBlock))then FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
+- (FBLPromise* (^)(dispatch_queue_t, FBLPromiseThenWorkBlock))thenOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Timeout.h b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Timeout.h
new file mode 100644
index 0000000..184ba16
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Timeout.h
@@ -0,0 +1,57 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(TimeoutAdditions)
+
+/**
+ Waits for a promise with the specified `timeout`.
+
+ @param interval Time to wait in seconds.
+ @return A new pending promise that gets either resolved with same resolution as the receiver or
+ rejected with `FBLPromiseErrorCodeTimedOut` error code in `FBLPromiseErrorDomain`.
+ */
+- (FBLPromise *)timeout:(NSTimeInterval)interval NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Waits for a promise with the specified `timeout`.
+
+ @param queue A queue to dispatch on.
+ @param interval Time to wait in seconds.
+ @return A new pending promise that gets either resolved with same resolution as the receiver or
+ rejected with `FBLPromiseErrorCodeTimedOut` error code in `FBLPromiseErrorDomain`.
+ */
+- (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ timeout:(NSTimeInterval)interval NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `timeout` operators.
+ Usage: promise.timeout(...)
+ */
+@interface FBLPromise(DotSyntax_TimeoutAdditions)
+
+- (FBLPromise* (^)(NSTimeInterval))timeout FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
+- (FBLPromise* (^)(dispatch_queue_t, NSTimeInterval))timeoutOn FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Validate.h b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Validate.h
new file mode 100644
index 0000000..9dfa2f1
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Validate.h
@@ -0,0 +1,60 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface FBLPromise(ValidateAdditions)
+
+typedef BOOL (^FBLPromiseValidateWorkBlock)(Value __nullable value) NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Validates a fulfilled value or rejects the value if it can not be validated.
+
+ @param predicate An expression to validate.
+ @return A new pending promise that gets either resolved with same resolution as the receiver or
+ rejected with `FBLPromiseErrorCodeValidationFailure` error code in `FBLPromiseErrorDomain`.
+ */
+- (FBLPromise *)validate:(FBLPromiseValidateWorkBlock)predicate NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Validates a fulfilled value or rejects the value if it can not be validated.
+
+ @param queue A queue to dispatch on.
+ @param predicate An expression to validate.
+ @return A new pending promise that gets either resolved with same resolution as the receiver or
+ rejected with `FBLPromiseErrorCodeValidationFailure` error code in `FBLPromiseErrorDomain`.
+ */
+- (FBLPromise *)onQueue:(dispatch_queue_t)queue
+ validate:(FBLPromiseValidateWorkBlock)predicate NS_REFINED_FOR_SWIFT;
+
+@end
+
+/**
+ Convenience dot-syntax wrappers for `FBLPromise` `validate` operators.
+ Usage: promise.validate(^BOOL(id value) { ... })
+ */
+@interface FBLPromise(DotSyntax_ValidateAdditions)
+
+- (FBLPromise * (^)(FBLPromiseValidateWorkBlock))validate FBL_PROMISES_DOT_SYNTAX
+ NS_SWIFT_UNAVAILABLE("");
+- (FBLPromise * (^)(dispatch_queue_t, FBLPromiseValidateWorkBlock))validateOn
+ FBL_PROMISES_DOT_SYNTAX NS_SWIFT_UNAVAILABLE("");
+
+@end
+
+NS_ASSUME_NONNULL_END
diff --git a/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Wrap.h b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Wrap.h
new file mode 100644
index 0000000..664e1bb
--- /dev/null
+++ b/ios/shared/FBLPromises.xcframework/macos-arm64_x86_64/FBLPromises.framework/Headers/FBLPromise+Wrap.h
@@ -0,0 +1,316 @@
+/**
+ Copyright 2018 Google Inc. All rights reserved.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at:
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+ */
+
+#import "FBLPromise.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+/**
+ Different types of completion handlers available to be wrapped with promise.
+ */
+typedef void (^FBLPromiseCompletion)(void) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseObjectCompletion)(id __nullable) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseErrorCompletion)(NSError* __nullable) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseObjectOrErrorCompletion)(id __nullable, NSError* __nullable)
+ NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseErrorOrObjectCompletion)(NSError* __nullable, id __nullable)
+ NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromise2ObjectsOrErrorCompletion)(id __nullable, id __nullable,
+ NSError* __nullable) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseBoolCompletion)(BOOL) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseBoolOrErrorCompletion)(BOOL, NSError* __nullable) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseIntegerCompletion)(NSInteger) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseIntegerOrErrorCompletion)(NSInteger, NSError* __nullable)
+ NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseDoubleCompletion)(double) NS_SWIFT_UNAVAILABLE("");
+typedef void (^FBLPromiseDoubleOrErrorCompletion)(double, NSError* __nullable)
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ Provides an easy way to convert methods that use common callback patterns into promises.
+ */
+@interface FBLPromise(WrapAdditions)
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with `nil` when completion handler is invoked.
+ */
++ (instancetype)wrapCompletion:(void (^)(FBLPromiseCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with `nil` when completion handler is invoked.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ wrapCompletion:(void (^)(FBLPromiseCompletion handler))work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an object provided by completion handler.
+ */
++ (instancetype)wrapObjectCompletion:(void (^)(FBLPromiseObjectCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an object provided by completion handler.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ wrapObjectCompletion:(void (^)(FBLPromiseObjectCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an error provided by completion handler.
+ If error is `nil`, fulfills with `nil`, otherwise rejects with the error.
+ */
++ (instancetype)wrapErrorCompletion:(void (^)(FBLPromiseErrorCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an error provided by completion handler.
+ If error is `nil`, fulfills with `nil`, otherwise rejects with the error.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ wrapErrorCompletion:(void (^)(FBLPromiseErrorCompletion handler))work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an object provided by completion handler if error is `nil`.
+ Otherwise, rejects with the error.
+ */
++ (instancetype)wrapObjectOrErrorCompletion:
+ (void (^)(FBLPromiseObjectOrErrorCompletion handler))work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an object provided by completion handler if error is `nil`.
+ Otherwise, rejects with the error.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ wrapObjectOrErrorCompletion:(void (^)(FBLPromiseObjectOrErrorCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an error or object provided by completion handler. If error
+ is not `nil`, rejects with the error.
+ */
++ (instancetype)wrapErrorOrObjectCompletion:
+ (void (^)(FBLPromiseErrorOrObjectCompletion handler))work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an error or object provided by completion handler. If error
+ is not `nil`, rejects with the error.
+ */
++ (instancetype)onQueue:(dispatch_queue_t)queue
+ wrapErrorOrObjectCompletion:(void (^)(FBLPromiseErrorOrObjectCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an array of objects provided by completion handler in order
+ if error is `nil`. Otherwise, rejects with the error.
+ */
++ (FBLPromise*)wrap2ObjectsOrErrorCompletion:
+ (void (^)(FBLPromise2ObjectsOrErrorCompletion handler))work NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an array of objects provided by completion handler in order
+ if error is `nil`. Otherwise, rejects with the error.
+ */
++ (FBLPromise*)onQueue:(dispatch_queue_t)queue
+ wrap2ObjectsOrErrorCompletion:(void (^)(FBLPromise2ObjectsOrErrorCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping YES/NO.
+ */
++ (FBLPromise*)wrapBoolCompletion:(void (^)(FBLPromiseBoolCompletion handler))work
+ NS_SWIFT_UNAVAILABLE("");
+
+/**
+ @param queue A queue to invoke the `work` block on.
+ @param work A block to perform any operations needed to resolve the promise.
+ @returns A promise that resolves with an `NSNumber` wrapping YES/NO.
+ */
++ (FBLPromise