Update bdk-ffi to 0.3.1

This commit is contained in:
Steve Myers 2022-03-02 15:17:53 -08:00
parent f2b857a609
commit 2cd5fa6934
No known key found for this signature in database
GPG Key ID: 8105A46B22C2D051
2 changed files with 93 additions and 183 deletions

View File

@ -19,13 +19,13 @@ fileprivate extension RustBuffer {
} }
static func from(_ ptr: UnsafeBufferPointer<UInt8>) -> RustBuffer { static func from(_ ptr: UnsafeBufferPointer<UInt8>) -> RustBuffer {
try! rustCall { ffi_bdk_2e4d_rustbuffer_from_bytes(ForeignBytes(bufferPointer: ptr), $0) } try! rustCall { ffi_bdk_d04b_rustbuffer_from_bytes(ForeignBytes(bufferPointer: ptr), $0) }
} }
// Frees the buffer in place. // Frees the buffer in place.
// The buffer must not be used after this is called. // The buffer must not be used after this is called.
func deallocate() { func deallocate() {
try! rustCall { ffi_bdk_2e4d_rustbuffer_free(self, $0) } try! rustCall { ffi_bdk_d04b_rustbuffer_free(self, $0) }
} }
} }
@ -576,7 +576,7 @@ extension DatabaseConfig: Equatable, Hashable {}
public enum Transaction { public enum Transaction {
case unconfirmed(details: TransactionDetails ) case unconfirmed(details: TransactionDetails )
case confirmed(details: TransactionDetails, confirmation: Confirmation ) case confirmed(details: TransactionDetails, confirmation: BlockTime )
} }
extension Transaction: ViaFfiUsingByteBuffer, ViaFfi { extension Transaction: ViaFfiUsingByteBuffer, ViaFfi {
@ -589,7 +589,7 @@ extension Transaction: ViaFfiUsingByteBuffer, ViaFfi {
) )
case 2: return .confirmed( case 2: return .confirmed(
details: try TransactionDetails.read(from: buf), details: try TransactionDetails.read(from: buf),
confirmation: try Confirmation.read(from: buf) confirmation: try BlockTime.read(from: buf)
) )
default: throw UniffiInternalError.unexpectedEnumCase default: throw UniffiInternalError.unexpectedEnumCase
} }
@ -669,7 +669,7 @@ extension BlockchainConfig: Equatable, Hashable {}
// Note that we don't yet support `indirect` for enums. // Note that we don't yet support `indirect` for enums.
// See https://github.com/mozilla/uniffi-rs/issues/396 for further discussion. // See https://github.com/mozilla/uniffi-rs/issues/396 for further discussion.
public enum MnemonicType { public enum WordCount {
case words12 case words12
case words15 case words15
@ -678,8 +678,8 @@ public enum MnemonicType {
case words24 case words24
} }
extension MnemonicType: ViaFfiUsingByteBuffer, ViaFfi { extension WordCount: ViaFfiUsingByteBuffer, ViaFfi {
fileprivate static func read(from buf: Reader) throws -> MnemonicType { fileprivate static func read(from buf: Reader) throws -> WordCount {
let variant: Int32 = try buf.readInt() let variant: Int32 = try buf.readInt()
switch variant { switch variant {
@ -720,168 +720,49 @@ extension MnemonicType: ViaFfiUsingByteBuffer, ViaFfi {
} }
extension MnemonicType: Equatable, Hashable {} extension WordCount: Equatable, Hashable {}
public func generateExtendedKey(network: Network, mnemonicType: MnemonicType, password: String? ) throws -> ExtendedKeyInfo { public func generateExtendedKey( network: Network, wordCount: WordCount, password: String? ) throws -> ExtendedKeyInfo {
let _retval = try let _retval = try
rustCallWithError(BdkError.self) { rustCallWithError(BdkError.self) {
bdk_2e4d_generate_extended_key(network.lower(), mnemonicType.lower(), FfiConverterOptionString.lower(password) , $0) bdk_d04b_generate_extended_key(network.lower(), wordCount.lower(), FfiConverterOptionString.lower(password) , $0)
} }
return try ExtendedKeyInfo.lift(_retval) return try ExtendedKeyInfo.lift(_retval)
} }
public func restoreExtendedKey(network: Network, mnemonic: String, password: String? ) throws -> ExtendedKeyInfo { public func restoreExtendedKey( network: Network, mnemonic: String, password: String? ) throws -> ExtendedKeyInfo {
let _retval = try let _retval = try
rustCallWithError(BdkError.self) { rustCallWithError(BdkError.self) {
bdk_2e4d_restore_extended_key(network.lower(), mnemonic.lower(), FfiConverterOptionString.lower(password) , $0) bdk_d04b_restore_extended_key(network.lower(), mnemonic.lower(), FfiConverterOptionString.lower(password) , $0)
} }
return try ExtendedKeyInfo.lift(_retval) return try ExtendedKeyInfo.lift(_retval)
} }
public protocol OfflineWalletProtocol { public protocol WalletProtocol {
func getNewAddress() -> String func getNewAddress() -> String
func getLastUnusedAddress() -> String func getLastUnusedAddress() -> String
func getBalance() throws -> UInt64 func getBalance() throws -> UInt64
func sign(psbt: PartiallySignedBitcoinTransaction ) throws func sign( psbt: PartiallySignedBitcoinTransaction ) throws
func getTransactions() throws -> [Transaction]
}
public class OfflineWallet: OfflineWalletProtocol {
fileprivate let pointer: UnsafeMutableRawPointer
// TODO: We'd like this to be `private` but for Swifty reasons,
// we can't implement `ViaFfi` without making this `required` and we can't
// make it `required` without making it `public`.
required init(unsafeFromRawPointer pointer: UnsafeMutableRawPointer) {
self.pointer = pointer
}
public convenience init(descriptor: String, network: Network, databaseConfig: DatabaseConfig ) throws {
self.init(unsafeFromRawPointer: try
rustCallWithError(BdkError.self) {
bdk_2e4d_OfflineWallet_new(descriptor.lower(), network.lower(), databaseConfig.lower() , $0)
})
}
deinit {
try! rustCall { ffi_bdk_2e4d_OfflineWallet_object_free(pointer, $0) }
}
public func getNewAddress() -> String {
let _retval = try!
rustCall() {
bdk_2e4d_OfflineWallet_get_new_address(self.pointer, $0
)
}
return try! String.lift(_retval)
}
public func getLastUnusedAddress() -> String {
let _retval = try!
rustCall() {
bdk_2e4d_OfflineWallet_get_last_unused_address(self.pointer, $0
)
}
return try! String.lift(_retval)
}
public func getBalance() throws -> UInt64 {
let _retval = try
rustCallWithError(BdkError.self) {
bdk_2e4d_OfflineWallet_get_balance(self.pointer, $0
)
}
return try UInt64.lift(_retval)
}
public func sign(psbt: PartiallySignedBitcoinTransaction ) throws {
try
rustCallWithError(BdkError.self) {
bdk_2e4d_OfflineWallet_sign(self.pointer, psbt.lower() , $0
)
}
}
public func getTransactions() throws -> [Transaction] {
let _retval = try
rustCallWithError(BdkError.self) {
bdk_2e4d_OfflineWallet_get_transactions(self.pointer, $0
)
}
return try FfiConverterSequenceEnumTransaction.lift(_retval)
}
}
fileprivate extension OfflineWallet {
fileprivate typealias FfiType = UnsafeMutableRawPointer
fileprivate static func read(from buf: Reader) throws -> Self {
let v: UInt64 = try buf.readInt()
// The Rust code won't compile if a pointer won't fit in a UInt64.
// We have to go via `UInt` because that's the thing that's the size of a pointer.
let ptr = UnsafeMutableRawPointer(bitPattern: UInt(truncatingIfNeeded: v))
if (ptr == nil) {
throw UniffiInternalError.unexpectedNullPointer
}
return try self.lift(ptr!)
}
fileprivate func write(into buf: Writer) {
// This fiddling is because `Int` is the thing that's the same size as a pointer.
// The Rust code won't compile if a pointer won't fit in a `UInt64`.
buf.writeInt(UInt64(bitPattern: Int64(Int(bitPattern: self.lower()))))
}
fileprivate static func lift(_ pointer: UnsafeMutableRawPointer) throws -> Self {
return Self(unsafeFromRawPointer: pointer)
}
fileprivate func lower() -> UnsafeMutableRawPointer {
return self.pointer
}
}
// Ideally this would be `fileprivate`, but Swift says:
// """
// 'private' modifier cannot be used with extensions that declare protocol conformances
// """
extension OfflineWallet : ViaFfi, Serializable {}
public protocol OnlineWalletProtocol {
func getNewAddress() -> String
func getLastUnusedAddress() -> String
func getBalance() throws -> UInt64
func sign(psbt: PartiallySignedBitcoinTransaction ) throws
func getTransactions() throws -> [Transaction] func getTransactions() throws -> [Transaction]
func getNetwork() -> Network func getNetwork() -> Network
func sync(progressUpdate: BdkProgress, maxAddressParam: UInt32? ) throws func sync( progressUpdate: BdkProgress, maxAddressParam: UInt32? ) throws
func broadcast(psbt: PartiallySignedBitcoinTransaction ) throws -> Transaction func broadcast( psbt: PartiallySignedBitcoinTransaction ) throws -> Transaction
} }
public class OnlineWallet: OnlineWalletProtocol { public class Wallet: WalletProtocol {
fileprivate let pointer: UnsafeMutableRawPointer fileprivate let pointer: UnsafeMutableRawPointer
// TODO: We'd like this to be `private` but for Swifty reasons, // TODO: We'd like this to be `private` but for Swifty reasons,
@ -890,18 +771,18 @@ public class OnlineWallet: OnlineWalletProtocol {
required init(unsafeFromRawPointer pointer: UnsafeMutableRawPointer) { required init(unsafeFromRawPointer pointer: UnsafeMutableRawPointer) {
self.pointer = pointer self.pointer = pointer
} }
public convenience init(descriptor: String, changeDescriptor: String?, network: Network, databaseConfig: DatabaseConfig, blockchainConfig: BlockchainConfig ) throws { public convenience init( descriptor: String, changeDescriptor: String?, network: Network, databaseConfig: DatabaseConfig, blockchainConfig: BlockchainConfig ) throws {
self.init(unsafeFromRawPointer: try self.init(unsafeFromRawPointer: try
rustCallWithError(BdkError.self) { rustCallWithError(BdkError.self) {
bdk_2e4d_OnlineWallet_new(descriptor.lower(), FfiConverterOptionString.lower(changeDescriptor), network.lower(), databaseConfig.lower(), blockchainConfig.lower() , $0) bdk_d04b_Wallet_new(descriptor.lower(), FfiConverterOptionString.lower(changeDescriptor), network.lower(), databaseConfig.lower(), blockchainConfig.lower() , $0)
}) })
} }
deinit { deinit {
try! rustCall { ffi_bdk_2e4d_OnlineWallet_object_free(pointer, $0) } try! rustCall { ffi_bdk_d04b_Wallet_object_free(pointer, $0) }
} }
@ -911,7 +792,7 @@ public class OnlineWallet: OnlineWalletProtocol {
let _retval = try! let _retval = try!
rustCall() { rustCall() {
bdk_2e4d_OnlineWallet_get_new_address(self.pointer, $0 bdk_d04b_Wallet_get_new_address(self.pointer, $0
) )
} }
return try! String.lift(_retval) return try! String.lift(_retval)
@ -920,7 +801,7 @@ public class OnlineWallet: OnlineWalletProtocol {
let _retval = try! let _retval = try!
rustCall() { rustCall() {
bdk_2e4d_OnlineWallet_get_last_unused_address(self.pointer, $0 bdk_d04b_Wallet_get_last_unused_address(self.pointer, $0
) )
} }
return try! String.lift(_retval) return try! String.lift(_retval)
@ -929,16 +810,16 @@ public class OnlineWallet: OnlineWalletProtocol {
let _retval = try let _retval = try
rustCallWithError(BdkError.self) { rustCallWithError(BdkError.self) {
bdk_2e4d_OnlineWallet_get_balance(self.pointer, $0 bdk_d04b_Wallet_get_balance(self.pointer, $0
) )
} }
return try UInt64.lift(_retval) return try UInt64.lift(_retval)
} }
public func sign(psbt: PartiallySignedBitcoinTransaction ) throws { public func sign( psbt: PartiallySignedBitcoinTransaction ) throws {
try try
rustCallWithError(BdkError.self) { rustCallWithError(BdkError.self) {
bdk_2e4d_OnlineWallet_sign(self.pointer, psbt.lower() , $0 bdk_d04b_Wallet_sign(self.pointer, psbt.lower() , $0
) )
} }
} }
@ -946,7 +827,7 @@ public class OnlineWallet: OnlineWalletProtocol {
let _retval = try let _retval = try
rustCallWithError(BdkError.self) { rustCallWithError(BdkError.self) {
bdk_2e4d_OnlineWallet_get_transactions(self.pointer, $0 bdk_d04b_Wallet_get_transactions(self.pointer, $0
) )
} }
return try FfiConverterSequenceEnumTransaction.lift(_retval) return try FfiConverterSequenceEnumTransaction.lift(_retval)
@ -955,24 +836,24 @@ public class OnlineWallet: OnlineWalletProtocol {
let _retval = try! let _retval = try!
rustCall() { rustCall() {
bdk_2e4d_OnlineWallet_get_network(self.pointer, $0 bdk_d04b_Wallet_get_network(self.pointer, $0
) )
} }
return try! Network.lift(_retval) return try! Network.lift(_retval)
} }
public func sync(progressUpdate: BdkProgress, maxAddressParam: UInt32? ) throws { public func sync( progressUpdate: BdkProgress, maxAddressParam: UInt32? ) throws {
try try
rustCallWithError(BdkError.self) { rustCallWithError(BdkError.self) {
bdk_2e4d_OnlineWallet_sync(self.pointer, ffiConverterCallbackInterfaceBdkProgress.lower(progressUpdate), FfiConverterOptionUInt32.lower(maxAddressParam) , $0 bdk_d04b_Wallet_sync(self.pointer, ffiConverterCallbackInterfaceBdkProgress.lower(progressUpdate), FfiConverterOptionUInt32.lower(maxAddressParam) , $0
) )
} }
} }
public func broadcast(psbt: PartiallySignedBitcoinTransaction ) throws -> Transaction { public func broadcast( psbt: PartiallySignedBitcoinTransaction ) throws -> Transaction {
let _retval = try let _retval = try
rustCallWithError(BdkError.self) { rustCallWithError(BdkError.self) {
bdk_2e4d_OnlineWallet_broadcast(self.pointer, psbt.lower() , $0 bdk_d04b_Wallet_broadcast(self.pointer, psbt.lower() , $0
) )
} }
return try Transaction.lift(_retval) return try Transaction.lift(_retval)
@ -981,10 +862,10 @@ public class OnlineWallet: OnlineWalletProtocol {
} }
fileprivate extension OnlineWallet { fileprivate extension Wallet {
fileprivate typealias FfiType = UnsafeMutableRawPointer typealias FfiType = UnsafeMutableRawPointer
fileprivate static func read(from buf: Reader) throws -> Self { static func read(from buf: Reader) throws -> Self {
let v: UInt64 = try buf.readInt() let v: UInt64 = try buf.readInt()
// The Rust code won't compile if a pointer won't fit in a UInt64. // The Rust code won't compile if a pointer won't fit in a UInt64.
// We have to go via `UInt` because that's the thing that's the size of a pointer. // We have to go via `UInt` because that's the thing that's the size of a pointer.
@ -995,17 +876,17 @@ fileprivate extension OnlineWallet {
return try self.lift(ptr!) return try self.lift(ptr!)
} }
fileprivate func write(into buf: Writer) { func write(into buf: Writer) {
// This fiddling is because `Int` is the thing that's the same size as a pointer. // This fiddling is because `Int` is the thing that's the same size as a pointer.
// The Rust code won't compile if a pointer won't fit in a `UInt64`. // The Rust code won't compile if a pointer won't fit in a `UInt64`.
buf.writeInt(UInt64(bitPattern: Int64(Int(bitPattern: self.lower())))) buf.writeInt(UInt64(bitPattern: Int64(Int(bitPattern: self.lower()))))
} }
fileprivate static func lift(_ pointer: UnsafeMutableRawPointer) throws -> Self { static func lift(_ pointer: UnsafeMutableRawPointer) throws -> Self {
return Self(unsafeFromRawPointer: pointer) return Self(unsafeFromRawPointer: pointer)
} }
fileprivate func lower() -> UnsafeMutableRawPointer { func lower() -> UnsafeMutableRawPointer {
return self.pointer return self.pointer
} }
} }
@ -1014,10 +895,11 @@ fileprivate extension OnlineWallet {
// """ // """
// 'private' modifier cannot be used with extensions that declare protocol conformances // 'private' modifier cannot be used with extensions that declare protocol conformances
// """ // """
extension OnlineWallet : ViaFfi, Serializable {} extension Wallet : ViaFfi, Serializable {}
public protocol PartiallySignedBitcoinTransactionProtocol { public protocol PartiallySignedBitcoinTransactionProtocol {
func serialize() -> String
} }
@ -1030,31 +912,50 @@ public class PartiallySignedBitcoinTransaction: PartiallySignedBitcoinTransactio
required init(unsafeFromRawPointer pointer: UnsafeMutableRawPointer) { required init(unsafeFromRawPointer pointer: UnsafeMutableRawPointer) {
self.pointer = pointer self.pointer = pointer
} }
public convenience init(wallet: OnlineWallet, recipient: String, amount: UInt64, feeRate: Float? ) throws { public convenience init( wallet: Wallet, recipient: String, amount: UInt64, feeRate: Float? ) throws {
self.init(unsafeFromRawPointer: try self.init(unsafeFromRawPointer: try
rustCallWithError(BdkError.self) { rustCallWithError(BdkError.self) {
bdk_2e4d_PartiallySignedBitcoinTransaction_new(wallet.lower(), recipient.lower(), amount.lower(), FfiConverterOptionFloat.lower(feeRate) , $0) bdk_d04b_PartiallySignedBitcoinTransaction_new(wallet.lower(), recipient.lower(), amount.lower(), FfiConverterOptionFloat.lower(feeRate) , $0)
}) })
} }
deinit { deinit {
try! rustCall { ffi_bdk_2e4d_PartiallySignedBitcoinTransaction_object_free(pointer, $0) } try! rustCall { ffi_bdk_d04b_PartiallySignedBitcoinTransaction_object_free(pointer, $0) }
} }
public static func deserialize( psbtBase64: String ) throws -> PartiallySignedBitcoinTransaction {
return PartiallySignedBitcoinTransaction(unsafeFromRawPointer: try
rustCallWithError(BdkError.self) {
bdk_d04b_PartiallySignedBitcoinTransaction_deserialize(psbtBase64.lower() , $0)
})
}
public func serialize() -> String {
let _retval = try!
rustCall() {
bdk_d04b_PartiallySignedBitcoinTransaction_serialize(self.pointer, $0
)
}
return try! String.lift(_retval)
}
} }
fileprivate extension PartiallySignedBitcoinTransaction { fileprivate extension PartiallySignedBitcoinTransaction {
fileprivate typealias FfiType = UnsafeMutableRawPointer typealias FfiType = UnsafeMutableRawPointer
fileprivate static func read(from buf: Reader) throws -> Self { static func read(from buf: Reader) throws -> Self {
let v: UInt64 = try buf.readInt() let v: UInt64 = try buf.readInt()
// The Rust code won't compile if a pointer won't fit in a UInt64. // The Rust code won't compile if a pointer won't fit in a UInt64.
// We have to go via `UInt` because that's the thing that's the size of a pointer. // We have to go via `UInt` because that's the thing that's the size of a pointer.
@ -1065,17 +966,17 @@ fileprivate extension PartiallySignedBitcoinTransaction {
return try self.lift(ptr!) return try self.lift(ptr!)
} }
fileprivate func write(into buf: Writer) { func write(into buf: Writer) {
// This fiddling is because `Int` is the thing that's the same size as a pointer. // This fiddling is because `Int` is the thing that's the same size as a pointer.
// The Rust code won't compile if a pointer won't fit in a `UInt64`. // The Rust code won't compile if a pointer won't fit in a `UInt64`.
buf.writeInt(UInt64(bitPattern: Int64(Int(bitPattern: self.lower())))) buf.writeInt(UInt64(bitPattern: Int64(Int(bitPattern: self.lower()))))
} }
fileprivate static func lift(_ pointer: UnsafeMutableRawPointer) throws -> Self { static func lift(_ pointer: UnsafeMutableRawPointer) throws -> Self {
return Self(unsafeFromRawPointer: pointer) return Self(unsafeFromRawPointer: pointer)
} }
fileprivate func lower() -> UnsafeMutableRawPointer { func lower() -> UnsafeMutableRawPointer {
return self.pointer return self.pointer
} }
} }
@ -1196,7 +1097,7 @@ fileprivate extension TransactionDetails {
extension TransactionDetails: ViaFfiUsingByteBuffer, ViaFfi {} extension TransactionDetails: ViaFfiUsingByteBuffer, ViaFfi {}
public struct Confirmation { public struct BlockTime {
public var height: UInt32 public var height: UInt32
public var timestamp: UInt64 public var timestamp: UInt64
@ -1209,8 +1110,8 @@ public struct Confirmation {
} }
extension Confirmation: Equatable, Hashable { extension BlockTime: Equatable, Hashable {
public static func ==(lhs: Confirmation, rhs: Confirmation) -> Bool { public static func ==(lhs: BlockTime, rhs: BlockTime) -> Bool {
if lhs.height != rhs.height { if lhs.height != rhs.height {
return false return false
} }
@ -1227,9 +1128,9 @@ extension Confirmation: Equatable, Hashable {
} }
fileprivate extension Confirmation { fileprivate extension BlockTime {
static func read(from buf: Reader) throws -> Confirmation { static func read(from buf: Reader) throws -> BlockTime {
return try Confirmation( return try BlockTime(
height: UInt32.read(from: buf), height: UInt32.read(from: buf),
timestamp: UInt64.read(from: buf) timestamp: UInt64.read(from: buf)
) )
@ -1241,7 +1142,7 @@ fileprivate extension Confirmation {
} }
} }
extension Confirmation: ViaFfiUsingByteBuffer, ViaFfi {} extension BlockTime: ViaFfiUsingByteBuffer, ViaFfi {}
public struct ElectrumConfig { public struct ElectrumConfig {
public var url: String public var url: String
@ -1868,13 +1769,13 @@ extension BdkError: Error { }
// Declaration and FfiConverters for BdkProgress Callback Interface // Declaration and FfiConverters for BdkProgress Callback Interface
public protocol BdkProgress : AnyObject { public protocol BdkProgress : AnyObject {
func update(progress: Float, message: String? ) func update( progress: Float, message: String? )
} }
// The ForeignCallback that is passed to Rust. // The ForeignCallback that is passed to Rust.
fileprivate let foreignCallbackCallbackInterfaceBdkProgress : ForeignCallback = fileprivate let foreignCallbackCallbackInterfaceBdkProgress : ForeignCallback =
{ (handle: Handle, method: Int32, args: RustBuffer) -> RustBuffer in { (handle: Handle, method: Int32, args: RustBuffer, out_buf: UnsafeMutablePointer<RustBuffer>) -> Int32 in
func invokeUpdate(_ swiftCallbackInterface: BdkProgress, _ args: RustBuffer) throws -> RustBuffer { func invokeUpdate(_ swiftCallbackInterface: BdkProgress, _ args: RustBuffer) throws -> RustBuffer {
defer { args.deallocate() } defer { args.deallocate() }
@ -1894,20 +1795,30 @@ fileprivate let foreignCallbackCallbackInterfaceBdkProgress : ForeignCallback =
switch method { switch method {
case IDX_CALLBACK_FREE: case IDX_CALLBACK_FREE:
ffiConverterCallbackInterfaceBdkProgress.drop(handle: handle) ffiConverterCallbackInterfaceBdkProgress.drop(handle: handle)
return RustBuffer() // No return value.
case 1: return try! invokeUpdate(cb, args) // See docs of ForeignCallback in `uniffi/src/ffi/foreigncallbacks.rs`
return 0
case 1:
let buffer = try! invokeUpdate(cb, args)
out_buf.pointee = buffer
// Value written to out buffer.
// See docs of ForeignCallback in `uniffi/src/ffi/foreigncallbacks.rs`
return 1
// This should never happen, because an out of bounds method index won't // This should never happen, because an out of bounds method index won't
// ever be used. Once we can catch errors, we should return an InternalError. // ever be used. Once we can catch errors, we should return an InternalError.
// https://github.com/mozilla/uniffi-rs/issues/351 // https://github.com/mozilla/uniffi-rs/issues/351
default: return RustBuffer() default:
// An unexpected error happened.
// See docs of ForeignCallback in `uniffi/src/ffi/foreigncallbacks.rs`
return -1
} }
} }
// The ffiConverter which transforms the Callbacks in to Handles to pass to Rust. // The ffiConverter which transforms the Callbacks in to Handles to pass to Rust.
private let ffiConverterCallbackInterfaceBdkProgress: FfiConverterCallbackInterface<BdkProgress> = { private let ffiConverterCallbackInterfaceBdkProgress: FfiConverterCallbackInterface<BdkProgress> = {
try! rustCall { (err: UnsafeMutablePointer<RustCallStatus>) in try! rustCall { (err: UnsafeMutablePointer<RustCallStatus>) in
ffi_bdk_2e4d_BdkProgress_init_callback(foreignCallbackCallbackInterfaceBdkProgress, err) ffi_bdk_d04b_BdkProgress_init_callback(foreignCallbackCallbackInterfaceBdkProgress, err)
} }
return FfiConverterCallbackInterface<BdkProgress>() return FfiConverterCallbackInterface<BdkProgress>()
}() }()
@ -1983,10 +1894,9 @@ extension String: ViaFfi {
buf.writeBytes(self.utf8) buf.writeBytes(self.utf8)
} }
} }
// Helper code for OfflineWallet class is found in ObjectTemplate.swift
// Helper code for OnlineWallet class is found in ObjectTemplate.swift
// Helper code for PartiallySignedBitcoinTransaction class is found in ObjectTemplate.swift // Helper code for PartiallySignedBitcoinTransaction class is found in ObjectTemplate.swift
// Helper code for Confirmation record is found in RecordTemplate.swift // Helper code for Wallet class is found in ObjectTemplate.swift
// Helper code for BlockTime record is found in RecordTemplate.swift
// Helper code for ElectrumConfig record is found in RecordTemplate.swift // Helper code for ElectrumConfig record is found in RecordTemplate.swift
// Helper code for EsploraConfig record is found in RecordTemplate.swift // Helper code for EsploraConfig record is found in RecordTemplate.swift
// Helper code for ExtendedKeyInfo record is found in RecordTemplate.swift // Helper code for ExtendedKeyInfo record is found in RecordTemplate.swift
@ -1994,9 +1904,9 @@ extension String: ViaFfi {
// Helper code for TransactionDetails record is found in RecordTemplate.swift // Helper code for TransactionDetails record is found in RecordTemplate.swift
// Helper code for BlockchainConfig enum is found in EnumTemplate.swift // Helper code for BlockchainConfig enum is found in EnumTemplate.swift
// Helper code for DatabaseConfig enum is found in EnumTemplate.swift // Helper code for DatabaseConfig enum is found in EnumTemplate.swift
// Helper code for MnemonicType enum is found in EnumTemplate.swift
// Helper code for Network enum is found in EnumTemplate.swift // Helper code for Network enum is found in EnumTemplate.swift
// Helper code for Transaction enum is found in EnumTemplate.swift // Helper code for Transaction enum is found in EnumTemplate.swift
// Helper code for WordCount enum is found in EnumTemplate.swift
// Helper code for BdkError error is found in ErrorTemplate.swift // Helper code for BdkError error is found in ErrorTemplate.swift
fileprivate enum FfiConverterOptionUInt8: FfiConverterUsingByteBuffer { fileprivate enum FfiConverterOptionUInt8: FfiConverterUsingByteBuffer {

@ -1 +1 @@
Subproject commit 6fe9bddcfab97d061668da35cde2d12197014c7a Subproject commit 89d58db02a7b04eba9e18c9c84213845ed01d2dc