diff --git a/Cargo.lock b/Cargo.lock
index 42fc9b5..69b164f 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -395,7 +395,7 @@ checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3"
[[package]]
name = "bitkitcore"
-version = "0.1.37"
+version = "0.1.38"
dependencies = [
"async-trait",
"base64 0.22.1",
diff --git a/Cargo.toml b/Cargo.toml
index b8494e7..9f09ea8 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "bitkitcore"
-version = "0.1.37"
+version = "0.1.38"
edition = "2021"
[lib]
diff --git a/Package.swift b/Package.swift
index 36f535a..5b9eb98 100644
--- a/Package.swift
+++ b/Package.swift
@@ -3,8 +3,8 @@
import PackageDescription
-let tag = "v0.1.37"
-let checksum = "f66b1041cb9adc4324ef2a6e78b698b6784c6c61c57a290c61f8dba393c34d74"
+let tag = "v0.1.38"
+let checksum = "9ce93a2e33d94842bfbe625314c6785410e34d187f9fe5af521daee4610f5eda"
let url = "https://github.com/synonymdev/bitkit-core/releases/download/\(tag)/BitkitCore.xcframework.zip"
let package = Package(
diff --git a/bindings/android/gradle.properties b/bindings/android/gradle.properties
index 86775b5..44812f0 100644
--- a/bindings/android/gradle.properties
+++ b/bindings/android/gradle.properties
@@ -3,4 +3,4 @@ android.useAndroidX=true
android.enableJetifier=true
kotlin.code.style=official
group=com.synonym
-version=0.1.37
+version=0.1.38
diff --git a/bindings/android/lib/src/main/jniLibs/arm64-v8a/libbitkitcore.so b/bindings/android/lib/src/main/jniLibs/arm64-v8a/libbitkitcore.so
index f6bbf0e..7b39d02 100755
Binary files a/bindings/android/lib/src/main/jniLibs/arm64-v8a/libbitkitcore.so and b/bindings/android/lib/src/main/jniLibs/arm64-v8a/libbitkitcore.so differ
diff --git a/bindings/android/lib/src/main/jniLibs/armeabi-v7a/libbitkitcore.so b/bindings/android/lib/src/main/jniLibs/armeabi-v7a/libbitkitcore.so
index 962c0cf..96236ed 100755
Binary files a/bindings/android/lib/src/main/jniLibs/armeabi-v7a/libbitkitcore.so and b/bindings/android/lib/src/main/jniLibs/armeabi-v7a/libbitkitcore.so differ
diff --git a/bindings/android/lib/src/main/jniLibs/x86/libbitkitcore.so b/bindings/android/lib/src/main/jniLibs/x86/libbitkitcore.so
index b92a02f..85e6b34 100755
Binary files a/bindings/android/lib/src/main/jniLibs/x86/libbitkitcore.so and b/bindings/android/lib/src/main/jniLibs/x86/libbitkitcore.so differ
diff --git a/bindings/android/lib/src/main/jniLibs/x86_64/libbitkitcore.so b/bindings/android/lib/src/main/jniLibs/x86_64/libbitkitcore.so
index 14c628c..138a39d 100755
Binary files a/bindings/android/lib/src/main/jniLibs/x86_64/libbitkitcore.so and b/bindings/android/lib/src/main/jniLibs/x86_64/libbitkitcore.so differ
diff --git a/bindings/ios/BitkitCore.xcframework.zip b/bindings/ios/BitkitCore.xcframework.zip
index b1fab62..512aa67 100644
Binary files a/bindings/ios/BitkitCore.xcframework.zip and b/bindings/ios/BitkitCore.xcframework.zip differ
diff --git a/bindings/ios/BitkitCore.xcframework/Info.plist b/bindings/ios/BitkitCore.xcframework/Info.plist
index b7357e0..478a88f 100644
--- a/bindings/ios/BitkitCore.xcframework/Info.plist
+++ b/bindings/ios/BitkitCore.xcframework/Info.plist
@@ -10,7 +10,7 @@
HeadersPath
Headers
LibraryIdentifier
- ios-arm64-simulator
+ ios-arm64
LibraryPath
libbitkitcore.a
SupportedArchitectures
@@ -19,8 +19,6 @@
SupportedPlatform
ios
- SupportedPlatformVariant
- simulator
BinaryPath
@@ -28,7 +26,7 @@
HeadersPath
Headers
LibraryIdentifier
- ios-arm64
+ ios-arm64-simulator
LibraryPath
libbitkitcore.a
SupportedArchitectures
@@ -37,6 +35,8 @@
SupportedPlatform
ios
+ SupportedPlatformVariant
+ simulator
CFBundlePackageType
diff --git a/bindings/ios/BitkitCore.xcframework/ios-arm64-simulator/libbitkitcore.a b/bindings/ios/BitkitCore.xcframework/ios-arm64-simulator/libbitkitcore.a
index 8fec28c..8eff570 100644
Binary files a/bindings/ios/BitkitCore.xcframework/ios-arm64-simulator/libbitkitcore.a and b/bindings/ios/BitkitCore.xcframework/ios-arm64-simulator/libbitkitcore.a differ
diff --git a/bindings/ios/BitkitCore.xcframework/ios-arm64/libbitkitcore.a b/bindings/ios/BitkitCore.xcframework/ios-arm64/libbitkitcore.a
index bb904a1..a893ced 100644
Binary files a/bindings/ios/BitkitCore.xcframework/ios-arm64/libbitkitcore.a and b/bindings/ios/BitkitCore.xcframework/ios-arm64/libbitkitcore.a differ
diff --git a/bindings/python/bitkitcore/libbitkitcore.dylib b/bindings/python/bitkitcore/libbitkitcore.dylib
index 601ede5..def9f0f 100755
Binary files a/bindings/python/bitkitcore/libbitkitcore.dylib and b/bindings/python/bitkitcore/libbitkitcore.dylib differ
diff --git a/src/modules/scanner/tests.rs b/src/modules/scanner/tests.rs
index 02bdc16..22730ee 100644
--- a/src/modules/scanner/tests.rs
+++ b/src/modules/scanner/tests.rs
@@ -169,6 +169,18 @@ mod tests {
assert!(matches!(Scanner::decode(invoice).await, Err(DecodingError::InvalidFormat)));
}
+ #[tokio::test]
+ async fn test_floating_point_amount_precision() {
+ let invoice = "bitcoin:bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq?amount=0.000035".to_string();
+ let decoded = Scanner::decode(invoice).await.unwrap();
+ match decoded {
+ Scanner::OnChain { invoice } => {
+ assert_eq!(invoice.amount_satoshis, 3500);
+ },
+ _ => assert!(false, "Should be an OnChain invoice"),
+ }
+ }
+
#[tokio::test]
async fn test_uppercase_lightning_prefix() {
// Test uppercase LIGHTNING: prefix (common in QR codes)
diff --git a/src/modules/scanner/utils.rs b/src/modules/scanner/utils.rs
index 8ee38e1..12ecc62 100644
--- a/src/modules/scanner/utils.rs
+++ b/src/modules/scanner/utils.rs
@@ -3,5 +3,5 @@ use crate::DecodingError;
pub fn parse_amount_as_satoshis(amount: &str) -> Result {
amount.parse::()
.map_err(|_| DecodingError::InvalidAmount)
- .map(|btc| (btc * 100_000_000.0) as u64)
+ .map(|btc| (btc * 100_000_000.0).round() as u64)
}
\ No newline at end of file