// This file was autogenerated by some hot garbage in the `uniffi` crate.
// Trust me, you don't want to mess with it!

// swiftlint:disable all
import Foundation

// Depending on the consumer's build setup, the low-level FFI code
// might be in a separate module, or it might be compiled inline into
// this module. This is a bit of light hackery to work with both.
#if canImport(ironstorage_appleFFI)
import ironstorage_appleFFI
#endif

fileprivate extension RustBuffer {
    // Allocate a new buffer, copying the contents of a `UInt8` array.
    init(bytes: [UInt8]) {
        let rbuf = bytes.withUnsafeBufferPointer { ptr in
            RustBuffer.from(ptr)
        }
        self.init(capacity: rbuf.capacity, len: rbuf.len, data: rbuf.data)
    }

    static func empty() -> RustBuffer {
        RustBuffer(capacity: 0, len:0, data: nil)
    }

    static func from(_ ptr: UnsafeBufferPointer<UInt8>) -> RustBuffer {
        try! rustCall { ffi_ironstorage_apple_rustbuffer_from_bytes(ForeignBytes(bufferPointer: ptr), $0) }
    }

    // Frees the buffer in place.
    // The buffer must not be used after this is called.
    func deallocate() {
        try! rustCall { ffi_ironstorage_apple_rustbuffer_free(self, $0) }
    }
}

fileprivate extension ForeignBytes {
    init(bufferPointer: UnsafeBufferPointer<UInt8>) {
        self.init(len: Int32(bufferPointer.count), data: bufferPointer.baseAddress)
    }

    init(rawBufferPointer: UnsafeRawBufferPointer) {
        self.init(
            len: Int32(rawBufferPointer.count),
            data: rawBufferPointer.baseAddress?.assumingMemoryBound(to: UInt8.self)
        )
    }
}

// Converter for `&[u8]` / `[ByRef] bytes` arguments.
//
// Conforms to `FfiConverter` so the compiler enforces the full converter
// method set. Only the scope-bound `lower(_:_body:)` overload is sound —
// zero-copy byte buffers only flow foreign -> Rust, and only in argument
// position. The four protocol-witness methods (`lift`, `lower`, `read`,
// `write`) `fatalError` at runtime if anyone reaches them.
//
// The scope-bound `lower` takes a closure because the `ForeignBytes`
// pointer is only guaranteed valid for the duration of
// `Data.withUnsafeBytes`. Callers must run the full FFI call inside
// the closure body.
fileprivate enum FfiConverterByRefBytes: FfiConverter {
    typealias SwiftType = Data
    typealias FfiType = ForeignBytes

    static func lower<R>(_ value: Data, _ body: (ForeignBytes) throws -> R) rethrows -> R {
        return try value.withUnsafeBytes { rawBuf in
            try body(ForeignBytes(rawBufferPointer: rawBuf))
        }
    }

    static func lower(_ value: Data) -> ForeignBytes {
        fatalError("ByRef bytes cannot use the plain lower: returning ForeignBytes escapes the Data.withUnsafeBytes scope. Use the scope-bound lower(_:_body:) overload instead.")
    }

    static func lift(_ value: ForeignBytes) throws -> Data {
        fatalError("ByRef bytes cannot be lifted: zero-copy &[u8] only flows foreign->Rust")
    }

    static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> Data {
        fatalError("ByRef bytes cannot be read from a buffer: zero-copy &[u8] is only supported in argument position, not nested in records/options/etc.")
    }

    static func write(_ value: Data, into buf: inout [UInt8]) {
        fatalError("ByRef bytes cannot be written to a buffer: zero-copy &[u8] is only supported in argument position, not nested in records/options/etc.")
    }
}

// For every type used in the interface, we provide helper methods for conveniently
// lifting and lowering that type from C-compatible data, and for reading and writing
// values of that type in a buffer.

// Helper classes/extensions that don't change.
// Someday, this will be in a library of its own.

fileprivate extension Data {
    init(rustBuffer: RustBuffer) {
        self.init(
            bytesNoCopy: rustBuffer.data!,
            count: Int(rustBuffer.len),
            deallocator: .none
        )
    }
}

// Define reader functionality.  Normally this would be defined in a class or
// struct, but we use standalone functions instead in order to make external
// types work.
//
// With external types, one swift source file needs to be able to call the read
// method on another source file's FfiConverter, but then what visibility
// should Reader have?
// - If Reader is fileprivate, then this means the read() must also
//   be fileprivate, which doesn't work with external types.
// - If Reader is internal/public, we'll get compile errors since both source
//   files will try define the same type.
//
// Instead, the read() method and these helper functions input a tuple of data

fileprivate func createReader(data: Data) -> (data: Data, offset: Data.Index) {
    (data: data, offset: 0)
}

// Reads an integer at the current offset, in big-endian order, and advances
// the offset on success. Throws if reading the integer would move the
// offset past the end of the buffer.
fileprivate func readInt<T: FixedWidthInteger>(_ reader: inout (data: Data, offset: Data.Index)) throws -> T {
    let range = reader.offset..<reader.offset + MemoryLayout<T>.size
    guard reader.data.count >= range.upperBound else {
        throw UniffiInternalError.bufferOverflow
    }
    if T.self == UInt8.self {
        let value = reader.data[reader.offset]
        reader.offset += 1
        return value as! T
    }
    var value: T = 0
    let _ = withUnsafeMutableBytes(of: &value, { reader.data.copyBytes(to: $0, from: range)})
    reader.offset = range.upperBound
    return value.bigEndian
}

// Reads an arbitrary number of bytes, to be used to read
// raw bytes, this is useful when lifting strings
fileprivate func readBytes(_ reader: inout (data: Data, offset: Data.Index), count: Int) throws -> Array<UInt8> {
    let range = reader.offset..<(reader.offset+count)
    guard reader.data.count >= range.upperBound else {
        throw UniffiInternalError.bufferOverflow
    }
    var value = [UInt8](repeating: 0, count: count)
    value.withUnsafeMutableBufferPointer({ buffer in
        reader.data.copyBytes(to: buffer, from: range)
    })
    reader.offset = range.upperBound
    return value
}

// Reads a float at the current offset.
fileprivate func readFloat(_ reader: inout (data: Data, offset: Data.Index)) throws -> Float {
    return Float(bitPattern: try readInt(&reader))
}

// Reads a float at the current offset.
fileprivate func readDouble(_ reader: inout (data: Data, offset: Data.Index)) throws -> Double {
    return Double(bitPattern: try readInt(&reader))
}

// Indicates if the offset has reached the end of the buffer.
fileprivate func hasRemaining(_ reader: (data: Data, offset: Data.Index)) -> Bool {
    return reader.offset < reader.data.count
}

// Define writer functionality.  Normally this would be defined in a class or
// struct, but we use standalone functions instead in order to make external
// types work.  See the above discussion on Readers for details.

fileprivate func createWriter() -> [UInt8] {
    return []
}

fileprivate func writeBytes<S>(_ writer: inout [UInt8], _ byteArr: S) where S: Sequence, S.Element == UInt8 {
    writer.append(contentsOf: byteArr)
}

// Writes an integer in big-endian order.
//
// Warning: make sure what you are trying to write
// is in the correct type!
fileprivate func writeInt<T: FixedWidthInteger>(_ writer: inout [UInt8], _ value: T) {
    var value = value.bigEndian
    withUnsafeBytes(of: &value) { writer.append(contentsOf: $0) }
}

fileprivate func writeFloat(_ writer: inout [UInt8], _ value: Float) {
    writeInt(&writer, value.bitPattern)
}

fileprivate func writeDouble(_ writer: inout [UInt8], _ value: Double) {
    writeInt(&writer, value.bitPattern)
}

// Protocol for types that transfer other types across the FFI. This is
// analogous to the Rust trait of the same name.
fileprivate protocol FfiConverter {
    associatedtype FfiType
    associatedtype SwiftType

    static func lift(_ value: FfiType) throws -> SwiftType
    static func lower(_ value: SwiftType) -> FfiType
    static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> SwiftType
    static func write(_ value: SwiftType, into buf: inout [UInt8])
}

// Types conforming to `Primitive` pass themselves directly over the FFI.
fileprivate protocol FfiConverterPrimitive: FfiConverter where FfiType == SwiftType { }

extension FfiConverterPrimitive {
#if swift(>=5.8)
    @_documentation(visibility: private)
#endif
    public static func lift(_ value: FfiType) throws -> SwiftType {
        return value
    }

#if swift(>=5.8)
    @_documentation(visibility: private)
#endif
    public static func lower(_ value: SwiftType) -> FfiType {
        return value
    }
}

// Types conforming to `FfiConverterRustBuffer` lift and lower into a `RustBuffer`.
// Used for complex types where it's hard to write a custom lift/lower.
fileprivate protocol FfiConverterRustBuffer: FfiConverter where FfiType == RustBuffer {}

extension FfiConverterRustBuffer {
#if swift(>=5.8)
    @_documentation(visibility: private)
#endif
    public static func lift(_ buf: RustBuffer) throws -> SwiftType {
        var reader = createReader(data: Data(rustBuffer: buf))
        let value = try read(from: &reader)
        if hasRemaining(reader) {
            throw UniffiInternalError.incompleteData
        }
        buf.deallocate()
        return value
    }

#if swift(>=5.8)
    @_documentation(visibility: private)
#endif
    public static func lower(_ value: SwiftType) -> RustBuffer {
          var writer = createWriter()
          write(value, into: &writer)
          return RustBuffer(bytes: writer)
    }
}
// An error type for FFI errors. These errors occur at the UniFFI level, not
// the library level.
fileprivate enum UniffiInternalError: LocalizedError {
    case bufferOverflow
    case incompleteData
    case unexpectedOptionalTag
    case unexpectedEnumCase
    case unexpectedNullPointer
    case unexpectedRustCallStatusCode
    case unexpectedRustCallError
    case unexpectedStaleHandle
    case rustPanic(_ message: String)

    public var errorDescription: String? {
        switch self {
        case .bufferOverflow: return "Reading the requested value would read past the end of the buffer"
        case .incompleteData: return "The buffer still has data after lifting its containing value"
        case .unexpectedOptionalTag: return "Unexpected optional tag; should be 0 or 1"
        case .unexpectedEnumCase: return "Raw enum value doesn't match any cases"
        case .unexpectedNullPointer: return "Raw pointer value was null"
        case .unexpectedRustCallStatusCode: return "Unexpected RustCallStatus code"
        case .unexpectedRustCallError: return "CALL_ERROR but no errorClass specified"
        case .unexpectedStaleHandle: return "The object in the handle map has been dropped already"
        case let .rustPanic(message): return message
        }
    }
}

fileprivate extension NSLock {
    func withLock<T>(f: () throws -> T) rethrows -> T {
        self.lock()
        defer { self.unlock() }
        return try f()
    }
}

fileprivate let CALL_SUCCESS: Int8 = 0
fileprivate let CALL_ERROR: Int8 = 1
fileprivate let CALL_UNEXPECTED_ERROR: Int8 = 2
fileprivate let CALL_CANCELLED: Int8 = 3

fileprivate extension RustCallStatus {
    init() {
        self.init(
            code: CALL_SUCCESS,
            errorBuf: RustBuffer.init(
                capacity: 0,
                len: 0,
                data: nil
            )
        )
    }
}

private func rustCall<T>(_ callback: (UnsafeMutablePointer<RustCallStatus>) -> T) throws -> T {
    let neverThrow: ((RustBuffer) throws -> Never)? = nil
    return try makeRustCall(callback, errorHandler: neverThrow)
}

private func rustCallWithError<T, E: Swift.Error>(
    _ errorHandler: @escaping (RustBuffer) throws -> E,
    _ callback: (UnsafeMutablePointer<RustCallStatus>) -> T) throws -> T {
    try makeRustCall(callback, errorHandler: errorHandler)
}

private func makeRustCall<T, E: Swift.Error>(
    _ callback: (UnsafeMutablePointer<RustCallStatus>) -> T,
    errorHandler: ((RustBuffer) throws -> E)?
) throws -> T {
    uniffiEnsureIronstorageAppleInitialized()
    var callStatus = RustCallStatus.init()
    let returnedVal = callback(&callStatus)
    try uniffiCheckCallStatus(callStatus: callStatus, errorHandler: errorHandler)
    return returnedVal
}

private func uniffiCheckCallStatus<E: Swift.Error>(
    callStatus: RustCallStatus,
    errorHandler: ((RustBuffer) throws -> E)?
) throws {
    switch callStatus.code {
        case CALL_SUCCESS:
            return

        case CALL_ERROR:
            if let errorHandler = errorHandler {
                throw try errorHandler(callStatus.errorBuf)
            } else {
                callStatus.errorBuf.deallocate()
                throw UniffiInternalError.unexpectedRustCallError
            }

        case CALL_UNEXPECTED_ERROR:
            // When the rust code sees a panic, it tries to construct a RustBuffer
            // with the message.  But if that code panics, then it just sends back
            // an empty buffer.
            if callStatus.errorBuf.len > 0 {
                throw UniffiInternalError.rustPanic(try FfiConverterString.lift(callStatus.errorBuf))
            } else {
                callStatus.errorBuf.deallocate()
                throw UniffiInternalError.rustPanic("Rust panic")
            }

        case CALL_CANCELLED:
            fatalError("Cancellation not supported yet")

        default:
            throw UniffiInternalError.unexpectedRustCallStatusCode
    }
}

private func uniffiTraitInterfaceCall<T>(
    callStatus: UnsafeMutablePointer<RustCallStatus>,
    makeCall: () throws -> T,
    writeReturn: (T) -> ()
) {
    do {
        try writeReturn(makeCall())
    } catch let error {
        callStatus.pointee.code = CALL_UNEXPECTED_ERROR
        callStatus.pointee.errorBuf = FfiConverterString.lower(String(describing: error))
    }
}

private func uniffiTraitInterfaceCallWithError<T, E>(
    callStatus: UnsafeMutablePointer<RustCallStatus>,
    makeCall: () throws -> T,
    writeReturn: (T) -> (),
    lowerError: (E) -> RustBuffer
) {
    do {
        try writeReturn(makeCall())
    } catch let error as E {
        callStatus.pointee.code = CALL_ERROR
        callStatus.pointee.errorBuf = lowerError(error)
    } catch {
        callStatus.pointee.code = CALL_UNEXPECTED_ERROR
        callStatus.pointee.errorBuf = FfiConverterString.lower(String(describing: error))
    }
}
// Initial value and increment amount for handles.
// These ensure that SWIFT handles always have the lowest bit set
fileprivate let UNIFFI_HANDLEMAP_INITIAL: UInt64 = 1
fileprivate let UNIFFI_HANDLEMAP_DELTA: UInt64 = 2

fileprivate final class UniffiHandleMap<T>: @unchecked Sendable {
    // All mutation happens with this lock held, which is why we implement @unchecked Sendable.
    private let lock = NSLock()
    private var map: [UInt64: T] = [:]
    private var currentHandle: UInt64 = UNIFFI_HANDLEMAP_INITIAL

    func insert(obj: T) -> UInt64 {
        lock.withLock {
            return doInsert(obj)
        }
    }

    // Low-level insert function, this assumes `lock` is held.
    private func doInsert(_ obj: T) -> UInt64 {
        let handle = currentHandle
        currentHandle += UNIFFI_HANDLEMAP_DELTA
        map[handle] = obj
        return handle
    }

     func get(handle: UInt64) throws -> T {
        try lock.withLock {
            guard let obj = map[handle] else {
                throw UniffiInternalError.unexpectedStaleHandle
            }
            return obj
        }
    }

     func clone(handle: UInt64) throws -> UInt64 {
        try lock.withLock {
            guard let obj = map[handle] else {
                throw UniffiInternalError.unexpectedStaleHandle
            }
            return doInsert(obj)
        }
    }

    @discardableResult
    func remove(handle: UInt64) throws -> T {
        try lock.withLock {
            guard let obj = map.removeValue(forKey: handle) else {
                throw UniffiInternalError.unexpectedStaleHandle
            }
            return obj
        }
    }

    var count: Int {
        get {
            map.count
        }
    }
}


// Public interface members begin here.


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
fileprivate struct FfiConverterUInt32: FfiConverterPrimitive {
    typealias FfiType = UInt32
    typealias SwiftType = UInt32

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> UInt32 {
        return try lift(readInt(&buf))
    }

    public static func write(_ value: SwiftType, into buf: inout [UInt8]) {
        writeInt(&buf, lower(value))
    }
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
fileprivate struct FfiConverterUInt64: FfiConverterPrimitive {
    typealias FfiType = UInt64
    typealias SwiftType = UInt64

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> UInt64 {
        return try lift(readInt(&buf))
    }

    public static func write(_ value: SwiftType, into buf: inout [UInt8]) {
        writeInt(&buf, lower(value))
    }
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
fileprivate struct FfiConverterInt64: FfiConverterPrimitive {
    typealias FfiType = Int64
    typealias SwiftType = Int64

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> Int64 {
        return try lift(readInt(&buf))
    }

    public static func write(_ value: Int64, into buf: inout [UInt8]) {
        writeInt(&buf, lower(value))
    }
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
fileprivate struct FfiConverterBool : FfiConverter {
    typealias FfiType = Int8
    typealias SwiftType = Bool

    public static func lift(_ value: Int8) throws -> Bool {
        return value != 0
    }

    public static func lower(_ value: Bool) -> Int8 {
        return value ? 1 : 0
    }

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> Bool {
        return try lift(readInt(&buf))
    }

    public static func write(_ value: Bool, into buf: inout [UInt8]) {
        writeInt(&buf, lower(value))
    }
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
fileprivate struct FfiConverterString: FfiConverter {
    typealias SwiftType = String
    typealias FfiType = RustBuffer

    public static func lift(_ value: RustBuffer) throws -> String {
        defer {
            value.deallocate()
        }
        if value.data == nil {
            return String()
        }
        let bytes = UnsafeBufferPointer<UInt8>(start: value.data!, count: Int(value.len))
        // Use Swift's native UTF-8 decoder; `String(bytes:encoding:.utf8)` goes
        // through Foundation's NSString and silently strips a leading U+FEFF BOM.
        // Invalid UTF-8 substitutes U+FFFD instead of trapping (unreachable
        // given Rust's `String` invariant).
        return String(decoding: bytes, as: UTF8.self)
    }

    public static func lower(_ value: String) -> RustBuffer {
        return value.utf8CString.withUnsafeBufferPointer { ptr in
            // The swift string gives us int8_t, we want uint8_t.
            ptr.withMemoryRebound(to: UInt8.self) { ptr in
                // The swift string gives us a trailing null byte, we don't want it.
                let buf = UnsafeBufferPointer(rebasing: ptr.prefix(upTo: ptr.count - 1))
                return RustBuffer.from(buf)
            }
        }
    }

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> String {
        let len: Int32 = try readInt(&buf)
        // See `lift` above for why we avoid Foundation's NSString-backed decoder here.
        return String(decoding: try readBytes(&buf, count: Int(len)), as: UTF8.self)
    }

    public static func write(_ value: String, into buf: inout [UInt8]) {
        let len = Int32(value.utf8.count)
        writeInt(&buf, len)
        writeBytes(&buf, value.utf8)
    }
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
fileprivate struct FfiConverterData: FfiConverterRustBuffer {
    typealias SwiftType = Data

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> Data {
        let len: Int32 = try readInt(&buf)
        return Data(try readBytes(&buf, count: Int(len)))
    }

    public static func write(_ value: Data, into buf: inout [UInt8]) {
        let len = Int32(value.count)
        writeInt(&buf, len)
        writeBytes(&buf, value)
    }
}




public protocol MobileAuthenticationProtocol: AnyObject, Sendable {

    func addEntryEditorField(editor: UInt64, kind: MobileEntryEditorFieldKind, name: String?, value: String) throws  -> MobileEntryEditorPage

    func beginCreateEntry(directory: String, name: String, passphrase: String?) throws  -> MobileEntryEditorSession

    func beginEntryEditor(path: String) throws  -> MobileEntryEditorSession

    func cachedTotpPage() throws  -> MobileTotpPage?

    func cancel() throws

    func copyEntryField(path: String, field: UInt64) throws  -> MobileEntryCopy

    func copyTotpCode(path: String, unixSeconds: UInt64) throws  -> MobileEntryCopy

    func discardEntryEditor(editor: UInt64) throws

    func entryEditor(editor: UInt64) throws  -> MobileEntryEditorPage

    func entryPage(path: String, unixSeconds: UInt64) throws  -> MobileEntryPresentation

    func generateEntryEditorPassword(editor: UInt64, length: UInt32?, noSymbols: Bool) throws  -> MobileEntryEditorPage

    func gitIdentity() throws  -> MobileGitIdentity

    func manualLock() throws

    func performEntryMutation(request: MobileMutationRequest) throws  -> MobileMutationOutcome

    func prepareEntryMutation(path: String, action: MobileMutationAction) throws  -> MobileMutationPlan

    func removeEntryEditorField(editor: UInt64, field: UInt64) throws  -> MobileEntryEditorPage

    func reorderEntryEditorField(editor: UInt64, field: UInt64, index: UInt32) throws  -> MobileEntryEditorPage

    func replaceEntryField(path: String, field: UInt64, value: String) throws  -> MobileEntryPage

    func revealEntryField(path: String, field: UInt64) throws  -> String

    func saveEntryEditor(editor: UInt64, fields: [MobileEntryEditorInput]) throws  -> MobileEntryPage

    func searchCachedTotpPage(query: String) throws  -> MobileTotpPage?

    func setBiometricUnlock(enabled: Bool) throws  -> MobileAuthenticationState

    func setGitIdentity(name: String, email: String) throws  -> MobileGitIdentity

    func setTotpWatchShared(path: String, shared: Bool, unixSeconds: UInt64) throws  -> MobileTotpDetail

    func state() throws  -> MobileAuthenticationState

    func totpDetail(path: String, unixSeconds: UInt64) throws  -> MobileTotpDetail

    func totpPage(operation: MobileTotpOperation) throws  -> MobileTotpPage

    func touchUserActivity() throws

    func unlockEntry(path: String, passphrase: String?) throws  -> MobileAuthenticationState

    func unlockTotp(passphrase: String?) throws  -> MobileAuthenticationState

    func updateEntryEditor(editor: UInt64, fields: [MobileEntryEditorInput]) throws  -> MobileEntryEditorPage

}
open class MobileAuthentication: MobileAuthenticationProtocol, @unchecked Sendable {
    fileprivate let handle: UInt64

    /// Used to instantiate a [FFIObject] without an actual handle, for fakes in tests, mostly.
#if swift(>=5.8)
    @_documentation(visibility: private)
#endif
    public struct NoHandle {
        public init() {}
    }

    // TODO: We'd like this to be `private` but for Swifty reasons,
    // we can't implement `FfiConverter` without making this `required` and we can't
    // make it `required` without making it `public`.
#if swift(>=5.8)
    @_documentation(visibility: private)
#endif
    required public init(unsafeFromHandle handle: UInt64) {
        self.handle = handle
    }

    // This constructor can be used to instantiate a fake object.
    // - Parameter noHandle: Placeholder value so we can have a constructor separate from the default empty one that may be implemented for classes extending [FFIObject].
    //
    // - Warning:
    //     Any object instantiated with this constructor cannot be passed to an actual Rust-backed object. Since there isn't a backing handle the FFI lower functions will crash.
#if swift(>=5.8)
    @_documentation(visibility: private)
#endif
    public init(noHandle: NoHandle) {
        self.handle = 0
    }

#if swift(>=5.8)
    @_documentation(visibility: private)
#endif
    public func uniffiCloneHandle() -> UInt64 {
        return try! rustCall { uniffi_ironstorage_apple_fn_clone_mobileauthentication(self.handle, $0) }
    }
    // No primary constructor declared for this class.

    deinit {
        if handle == 0 {
            // Mock objects have handle=0 don't try to free them
            return
        }

        try! rustCall { uniffi_ironstorage_apple_fn_free_mobileauthentication(handle, $0) }
    }




open func addEntryEditorField(editor: UInt64, kind: MobileEntryEditorFieldKind, name: String?, value: String)throws  -> MobileEntryEditorPage  {
    return try  FfiConverterTypeMobileEntryEditorPage_lift(try rustCallWithError(FfiConverterTypeMobileAuthenticationFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileauthentication_add_entry_editor_field(
            self.uniffiCloneHandle(),
        FfiConverterUInt64.lower(editor),
        FfiConverterTypeMobileEntryEditorFieldKind_lower(kind),
        FfiConverterOptionString.lower(name),
        FfiConverterString.lower(value),uniffiCallStatus
    )
})
}

open func beginCreateEntry(directory: String, name: String, passphrase: String?)throws  -> MobileEntryEditorSession  {
    return try  FfiConverterTypeMobileEntryEditorSession_lift(try rustCallWithError(FfiConverterTypeMobileAuthenticationFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileauthentication_begin_create_entry(
            self.uniffiCloneHandle(),
        FfiConverterString.lower(directory),
        FfiConverterString.lower(name),
        FfiConverterOptionString.lower(passphrase),uniffiCallStatus
    )
})
}

open func beginEntryEditor(path: String)throws  -> MobileEntryEditorSession  {
    return try  FfiConverterTypeMobileEntryEditorSession_lift(try rustCallWithError(FfiConverterTypeMobileAuthenticationFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileauthentication_begin_entry_editor(
            self.uniffiCloneHandle(),
        FfiConverterString.lower(path),uniffiCallStatus
    )
})
}

open func cachedTotpPage()throws  -> MobileTotpPage?  {
    return try  FfiConverterOptionTypeMobileTotpPage.lift(try rustCallWithError(FfiConverterTypeMobileAuthenticationFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileauthentication_cached_totp_page(
            self.uniffiCloneHandle(),uniffiCallStatus
    )
})
}

open func cancel()throws   {try rustCallWithError(FfiConverterTypeMobileAuthenticationFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileauthentication_cancel(
            self.uniffiCloneHandle(),uniffiCallStatus
    )
}
}

open func copyEntryField(path: String, field: UInt64)throws  -> MobileEntryCopy  {
    return try  FfiConverterTypeMobileEntryCopy_lift(try rustCallWithError(FfiConverterTypeMobileAuthenticationFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileauthentication_copy_entry_field(
            self.uniffiCloneHandle(),
        FfiConverterString.lower(path),
        FfiConverterUInt64.lower(field),uniffiCallStatus
    )
})
}

open func copyTotpCode(path: String, unixSeconds: UInt64)throws  -> MobileEntryCopy  {
    return try  FfiConverterTypeMobileEntryCopy_lift(try rustCallWithError(FfiConverterTypeMobileAuthenticationFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileauthentication_copy_totp_code(
            self.uniffiCloneHandle(),
        FfiConverterString.lower(path),
        FfiConverterUInt64.lower(unixSeconds),uniffiCallStatus
    )
})
}

open func discardEntryEditor(editor: UInt64)throws   {try rustCallWithError(FfiConverterTypeMobileAuthenticationFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileauthentication_discard_entry_editor(
            self.uniffiCloneHandle(),
        FfiConverterUInt64.lower(editor),uniffiCallStatus
    )
}
}

open func entryEditor(editor: UInt64)throws  -> MobileEntryEditorPage  {
    return try  FfiConverterTypeMobileEntryEditorPage_lift(try rustCallWithError(FfiConverterTypeMobileAuthenticationFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileauthentication_entry_editor(
            self.uniffiCloneHandle(),
        FfiConverterUInt64.lower(editor),uniffiCallStatus
    )
})
}

open func entryPage(path: String, unixSeconds: UInt64)throws  -> MobileEntryPresentation  {
    return try  FfiConverterTypeMobileEntryPresentation_lift(try rustCallWithError(FfiConverterTypeMobileAuthenticationFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileauthentication_entry_page(
            self.uniffiCloneHandle(),
        FfiConverterString.lower(path),
        FfiConverterUInt64.lower(unixSeconds),uniffiCallStatus
    )
})
}

open func generateEntryEditorPassword(editor: UInt64, length: UInt32?, noSymbols: Bool)throws  -> MobileEntryEditorPage  {
    return try  FfiConverterTypeMobileEntryEditorPage_lift(try rustCallWithError(FfiConverterTypeMobileAuthenticationFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileauthentication_generate_entry_editor_password(
            self.uniffiCloneHandle(),
        FfiConverterUInt64.lower(editor),
        FfiConverterOptionUInt32.lower(length),
        FfiConverterBool.lower(noSymbols),uniffiCallStatus
    )
})
}

open func gitIdentity()throws  -> MobileGitIdentity  {
    return try  FfiConverterTypeMobileGitIdentity_lift(try rustCallWithError(FfiConverterTypeMobileAuthenticationFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileauthentication_git_identity(
            self.uniffiCloneHandle(),uniffiCallStatus
    )
})
}

open func manualLock()throws   {try rustCallWithError(FfiConverterTypeMobileAuthenticationFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileauthentication_manual_lock(
            self.uniffiCloneHandle(),uniffiCallStatus
    )
}
}

open func performEntryMutation(request: MobileMutationRequest)throws  -> MobileMutationOutcome  {
    return try  FfiConverterTypeMobileMutationOutcome_lift(try rustCallWithError(FfiConverterTypeMobileAuthenticationFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileauthentication_perform_entry_mutation(
            self.uniffiCloneHandle(),
        FfiConverterTypeMobileMutationRequest_lower(request),uniffiCallStatus
    )
})
}

open func prepareEntryMutation(path: String, action: MobileMutationAction)throws  -> MobileMutationPlan  {
    return try  FfiConverterTypeMobileMutationPlan_lift(try rustCallWithError(FfiConverterTypeMobileAuthenticationFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileauthentication_prepare_entry_mutation(
            self.uniffiCloneHandle(),
        FfiConverterString.lower(path),
        FfiConverterTypeMobileMutationAction_lower(action),uniffiCallStatus
    )
})
}

open func removeEntryEditorField(editor: UInt64, field: UInt64)throws  -> MobileEntryEditorPage  {
    return try  FfiConverterTypeMobileEntryEditorPage_lift(try rustCallWithError(FfiConverterTypeMobileAuthenticationFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileauthentication_remove_entry_editor_field(
            self.uniffiCloneHandle(),
        FfiConverterUInt64.lower(editor),
        FfiConverterUInt64.lower(field),uniffiCallStatus
    )
})
}

open func reorderEntryEditorField(editor: UInt64, field: UInt64, index: UInt32)throws  -> MobileEntryEditorPage  {
    return try  FfiConverterTypeMobileEntryEditorPage_lift(try rustCallWithError(FfiConverterTypeMobileAuthenticationFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileauthentication_reorder_entry_editor_field(
            self.uniffiCloneHandle(),
        FfiConverterUInt64.lower(editor),
        FfiConverterUInt64.lower(field),
        FfiConverterUInt32.lower(index),uniffiCallStatus
    )
})
}

open func replaceEntryField(path: String, field: UInt64, value: String)throws  -> MobileEntryPage  {
    return try  FfiConverterTypeMobileEntryPage_lift(try rustCallWithError(FfiConverterTypeMobileAuthenticationFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileauthentication_replace_entry_field(
            self.uniffiCloneHandle(),
        FfiConverterString.lower(path),
        FfiConverterUInt64.lower(field),
        FfiConverterString.lower(value),uniffiCallStatus
    )
})
}

open func revealEntryField(path: String, field: UInt64)throws  -> String  {
    return try  FfiConverterString.lift(try rustCallWithError(FfiConverterTypeMobileAuthenticationFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileauthentication_reveal_entry_field(
            self.uniffiCloneHandle(),
        FfiConverterString.lower(path),
        FfiConverterUInt64.lower(field),uniffiCallStatus
    )
})
}

open func saveEntryEditor(editor: UInt64, fields: [MobileEntryEditorInput])throws  -> MobileEntryPage  {
    return try  FfiConverterTypeMobileEntryPage_lift(try rustCallWithError(FfiConverterTypeMobileAuthenticationFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileauthentication_save_entry_editor(
            self.uniffiCloneHandle(),
        FfiConverterUInt64.lower(editor),
        FfiConverterSequenceTypeMobileEntryEditorInput.lower(fields),uniffiCallStatus
    )
})
}

open func searchCachedTotpPage(query: String)throws  -> MobileTotpPage?  {
    return try  FfiConverterOptionTypeMobileTotpPage.lift(try rustCallWithError(FfiConverterTypeMobileAuthenticationFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileauthentication_search_cached_totp_page(
            self.uniffiCloneHandle(),
        FfiConverterString.lower(query),uniffiCallStatus
    )
})
}

open func setBiometricUnlock(enabled: Bool)throws  -> MobileAuthenticationState  {
    return try  FfiConverterTypeMobileAuthenticationState_lift(try rustCallWithError(FfiConverterTypeMobileAuthenticationFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileauthentication_set_biometric_unlock(
            self.uniffiCloneHandle(),
        FfiConverterBool.lower(enabled),uniffiCallStatus
    )
})
}

open func setGitIdentity(name: String, email: String)throws  -> MobileGitIdentity  {
    return try  FfiConverterTypeMobileGitIdentity_lift(try rustCallWithError(FfiConverterTypeMobileAuthenticationFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileauthentication_set_git_identity(
            self.uniffiCloneHandle(),
        FfiConverterString.lower(name),
        FfiConverterString.lower(email),uniffiCallStatus
    )
})
}

open func setTotpWatchShared(path: String, shared: Bool, unixSeconds: UInt64)throws  -> MobileTotpDetail  {
    return try  FfiConverterTypeMobileTotpDetail_lift(try rustCallWithError(FfiConverterTypeMobileAuthenticationFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileauthentication_set_totp_watch_shared(
            self.uniffiCloneHandle(),
        FfiConverterString.lower(path),
        FfiConverterBool.lower(shared),
        FfiConverterUInt64.lower(unixSeconds),uniffiCallStatus
    )
})
}

open func state()throws  -> MobileAuthenticationState  {
    return try  FfiConverterTypeMobileAuthenticationState_lift(try rustCallWithError(FfiConverterTypeMobileAuthenticationFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileauthentication_state(
            self.uniffiCloneHandle(),uniffiCallStatus
    )
})
}

open func totpDetail(path: String, unixSeconds: UInt64)throws  -> MobileTotpDetail  {
    return try  FfiConverterTypeMobileTotpDetail_lift(try rustCallWithError(FfiConverterTypeMobileAuthenticationFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileauthentication_totp_detail(
            self.uniffiCloneHandle(),
        FfiConverterString.lower(path),
        FfiConverterUInt64.lower(unixSeconds),uniffiCallStatus
    )
})
}

open func totpPage(operation: MobileTotpOperation)throws  -> MobileTotpPage  {
    return try  FfiConverterTypeMobileTotpPage_lift(try rustCallWithError(FfiConverterTypeMobileAuthenticationFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileauthentication_totp_page(
            self.uniffiCloneHandle(),
        FfiConverterTypeMobileTotpOperation_lower(operation),uniffiCallStatus
    )
})
}

open func touchUserActivity()throws   {try rustCallWithError(FfiConverterTypeMobileAuthenticationFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileauthentication_touch_user_activity(
            self.uniffiCloneHandle(),uniffiCallStatus
    )
}
}

open func unlockEntry(path: String, passphrase: String?)throws  -> MobileAuthenticationState  {
    return try  FfiConverterTypeMobileAuthenticationState_lift(try rustCallWithError(FfiConverterTypeMobileAuthenticationFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileauthentication_unlock_entry(
            self.uniffiCloneHandle(),
        FfiConverterString.lower(path),
        FfiConverterOptionString.lower(passphrase),uniffiCallStatus
    )
})
}

open func unlockTotp(passphrase: String?)throws  -> MobileAuthenticationState  {
    return try  FfiConverterTypeMobileAuthenticationState_lift(try rustCallWithError(FfiConverterTypeMobileAuthenticationFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileauthentication_unlock_totp(
            self.uniffiCloneHandle(),
        FfiConverterOptionString.lower(passphrase),uniffiCallStatus
    )
})
}

open func updateEntryEditor(editor: UInt64, fields: [MobileEntryEditorInput])throws  -> MobileEntryEditorPage  {
    return try  FfiConverterTypeMobileEntryEditorPage_lift(try rustCallWithError(FfiConverterTypeMobileAuthenticationFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileauthentication_update_entry_editor(
            self.uniffiCloneHandle(),
        FfiConverterUInt64.lower(editor),
        FfiConverterSequenceTypeMobileEntryEditorInput.lower(fields),uniffiCallStatus
    )
})
}



}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileAuthentication: FfiConverter {
    typealias FfiType = UInt64
    typealias SwiftType = MobileAuthentication

    public static func lift(_ handle: UInt64) throws -> MobileAuthentication {
        return MobileAuthentication(unsafeFromHandle: handle)
    }

    public static func lower(_ value: MobileAuthentication) -> UInt64 {
        return value.uniffiCloneHandle()
    }

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileAuthentication {
        let handle: UInt64 = try readInt(&buf)
        return try lift(handle)
    }

    public static func write(_ value: MobileAuthentication, into buf: inout [UInt8]) {
        writeInt(&buf, lower(value))
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileAuthentication_lift(_ handle: UInt64) throws -> MobileAuthentication {
    return try FfiConverterTypeMobileAuthentication.lift(handle)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileAuthentication_lower(_ value: MobileAuthentication) -> UInt64 {
    return FfiConverterTypeMobileAuthentication.lower(value)
}






public protocol MobileHomeOperationProtocol: AnyObject, Sendable {

    func cached() throws  -> MobileHomePage

    func cancel()

    func progress()  -> MobileHomeProgress

    func pull() throws  -> MobileHomePage

    func refresh() throws  -> MobileHomePage

    func refreshIfStale() throws  -> MobileHomePage

}
open class MobileHomeOperation: MobileHomeOperationProtocol, @unchecked Sendable {
    fileprivate let handle: UInt64

    /// Used to instantiate a [FFIObject] without an actual handle, for fakes in tests, mostly.
#if swift(>=5.8)
    @_documentation(visibility: private)
#endif
    public struct NoHandle {
        public init() {}
    }

    // TODO: We'd like this to be `private` but for Swifty reasons,
    // we can't implement `FfiConverter` without making this `required` and we can't
    // make it `required` without making it `public`.
#if swift(>=5.8)
    @_documentation(visibility: private)
#endif
    required public init(unsafeFromHandle handle: UInt64) {
        self.handle = handle
    }

    // This constructor can be used to instantiate a fake object.
    // - Parameter noHandle: Placeholder value so we can have a constructor separate from the default empty one that may be implemented for classes extending [FFIObject].
    //
    // - Warning:
    //     Any object instantiated with this constructor cannot be passed to an actual Rust-backed object. Since there isn't a backing handle the FFI lower functions will crash.
#if swift(>=5.8)
    @_documentation(visibility: private)
#endif
    public init(noHandle: NoHandle) {
        self.handle = 0
    }

#if swift(>=5.8)
    @_documentation(visibility: private)
#endif
    public func uniffiCloneHandle() -> UInt64 {
        return try! rustCall { uniffi_ironstorage_apple_fn_clone_mobilehomeoperation(self.handle, $0) }
    }
    // No primary constructor declared for this class.

    deinit {
        if handle == 0 {
            // Mock objects have handle=0 don't try to free them
            return
        }

        try! rustCall { uniffi_ironstorage_apple_fn_free_mobilehomeoperation(handle, $0) }
    }




open func cached()throws  -> MobileHomePage  {
    return try  FfiConverterTypeMobileHomePage_lift(try rustCallWithError(FfiConverterTypeMobileHomeFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobilehomeoperation_cached(
            self.uniffiCloneHandle(),uniffiCallStatus
    )
})
}

open func cancel()  {try! rustCall() {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobilehomeoperation_cancel(
            self.uniffiCloneHandle(),uniffiCallStatus
    )
}
}

open func progress() -> MobileHomeProgress  {
    return try!  FfiConverterTypeMobileHomeProgress_lift(try! rustCall() {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobilehomeoperation_progress(
            self.uniffiCloneHandle(),uniffiCallStatus
    )
})
}

open func pull()throws  -> MobileHomePage  {
    return try  FfiConverterTypeMobileHomePage_lift(try rustCallWithError(FfiConverterTypeMobileHomeFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobilehomeoperation_pull(
            self.uniffiCloneHandle(),uniffiCallStatus
    )
})
}

open func refresh()throws  -> MobileHomePage  {
    return try  FfiConverterTypeMobileHomePage_lift(try rustCallWithError(FfiConverterTypeMobileHomeFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobilehomeoperation_refresh(
            self.uniffiCloneHandle(),uniffiCallStatus
    )
})
}

open func refreshIfStale()throws  -> MobileHomePage  {
    return try  FfiConverterTypeMobileHomePage_lift(try rustCallWithError(FfiConverterTypeMobileHomeFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobilehomeoperation_refresh_if_stale(
            self.uniffiCloneHandle(),uniffiCallStatus
    )
})
}



}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileHomeOperation: FfiConverter {
    typealias FfiType = UInt64
    typealias SwiftType = MobileHomeOperation

    public static func lift(_ handle: UInt64) throws -> MobileHomeOperation {
        return MobileHomeOperation(unsafeFromHandle: handle)
    }

    public static func lower(_ value: MobileHomeOperation) -> UInt64 {
        return value.uniffiCloneHandle()
    }

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileHomeOperation {
        let handle: UInt64 = try readInt(&buf)
        return try lift(handle)
    }

    public static func write(_ value: MobileHomeOperation, into buf: inout [UInt8]) {
        writeInt(&buf, lower(value))
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileHomeOperation_lift(_ handle: UInt64) throws -> MobileHomeOperation {
    return try FfiConverterTypeMobileHomeOperation.lift(handle)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileHomeOperation_lower(_ value: MobileHomeOperation) -> UInt64 {
    return FfiConverterTypeMobileHomeOperation.lower(value)
}






public protocol MobileKeyTransferProtocol: AnyObject, Sendable {

    func export(fingerprint: String, kind: MobileKeyTransferKind, passphrase: String?) throws  -> MobileKeyTransferExport

    func importer()  -> MobileKeyTransferImport

    func keys()  -> [MobileKeyTransferKey]

}
open class MobileKeyTransfer: MobileKeyTransferProtocol, @unchecked Sendable {
    fileprivate let handle: UInt64

    /// Used to instantiate a [FFIObject] without an actual handle, for fakes in tests, mostly.
#if swift(>=5.8)
    @_documentation(visibility: private)
#endif
    public struct NoHandle {
        public init() {}
    }

    // TODO: We'd like this to be `private` but for Swifty reasons,
    // we can't implement `FfiConverter` without making this `required` and we can't
    // make it `required` without making it `public`.
#if swift(>=5.8)
    @_documentation(visibility: private)
#endif
    required public init(unsafeFromHandle handle: UInt64) {
        self.handle = handle
    }

    // This constructor can be used to instantiate a fake object.
    // - Parameter noHandle: Placeholder value so we can have a constructor separate from the default empty one that may be implemented for classes extending [FFIObject].
    //
    // - Warning:
    //     Any object instantiated with this constructor cannot be passed to an actual Rust-backed object. Since there isn't a backing handle the FFI lower functions will crash.
#if swift(>=5.8)
    @_documentation(visibility: private)
#endif
    public init(noHandle: NoHandle) {
        self.handle = 0
    }

#if swift(>=5.8)
    @_documentation(visibility: private)
#endif
    public func uniffiCloneHandle() -> UInt64 {
        return try! rustCall { uniffi_ironstorage_apple_fn_clone_mobilekeytransfer(self.handle, $0) }
    }
    // No primary constructor declared for this class.

    deinit {
        if handle == 0 {
            // Mock objects have handle=0 don't try to free them
            return
        }

        try! rustCall { uniffi_ironstorage_apple_fn_free_mobilekeytransfer(handle, $0) }
    }




open func export(fingerprint: String, kind: MobileKeyTransferKind, passphrase: String?)throws  -> MobileKeyTransferExport  {
    return try  FfiConverterTypeMobileKeyTransferExport_lift(try rustCallWithError(FfiConverterTypeMobileKeyTransferFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobilekeytransfer_export(
            self.uniffiCloneHandle(),
        FfiConverterString.lower(fingerprint),
        FfiConverterTypeMobileKeyTransferKind_lower(kind),
        FfiConverterOptionString.lower(passphrase),uniffiCallStatus
    )
})
}

open func importer() -> MobileKeyTransferImport  {
    return try!  FfiConverterTypeMobileKeyTransferImport_lift(try! rustCall() {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobilekeytransfer_importer(
            self.uniffiCloneHandle(),uniffiCallStatus
    )
})
}

open func keys() -> [MobileKeyTransferKey]  {
    return try!  FfiConverterSequenceTypeMobileKeyTransferKey.lift(try! rustCall() {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobilekeytransfer_keys(
            self.uniffiCloneHandle(),uniffiCallStatus
    )
})
}



}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileKeyTransfer: FfiConverter {
    typealias FfiType = UInt64
    typealias SwiftType = MobileKeyTransfer

    public static func lift(_ handle: UInt64) throws -> MobileKeyTransfer {
        return MobileKeyTransfer(unsafeFromHandle: handle)
    }

    public static func lower(_ value: MobileKeyTransfer) -> UInt64 {
        return value.uniffiCloneHandle()
    }

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileKeyTransfer {
        let handle: UInt64 = try readInt(&buf)
        return try lift(handle)
    }

    public static func write(_ value: MobileKeyTransfer, into buf: inout [UInt8]) {
        writeInt(&buf, lower(value))
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileKeyTransfer_lift(_ handle: UInt64) throws -> MobileKeyTransfer {
    return try FfiConverterTypeMobileKeyTransfer.lift(handle)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileKeyTransfer_lower(_ value: MobileKeyTransfer) -> UInt64 {
    return FfiConverterTypeMobileKeyTransfer.lower(value)
}






public protocol MobileKeyTransferImportProtocol: AnyObject, Sendable {

    func addFrame(payload: String) throws  -> MobileKeyTransferProgress

    func `import`(passphrase: String?, makeDefault: Bool) throws  -> MobileKeyTransferOutcome

}
open class MobileKeyTransferImport: MobileKeyTransferImportProtocol, @unchecked Sendable {
    fileprivate let handle: UInt64

    /// Used to instantiate a [FFIObject] without an actual handle, for fakes in tests, mostly.
#if swift(>=5.8)
    @_documentation(visibility: private)
#endif
    public struct NoHandle {
        public init() {}
    }

    // TODO: We'd like this to be `private` but for Swifty reasons,
    // we can't implement `FfiConverter` without making this `required` and we can't
    // make it `required` without making it `public`.
#if swift(>=5.8)
    @_documentation(visibility: private)
#endif
    required public init(unsafeFromHandle handle: UInt64) {
        self.handle = handle
    }

    // This constructor can be used to instantiate a fake object.
    // - Parameter noHandle: Placeholder value so we can have a constructor separate from the default empty one that may be implemented for classes extending [FFIObject].
    //
    // - Warning:
    //     Any object instantiated with this constructor cannot be passed to an actual Rust-backed object. Since there isn't a backing handle the FFI lower functions will crash.
#if swift(>=5.8)
    @_documentation(visibility: private)
#endif
    public init(noHandle: NoHandle) {
        self.handle = 0
    }

#if swift(>=5.8)
    @_documentation(visibility: private)
#endif
    public func uniffiCloneHandle() -> UInt64 {
        return try! rustCall { uniffi_ironstorage_apple_fn_clone_mobilekeytransferimport(self.handle, $0) }
    }
    // No primary constructor declared for this class.

    deinit {
        if handle == 0 {
            // Mock objects have handle=0 don't try to free them
            return
        }

        try! rustCall { uniffi_ironstorage_apple_fn_free_mobilekeytransferimport(handle, $0) }
    }




open func addFrame(payload: String)throws  -> MobileKeyTransferProgress  {
    return try  FfiConverterTypeMobileKeyTransferProgress_lift(try rustCallWithError(FfiConverterTypeMobileKeyTransferFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobilekeytransferimport_add_frame(
            self.uniffiCloneHandle(),
        FfiConverterString.lower(payload),uniffiCallStatus
    )
})
}

open func `import`(passphrase: String?, makeDefault: Bool)throws  -> MobileKeyTransferOutcome  {
    return try  FfiConverterTypeMobileKeyTransferOutcome_lift(try rustCallWithError(FfiConverterTypeMobileKeyTransferFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobilekeytransferimport_import(
            self.uniffiCloneHandle(),
        FfiConverterOptionString.lower(passphrase),
        FfiConverterBool.lower(makeDefault),uniffiCallStatus
    )
})
}



}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileKeyTransferImport: FfiConverter {
    typealias FfiType = UInt64
    typealias SwiftType = MobileKeyTransferImport

    public static func lift(_ handle: UInt64) throws -> MobileKeyTransferImport {
        return MobileKeyTransferImport(unsafeFromHandle: handle)
    }

    public static func lower(_ value: MobileKeyTransferImport) -> UInt64 {
        return value.uniffiCloneHandle()
    }

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileKeyTransferImport {
        let handle: UInt64 = try readInt(&buf)
        return try lift(handle)
    }

    public static func write(_ value: MobileKeyTransferImport, into buf: inout [UInt8]) {
        writeInt(&buf, lower(value))
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileKeyTransferImport_lift(_ handle: UInt64) throws -> MobileKeyTransferImport {
    return try FfiConverterTypeMobileKeyTransferImport.lift(handle)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileKeyTransferImport_lower(_ value: MobileKeyTransferImport) -> UInt64 {
    return FfiConverterTypeMobileKeyTransferImport.lower(value)
}






public protocol MobileOnboardingOperationProtocol: AnyObject, Sendable {

    func cancel()

    func discover() throws  -> MobileOnboardingDiscovery

    func progress()  -> MobileOnboardingProgress

    func setup(branch: String, useExisting: Bool) throws  -> MobileOnboardingOutcome

}
open class MobileOnboardingOperation: MobileOnboardingOperationProtocol, @unchecked Sendable {
    fileprivate let handle: UInt64

    /// Used to instantiate a [FFIObject] without an actual handle, for fakes in tests, mostly.
#if swift(>=5.8)
    @_documentation(visibility: private)
#endif
    public struct NoHandle {
        public init() {}
    }

    // TODO: We'd like this to be `private` but for Swifty reasons,
    // we can't implement `FfiConverter` without making this `required` and we can't
    // make it `required` without making it `public`.
#if swift(>=5.8)
    @_documentation(visibility: private)
#endif
    required public init(unsafeFromHandle handle: UInt64) {
        self.handle = handle
    }

    // This constructor can be used to instantiate a fake object.
    // - Parameter noHandle: Placeholder value so we can have a constructor separate from the default empty one that may be implemented for classes extending [FFIObject].
    //
    // - Warning:
    //     Any object instantiated with this constructor cannot be passed to an actual Rust-backed object. Since there isn't a backing handle the FFI lower functions will crash.
#if swift(>=5.8)
    @_documentation(visibility: private)
#endif
    public init(noHandle: NoHandle) {
        self.handle = 0
    }

#if swift(>=5.8)
    @_documentation(visibility: private)
#endif
    public func uniffiCloneHandle() -> UInt64 {
        return try! rustCall { uniffi_ironstorage_apple_fn_clone_mobileonboardingoperation(self.handle, $0) }
    }
    // No primary constructor declared for this class.

    deinit {
        if handle == 0 {
            // Mock objects have handle=0 don't try to free them
            return
        }

        try! rustCall { uniffi_ironstorage_apple_fn_free_mobileonboardingoperation(handle, $0) }
    }




open func cancel()  {try! rustCall() {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileonboardingoperation_cancel(
            self.uniffiCloneHandle(),uniffiCallStatus
    )
}
}

open func discover()throws  -> MobileOnboardingDiscovery  {
    return try  FfiConverterTypeMobileOnboardingDiscovery_lift(try rustCallWithError(FfiConverterTypeMobileOnboardingFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileonboardingoperation_discover(
            self.uniffiCloneHandle(),uniffiCallStatus
    )
})
}

open func progress() -> MobileOnboardingProgress  {
    return try!  FfiConverterTypeMobileOnboardingProgress_lift(try! rustCall() {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileonboardingoperation_progress(
            self.uniffiCloneHandle(),uniffiCallStatus
    )
})
}

open func setup(branch: String, useExisting: Bool)throws  -> MobileOnboardingOutcome  {
    return try  FfiConverterTypeMobileOnboardingOutcome_lift(try rustCallWithError(FfiConverterTypeMobileOnboardingFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobileonboardingoperation_setup(
            self.uniffiCloneHandle(),
        FfiConverterString.lower(branch),
        FfiConverterBool.lower(useExisting),uniffiCallStatus
    )
})
}



}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileOnboardingOperation: FfiConverter {
    typealias FfiType = UInt64
    typealias SwiftType = MobileOnboardingOperation

    public static func lift(_ handle: UInt64) throws -> MobileOnboardingOperation {
        return MobileOnboardingOperation(unsafeFromHandle: handle)
    }

    public static func lower(_ value: MobileOnboardingOperation) -> UInt64 {
        return value.uniffiCloneHandle()
    }

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileOnboardingOperation {
        let handle: UInt64 = try readInt(&buf)
        return try lift(handle)
    }

    public static func write(_ value: MobileOnboardingOperation, into buf: inout [UInt8]) {
        writeInt(&buf, lower(value))
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileOnboardingOperation_lift(_ handle: UInt64) throws -> MobileOnboardingOperation {
    return try FfiConverterTypeMobileOnboardingOperation.lift(handle)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileOnboardingOperation_lower(_ value: MobileOnboardingOperation) -> UInt64 {
    return FfiConverterTypeMobileOnboardingOperation.lower(value)
}






public protocol MobileTotpOperationProtocol: AnyObject, Sendable {

    func cancel()

    func progress()  -> MobileTotpDiscoveryProgress

}
open class MobileTotpOperation: MobileTotpOperationProtocol, @unchecked Sendable {
    fileprivate let handle: UInt64

    /// Used to instantiate a [FFIObject] without an actual handle, for fakes in tests, mostly.
#if swift(>=5.8)
    @_documentation(visibility: private)
#endif
    public struct NoHandle {
        public init() {}
    }

    // TODO: We'd like this to be `private` but for Swifty reasons,
    // we can't implement `FfiConverter` without making this `required` and we can't
    // make it `required` without making it `public`.
#if swift(>=5.8)
    @_documentation(visibility: private)
#endif
    required public init(unsafeFromHandle handle: UInt64) {
        self.handle = handle
    }

    // This constructor can be used to instantiate a fake object.
    // - Parameter noHandle: Placeholder value so we can have a constructor separate from the default empty one that may be implemented for classes extending [FFIObject].
    //
    // - Warning:
    //     Any object instantiated with this constructor cannot be passed to an actual Rust-backed object. Since there isn't a backing handle the FFI lower functions will crash.
#if swift(>=5.8)
    @_documentation(visibility: private)
#endif
    public init(noHandle: NoHandle) {
        self.handle = 0
    }

#if swift(>=5.8)
    @_documentation(visibility: private)
#endif
    public func uniffiCloneHandle() -> UInt64 {
        return try! rustCall { uniffi_ironstorage_apple_fn_clone_mobiletotpoperation(self.handle, $0) }
    }
    // No primary constructor declared for this class.

    deinit {
        if handle == 0 {
            // Mock objects have handle=0 don't try to free them
            return
        }

        try! rustCall { uniffi_ironstorage_apple_fn_free_mobiletotpoperation(handle, $0) }
    }




open func cancel()  {try! rustCall() {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobiletotpoperation_cancel(
            self.uniffiCloneHandle(),uniffiCallStatus
    )
}
}

open func progress() -> MobileTotpDiscoveryProgress  {
    return try!  FfiConverterTypeMobileTotpDiscoveryProgress_lift(try! rustCall() {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_method_mobiletotpoperation_progress(
            self.uniffiCloneHandle(),uniffiCallStatus
    )
})
}



}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileTotpOperation: FfiConverter {
    typealias FfiType = UInt64
    typealias SwiftType = MobileTotpOperation

    public static func lift(_ handle: UInt64) throws -> MobileTotpOperation {
        return MobileTotpOperation(unsafeFromHandle: handle)
    }

    public static func lower(_ value: MobileTotpOperation) -> UInt64 {
        return value.uniffiCloneHandle()
    }

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileTotpOperation {
        let handle: UInt64 = try readInt(&buf)
        return try lift(handle)
    }

    public static func write(_ value: MobileTotpOperation, into buf: inout [UInt8]) {
        writeInt(&buf, lower(value))
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileTotpOperation_lift(_ handle: UInt64) throws -> MobileTotpOperation {
    return try FfiConverterTypeMobileTotpOperation.lift(handle)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileTotpOperation_lower(_ value: MobileTotpOperation) -> UInt64 {
    return FfiConverterTypeMobileTotpOperation.lower(value)
}




public struct MobileAuthenticationState: Equatable, Hashable {
    public var unlocked: Bool
    public var biometricUnlockEnabled: Bool
    public var remainingSeconds: UInt64

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(unlocked: Bool, biometricUnlockEnabled: Bool, remainingSeconds: UInt64) {
        self.unlocked = unlocked
        self.biometricUnlockEnabled = biometricUnlockEnabled
        self.remainingSeconds = remainingSeconds
    }




}

#if compiler(>=6)
extension MobileAuthenticationState: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileAuthenticationState: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileAuthenticationState {
        return
            try MobileAuthenticationState(
                unlocked: FfiConverterBool.read(from: &buf),
                biometricUnlockEnabled: FfiConverterBool.read(from: &buf),
                remainingSeconds: FfiConverterUInt64.read(from: &buf)
        )
    }

    public static func write(_ value: MobileAuthenticationState, into buf: inout [UInt8]) {
        FfiConverterBool.write(value.unlocked, into: &buf)
        FfiConverterBool.write(value.biometricUnlockEnabled, into: &buf)
        FfiConverterUInt64.write(value.remainingSeconds, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileAuthenticationState_lift(_ buf: RustBuffer) throws -> MobileAuthenticationState {
    return try FfiConverterTypeMobileAuthenticationState.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileAuthenticationState_lower(_ value: MobileAuthenticationState) -> RustBuffer {
    return FfiConverterTypeMobileAuthenticationState.lower(value)
}


public struct MobileEntryCopy: Equatable, Hashable {
    public var value: String
    public var timeoutSeconds: UInt64

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(value: String, timeoutSeconds: UInt64) {
        self.value = value
        self.timeoutSeconds = timeoutSeconds
    }




}

#if compiler(>=6)
extension MobileEntryCopy: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileEntryCopy: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileEntryCopy {
        return
            try MobileEntryCopy(
                value: FfiConverterString.read(from: &buf),
                timeoutSeconds: FfiConverterUInt64.read(from: &buf)
        )
    }

    public static func write(_ value: MobileEntryCopy, into buf: inout [UInt8]) {
        FfiConverterString.write(value.value, into: &buf)
        FfiConverterUInt64.write(value.timeoutSeconds, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileEntryCopy_lift(_ buf: RustBuffer) throws -> MobileEntryCopy {
    return try FfiConverterTypeMobileEntryCopy.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileEntryCopy_lower(_ value: MobileEntryCopy) -> RustBuffer {
    return FfiConverterTypeMobileEntryCopy.lower(value)
}


public struct MobileEntryEditorField: Equatable, Hashable {
    public var id: UInt64
    public var kind: MobileEntryEditorFieldKind
    public var name: String?
    public var label: String
    public var systemImage: String
    public var value: String?
    public var maskedValue: String
    public var diagnostic: String?
    public var sensitive: Bool
    public var multiline: Bool
    public var nameEditable: Bool
    public var removable: Bool
    public var reorderable: Bool

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(id: UInt64, kind: MobileEntryEditorFieldKind, name: String?, label: String, systemImage: String, value: String?, maskedValue: String, diagnostic: String?, sensitive: Bool, multiline: Bool, nameEditable: Bool, removable: Bool, reorderable: Bool) {
        self.id = id
        self.kind = kind
        self.name = name
        self.label = label
        self.systemImage = systemImage
        self.value = value
        self.maskedValue = maskedValue
        self.diagnostic = diagnostic
        self.sensitive = sensitive
        self.multiline = multiline
        self.nameEditable = nameEditable
        self.removable = removable
        self.reorderable = reorderable
    }




}

#if compiler(>=6)
extension MobileEntryEditorField: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileEntryEditorField: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileEntryEditorField {
        return
            try MobileEntryEditorField(
                id: FfiConverterUInt64.read(from: &buf),
                kind: FfiConverterTypeMobileEntryEditorFieldKind.read(from: &buf),
                name: FfiConverterOptionString.read(from: &buf),
                label: FfiConverterString.read(from: &buf),
                systemImage: FfiConverterString.read(from: &buf),
                value: FfiConverterOptionString.read(from: &buf),
                maskedValue: FfiConverterString.read(from: &buf),
                diagnostic: FfiConverterOptionString.read(from: &buf),
                sensitive: FfiConverterBool.read(from: &buf),
                multiline: FfiConverterBool.read(from: &buf),
                nameEditable: FfiConverterBool.read(from: &buf),
                removable: FfiConverterBool.read(from: &buf),
                reorderable: FfiConverterBool.read(from: &buf)
        )
    }

    public static func write(_ value: MobileEntryEditorField, into buf: inout [UInt8]) {
        FfiConverterUInt64.write(value.id, into: &buf)
        FfiConverterTypeMobileEntryEditorFieldKind.write(value.kind, into: &buf)
        FfiConverterOptionString.write(value.name, into: &buf)
        FfiConverterString.write(value.label, into: &buf)
        FfiConverterString.write(value.systemImage, into: &buf)
        FfiConverterOptionString.write(value.value, into: &buf)
        FfiConverterString.write(value.maskedValue, into: &buf)
        FfiConverterOptionString.write(value.diagnostic, into: &buf)
        FfiConverterBool.write(value.sensitive, into: &buf)
        FfiConverterBool.write(value.multiline, into: &buf)
        FfiConverterBool.write(value.nameEditable, into: &buf)
        FfiConverterBool.write(value.removable, into: &buf)
        FfiConverterBool.write(value.reorderable, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileEntryEditorField_lift(_ buf: RustBuffer) throws -> MobileEntryEditorField {
    return try FfiConverterTypeMobileEntryEditorField.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileEntryEditorField_lower(_ value: MobileEntryEditorField) -> RustBuffer {
    return FfiConverterTypeMobileEntryEditorField.lower(value)
}


public struct MobileEntryEditorInput: Equatable, Hashable {
    public var id: UInt64
    public var name: String?
    public var value: String?

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(id: UInt64, name: String?, value: String?) {
        self.id = id
        self.name = name
        self.value = value
    }




}

#if compiler(>=6)
extension MobileEntryEditorInput: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileEntryEditorInput: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileEntryEditorInput {
        return
            try MobileEntryEditorInput(
                id: FfiConverterUInt64.read(from: &buf),
                name: FfiConverterOptionString.read(from: &buf),
                value: FfiConverterOptionString.read(from: &buf)
        )
    }

    public static func write(_ value: MobileEntryEditorInput, into buf: inout [UInt8]) {
        FfiConverterUInt64.write(value.id, into: &buf)
        FfiConverterOptionString.write(value.name, into: &buf)
        FfiConverterOptionString.write(value.value, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileEntryEditorInput_lift(_ buf: RustBuffer) throws -> MobileEntryEditorInput {
    return try FfiConverterTypeMobileEntryEditorInput.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileEntryEditorInput_lower(_ value: MobileEntryEditorInput) -> RustBuffer {
    return FfiConverterTypeMobileEntryEditorInput.lower(value)
}


public struct MobileEntryEditorPage: Equatable, Hashable {
    public var path: String
    public var title: String
    public var fields: [MobileEntryEditorField]
    public var dirty: Bool
    public var creating: Bool
    public var defaultPasswordLength: UInt32
    public var maximumPasswordLength: UInt32

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(path: String, title: String, fields: [MobileEntryEditorField], dirty: Bool, creating: Bool, defaultPasswordLength: UInt32, maximumPasswordLength: UInt32) {
        self.path = path
        self.title = title
        self.fields = fields
        self.dirty = dirty
        self.creating = creating
        self.defaultPasswordLength = defaultPasswordLength
        self.maximumPasswordLength = maximumPasswordLength
    }




}

#if compiler(>=6)
extension MobileEntryEditorPage: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileEntryEditorPage: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileEntryEditorPage {
        return
            try MobileEntryEditorPage(
                path: FfiConverterString.read(from: &buf),
                title: FfiConverterString.read(from: &buf),
                fields: FfiConverterSequenceTypeMobileEntryEditorField.read(from: &buf),
                dirty: FfiConverterBool.read(from: &buf),
                creating: FfiConverterBool.read(from: &buf),
                defaultPasswordLength: FfiConverterUInt32.read(from: &buf),
                maximumPasswordLength: FfiConverterUInt32.read(from: &buf)
        )
    }

    public static func write(_ value: MobileEntryEditorPage, into buf: inout [UInt8]) {
        FfiConverterString.write(value.path, into: &buf)
        FfiConverterString.write(value.title, into: &buf)
        FfiConverterSequenceTypeMobileEntryEditorField.write(value.fields, into: &buf)
        FfiConverterBool.write(value.dirty, into: &buf)
        FfiConverterBool.write(value.creating, into: &buf)
        FfiConverterUInt32.write(value.defaultPasswordLength, into: &buf)
        FfiConverterUInt32.write(value.maximumPasswordLength, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileEntryEditorPage_lift(_ buf: RustBuffer) throws -> MobileEntryEditorPage {
    return try FfiConverterTypeMobileEntryEditorPage.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileEntryEditorPage_lower(_ value: MobileEntryEditorPage) -> RustBuffer {
    return FfiConverterTypeMobileEntryEditorPage.lower(value)
}


public struct MobileEntryEditorSession: Equatable, Hashable {
    public var id: UInt64
    public var page: MobileEntryEditorPage

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(id: UInt64, page: MobileEntryEditorPage) {
        self.id = id
        self.page = page
    }




}

#if compiler(>=6)
extension MobileEntryEditorSession: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileEntryEditorSession: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileEntryEditorSession {
        return
            try MobileEntryEditorSession(
                id: FfiConverterUInt64.read(from: &buf),
                page: FfiConverterTypeMobileEntryEditorPage.read(from: &buf)
        )
    }

    public static func write(_ value: MobileEntryEditorSession, into buf: inout [UInt8]) {
        FfiConverterUInt64.write(value.id, into: &buf)
        FfiConverterTypeMobileEntryEditorPage.write(value.page, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileEntryEditorSession_lift(_ buf: RustBuffer) throws -> MobileEntryEditorSession {
    return try FfiConverterTypeMobileEntryEditorSession.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileEntryEditorSession_lower(_ value: MobileEntryEditorSession) -> RustBuffer {
    return FfiConverterTypeMobileEntryEditorSession.lower(value)
}


public struct MobileEntryField: Equatable, Hashable {
    public var id: UInt64
    public var label: String
    public var systemImage: String
    public var value: String?
    public var maskedValue: String
    public var detail: String?
    public var diagnostic: String?
    public var sensitive: Bool
    public var multiline: Bool
    public var selectable: Bool
    public var editable: Bool

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(id: UInt64, label: String, systemImage: String, value: String?, maskedValue: String, detail: String?, diagnostic: String?, sensitive: Bool, multiline: Bool, selectable: Bool, editable: Bool) {
        self.id = id
        self.label = label
        self.systemImage = systemImage
        self.value = value
        self.maskedValue = maskedValue
        self.detail = detail
        self.diagnostic = diagnostic
        self.sensitive = sensitive
        self.multiline = multiline
        self.selectable = selectable
        self.editable = editable
    }




}

#if compiler(>=6)
extension MobileEntryField: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileEntryField: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileEntryField {
        return
            try MobileEntryField(
                id: FfiConverterUInt64.read(from: &buf),
                label: FfiConverterString.read(from: &buf),
                systemImage: FfiConverterString.read(from: &buf),
                value: FfiConverterOptionString.read(from: &buf),
                maskedValue: FfiConverterString.read(from: &buf),
                detail: FfiConverterOptionString.read(from: &buf),
                diagnostic: FfiConverterOptionString.read(from: &buf),
                sensitive: FfiConverterBool.read(from: &buf),
                multiline: FfiConverterBool.read(from: &buf),
                selectable: FfiConverterBool.read(from: &buf),
                editable: FfiConverterBool.read(from: &buf)
        )
    }

    public static func write(_ value: MobileEntryField, into buf: inout [UInt8]) {
        FfiConverterUInt64.write(value.id, into: &buf)
        FfiConverterString.write(value.label, into: &buf)
        FfiConverterString.write(value.systemImage, into: &buf)
        FfiConverterOptionString.write(value.value, into: &buf)
        FfiConverterString.write(value.maskedValue, into: &buf)
        FfiConverterOptionString.write(value.detail, into: &buf)
        FfiConverterOptionString.write(value.diagnostic, into: &buf)
        FfiConverterBool.write(value.sensitive, into: &buf)
        FfiConverterBool.write(value.multiline, into: &buf)
        FfiConverterBool.write(value.selectable, into: &buf)
        FfiConverterBool.write(value.editable, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileEntryField_lift(_ buf: RustBuffer) throws -> MobileEntryField {
    return try FfiConverterTypeMobileEntryField.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileEntryField_lower(_ value: MobileEntryField) -> RustBuffer {
    return FfiConverterTypeMobileEntryField.lower(value)
}


public struct MobileEntryPage: Equatable, Hashable {
    public var id: String
    public var title: String
    public var sections: [MobileEntrySection]

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(id: String, title: String, sections: [MobileEntrySection]) {
        self.id = id
        self.title = title
        self.sections = sections
    }




}

#if compiler(>=6)
extension MobileEntryPage: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileEntryPage: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileEntryPage {
        return
            try MobileEntryPage(
                id: FfiConverterString.read(from: &buf),
                title: FfiConverterString.read(from: &buf),
                sections: FfiConverterSequenceTypeMobileEntrySection.read(from: &buf)
        )
    }

    public static func write(_ value: MobileEntryPage, into buf: inout [UInt8]) {
        FfiConverterString.write(value.id, into: &buf)
        FfiConverterString.write(value.title, into: &buf)
        FfiConverterSequenceTypeMobileEntrySection.write(value.sections, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileEntryPage_lift(_ buf: RustBuffer) throws -> MobileEntryPage {
    return try FfiConverterTypeMobileEntryPage.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileEntryPage_lower(_ value: MobileEntryPage) -> RustBuffer {
    return FfiConverterTypeMobileEntryPage.lower(value)
}


public struct MobileEntryPresentation: Equatable, Hashable {
    public var page: MobileEntryPage
    public var totp: MobileTotpDetail?
    public var cacheNotice: String?

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(page: MobileEntryPage, totp: MobileTotpDetail?, cacheNotice: String?) {
        self.page = page
        self.totp = totp
        self.cacheNotice = cacheNotice
    }




}

#if compiler(>=6)
extension MobileEntryPresentation: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileEntryPresentation: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileEntryPresentation {
        return
            try MobileEntryPresentation(
                page: FfiConverterTypeMobileEntryPage.read(from: &buf),
                totp: FfiConverterOptionTypeMobileTotpDetail.read(from: &buf),
                cacheNotice: FfiConverterOptionString.read(from: &buf)
        )
    }

    public static func write(_ value: MobileEntryPresentation, into buf: inout [UInt8]) {
        FfiConverterTypeMobileEntryPage.write(value.page, into: &buf)
        FfiConverterOptionTypeMobileTotpDetail.write(value.totp, into: &buf)
        FfiConverterOptionString.write(value.cacheNotice, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileEntryPresentation_lift(_ buf: RustBuffer) throws -> MobileEntryPresentation {
    return try FfiConverterTypeMobileEntryPresentation.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileEntryPresentation_lower(_ value: MobileEntryPresentation) -> RustBuffer {
    return FfiConverterTypeMobileEntryPresentation.lower(value)
}


public struct MobileEntrySection: Equatable, Hashable {
    public var kind: MobileEntrySectionKind
    public var title: String
    public var fields: [MobileEntryField]

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(kind: MobileEntrySectionKind, title: String, fields: [MobileEntryField]) {
        self.kind = kind
        self.title = title
        self.fields = fields
    }




}

#if compiler(>=6)
extension MobileEntrySection: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileEntrySection: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileEntrySection {
        return
            try MobileEntrySection(
                kind: FfiConverterTypeMobileEntrySectionKind.read(from: &buf),
                title: FfiConverterString.read(from: &buf),
                fields: FfiConverterSequenceTypeMobileEntryField.read(from: &buf)
        )
    }

    public static func write(_ value: MobileEntrySection, into buf: inout [UInt8]) {
        FfiConverterTypeMobileEntrySectionKind.write(value.kind, into: &buf)
        FfiConverterString.write(value.title, into: &buf)
        FfiConverterSequenceTypeMobileEntryField.write(value.fields, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileEntrySection_lift(_ buf: RustBuffer) throws -> MobileEntrySection {
    return try FfiConverterTypeMobileEntrySection.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileEntrySection_lower(_ value: MobileEntrySection) -> RustBuffer {
    return FfiConverterTypeMobileEntrySection.lower(value)
}


public struct MobileGitIdentity: Equatable, Hashable {
    public var name: String
    public var email: String

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(name: String, email: String) {
        self.name = name
        self.email = email
    }




}

#if compiler(>=6)
extension MobileGitIdentity: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileGitIdentity: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileGitIdentity {
        return
            try MobileGitIdentity(
                name: FfiConverterString.read(from: &buf),
                email: FfiConverterString.read(from: &buf)
        )
    }

    public static func write(_ value: MobileGitIdentity, into buf: inout [UInt8]) {
        FfiConverterString.write(value.name, into: &buf)
        FfiConverterString.write(value.email, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileGitIdentity_lift(_ buf: RustBuffer) throws -> MobileGitIdentity {
    return try FfiConverterTypeMobileGitIdentity.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileGitIdentity_lower(_ value: MobileGitIdentity) -> RustBuffer {
    return FfiConverterTypeMobileGitIdentity.lower(value)
}


public struct MobileHomeChange: Equatable, Hashable {
    public var id: String
    public var title: String
    public var detail: String
    public var systemImage: String
    public var kind: MobileHomeChangeKind
    public var status: MobileHomeChangeStatus

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(id: String, title: String, detail: String, systemImage: String, kind: MobileHomeChangeKind, status: MobileHomeChangeStatus) {
        self.id = id
        self.title = title
        self.detail = detail
        self.systemImage = systemImage
        self.kind = kind
        self.status = status
    }




}

#if compiler(>=6)
extension MobileHomeChange: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileHomeChange: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileHomeChange {
        return
            try MobileHomeChange(
                id: FfiConverterString.read(from: &buf),
                title: FfiConverterString.read(from: &buf),
                detail: FfiConverterString.read(from: &buf),
                systemImage: FfiConverterString.read(from: &buf),
                kind: FfiConverterTypeMobileHomeChangeKind.read(from: &buf),
                status: FfiConverterTypeMobileHomeChangeStatus.read(from: &buf)
        )
    }

    public static func write(_ value: MobileHomeChange, into buf: inout [UInt8]) {
        FfiConverterString.write(value.id, into: &buf)
        FfiConverterString.write(value.title, into: &buf)
        FfiConverterString.write(value.detail, into: &buf)
        FfiConverterString.write(value.systemImage, into: &buf)
        FfiConverterTypeMobileHomeChangeKind.write(value.kind, into: &buf)
        FfiConverterTypeMobileHomeChangeStatus.write(value.status, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileHomeChange_lift(_ buf: RustBuffer) throws -> MobileHomeChange {
    return try FfiConverterTypeMobileHomeChange.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileHomeChange_lower(_ value: MobileHomeChange) -> RustBuffer {
    return FfiConverterTypeMobileHomeChange.lower(value)
}


public struct MobileHomeCommit: Equatable, Hashable {
    public var id: String
    public var title: String
    public var detail: String
    public var systemImage: String
    public var timestamp: Int64
    public var changes: [MobileHomeChange]

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(id: String, title: String, detail: String, systemImage: String, timestamp: Int64, changes: [MobileHomeChange]) {
        self.id = id
        self.title = title
        self.detail = detail
        self.systemImage = systemImage
        self.timestamp = timestamp
        self.changes = changes
    }




}

#if compiler(>=6)
extension MobileHomeCommit: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileHomeCommit: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileHomeCommit {
        return
            try MobileHomeCommit(
                id: FfiConverterString.read(from: &buf),
                title: FfiConverterString.read(from: &buf),
                detail: FfiConverterString.read(from: &buf),
                systemImage: FfiConverterString.read(from: &buf),
                timestamp: FfiConverterInt64.read(from: &buf),
                changes: FfiConverterSequenceTypeMobileHomeChange.read(from: &buf)
        )
    }

    public static func write(_ value: MobileHomeCommit, into buf: inout [UInt8]) {
        FfiConverterString.write(value.id, into: &buf)
        FfiConverterString.write(value.title, into: &buf)
        FfiConverterString.write(value.detail, into: &buf)
        FfiConverterString.write(value.systemImage, into: &buf)
        FfiConverterInt64.write(value.timestamp, into: &buf)
        FfiConverterSequenceTypeMobileHomeChange.write(value.changes, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileHomeCommit_lift(_ buf: RustBuffer) throws -> MobileHomeCommit {
    return try FfiConverterTypeMobileHomeCommit.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileHomeCommit_lower(_ value: MobileHomeCommit) -> RustBuffer {
    return FfiConverterTypeMobileHomeCommit.lower(value)
}


public struct MobileHomeNotice: Equatable, Hashable {
    public var title: String
    public var detail: String
    public var systemImage: String

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(title: String, detail: String, systemImage: String) {
        self.title = title
        self.detail = detail
        self.systemImage = systemImage
    }




}

#if compiler(>=6)
extension MobileHomeNotice: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileHomeNotice: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileHomeNotice {
        return
            try MobileHomeNotice(
                title: FfiConverterString.read(from: &buf),
                detail: FfiConverterString.read(from: &buf),
                systemImage: FfiConverterString.read(from: &buf)
        )
    }

    public static func write(_ value: MobileHomeNotice, into buf: inout [UInt8]) {
        FfiConverterString.write(value.title, into: &buf)
        FfiConverterString.write(value.detail, into: &buf)
        FfiConverterString.write(value.systemImage, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileHomeNotice_lift(_ buf: RustBuffer) throws -> MobileHomeNotice {
    return try FfiConverterTypeMobileHomeNotice.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileHomeNotice_lower(_ value: MobileHomeNotice) -> RustBuffer {
    return FfiConverterTypeMobileHomeNotice.lower(value)
}


public struct MobileHomePage: Equatable, Hashable {
    public var freshness: MobileHomeFreshness
    public var refreshedAt: Int64?
    public var summaries: [MobileHomeSummaryRow]
    public var incoming: [MobileHomeCommit]
    public var outgoing: [MobileHomeCommit]
    public var incomingTotal: UInt32
    public var outgoingTotal: UInt32
    public var notice: MobileHomeNotice?

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(freshness: MobileHomeFreshness, refreshedAt: Int64?, summaries: [MobileHomeSummaryRow], incoming: [MobileHomeCommit], outgoing: [MobileHomeCommit], incomingTotal: UInt32, outgoingTotal: UInt32, notice: MobileHomeNotice?) {
        self.freshness = freshness
        self.refreshedAt = refreshedAt
        self.summaries = summaries
        self.incoming = incoming
        self.outgoing = outgoing
        self.incomingTotal = incomingTotal
        self.outgoingTotal = outgoingTotal
        self.notice = notice
    }




}

#if compiler(>=6)
extension MobileHomePage: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileHomePage: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileHomePage {
        return
            try MobileHomePage(
                freshness: FfiConverterTypeMobileHomeFreshness.read(from: &buf),
                refreshedAt: FfiConverterOptionInt64.read(from: &buf),
                summaries: FfiConverterSequenceTypeMobileHomeSummaryRow.read(from: &buf),
                incoming: FfiConverterSequenceTypeMobileHomeCommit.read(from: &buf),
                outgoing: FfiConverterSequenceTypeMobileHomeCommit.read(from: &buf),
                incomingTotal: FfiConverterUInt32.read(from: &buf),
                outgoingTotal: FfiConverterUInt32.read(from: &buf),
                notice: FfiConverterOptionTypeMobileHomeNotice.read(from: &buf)
        )
    }

    public static func write(_ value: MobileHomePage, into buf: inout [UInt8]) {
        FfiConverterTypeMobileHomeFreshness.write(value.freshness, into: &buf)
        FfiConverterOptionInt64.write(value.refreshedAt, into: &buf)
        FfiConverterSequenceTypeMobileHomeSummaryRow.write(value.summaries, into: &buf)
        FfiConverterSequenceTypeMobileHomeCommit.write(value.incoming, into: &buf)
        FfiConverterSequenceTypeMobileHomeCommit.write(value.outgoing, into: &buf)
        FfiConverterUInt32.write(value.incomingTotal, into: &buf)
        FfiConverterUInt32.write(value.outgoingTotal, into: &buf)
        FfiConverterOptionTypeMobileHomeNotice.write(value.notice, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileHomePage_lift(_ buf: RustBuffer) throws -> MobileHomePage {
    return try FfiConverterTypeMobileHomePage.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileHomePage_lower(_ value: MobileHomePage) -> RustBuffer {
    return FfiConverterTypeMobileHomePage.lower(value)
}


public struct MobileHomeProgress: Equatable, Hashable {
    public var phase: MobileHomePhase
    public var title: String
    public var detail: String

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(phase: MobileHomePhase, title: String, detail: String) {
        self.phase = phase
        self.title = title
        self.detail = detail
    }




}

#if compiler(>=6)
extension MobileHomeProgress: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileHomeProgress: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileHomeProgress {
        return
            try MobileHomeProgress(
                phase: FfiConverterTypeMobileHomePhase.read(from: &buf),
                title: FfiConverterString.read(from: &buf),
                detail: FfiConverterString.read(from: &buf)
        )
    }

    public static func write(_ value: MobileHomeProgress, into buf: inout [UInt8]) {
        FfiConverterTypeMobileHomePhase.write(value.phase, into: &buf)
        FfiConverterString.write(value.title, into: &buf)
        FfiConverterString.write(value.detail, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileHomeProgress_lift(_ buf: RustBuffer) throws -> MobileHomeProgress {
    return try FfiConverterTypeMobileHomeProgress.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileHomeProgress_lower(_ value: MobileHomeProgress) -> RustBuffer {
    return FfiConverterTypeMobileHomeProgress.lower(value)
}


public struct MobileHomeSummaryRow: Equatable, Hashable {
    public var id: String
    public var title: String
    public var detail: String
    public var systemImage: String

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(id: String, title: String, detail: String, systemImage: String) {
        self.id = id
        self.title = title
        self.detail = detail
        self.systemImage = systemImage
    }




}

#if compiler(>=6)
extension MobileHomeSummaryRow: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileHomeSummaryRow: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileHomeSummaryRow {
        return
            try MobileHomeSummaryRow(
                id: FfiConverterString.read(from: &buf),
                title: FfiConverterString.read(from: &buf),
                detail: FfiConverterString.read(from: &buf),
                systemImage: FfiConverterString.read(from: &buf)
        )
    }

    public static func write(_ value: MobileHomeSummaryRow, into buf: inout [UInt8]) {
        FfiConverterString.write(value.id, into: &buf)
        FfiConverterString.write(value.title, into: &buf)
        FfiConverterString.write(value.detail, into: &buf)
        FfiConverterString.write(value.systemImage, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileHomeSummaryRow_lift(_ buf: RustBuffer) throws -> MobileHomeSummaryRow {
    return try FfiConverterTypeMobileHomeSummaryRow.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileHomeSummaryRow_lower(_ value: MobileHomeSummaryRow) -> RustBuffer {
    return FfiConverterTypeMobileHomeSummaryRow.lower(value)
}


public struct MobileKeyTransferExport: Equatable, Hashable {
    public var key: MobileKeyTransferKey
    public var frames: [MobileKeyTransferFrame]

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(key: MobileKeyTransferKey, frames: [MobileKeyTransferFrame]) {
        self.key = key
        self.frames = frames
    }




}

#if compiler(>=6)
extension MobileKeyTransferExport: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileKeyTransferExport: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileKeyTransferExport {
        return
            try MobileKeyTransferExport(
                key: FfiConverterTypeMobileKeyTransferKey.read(from: &buf),
                frames: FfiConverterSequenceTypeMobileKeyTransferFrame.read(from: &buf)
        )
    }

    public static func write(_ value: MobileKeyTransferExport, into buf: inout [UInt8]) {
        FfiConverterTypeMobileKeyTransferKey.write(value.key, into: &buf)
        FfiConverterSequenceTypeMobileKeyTransferFrame.write(value.frames, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileKeyTransferExport_lift(_ buf: RustBuffer) throws -> MobileKeyTransferExport {
    return try FfiConverterTypeMobileKeyTransferExport.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileKeyTransferExport_lower(_ value: MobileKeyTransferExport) -> RustBuffer {
    return FfiConverterTypeMobileKeyTransferExport.lower(value)
}


public struct MobileKeyTransferFrame: Equatable, Hashable {
    public var sequence: UInt32
    public var total: UInt32
    public var width: UInt32
    public var modules: Data

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(sequence: UInt32, total: UInt32, width: UInt32, modules: Data) {
        self.sequence = sequence
        self.total = total
        self.width = width
        self.modules = modules
    }




}

#if compiler(>=6)
extension MobileKeyTransferFrame: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileKeyTransferFrame: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileKeyTransferFrame {
        return
            try MobileKeyTransferFrame(
                sequence: FfiConverterUInt32.read(from: &buf),
                total: FfiConverterUInt32.read(from: &buf),
                width: FfiConverterUInt32.read(from: &buf),
                modules: FfiConverterData.read(from: &buf)
        )
    }

    public static func write(_ value: MobileKeyTransferFrame, into buf: inout [UInt8]) {
        FfiConverterUInt32.write(value.sequence, into: &buf)
        FfiConverterUInt32.write(value.total, into: &buf)
        FfiConverterUInt32.write(value.width, into: &buf)
        FfiConverterData.write(value.modules, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileKeyTransferFrame_lift(_ buf: RustBuffer) throws -> MobileKeyTransferFrame {
    return try FfiConverterTypeMobileKeyTransferFrame.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileKeyTransferFrame_lower(_ value: MobileKeyTransferFrame) -> RustBuffer {
    return FfiConverterTypeMobileKeyTransferFrame.lower(value)
}


public struct MobileKeyTransferKey: Equatable, Hashable {
    public var fingerprint: String
    public var title: String
    public var detail: String
    public var kind: MobileKeyTransferKind
    public var requiresPassphrase: Bool

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(fingerprint: String, title: String, detail: String, kind: MobileKeyTransferKind, requiresPassphrase: Bool) {
        self.fingerprint = fingerprint
        self.title = title
        self.detail = detail
        self.kind = kind
        self.requiresPassphrase = requiresPassphrase
    }




}

#if compiler(>=6)
extension MobileKeyTransferKey: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileKeyTransferKey: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileKeyTransferKey {
        return
            try MobileKeyTransferKey(
                fingerprint: FfiConverterString.read(from: &buf),
                title: FfiConverterString.read(from: &buf),
                detail: FfiConverterString.read(from: &buf),
                kind: FfiConverterTypeMobileKeyTransferKind.read(from: &buf),
                requiresPassphrase: FfiConverterBool.read(from: &buf)
        )
    }

    public static func write(_ value: MobileKeyTransferKey, into buf: inout [UInt8]) {
        FfiConverterString.write(value.fingerprint, into: &buf)
        FfiConverterString.write(value.title, into: &buf)
        FfiConverterString.write(value.detail, into: &buf)
        FfiConverterTypeMobileKeyTransferKind.write(value.kind, into: &buf)
        FfiConverterBool.write(value.requiresPassphrase, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileKeyTransferKey_lift(_ buf: RustBuffer) throws -> MobileKeyTransferKey {
    return try FfiConverterTypeMobileKeyTransferKey.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileKeyTransferKey_lower(_ value: MobileKeyTransferKey) -> RustBuffer {
    return FfiConverterTypeMobileKeyTransferKey.lower(value)
}


public struct MobileKeyTransferOutcome: Equatable, Hashable {
    public var title: String
    public var detail: String

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(title: String, detail: String) {
        self.title = title
        self.detail = detail
    }




}

#if compiler(>=6)
extension MobileKeyTransferOutcome: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileKeyTransferOutcome: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileKeyTransferOutcome {
        return
            try MobileKeyTransferOutcome(
                title: FfiConverterString.read(from: &buf),
                detail: FfiConverterString.read(from: &buf)
        )
    }

    public static func write(_ value: MobileKeyTransferOutcome, into buf: inout [UInt8]) {
        FfiConverterString.write(value.title, into: &buf)
        FfiConverterString.write(value.detail, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileKeyTransferOutcome_lift(_ buf: RustBuffer) throws -> MobileKeyTransferOutcome {
    return try FfiConverterTypeMobileKeyTransferOutcome.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileKeyTransferOutcome_lower(_ value: MobileKeyTransferOutcome) -> RustBuffer {
    return FfiConverterTypeMobileKeyTransferOutcome.lower(value)
}


public struct MobileKeyTransferProgress: Equatable, Hashable {
    public var received: UInt32
    public var total: UInt32
    public var duplicate: Bool
    public var key: MobileKeyTransferKey?

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(received: UInt32, total: UInt32, duplicate: Bool, key: MobileKeyTransferKey?) {
        self.received = received
        self.total = total
        self.duplicate = duplicate
        self.key = key
    }




}

#if compiler(>=6)
extension MobileKeyTransferProgress: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileKeyTransferProgress: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileKeyTransferProgress {
        return
            try MobileKeyTransferProgress(
                received: FfiConverterUInt32.read(from: &buf),
                total: FfiConverterUInt32.read(from: &buf),
                duplicate: FfiConverterBool.read(from: &buf),
                key: FfiConverterOptionTypeMobileKeyTransferKey.read(from: &buf)
        )
    }

    public static func write(_ value: MobileKeyTransferProgress, into buf: inout [UInt8]) {
        FfiConverterUInt32.write(value.received, into: &buf)
        FfiConverterUInt32.write(value.total, into: &buf)
        FfiConverterBool.write(value.duplicate, into: &buf)
        FfiConverterOptionTypeMobileKeyTransferKey.write(value.key, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileKeyTransferProgress_lift(_ buf: RustBuffer) throws -> MobileKeyTransferProgress {
    return try FfiConverterTypeMobileKeyTransferProgress.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileKeyTransferProgress_lower(_ value: MobileKeyTransferProgress) -> RustBuffer {
    return FfiConverterTypeMobileKeyTransferProgress.lower(value)
}


public struct MobileMutationDestination: Equatable, Hashable {
    public var path: String
    public var title: String
    public var detail: String
    public var requiresOverwrite: Bool

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(path: String, title: String, detail: String, requiresOverwrite: Bool) {
        self.path = path
        self.title = title
        self.detail = detail
        self.requiresOverwrite = requiresOverwrite
    }




}

#if compiler(>=6)
extension MobileMutationDestination: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileMutationDestination: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileMutationDestination {
        return
            try MobileMutationDestination(
                path: FfiConverterString.read(from: &buf),
                title: FfiConverterString.read(from: &buf),
                detail: FfiConverterString.read(from: &buf),
                requiresOverwrite: FfiConverterBool.read(from: &buf)
        )
    }

    public static func write(_ value: MobileMutationDestination, into buf: inout [UInt8]) {
        FfiConverterString.write(value.path, into: &buf)
        FfiConverterString.write(value.title, into: &buf)
        FfiConverterString.write(value.detail, into: &buf)
        FfiConverterBool.write(value.requiresOverwrite, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileMutationDestination_lift(_ buf: RustBuffer) throws -> MobileMutationDestination {
    return try FfiConverterTypeMobileMutationDestination.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileMutationDestination_lower(_ value: MobileMutationDestination) -> RustBuffer {
    return FfiConverterTypeMobileMutationDestination.lower(value)
}


public struct MobileMutationOutcome: Equatable, Hashable {
    public var action: MobileMutationAction
    public var source: String
    public var destination: String?
    public var title: String
    public var detail: String

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(action: MobileMutationAction, source: String, destination: String?, title: String, detail: String) {
        self.action = action
        self.source = source
        self.destination = destination
        self.title = title
        self.detail = detail
    }




}

#if compiler(>=6)
extension MobileMutationOutcome: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileMutationOutcome: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileMutationOutcome {
        return
            try MobileMutationOutcome(
                action: FfiConverterTypeMobileMutationAction.read(from: &buf),
                source: FfiConverterString.read(from: &buf),
                destination: FfiConverterOptionString.read(from: &buf),
                title: FfiConverterString.read(from: &buf),
                detail: FfiConverterString.read(from: &buf)
        )
    }

    public static func write(_ value: MobileMutationOutcome, into buf: inout [UInt8]) {
        FfiConverterTypeMobileMutationAction.write(value.action, into: &buf)
        FfiConverterString.write(value.source, into: &buf)
        FfiConverterOptionString.write(value.destination, into: &buf)
        FfiConverterString.write(value.title, into: &buf)
        FfiConverterString.write(value.detail, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileMutationOutcome_lift(_ buf: RustBuffer) throws -> MobileMutationOutcome {
    return try FfiConverterTypeMobileMutationOutcome.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileMutationOutcome_lower(_ value: MobileMutationOutcome) -> RustBuffer {
    return FfiConverterTypeMobileMutationOutcome.lower(value)
}


public struct MobileMutationPlan: Equatable, Hashable {
    public var action: MobileMutationAction
    public var source: String
    public var sourceTitle: String
    public var revision: String
    public var destinations: [MobileMutationDestination]
    public var hasOpenEditor: Bool
    public var hasDirtyEditor: Bool

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(action: MobileMutationAction, source: String, sourceTitle: String, revision: String, destinations: [MobileMutationDestination], hasOpenEditor: Bool, hasDirtyEditor: Bool) {
        self.action = action
        self.source = source
        self.sourceTitle = sourceTitle
        self.revision = revision
        self.destinations = destinations
        self.hasOpenEditor = hasOpenEditor
        self.hasDirtyEditor = hasDirtyEditor
    }




}

#if compiler(>=6)
extension MobileMutationPlan: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileMutationPlan: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileMutationPlan {
        return
            try MobileMutationPlan(
                action: FfiConverterTypeMobileMutationAction.read(from: &buf),
                source: FfiConverterString.read(from: &buf),
                sourceTitle: FfiConverterString.read(from: &buf),
                revision: FfiConverterString.read(from: &buf),
                destinations: FfiConverterSequenceTypeMobileMutationDestination.read(from: &buf),
                hasOpenEditor: FfiConverterBool.read(from: &buf),
                hasDirtyEditor: FfiConverterBool.read(from: &buf)
        )
    }

    public static func write(_ value: MobileMutationPlan, into buf: inout [UInt8]) {
        FfiConverterTypeMobileMutationAction.write(value.action, into: &buf)
        FfiConverterString.write(value.source, into: &buf)
        FfiConverterString.write(value.sourceTitle, into: &buf)
        FfiConverterString.write(value.revision, into: &buf)
        FfiConverterSequenceTypeMobileMutationDestination.write(value.destinations, into: &buf)
        FfiConverterBool.write(value.hasOpenEditor, into: &buf)
        FfiConverterBool.write(value.hasDirtyEditor, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileMutationPlan_lift(_ buf: RustBuffer) throws -> MobileMutationPlan {
    return try FfiConverterTypeMobileMutationPlan.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileMutationPlan_lower(_ value: MobileMutationPlan) -> RustBuffer {
    return FfiConverterTypeMobileMutationPlan.lower(value)
}


public struct MobileMutationRequest: Equatable, Hashable {
    public var action: MobileMutationAction
    public var source: String
    public var revision: String
    public var destination: String?
    public var confirmed: Bool
    public var overwrite: Bool
    public var discardEditor: Bool

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(action: MobileMutationAction, source: String, revision: String, destination: String?, confirmed: Bool, overwrite: Bool, discardEditor: Bool) {
        self.action = action
        self.source = source
        self.revision = revision
        self.destination = destination
        self.confirmed = confirmed
        self.overwrite = overwrite
        self.discardEditor = discardEditor
    }




}

#if compiler(>=6)
extension MobileMutationRequest: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileMutationRequest: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileMutationRequest {
        return
            try MobileMutationRequest(
                action: FfiConverterTypeMobileMutationAction.read(from: &buf),
                source: FfiConverterString.read(from: &buf),
                revision: FfiConverterString.read(from: &buf),
                destination: FfiConverterOptionString.read(from: &buf),
                confirmed: FfiConverterBool.read(from: &buf),
                overwrite: FfiConverterBool.read(from: &buf),
                discardEditor: FfiConverterBool.read(from: &buf)
        )
    }

    public static func write(_ value: MobileMutationRequest, into buf: inout [UInt8]) {
        FfiConverterTypeMobileMutationAction.write(value.action, into: &buf)
        FfiConverterString.write(value.source, into: &buf)
        FfiConverterString.write(value.revision, into: &buf)
        FfiConverterOptionString.write(value.destination, into: &buf)
        FfiConverterBool.write(value.confirmed, into: &buf)
        FfiConverterBool.write(value.overwrite, into: &buf)
        FfiConverterBool.write(value.discardEditor, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileMutationRequest_lift(_ buf: RustBuffer) throws -> MobileMutationRequest {
    return try FfiConverterTypeMobileMutationRequest.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileMutationRequest_lower(_ value: MobileMutationRequest) -> RustBuffer {
    return FfiConverterTypeMobileMutationRequest.lower(value)
}


public struct MobileOnboardingDiscovery: Equatable, Hashable {
    public var branches: [String]
    public var selectedBranch: UInt32

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(branches: [String], selectedBranch: UInt32) {
        self.branches = branches
        self.selectedBranch = selectedBranch
    }




}

#if compiler(>=6)
extension MobileOnboardingDiscovery: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileOnboardingDiscovery: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileOnboardingDiscovery {
        return
            try MobileOnboardingDiscovery(
                branches: FfiConverterSequenceString.read(from: &buf),
                selectedBranch: FfiConverterUInt32.read(from: &buf)
        )
    }

    public static func write(_ value: MobileOnboardingDiscovery, into buf: inout [UInt8]) {
        FfiConverterSequenceString.write(value.branches, into: &buf)
        FfiConverterUInt32.write(value.selectedBranch, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileOnboardingDiscovery_lift(_ buf: RustBuffer) throws -> MobileOnboardingDiscovery {
    return try FfiConverterTypeMobileOnboardingDiscovery.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileOnboardingDiscovery_lower(_ value: MobileOnboardingDiscovery) -> RustBuffer {
    return FfiConverterTypeMobileOnboardingDiscovery.lower(value)
}


public struct MobileOnboardingOutcome: Equatable, Hashable {
    public var title: String
    public var detail: String

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(title: String, detail: String) {
        self.title = title
        self.detail = detail
    }




}

#if compiler(>=6)
extension MobileOnboardingOutcome: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileOnboardingOutcome: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileOnboardingOutcome {
        return
            try MobileOnboardingOutcome(
                title: FfiConverterString.read(from: &buf),
                detail: FfiConverterString.read(from: &buf)
        )
    }

    public static func write(_ value: MobileOnboardingOutcome, into buf: inout [UInt8]) {
        FfiConverterString.write(value.title, into: &buf)
        FfiConverterString.write(value.detail, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileOnboardingOutcome_lift(_ buf: RustBuffer) throws -> MobileOnboardingOutcome {
    return try FfiConverterTypeMobileOnboardingOutcome.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileOnboardingOutcome_lower(_ value: MobileOnboardingOutcome) -> RustBuffer {
    return FfiConverterTypeMobileOnboardingOutcome.lower(value)
}


public struct MobileOnboardingProgress: Equatable, Hashable {
    public var phase: MobileOnboardingPhase
    public var title: String
    public var detail: String

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(phase: MobileOnboardingPhase, title: String, detail: String) {
        self.phase = phase
        self.title = title
        self.detail = detail
    }




}

#if compiler(>=6)
extension MobileOnboardingProgress: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileOnboardingProgress: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileOnboardingProgress {
        return
            try MobileOnboardingProgress(
                phase: FfiConverterTypeMobileOnboardingPhase.read(from: &buf),
                title: FfiConverterString.read(from: &buf),
                detail: FfiConverterString.read(from: &buf)
        )
    }

    public static func write(_ value: MobileOnboardingProgress, into buf: inout [UInt8]) {
        FfiConverterTypeMobileOnboardingPhase.write(value.phase, into: &buf)
        FfiConverterString.write(value.title, into: &buf)
        FfiConverterString.write(value.detail, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileOnboardingProgress_lift(_ buf: RustBuffer) throws -> MobileOnboardingProgress {
    return try FfiConverterTypeMobileOnboardingProgress.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileOnboardingProgress_lower(_ value: MobileOnboardingProgress) -> RustBuffer {
    return FfiConverterTypeMobileOnboardingProgress.lower(value)
}


public struct MobilePage: Equatable, Hashable {
    public var tab: MobileTab
    public var title: String
    public var systemImage: String
    public var selectedSystemImage: String
    public var state: MobileShellState
    public var stateTitle: String
    public var stateDetail: String

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(tab: MobileTab, title: String, systemImage: String, selectedSystemImage: String, state: MobileShellState, stateTitle: String, stateDetail: String) {
        self.tab = tab
        self.title = title
        self.systemImage = systemImage
        self.selectedSystemImage = selectedSystemImage
        self.state = state
        self.stateTitle = stateTitle
        self.stateDetail = stateDetail
    }




}

#if compiler(>=6)
extension MobilePage: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobilePage: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobilePage {
        return
            try MobilePage(
                tab: FfiConverterTypeMobileTab.read(from: &buf),
                title: FfiConverterString.read(from: &buf),
                systemImage: FfiConverterString.read(from: &buf),
                selectedSystemImage: FfiConverterString.read(from: &buf),
                state: FfiConverterTypeMobileShellState.read(from: &buf),
                stateTitle: FfiConverterString.read(from: &buf),
                stateDetail: FfiConverterString.read(from: &buf)
        )
    }

    public static func write(_ value: MobilePage, into buf: inout [UInt8]) {
        FfiConverterTypeMobileTab.write(value.tab, into: &buf)
        FfiConverterString.write(value.title, into: &buf)
        FfiConverterString.write(value.systemImage, into: &buf)
        FfiConverterString.write(value.selectedSystemImage, into: &buf)
        FfiConverterTypeMobileShellState.write(value.state, into: &buf)
        FfiConverterString.write(value.stateTitle, into: &buf)
        FfiConverterString.write(value.stateDetail, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobilePage_lift(_ buf: RustBuffer) throws -> MobilePage {
    return try FfiConverterTypeMobilePage.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobilePage_lower(_ value: MobilePage) -> RustBuffer {
    return FfiConverterTypeMobilePage.lower(value)
}


public struct MobilePasswordPage: Equatable, Hashable {
    public var id: String
    public var path: String
    public var title: String
    public var rows: [MobilePasswordRow]

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(id: String, path: String, title: String, rows: [MobilePasswordRow]) {
        self.id = id
        self.path = path
        self.title = title
        self.rows = rows
    }




}

#if compiler(>=6)
extension MobilePasswordPage: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobilePasswordPage: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobilePasswordPage {
        return
            try MobilePasswordPage(
                id: FfiConverterString.read(from: &buf),
                path: FfiConverterString.read(from: &buf),
                title: FfiConverterString.read(from: &buf),
                rows: FfiConverterSequenceTypeMobilePasswordRow.read(from: &buf)
        )
    }

    public static func write(_ value: MobilePasswordPage, into buf: inout [UInt8]) {
        FfiConverterString.write(value.id, into: &buf)
        FfiConverterString.write(value.path, into: &buf)
        FfiConverterString.write(value.title, into: &buf)
        FfiConverterSequenceTypeMobilePasswordRow.write(value.rows, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobilePasswordPage_lift(_ buf: RustBuffer) throws -> MobilePasswordPage {
    return try FfiConverterTypeMobilePasswordPage.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobilePasswordPage_lower(_ value: MobilePasswordPage) -> RustBuffer {
    return FfiConverterTypeMobilePasswordPage.lower(value)
}


public struct MobilePasswordRow: Equatable, Hashable {
    public var id: String
    public var path: String
    public var title: String
    public var detail: String
    public var systemImage: String
    public var kind: MobilePasswordRowKind

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(id: String, path: String, title: String, detail: String, systemImage: String, kind: MobilePasswordRowKind) {
        self.id = id
        self.path = path
        self.title = title
        self.detail = detail
        self.systemImage = systemImage
        self.kind = kind
    }




}

#if compiler(>=6)
extension MobilePasswordRow: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobilePasswordRow: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobilePasswordRow {
        return
            try MobilePasswordRow(
                id: FfiConverterString.read(from: &buf),
                path: FfiConverterString.read(from: &buf),
                title: FfiConverterString.read(from: &buf),
                detail: FfiConverterString.read(from: &buf),
                systemImage: FfiConverterString.read(from: &buf),
                kind: FfiConverterTypeMobilePasswordRowKind.read(from: &buf)
        )
    }

    public static func write(_ value: MobilePasswordRow, into buf: inout [UInt8]) {
        FfiConverterString.write(value.id, into: &buf)
        FfiConverterString.write(value.path, into: &buf)
        FfiConverterString.write(value.title, into: &buf)
        FfiConverterString.write(value.detail, into: &buf)
        FfiConverterString.write(value.systemImage, into: &buf)
        FfiConverterTypeMobilePasswordRowKind.write(value.kind, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobilePasswordRow_lift(_ buf: RustBuffer) throws -> MobilePasswordRow {
    return try FfiConverterTypeMobilePasswordRow.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobilePasswordRow_lower(_ value: MobilePasswordRow) -> RustBuffer {
    return FfiConverterTypeMobilePasswordRow.lower(value)
}


public struct MobileShell: Equatable, Hashable {
    public var selectedTab: MobileTab
    public var pages: [MobilePage]

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(selectedTab: MobileTab, pages: [MobilePage]) {
        self.selectedTab = selectedTab
        self.pages = pages
    }




}

#if compiler(>=6)
extension MobileShell: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileShell: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileShell {
        return
            try MobileShell(
                selectedTab: FfiConverterTypeMobileTab.read(from: &buf),
                pages: FfiConverterSequenceTypeMobilePage.read(from: &buf)
        )
    }

    public static func write(_ value: MobileShell, into buf: inout [UInt8]) {
        FfiConverterTypeMobileTab.write(value.selectedTab, into: &buf)
        FfiConverterSequenceTypeMobilePage.write(value.pages, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileShell_lift(_ buf: RustBuffer) throws -> MobileShell {
    return try FfiConverterTypeMobileShell.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileShell_lower(_ value: MobileShell) -> RustBuffer {
    return FfiConverterTypeMobileShell.lower(value)
}


public struct MobileTotpDetail: Equatable, Hashable {
    public var path: String
    public var issuer: String?
    public var account: String
    public var code: String
    public var validUntil: UInt64
    public var period: UInt64
    public var sharedWithWatch: Bool
    public var watch: MobileWatchSnapshotStatus

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(path: String, issuer: String?, account: String, code: String, validUntil: UInt64, period: UInt64, sharedWithWatch: Bool, watch: MobileWatchSnapshotStatus) {
        self.path = path
        self.issuer = issuer
        self.account = account
        self.code = code
        self.validUntil = validUntil
        self.period = period
        self.sharedWithWatch = sharedWithWatch
        self.watch = watch
    }




}

#if compiler(>=6)
extension MobileTotpDetail: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileTotpDetail: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileTotpDetail {
        return
            try MobileTotpDetail(
                path: FfiConverterString.read(from: &buf),
                issuer: FfiConverterOptionString.read(from: &buf),
                account: FfiConverterString.read(from: &buf),
                code: FfiConverterString.read(from: &buf),
                validUntil: FfiConverterUInt64.read(from: &buf),
                period: FfiConverterUInt64.read(from: &buf),
                sharedWithWatch: FfiConverterBool.read(from: &buf),
                watch: FfiConverterTypeMobileWatchSnapshotStatus.read(from: &buf)
        )
    }

    public static func write(_ value: MobileTotpDetail, into buf: inout [UInt8]) {
        FfiConverterString.write(value.path, into: &buf)
        FfiConverterOptionString.write(value.issuer, into: &buf)
        FfiConverterString.write(value.account, into: &buf)
        FfiConverterString.write(value.code, into: &buf)
        FfiConverterUInt64.write(value.validUntil, into: &buf)
        FfiConverterUInt64.write(value.period, into: &buf)
        FfiConverterBool.write(value.sharedWithWatch, into: &buf)
        FfiConverterTypeMobileWatchSnapshotStatus.write(value.watch, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileTotpDetail_lift(_ buf: RustBuffer) throws -> MobileTotpDetail {
    return try FfiConverterTypeMobileTotpDetail.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileTotpDetail_lower(_ value: MobileTotpDetail) -> RustBuffer {
    return FfiConverterTypeMobileTotpDetail.lower(value)
}


public struct MobileTotpDiscoveryProgress: Equatable, Hashable {
    public var phase: MobileTotpDiscoveryPhase
    public var total: UInt32
    public var inspected: UInt32
    public var cacheHits: UInt32
    public var matches: UInt32
    public var unavailable: UInt32

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(phase: MobileTotpDiscoveryPhase, total: UInt32, inspected: UInt32, cacheHits: UInt32, matches: UInt32, unavailable: UInt32) {
        self.phase = phase
        self.total = total
        self.inspected = inspected
        self.cacheHits = cacheHits
        self.matches = matches
        self.unavailable = unavailable
    }




}

#if compiler(>=6)
extension MobileTotpDiscoveryProgress: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileTotpDiscoveryProgress: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileTotpDiscoveryProgress {
        return
            try MobileTotpDiscoveryProgress(
                phase: FfiConverterTypeMobileTotpDiscoveryPhase.read(from: &buf),
                total: FfiConverterUInt32.read(from: &buf),
                inspected: FfiConverterUInt32.read(from: &buf),
                cacheHits: FfiConverterUInt32.read(from: &buf),
                matches: FfiConverterUInt32.read(from: &buf),
                unavailable: FfiConverterUInt32.read(from: &buf)
        )
    }

    public static func write(_ value: MobileTotpDiscoveryProgress, into buf: inout [UInt8]) {
        FfiConverterTypeMobileTotpDiscoveryPhase.write(value.phase, into: &buf)
        FfiConverterUInt32.write(value.total, into: &buf)
        FfiConverterUInt32.write(value.inspected, into: &buf)
        FfiConverterUInt32.write(value.cacheHits, into: &buf)
        FfiConverterUInt32.write(value.matches, into: &buf)
        FfiConverterUInt32.write(value.unavailable, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileTotpDiscoveryProgress_lift(_ buf: RustBuffer) throws -> MobileTotpDiscoveryProgress {
    return try FfiConverterTypeMobileTotpDiscoveryProgress.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileTotpDiscoveryProgress_lower(_ value: MobileTotpDiscoveryProgress) -> RustBuffer {
    return FfiConverterTypeMobileTotpDiscoveryProgress.lower(value)
}


public struct MobileTotpPage: Equatable, Hashable {
    public var rows: [MobileTotpRow]
    public var unavailableEntries: UInt32
    public var cacheNotice: String?
    public var watch: MobileWatchSnapshotStatus

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(rows: [MobileTotpRow], unavailableEntries: UInt32, cacheNotice: String?, watch: MobileWatchSnapshotStatus) {
        self.rows = rows
        self.unavailableEntries = unavailableEntries
        self.cacheNotice = cacheNotice
        self.watch = watch
    }




}

#if compiler(>=6)
extension MobileTotpPage: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileTotpPage: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileTotpPage {
        return
            try MobileTotpPage(
                rows: FfiConverterSequenceTypeMobileTotpRow.read(from: &buf),
                unavailableEntries: FfiConverterUInt32.read(from: &buf),
                cacheNotice: FfiConverterOptionString.read(from: &buf),
                watch: FfiConverterTypeMobileWatchSnapshotStatus.read(from: &buf)
        )
    }

    public static func write(_ value: MobileTotpPage, into buf: inout [UInt8]) {
        FfiConverterSequenceTypeMobileTotpRow.write(value.rows, into: &buf)
        FfiConverterUInt32.write(value.unavailableEntries, into: &buf)
        FfiConverterOptionString.write(value.cacheNotice, into: &buf)
        FfiConverterTypeMobileWatchSnapshotStatus.write(value.watch, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileTotpPage_lift(_ buf: RustBuffer) throws -> MobileTotpPage {
    return try FfiConverterTypeMobileTotpPage.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileTotpPage_lower(_ value: MobileTotpPage) -> RustBuffer {
    return FfiConverterTypeMobileTotpPage.lower(value)
}


public struct MobileTotpRow: Equatable, Hashable {
    public var path: String
    public var issuer: String?
    public var account: String
    public var title: String
    public var detail: String
    public var sharedWithWatch: Bool

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(path: String, issuer: String?, account: String, title: String, detail: String, sharedWithWatch: Bool) {
        self.path = path
        self.issuer = issuer
        self.account = account
        self.title = title
        self.detail = detail
        self.sharedWithWatch = sharedWithWatch
    }




}

#if compiler(>=6)
extension MobileTotpRow: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileTotpRow: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileTotpRow {
        return
            try MobileTotpRow(
                path: FfiConverterString.read(from: &buf),
                issuer: FfiConverterOptionString.read(from: &buf),
                account: FfiConverterString.read(from: &buf),
                title: FfiConverterString.read(from: &buf),
                detail: FfiConverterString.read(from: &buf),
                sharedWithWatch: FfiConverterBool.read(from: &buf)
        )
    }

    public static func write(_ value: MobileTotpRow, into buf: inout [UInt8]) {
        FfiConverterString.write(value.path, into: &buf)
        FfiConverterOptionString.write(value.issuer, into: &buf)
        FfiConverterString.write(value.account, into: &buf)
        FfiConverterString.write(value.title, into: &buf)
        FfiConverterString.write(value.detail, into: &buf)
        FfiConverterBool.write(value.sharedWithWatch, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileTotpRow_lift(_ buf: RustBuffer) throws -> MobileTotpRow {
    return try FfiConverterTypeMobileTotpRow.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileTotpRow_lower(_ value: MobileTotpRow) -> RustBuffer {
    return FfiConverterTypeMobileTotpRow.lower(value)
}


public struct MobileWatchSnapshotStatus: Equatable, Hashable {
    public var state: MobileWatchSnapshotState
    public var detail: String

    // Default memberwise initializers are never public by default, so we
    // declare one manually.
    public init(state: MobileWatchSnapshotState, detail: String) {
        self.state = state
        self.detail = detail
    }




}

#if compiler(>=6)
extension MobileWatchSnapshotStatus: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileWatchSnapshotStatus: FfiConverterRustBuffer {
    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileWatchSnapshotStatus {
        return
            try MobileWatchSnapshotStatus(
                state: FfiConverterTypeMobileWatchSnapshotState.read(from: &buf),
                detail: FfiConverterString.read(from: &buf)
        )
    }

    public static func write(_ value: MobileWatchSnapshotStatus, into buf: inout [UInt8]) {
        FfiConverterTypeMobileWatchSnapshotState.write(value.state, into: &buf)
        FfiConverterString.write(value.detail, into: &buf)
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileWatchSnapshotStatus_lift(_ buf: RustBuffer) throws -> MobileWatchSnapshotStatus {
    return try FfiConverterTypeMobileWatchSnapshotStatus.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileWatchSnapshotStatus_lower(_ value: MobileWatchSnapshotStatus) -> RustBuffer {
    return FfiConverterTypeMobileWatchSnapshotStatus.lower(value)
}



public enum MobileAuthenticationErrorKind: Equatable, Hashable {

    case passphraseRequired
    case invalidPassphrase
    case cancelled
    case biometryUnavailable
    case configuration
    case keyMaterial
    case entry
    case secureStorage
    case expired
    case conflict





}

#if compiler(>=6)
extension MobileAuthenticationErrorKind: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileAuthenticationErrorKind: FfiConverterRustBuffer {
    typealias SwiftType = MobileAuthenticationErrorKind

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileAuthenticationErrorKind {
        let variant: Int32 = try readInt(&buf)
        switch variant {

        case 1: return .passphraseRequired

        case 2: return .invalidPassphrase

        case 3: return .cancelled

        case 4: return .biometryUnavailable

        case 5: return .configuration

        case 6: return .keyMaterial

        case 7: return .entry

        case 8: return .secureStorage

        case 9: return .expired

        case 10: return .conflict

        default: throw UniffiInternalError.unexpectedEnumCase
        }
    }

    public static func write(_ value: MobileAuthenticationErrorKind, into buf: inout [UInt8]) {
        switch value {


        case .passphraseRequired:
            writeInt(&buf, Int32(1))


        case .invalidPassphrase:
            writeInt(&buf, Int32(2))


        case .cancelled:
            writeInt(&buf, Int32(3))


        case .biometryUnavailable:
            writeInt(&buf, Int32(4))


        case .configuration:
            writeInt(&buf, Int32(5))


        case .keyMaterial:
            writeInt(&buf, Int32(6))


        case .entry:
            writeInt(&buf, Int32(7))


        case .secureStorage:
            writeInt(&buf, Int32(8))


        case .expired:
            writeInt(&buf, Int32(9))


        case .conflict:
            writeInt(&buf, Int32(10))

        }
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileAuthenticationErrorKind_lift(_ buf: RustBuffer) throws -> MobileAuthenticationErrorKind {
    return try FfiConverterTypeMobileAuthenticationErrorKind.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileAuthenticationErrorKind_lower(_ value: MobileAuthenticationErrorKind) -> RustBuffer {
    return FfiConverterTypeMobileAuthenticationErrorKind.lower(value)
}



public
enum MobileAuthenticationFfiError: Swift.Error, Equatable, Hashable, Foundation.LocalizedError {



    case Failed(kind: MobileAuthenticationErrorKind, title: String, detail: String
    )






    public var errorDescription: String? {
        String(reflecting: self)
    }

}

#if compiler(>=6)
extension MobileAuthenticationFfiError: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileAuthenticationFfiError: FfiConverterRustBuffer {
    typealias SwiftType = MobileAuthenticationFfiError

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileAuthenticationFfiError {
        let variant: Int32 = try readInt(&buf)
        switch variant {




        case 1: return .Failed(
            kind: try FfiConverterTypeMobileAuthenticationErrorKind.read(from: &buf),
            title: try FfiConverterString.read(from: &buf),
            detail: try FfiConverterString.read(from: &buf)
            )

         default: throw UniffiInternalError.unexpectedEnumCase
        }
    }

    public static func write(_ value: MobileAuthenticationFfiError, into buf: inout [UInt8]) {
        switch value {





        case let .Failed(kind,title,detail):
            writeInt(&buf, Int32(1))
            FfiConverterTypeMobileAuthenticationErrorKind.write(kind, into: &buf)
            FfiConverterString.write(title, into: &buf)
            FfiConverterString.write(detail, into: &buf)

        }
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileAuthenticationFfiError_lift(_ buf: RustBuffer) throws -> MobileAuthenticationFfiError {
    return try FfiConverterTypeMobileAuthenticationFfiError.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileAuthenticationFfiError_lower(_ value: MobileAuthenticationFfiError) -> RustBuffer {
    return FfiConverterTypeMobileAuthenticationFfiError.lower(value)
}



public enum MobileEntryEditorFieldKind: Equatable, Hashable {

    case password
    case field
    case note
    case otpUri





}

#if compiler(>=6)
extension MobileEntryEditorFieldKind: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileEntryEditorFieldKind: FfiConverterRustBuffer {
    typealias SwiftType = MobileEntryEditorFieldKind

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileEntryEditorFieldKind {
        let variant: Int32 = try readInt(&buf)
        switch variant {

        case 1: return .password

        case 2: return .field

        case 3: return .note

        case 4: return .otpUri

        default: throw UniffiInternalError.unexpectedEnumCase
        }
    }

    public static func write(_ value: MobileEntryEditorFieldKind, into buf: inout [UInt8]) {
        switch value {


        case .password:
            writeInt(&buf, Int32(1))


        case .field:
            writeInt(&buf, Int32(2))


        case .note:
            writeInt(&buf, Int32(3))


        case .otpUri:
            writeInt(&buf, Int32(4))

        }
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileEntryEditorFieldKind_lift(_ buf: RustBuffer) throws -> MobileEntryEditorFieldKind {
    return try FfiConverterTypeMobileEntryEditorFieldKind.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileEntryEditorFieldKind_lower(_ value: MobileEntryEditorFieldKind) -> RustBuffer {
    return FfiConverterTypeMobileEntryEditorFieldKind.lower(value)
}




public enum MobileEntrySectionKind: Equatable, Hashable {

    case password
    case details
    case oneTimePassword
    case notes





}

#if compiler(>=6)
extension MobileEntrySectionKind: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileEntrySectionKind: FfiConverterRustBuffer {
    typealias SwiftType = MobileEntrySectionKind

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileEntrySectionKind {
        let variant: Int32 = try readInt(&buf)
        switch variant {

        case 1: return .password

        case 2: return .details

        case 3: return .oneTimePassword

        case 4: return .notes

        default: throw UniffiInternalError.unexpectedEnumCase
        }
    }

    public static func write(_ value: MobileEntrySectionKind, into buf: inout [UInt8]) {
        switch value {


        case .password:
            writeInt(&buf, Int32(1))


        case .details:
            writeInt(&buf, Int32(2))


        case .oneTimePassword:
            writeInt(&buf, Int32(3))


        case .notes:
            writeInt(&buf, Int32(4))

        }
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileEntrySectionKind_lift(_ buf: RustBuffer) throws -> MobileEntrySectionKind {
    return try FfiConverterTypeMobileEntrySectionKind.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileEntrySectionKind_lower(_ value: MobileEntrySectionKind) -> RustBuffer {
    return FfiConverterTypeMobileEntrySectionKind.lower(value)
}




public enum MobileHomeChangeKind: Equatable, Hashable {

    case passwordEntry
    case recipientPolicy
    case recipientSignature
    case repositoryFile





}

#if compiler(>=6)
extension MobileHomeChangeKind: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileHomeChangeKind: FfiConverterRustBuffer {
    typealias SwiftType = MobileHomeChangeKind

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileHomeChangeKind {
        let variant: Int32 = try readInt(&buf)
        switch variant {

        case 1: return .passwordEntry

        case 2: return .recipientPolicy

        case 3: return .recipientSignature

        case 4: return .repositoryFile

        default: throw UniffiInternalError.unexpectedEnumCase
        }
    }

    public static func write(_ value: MobileHomeChangeKind, into buf: inout [UInt8]) {
        switch value {


        case .passwordEntry:
            writeInt(&buf, Int32(1))


        case .recipientPolicy:
            writeInt(&buf, Int32(2))


        case .recipientSignature:
            writeInt(&buf, Int32(3))


        case .repositoryFile:
            writeInt(&buf, Int32(4))

        }
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileHomeChangeKind_lift(_ buf: RustBuffer) throws -> MobileHomeChangeKind {
    return try FfiConverterTypeMobileHomeChangeKind.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileHomeChangeKind_lower(_ value: MobileHomeChangeKind) -> RustBuffer {
    return FfiConverterTypeMobileHomeChangeKind.lower(value)
}




public enum MobileHomeChangeStatus: Equatable, Hashable {

    case added
    case modified
    case deleted





}

#if compiler(>=6)
extension MobileHomeChangeStatus: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileHomeChangeStatus: FfiConverterRustBuffer {
    typealias SwiftType = MobileHomeChangeStatus

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileHomeChangeStatus {
        let variant: Int32 = try readInt(&buf)
        switch variant {

        case 1: return .added

        case 2: return .modified

        case 3: return .deleted

        default: throw UniffiInternalError.unexpectedEnumCase
        }
    }

    public static func write(_ value: MobileHomeChangeStatus, into buf: inout [UInt8]) {
        switch value {


        case .added:
            writeInt(&buf, Int32(1))


        case .modified:
            writeInt(&buf, Int32(2))


        case .deleted:
            writeInt(&buf, Int32(3))

        }
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileHomeChangeStatus_lift(_ buf: RustBuffer) throws -> MobileHomeChangeStatus {
    return try FfiConverterTypeMobileHomeChangeStatus.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileHomeChangeStatus_lower(_ value: MobileHomeChangeStatus) -> RustBuffer {
    return FfiConverterTypeMobileHomeChangeStatus.lower(value)
}




public enum MobileHomeErrorKind: Equatable, Hashable {

    case missingConfiguration
    case configuration
    case authentication
    case conflict
    case dirtyLocalChanges
    case offline
    case interrupted
    case secureStorage
    case repository
    case partialProgress





}

#if compiler(>=6)
extension MobileHomeErrorKind: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileHomeErrorKind: FfiConverterRustBuffer {
    typealias SwiftType = MobileHomeErrorKind

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileHomeErrorKind {
        let variant: Int32 = try readInt(&buf)
        switch variant {

        case 1: return .missingConfiguration

        case 2: return .configuration

        case 3: return .authentication

        case 4: return .conflict

        case 5: return .dirtyLocalChanges

        case 6: return .offline

        case 7: return .interrupted

        case 8: return .secureStorage

        case 9: return .repository

        case 10: return .partialProgress

        default: throw UniffiInternalError.unexpectedEnumCase
        }
    }

    public static func write(_ value: MobileHomeErrorKind, into buf: inout [UInt8]) {
        switch value {


        case .missingConfiguration:
            writeInt(&buf, Int32(1))


        case .configuration:
            writeInt(&buf, Int32(2))


        case .authentication:
            writeInt(&buf, Int32(3))


        case .conflict:
            writeInt(&buf, Int32(4))


        case .dirtyLocalChanges:
            writeInt(&buf, Int32(5))


        case .offline:
            writeInt(&buf, Int32(6))


        case .interrupted:
            writeInt(&buf, Int32(7))


        case .secureStorage:
            writeInt(&buf, Int32(8))


        case .repository:
            writeInt(&buf, Int32(9))


        case .partialProgress:
            writeInt(&buf, Int32(10))

        }
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileHomeErrorKind_lift(_ buf: RustBuffer) throws -> MobileHomeErrorKind {
    return try FfiConverterTypeMobileHomeErrorKind.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileHomeErrorKind_lower(_ value: MobileHomeErrorKind) -> RustBuffer {
    return FfiConverterTypeMobileHomeErrorKind.lower(value)
}



public
enum MobileHomeFfiError: Swift.Error, Equatable, Hashable, Foundation.LocalizedError {



    case Failed(kind: MobileHomeErrorKind, title: String, detail: String
    )






    public var errorDescription: String? {
        String(reflecting: self)
    }

}

#if compiler(>=6)
extension MobileHomeFfiError: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileHomeFfiError: FfiConverterRustBuffer {
    typealias SwiftType = MobileHomeFfiError

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileHomeFfiError {
        let variant: Int32 = try readInt(&buf)
        switch variant {




        case 1: return .Failed(
            kind: try FfiConverterTypeMobileHomeErrorKind.read(from: &buf),
            title: try FfiConverterString.read(from: &buf),
            detail: try FfiConverterString.read(from: &buf)
            )

         default: throw UniffiInternalError.unexpectedEnumCase
        }
    }

    public static func write(_ value: MobileHomeFfiError, into buf: inout [UInt8]) {
        switch value {





        case let .Failed(kind,title,detail):
            writeInt(&buf, Int32(1))
            FfiConverterTypeMobileHomeErrorKind.write(kind, into: &buf)
            FfiConverterString.write(title, into: &buf)
            FfiConverterString.write(detail, into: &buf)

        }
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileHomeFfiError_lift(_ buf: RustBuffer) throws -> MobileHomeFfiError {
    return try FfiConverterTypeMobileHomeFfiError.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileHomeFfiError_lower(_ value: MobileHomeFfiError) -> RustBuffer {
    return FfiConverterTypeMobileHomeFfiError.lower(value)
}



public enum MobileHomeFreshness: Equatable, Hashable {

    case neverRefreshed
    case cached
    case current





}

#if compiler(>=6)
extension MobileHomeFreshness: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileHomeFreshness: FfiConverterRustBuffer {
    typealias SwiftType = MobileHomeFreshness

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileHomeFreshness {
        let variant: Int32 = try readInt(&buf)
        switch variant {

        case 1: return .neverRefreshed

        case 2: return .cached

        case 3: return .current

        default: throw UniffiInternalError.unexpectedEnumCase
        }
    }

    public static func write(_ value: MobileHomeFreshness, into buf: inout [UInt8]) {
        switch value {


        case .neverRefreshed:
            writeInt(&buf, Int32(1))


        case .cached:
            writeInt(&buf, Int32(2))


        case .current:
            writeInt(&buf, Int32(3))

        }
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileHomeFreshness_lift(_ buf: RustBuffer) throws -> MobileHomeFreshness {
    return try FfiConverterTypeMobileHomeFreshness.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileHomeFreshness_lower(_ value: MobileHomeFreshness) -> RustBuffer {
    return FfiConverterTypeMobileHomeFreshness.lower(value)
}




public enum MobileHomePhase: Equatable, Hashable {

    case validating
    case authenticating
    case receiving
    case integrating
    case finishing





}

#if compiler(>=6)
extension MobileHomePhase: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileHomePhase: FfiConverterRustBuffer {
    typealias SwiftType = MobileHomePhase

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileHomePhase {
        let variant: Int32 = try readInt(&buf)
        switch variant {

        case 1: return .validating

        case 2: return .authenticating

        case 3: return .receiving

        case 4: return .integrating

        case 5: return .finishing

        default: throw UniffiInternalError.unexpectedEnumCase
        }
    }

    public static func write(_ value: MobileHomePhase, into buf: inout [UInt8]) {
        switch value {


        case .validating:
            writeInt(&buf, Int32(1))


        case .authenticating:
            writeInt(&buf, Int32(2))


        case .receiving:
            writeInt(&buf, Int32(3))


        case .integrating:
            writeInt(&buf, Int32(4))


        case .finishing:
            writeInt(&buf, Int32(5))

        }
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileHomePhase_lift(_ buf: RustBuffer) throws -> MobileHomePhase {
    return try FfiConverterTypeMobileHomePhase.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileHomePhase_lower(_ value: MobileHomePhase) -> RustBuffer {
    return FfiConverterTypeMobileHomePhase.lower(value)
}



public
enum MobileKeyTransferFfiError: Swift.Error, Equatable, Hashable, Foundation.LocalizedError {



    case Failed(message: String
    )






    public var errorDescription: String? {
        String(reflecting: self)
    }

}

#if compiler(>=6)
extension MobileKeyTransferFfiError: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileKeyTransferFfiError: FfiConverterRustBuffer {
    typealias SwiftType = MobileKeyTransferFfiError

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileKeyTransferFfiError {
        let variant: Int32 = try readInt(&buf)
        switch variant {




        case 1: return .Failed(
            message: try FfiConverterString.read(from: &buf)
            )

         default: throw UniffiInternalError.unexpectedEnumCase
        }
    }

    public static func write(_ value: MobileKeyTransferFfiError, into buf: inout [UInt8]) {
        switch value {





        case let .Failed(message):
            writeInt(&buf, Int32(1))
            FfiConverterString.write(message, into: &buf)

        }
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileKeyTransferFfiError_lift(_ buf: RustBuffer) throws -> MobileKeyTransferFfiError {
    return try FfiConverterTypeMobileKeyTransferFfiError.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileKeyTransferFfiError_lower(_ value: MobileKeyTransferFfiError) -> RustBuffer {
    return FfiConverterTypeMobileKeyTransferFfiError.lower(value)
}



public enum MobileKeyTransferKind: Equatable, Hashable {

    case `public`
    case `private`





}

#if compiler(>=6)
extension MobileKeyTransferKind: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileKeyTransferKind: FfiConverterRustBuffer {
    typealias SwiftType = MobileKeyTransferKind

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileKeyTransferKind {
        let variant: Int32 = try readInt(&buf)
        switch variant {

        case 1: return .`public`

        case 2: return .`private`

        default: throw UniffiInternalError.unexpectedEnumCase
        }
    }

    public static func write(_ value: MobileKeyTransferKind, into buf: inout [UInt8]) {
        switch value {


        case .`public`:
            writeInt(&buf, Int32(1))


        case .`private`:
            writeInt(&buf, Int32(2))

        }
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileKeyTransferKind_lift(_ buf: RustBuffer) throws -> MobileKeyTransferKind {
    return try FfiConverterTypeMobileKeyTransferKind.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileKeyTransferKind_lower(_ value: MobileKeyTransferKind) -> RustBuffer {
    return FfiConverterTypeMobileKeyTransferKind.lower(value)
}




public enum MobileMutationAction: Equatable, Hashable {

    case move
    case copy
    case delete





}

#if compiler(>=6)
extension MobileMutationAction: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileMutationAction: FfiConverterRustBuffer {
    typealias SwiftType = MobileMutationAction

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileMutationAction {
        let variant: Int32 = try readInt(&buf)
        switch variant {

        case 1: return .move

        case 2: return .copy

        case 3: return .delete

        default: throw UniffiInternalError.unexpectedEnumCase
        }
    }

    public static func write(_ value: MobileMutationAction, into buf: inout [UInt8]) {
        switch value {


        case .move:
            writeInt(&buf, Int32(1))


        case .copy:
            writeInt(&buf, Int32(2))


        case .delete:
            writeInt(&buf, Int32(3))

        }
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileMutationAction_lift(_ buf: RustBuffer) throws -> MobileMutationAction {
    return try FfiConverterTypeMobileMutationAction.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileMutationAction_lower(_ value: MobileMutationAction) -> RustBuffer {
    return FfiConverterTypeMobileMutationAction.lower(value)
}




public enum MobileOnboardingErrorKind: Equatable, Hashable {

    case invalidInput
    case unsupportedRemote
    case authentication
    case repository
    case existingClone
    case interrupted
    case secureStorage
    case configuration
    case alreadyConfigured





}

#if compiler(>=6)
extension MobileOnboardingErrorKind: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileOnboardingErrorKind: FfiConverterRustBuffer {
    typealias SwiftType = MobileOnboardingErrorKind

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileOnboardingErrorKind {
        let variant: Int32 = try readInt(&buf)
        switch variant {

        case 1: return .invalidInput

        case 2: return .unsupportedRemote

        case 3: return .authentication

        case 4: return .repository

        case 5: return .existingClone

        case 6: return .interrupted

        case 7: return .secureStorage

        case 8: return .configuration

        case 9: return .alreadyConfigured

        default: throw UniffiInternalError.unexpectedEnumCase
        }
    }

    public static func write(_ value: MobileOnboardingErrorKind, into buf: inout [UInt8]) {
        switch value {


        case .invalidInput:
            writeInt(&buf, Int32(1))


        case .unsupportedRemote:
            writeInt(&buf, Int32(2))


        case .authentication:
            writeInt(&buf, Int32(3))


        case .repository:
            writeInt(&buf, Int32(4))


        case .existingClone:
            writeInt(&buf, Int32(5))


        case .interrupted:
            writeInt(&buf, Int32(6))


        case .secureStorage:
            writeInt(&buf, Int32(7))


        case .configuration:
            writeInt(&buf, Int32(8))


        case .alreadyConfigured:
            writeInt(&buf, Int32(9))

        }
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileOnboardingErrorKind_lift(_ buf: RustBuffer) throws -> MobileOnboardingErrorKind {
    return try FfiConverterTypeMobileOnboardingErrorKind.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileOnboardingErrorKind_lower(_ value: MobileOnboardingErrorKind) -> RustBuffer {
    return FfiConverterTypeMobileOnboardingErrorKind.lower(value)
}



public
enum MobileOnboardingFfiError: Swift.Error, Equatable, Hashable, Foundation.LocalizedError {



    case Failed(kind: MobileOnboardingErrorKind, title: String, detail: String
    )






    public var errorDescription: String? {
        String(reflecting: self)
    }

}

#if compiler(>=6)
extension MobileOnboardingFfiError: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileOnboardingFfiError: FfiConverterRustBuffer {
    typealias SwiftType = MobileOnboardingFfiError

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileOnboardingFfiError {
        let variant: Int32 = try readInt(&buf)
        switch variant {




        case 1: return .Failed(
            kind: try FfiConverterTypeMobileOnboardingErrorKind.read(from: &buf),
            title: try FfiConverterString.read(from: &buf),
            detail: try FfiConverterString.read(from: &buf)
            )

         default: throw UniffiInternalError.unexpectedEnumCase
        }
    }

    public static func write(_ value: MobileOnboardingFfiError, into buf: inout [UInt8]) {
        switch value {





        case let .Failed(kind,title,detail):
            writeInt(&buf, Int32(1))
            FfiConverterTypeMobileOnboardingErrorKind.write(kind, into: &buf)
            FfiConverterString.write(title, into: &buf)
            FfiConverterString.write(detail, into: &buf)

        }
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileOnboardingFfiError_lift(_ buf: RustBuffer) throws -> MobileOnboardingFfiError {
    return try FfiConverterTypeMobileOnboardingFfiError.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileOnboardingFfiError_lower(_ value: MobileOnboardingFfiError) -> RustBuffer {
    return FfiConverterTypeMobileOnboardingFfiError.lower(value)
}



public enum MobileOnboardingPhase: Equatable, Hashable {

    case validating
    case authenticating
    case receiving
    case integrating
    case finishing





}

#if compiler(>=6)
extension MobileOnboardingPhase: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileOnboardingPhase: FfiConverterRustBuffer {
    typealias SwiftType = MobileOnboardingPhase

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileOnboardingPhase {
        let variant: Int32 = try readInt(&buf)
        switch variant {

        case 1: return .validating

        case 2: return .authenticating

        case 3: return .receiving

        case 4: return .integrating

        case 5: return .finishing

        default: throw UniffiInternalError.unexpectedEnumCase
        }
    }

    public static func write(_ value: MobileOnboardingPhase, into buf: inout [UInt8]) {
        switch value {


        case .validating:
            writeInt(&buf, Int32(1))


        case .authenticating:
            writeInt(&buf, Int32(2))


        case .receiving:
            writeInt(&buf, Int32(3))


        case .integrating:
            writeInt(&buf, Int32(4))


        case .finishing:
            writeInt(&buf, Int32(5))

        }
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileOnboardingPhase_lift(_ buf: RustBuffer) throws -> MobileOnboardingPhase {
    return try FfiConverterTypeMobileOnboardingPhase.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileOnboardingPhase_lower(_ value: MobileOnboardingPhase) -> RustBuffer {
    return FfiConverterTypeMobileOnboardingPhase.lower(value)
}




public enum MobilePasswordErrorKind: Equatable, Hashable {

    case missingConfiguration
    case configuration
    case invalidPath
    case directoryMissing
    case repository





}

#if compiler(>=6)
extension MobilePasswordErrorKind: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobilePasswordErrorKind: FfiConverterRustBuffer {
    typealias SwiftType = MobilePasswordErrorKind

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobilePasswordErrorKind {
        let variant: Int32 = try readInt(&buf)
        switch variant {

        case 1: return .missingConfiguration

        case 2: return .configuration

        case 3: return .invalidPath

        case 4: return .directoryMissing

        case 5: return .repository

        default: throw UniffiInternalError.unexpectedEnumCase
        }
    }

    public static func write(_ value: MobilePasswordErrorKind, into buf: inout [UInt8]) {
        switch value {


        case .missingConfiguration:
            writeInt(&buf, Int32(1))


        case .configuration:
            writeInt(&buf, Int32(2))


        case .invalidPath:
            writeInt(&buf, Int32(3))


        case .directoryMissing:
            writeInt(&buf, Int32(4))


        case .repository:
            writeInt(&buf, Int32(5))

        }
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobilePasswordErrorKind_lift(_ buf: RustBuffer) throws -> MobilePasswordErrorKind {
    return try FfiConverterTypeMobilePasswordErrorKind.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobilePasswordErrorKind_lower(_ value: MobilePasswordErrorKind) -> RustBuffer {
    return FfiConverterTypeMobilePasswordErrorKind.lower(value)
}



public
enum MobilePasswordFfiError: Swift.Error, Equatable, Hashable, Foundation.LocalizedError {



    case Failed(kind: MobilePasswordErrorKind, title: String, detail: String
    )






    public var errorDescription: String? {
        String(reflecting: self)
    }

}

#if compiler(>=6)
extension MobilePasswordFfiError: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobilePasswordFfiError: FfiConverterRustBuffer {
    typealias SwiftType = MobilePasswordFfiError

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobilePasswordFfiError {
        let variant: Int32 = try readInt(&buf)
        switch variant {




        case 1: return .Failed(
            kind: try FfiConverterTypeMobilePasswordErrorKind.read(from: &buf),
            title: try FfiConverterString.read(from: &buf),
            detail: try FfiConverterString.read(from: &buf)
            )

         default: throw UniffiInternalError.unexpectedEnumCase
        }
    }

    public static func write(_ value: MobilePasswordFfiError, into buf: inout [UInt8]) {
        switch value {





        case let .Failed(kind,title,detail):
            writeInt(&buf, Int32(1))
            FfiConverterTypeMobilePasswordErrorKind.write(kind, into: &buf)
            FfiConverterString.write(title, into: &buf)
            FfiConverterString.write(detail, into: &buf)

        }
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobilePasswordFfiError_lift(_ buf: RustBuffer) throws -> MobilePasswordFfiError {
    return try FfiConverterTypeMobilePasswordFfiError.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobilePasswordFfiError_lower(_ value: MobilePasswordFfiError) -> RustBuffer {
    return FfiConverterTypeMobilePasswordFfiError.lower(value)
}



public enum MobilePasswordRowKind: Equatable, Hashable {

    case directory
    case entry





}

#if compiler(>=6)
extension MobilePasswordRowKind: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobilePasswordRowKind: FfiConverterRustBuffer {
    typealias SwiftType = MobilePasswordRowKind

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobilePasswordRowKind {
        let variant: Int32 = try readInt(&buf)
        switch variant {

        case 1: return .directory

        case 2: return .entry

        default: throw UniffiInternalError.unexpectedEnumCase
        }
    }

    public static func write(_ value: MobilePasswordRowKind, into buf: inout [UInt8]) {
        switch value {


        case .directory:
            writeInt(&buf, Int32(1))


        case .entry:
            writeInt(&buf, Int32(2))

        }
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobilePasswordRowKind_lift(_ buf: RustBuffer) throws -> MobilePasswordRowKind {
    return try FfiConverterTypeMobilePasswordRowKind.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobilePasswordRowKind_lower(_ value: MobilePasswordRowKind) -> RustBuffer {
    return FfiConverterTypeMobilePasswordRowKind.lower(value)
}



public
enum MobilePreferenceError: Swift.Error, Equatable, Hashable, Foundation.LocalizedError {



    case Configuration(message: String
    )






    public var errorDescription: String? {
        String(reflecting: self)
    }

}

#if compiler(>=6)
extension MobilePreferenceError: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobilePreferenceError: FfiConverterRustBuffer {
    typealias SwiftType = MobilePreferenceError

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobilePreferenceError {
        let variant: Int32 = try readInt(&buf)
        switch variant {




        case 1: return .Configuration(
            message: try FfiConverterString.read(from: &buf)
            )

         default: throw UniffiInternalError.unexpectedEnumCase
        }
    }

    public static func write(_ value: MobilePreferenceError, into buf: inout [UInt8]) {
        switch value {





        case let .Configuration(message):
            writeInt(&buf, Int32(1))
            FfiConverterString.write(message, into: &buf)

        }
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobilePreferenceError_lift(_ buf: RustBuffer) throws -> MobilePreferenceError {
    return try FfiConverterTypeMobilePreferenceError.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobilePreferenceError_lower(_ value: MobilePreferenceError) -> RustBuffer {
    return FfiConverterTypeMobilePreferenceError.lower(value)
}



public enum MobileShellState: Equatable, Hashable {

    case loading
    case empty
    case ready
    case locked
    case error





}

#if compiler(>=6)
extension MobileShellState: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileShellState: FfiConverterRustBuffer {
    typealias SwiftType = MobileShellState

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileShellState {
        let variant: Int32 = try readInt(&buf)
        switch variant {

        case 1: return .loading

        case 2: return .empty

        case 3: return .ready

        case 4: return .locked

        case 5: return .error

        default: throw UniffiInternalError.unexpectedEnumCase
        }
    }

    public static func write(_ value: MobileShellState, into buf: inout [UInt8]) {
        switch value {


        case .loading:
            writeInt(&buf, Int32(1))


        case .empty:
            writeInt(&buf, Int32(2))


        case .ready:
            writeInt(&buf, Int32(3))


        case .locked:
            writeInt(&buf, Int32(4))


        case .error:
            writeInt(&buf, Int32(5))

        }
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileShellState_lift(_ buf: RustBuffer) throws -> MobileShellState {
    return try FfiConverterTypeMobileShellState.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileShellState_lower(_ value: MobileShellState) -> RustBuffer {
    return FfiConverterTypeMobileShellState.lower(value)
}




public enum MobileTab: Equatable, Hashable {

    case home
    case passwords
    case search
    case totp
    case preferences





}

#if compiler(>=6)
extension MobileTab: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileTab: FfiConverterRustBuffer {
    typealias SwiftType = MobileTab

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileTab {
        let variant: Int32 = try readInt(&buf)
        switch variant {

        case 1: return .home

        case 2: return .passwords

        case 3: return .search

        case 4: return .totp

        case 5: return .preferences

        default: throw UniffiInternalError.unexpectedEnumCase
        }
    }

    public static func write(_ value: MobileTab, into buf: inout [UInt8]) {
        switch value {


        case .home:
            writeInt(&buf, Int32(1))


        case .passwords:
            writeInt(&buf, Int32(2))


        case .search:
            writeInt(&buf, Int32(3))


        case .totp:
            writeInt(&buf, Int32(4))


        case .preferences:
            writeInt(&buf, Int32(5))

        }
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileTab_lift(_ buf: RustBuffer) throws -> MobileTab {
    return try FfiConverterTypeMobileTab.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileTab_lower(_ value: MobileTab) -> RustBuffer {
    return FfiConverterTypeMobileTab.lower(value)
}




public enum MobileTotpDiscoveryPhase: Equatable, Hashable {

    case preparing
    case inspecting
    case saving
    case complete
    case cancelled





}

#if compiler(>=6)
extension MobileTotpDiscoveryPhase: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileTotpDiscoveryPhase: FfiConverterRustBuffer {
    typealias SwiftType = MobileTotpDiscoveryPhase

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileTotpDiscoveryPhase {
        let variant: Int32 = try readInt(&buf)
        switch variant {

        case 1: return .preparing

        case 2: return .inspecting

        case 3: return .saving

        case 4: return .complete

        case 5: return .cancelled

        default: throw UniffiInternalError.unexpectedEnumCase
        }
    }

    public static func write(_ value: MobileTotpDiscoveryPhase, into buf: inout [UInt8]) {
        switch value {


        case .preparing:
            writeInt(&buf, Int32(1))


        case .inspecting:
            writeInt(&buf, Int32(2))


        case .saving:
            writeInt(&buf, Int32(3))


        case .complete:
            writeInt(&buf, Int32(4))


        case .cancelled:
            writeInt(&buf, Int32(5))

        }
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileTotpDiscoveryPhase_lift(_ buf: RustBuffer) throws -> MobileTotpDiscoveryPhase {
    return try FfiConverterTypeMobileTotpDiscoveryPhase.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileTotpDiscoveryPhase_lower(_ value: MobileTotpDiscoveryPhase) -> RustBuffer {
    return FfiConverterTypeMobileTotpDiscoveryPhase.lower(value)
}




public enum MobileWatchSnapshotState: Equatable, Hashable {

    case unavailable
    case pending





}

#if compiler(>=6)
extension MobileWatchSnapshotState: Sendable {}
#endif

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public struct FfiConverterTypeMobileWatchSnapshotState: FfiConverterRustBuffer {
    typealias SwiftType = MobileWatchSnapshotState

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> MobileWatchSnapshotState {
        let variant: Int32 = try readInt(&buf)
        switch variant {

        case 1: return .unavailable

        case 2: return .pending

        default: throw UniffiInternalError.unexpectedEnumCase
        }
    }

    public static func write(_ value: MobileWatchSnapshotState, into buf: inout [UInt8]) {
        switch value {


        case .unavailable:
            writeInt(&buf, Int32(1))


        case .pending:
            writeInt(&buf, Int32(2))

        }
    }
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileWatchSnapshotState_lift(_ buf: RustBuffer) throws -> MobileWatchSnapshotState {
    return try FfiConverterTypeMobileWatchSnapshotState.lift(buf)
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
public func FfiConverterTypeMobileWatchSnapshotState_lower(_ value: MobileWatchSnapshotState) -> RustBuffer {
    return FfiConverterTypeMobileWatchSnapshotState.lower(value)
}


#if swift(>=5.8)
@_documentation(visibility: private)
#endif
fileprivate struct FfiConverterOptionUInt32: FfiConverterRustBuffer {
    typealias SwiftType = UInt32?

    public static func write(_ value: SwiftType, into buf: inout [UInt8]) {
        guard let value = value else {
            writeInt(&buf, Int8(0))
            return
        }
        writeInt(&buf, Int8(1))
        FfiConverterUInt32.write(value, into: &buf)
    }

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> SwiftType {
        switch try readInt(&buf) as Int8 {
        case 0: return nil
        case 1: return try FfiConverterUInt32.read(from: &buf)
        default: throw UniffiInternalError.unexpectedOptionalTag
        }
    }
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
fileprivate struct FfiConverterOptionInt64: FfiConverterRustBuffer {
    typealias SwiftType = Int64?

    public static func write(_ value: SwiftType, into buf: inout [UInt8]) {
        guard let value = value else {
            writeInt(&buf, Int8(0))
            return
        }
        writeInt(&buf, Int8(1))
        FfiConverterInt64.write(value, into: &buf)
    }

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> SwiftType {
        switch try readInt(&buf) as Int8 {
        case 0: return nil
        case 1: return try FfiConverterInt64.read(from: &buf)
        default: throw UniffiInternalError.unexpectedOptionalTag
        }
    }
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
fileprivate struct FfiConverterOptionString: FfiConverterRustBuffer {
    typealias SwiftType = String?

    public static func write(_ value: SwiftType, into buf: inout [UInt8]) {
        guard let value = value else {
            writeInt(&buf, Int8(0))
            return
        }
        writeInt(&buf, Int8(1))
        FfiConverterString.write(value, into: &buf)
    }

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> SwiftType {
        switch try readInt(&buf) as Int8 {
        case 0: return nil
        case 1: return try FfiConverterString.read(from: &buf)
        default: throw UniffiInternalError.unexpectedOptionalTag
        }
    }
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
fileprivate struct FfiConverterOptionTypeMobileHomeNotice: FfiConverterRustBuffer {
    typealias SwiftType = MobileHomeNotice?

    public static func write(_ value: SwiftType, into buf: inout [UInt8]) {
        guard let value = value else {
            writeInt(&buf, Int8(0))
            return
        }
        writeInt(&buf, Int8(1))
        FfiConverterTypeMobileHomeNotice.write(value, into: &buf)
    }

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> SwiftType {
        switch try readInt(&buf) as Int8 {
        case 0: return nil
        case 1: return try FfiConverterTypeMobileHomeNotice.read(from: &buf)
        default: throw UniffiInternalError.unexpectedOptionalTag
        }
    }
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
fileprivate struct FfiConverterOptionTypeMobileKeyTransferKey: FfiConverterRustBuffer {
    typealias SwiftType = MobileKeyTransferKey?

    public static func write(_ value: SwiftType, into buf: inout [UInt8]) {
        guard let value = value else {
            writeInt(&buf, Int8(0))
            return
        }
        writeInt(&buf, Int8(1))
        FfiConverterTypeMobileKeyTransferKey.write(value, into: &buf)
    }

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> SwiftType {
        switch try readInt(&buf) as Int8 {
        case 0: return nil
        case 1: return try FfiConverterTypeMobileKeyTransferKey.read(from: &buf)
        default: throw UniffiInternalError.unexpectedOptionalTag
        }
    }
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
fileprivate struct FfiConverterOptionTypeMobileTotpDetail: FfiConverterRustBuffer {
    typealias SwiftType = MobileTotpDetail?

    public static func write(_ value: SwiftType, into buf: inout [UInt8]) {
        guard let value = value else {
            writeInt(&buf, Int8(0))
            return
        }
        writeInt(&buf, Int8(1))
        FfiConverterTypeMobileTotpDetail.write(value, into: &buf)
    }

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> SwiftType {
        switch try readInt(&buf) as Int8 {
        case 0: return nil
        case 1: return try FfiConverterTypeMobileTotpDetail.read(from: &buf)
        default: throw UniffiInternalError.unexpectedOptionalTag
        }
    }
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
fileprivate struct FfiConverterOptionTypeMobileTotpPage: FfiConverterRustBuffer {
    typealias SwiftType = MobileTotpPage?

    public static func write(_ value: SwiftType, into buf: inout [UInt8]) {
        guard let value = value else {
            writeInt(&buf, Int8(0))
            return
        }
        writeInt(&buf, Int8(1))
        FfiConverterTypeMobileTotpPage.write(value, into: &buf)
    }

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> SwiftType {
        switch try readInt(&buf) as Int8 {
        case 0: return nil
        case 1: return try FfiConverterTypeMobileTotpPage.read(from: &buf)
        default: throw UniffiInternalError.unexpectedOptionalTag
        }
    }
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
fileprivate struct FfiConverterSequenceString: FfiConverterRustBuffer {
    typealias SwiftType = [String]

    public static func write(_ value: [String], into buf: inout [UInt8]) {
        let len = Int32(value.count)
        writeInt(&buf, len)
        for item in value {
            FfiConverterString.write(item, into: &buf)
        }
    }

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> [String] {
        let len: Int32 = try readInt(&buf)
        var seq = [String]()
        seq.reserveCapacity(Int(len))
        for _ in 0 ..< len {
            seq.append(try FfiConverterString.read(from: &buf))
        }
        return seq
    }
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
fileprivate struct FfiConverterSequenceTypeMobileEntryEditorField: FfiConverterRustBuffer {
    typealias SwiftType = [MobileEntryEditorField]

    public static func write(_ value: [MobileEntryEditorField], into buf: inout [UInt8]) {
        let len = Int32(value.count)
        writeInt(&buf, len)
        for item in value {
            FfiConverterTypeMobileEntryEditorField.write(item, into: &buf)
        }
    }

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> [MobileEntryEditorField] {
        let len: Int32 = try readInt(&buf)
        var seq = [MobileEntryEditorField]()
        seq.reserveCapacity(Int(len))
        for _ in 0 ..< len {
            seq.append(try FfiConverterTypeMobileEntryEditorField.read(from: &buf))
        }
        return seq
    }
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
fileprivate struct FfiConverterSequenceTypeMobileEntryEditorInput: FfiConverterRustBuffer {
    typealias SwiftType = [MobileEntryEditorInput]

    public static func write(_ value: [MobileEntryEditorInput], into buf: inout [UInt8]) {
        let len = Int32(value.count)
        writeInt(&buf, len)
        for item in value {
            FfiConverterTypeMobileEntryEditorInput.write(item, into: &buf)
        }
    }

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> [MobileEntryEditorInput] {
        let len: Int32 = try readInt(&buf)
        var seq = [MobileEntryEditorInput]()
        seq.reserveCapacity(Int(len))
        for _ in 0 ..< len {
            seq.append(try FfiConverterTypeMobileEntryEditorInput.read(from: &buf))
        }
        return seq
    }
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
fileprivate struct FfiConverterSequenceTypeMobileEntryField: FfiConverterRustBuffer {
    typealias SwiftType = [MobileEntryField]

    public static func write(_ value: [MobileEntryField], into buf: inout [UInt8]) {
        let len = Int32(value.count)
        writeInt(&buf, len)
        for item in value {
            FfiConverterTypeMobileEntryField.write(item, into: &buf)
        }
    }

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> [MobileEntryField] {
        let len: Int32 = try readInt(&buf)
        var seq = [MobileEntryField]()
        seq.reserveCapacity(Int(len))
        for _ in 0 ..< len {
            seq.append(try FfiConverterTypeMobileEntryField.read(from: &buf))
        }
        return seq
    }
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
fileprivate struct FfiConverterSequenceTypeMobileEntrySection: FfiConverterRustBuffer {
    typealias SwiftType = [MobileEntrySection]

    public static func write(_ value: [MobileEntrySection], into buf: inout [UInt8]) {
        let len = Int32(value.count)
        writeInt(&buf, len)
        for item in value {
            FfiConverterTypeMobileEntrySection.write(item, into: &buf)
        }
    }

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> [MobileEntrySection] {
        let len: Int32 = try readInt(&buf)
        var seq = [MobileEntrySection]()
        seq.reserveCapacity(Int(len))
        for _ in 0 ..< len {
            seq.append(try FfiConverterTypeMobileEntrySection.read(from: &buf))
        }
        return seq
    }
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
fileprivate struct FfiConverterSequenceTypeMobileHomeChange: FfiConverterRustBuffer {
    typealias SwiftType = [MobileHomeChange]

    public static func write(_ value: [MobileHomeChange], into buf: inout [UInt8]) {
        let len = Int32(value.count)
        writeInt(&buf, len)
        for item in value {
            FfiConverterTypeMobileHomeChange.write(item, into: &buf)
        }
    }

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> [MobileHomeChange] {
        let len: Int32 = try readInt(&buf)
        var seq = [MobileHomeChange]()
        seq.reserveCapacity(Int(len))
        for _ in 0 ..< len {
            seq.append(try FfiConverterTypeMobileHomeChange.read(from: &buf))
        }
        return seq
    }
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
fileprivate struct FfiConverterSequenceTypeMobileHomeCommit: FfiConverterRustBuffer {
    typealias SwiftType = [MobileHomeCommit]

    public static func write(_ value: [MobileHomeCommit], into buf: inout [UInt8]) {
        let len = Int32(value.count)
        writeInt(&buf, len)
        for item in value {
            FfiConverterTypeMobileHomeCommit.write(item, into: &buf)
        }
    }

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> [MobileHomeCommit] {
        let len: Int32 = try readInt(&buf)
        var seq = [MobileHomeCommit]()
        seq.reserveCapacity(Int(len))
        for _ in 0 ..< len {
            seq.append(try FfiConverterTypeMobileHomeCommit.read(from: &buf))
        }
        return seq
    }
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
fileprivate struct FfiConverterSequenceTypeMobileHomeSummaryRow: FfiConverterRustBuffer {
    typealias SwiftType = [MobileHomeSummaryRow]

    public static func write(_ value: [MobileHomeSummaryRow], into buf: inout [UInt8]) {
        let len = Int32(value.count)
        writeInt(&buf, len)
        for item in value {
            FfiConverterTypeMobileHomeSummaryRow.write(item, into: &buf)
        }
    }

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> [MobileHomeSummaryRow] {
        let len: Int32 = try readInt(&buf)
        var seq = [MobileHomeSummaryRow]()
        seq.reserveCapacity(Int(len))
        for _ in 0 ..< len {
            seq.append(try FfiConverterTypeMobileHomeSummaryRow.read(from: &buf))
        }
        return seq
    }
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
fileprivate struct FfiConverterSequenceTypeMobileKeyTransferFrame: FfiConverterRustBuffer {
    typealias SwiftType = [MobileKeyTransferFrame]

    public static func write(_ value: [MobileKeyTransferFrame], into buf: inout [UInt8]) {
        let len = Int32(value.count)
        writeInt(&buf, len)
        for item in value {
            FfiConverterTypeMobileKeyTransferFrame.write(item, into: &buf)
        }
    }

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> [MobileKeyTransferFrame] {
        let len: Int32 = try readInt(&buf)
        var seq = [MobileKeyTransferFrame]()
        seq.reserveCapacity(Int(len))
        for _ in 0 ..< len {
            seq.append(try FfiConverterTypeMobileKeyTransferFrame.read(from: &buf))
        }
        return seq
    }
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
fileprivate struct FfiConverterSequenceTypeMobileKeyTransferKey: FfiConverterRustBuffer {
    typealias SwiftType = [MobileKeyTransferKey]

    public static func write(_ value: [MobileKeyTransferKey], into buf: inout [UInt8]) {
        let len = Int32(value.count)
        writeInt(&buf, len)
        for item in value {
            FfiConverterTypeMobileKeyTransferKey.write(item, into: &buf)
        }
    }

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> [MobileKeyTransferKey] {
        let len: Int32 = try readInt(&buf)
        var seq = [MobileKeyTransferKey]()
        seq.reserveCapacity(Int(len))
        for _ in 0 ..< len {
            seq.append(try FfiConverterTypeMobileKeyTransferKey.read(from: &buf))
        }
        return seq
    }
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
fileprivate struct FfiConverterSequenceTypeMobileMutationDestination: FfiConverterRustBuffer {
    typealias SwiftType = [MobileMutationDestination]

    public static func write(_ value: [MobileMutationDestination], into buf: inout [UInt8]) {
        let len = Int32(value.count)
        writeInt(&buf, len)
        for item in value {
            FfiConverterTypeMobileMutationDestination.write(item, into: &buf)
        }
    }

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> [MobileMutationDestination] {
        let len: Int32 = try readInt(&buf)
        var seq = [MobileMutationDestination]()
        seq.reserveCapacity(Int(len))
        for _ in 0 ..< len {
            seq.append(try FfiConverterTypeMobileMutationDestination.read(from: &buf))
        }
        return seq
    }
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
fileprivate struct FfiConverterSequenceTypeMobilePage: FfiConverterRustBuffer {
    typealias SwiftType = [MobilePage]

    public static func write(_ value: [MobilePage], into buf: inout [UInt8]) {
        let len = Int32(value.count)
        writeInt(&buf, len)
        for item in value {
            FfiConverterTypeMobilePage.write(item, into: &buf)
        }
    }

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> [MobilePage] {
        let len: Int32 = try readInt(&buf)
        var seq = [MobilePage]()
        seq.reserveCapacity(Int(len))
        for _ in 0 ..< len {
            seq.append(try FfiConverterTypeMobilePage.read(from: &buf))
        }
        return seq
    }
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
fileprivate struct FfiConverterSequenceTypeMobilePasswordRow: FfiConverterRustBuffer {
    typealias SwiftType = [MobilePasswordRow]

    public static func write(_ value: [MobilePasswordRow], into buf: inout [UInt8]) {
        let len = Int32(value.count)
        writeInt(&buf, len)
        for item in value {
            FfiConverterTypeMobilePasswordRow.write(item, into: &buf)
        }
    }

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> [MobilePasswordRow] {
        let len: Int32 = try readInt(&buf)
        var seq = [MobilePasswordRow]()
        seq.reserveCapacity(Int(len))
        for _ in 0 ..< len {
            seq.append(try FfiConverterTypeMobilePasswordRow.read(from: &buf))
        }
        return seq
    }
}

#if swift(>=5.8)
@_documentation(visibility: private)
#endif
fileprivate struct FfiConverterSequenceTypeMobileTotpRow: FfiConverterRustBuffer {
    typealias SwiftType = [MobileTotpRow]

    public static func write(_ value: [MobileTotpRow], into buf: inout [UInt8]) {
        let len = Int32(value.count)
        writeInt(&buf, len)
        for item in value {
            FfiConverterTypeMobileTotpRow.write(item, into: &buf)
        }
    }

    public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> [MobileTotpRow] {
        let len: Int32 = try readInt(&buf)
        var seq = [MobileTotpRow]()
        seq.reserveCapacity(Int(len))
        for _ in 0 ..< len {
            seq.append(try FfiConverterTypeMobileTotpRow.read(from: &buf))
        }
        return seq
    }
}
public func mobileAuthentication()throws  -> MobileAuthentication  {
    return try  FfiConverterTypeMobileAuthentication_lift(try rustCallWithError(FfiConverterTypeMobileAuthenticationFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_func_mobile_authentication(uniffiCallStatus
    )
})
}
public func mobileHomeOperation() -> MobileHomeOperation  {
    return try!  FfiConverterTypeMobileHomeOperation_lift(try! rustCall() {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_func_mobile_home_operation(uniffiCallStatus
    )
})
}
public func mobileKeyTransfer()throws  -> MobileKeyTransfer  {
    return try  FfiConverterTypeMobileKeyTransfer_lift(try rustCallWithError(FfiConverterTypeMobileKeyTransferFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_func_mobile_key_transfer(uniffiCallStatus
    )
})
}
public func mobileOnboardingOperation(serverUrl: String, account: String, repositoryPath: String, applicationToken: String)throws  -> MobileOnboardingOperation  {
    return try  FfiConverterTypeMobileOnboardingOperation_lift(try rustCallWithError(FfiConverterTypeMobileOnboardingFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_func_mobile_onboarding_operation(
        FfiConverterString.lower(serverUrl),
        FfiConverterString.lower(account),
        FfiConverterString.lower(repositoryPath),
        FfiConverterString.lower(applicationToken),uniffiCallStatus
    )
})
}
public func mobilePasswordPage(path: String?)throws  -> MobilePasswordPage  {
    return try  FfiConverterTypeMobilePasswordPage_lift(try rustCallWithError(FfiConverterTypeMobilePasswordFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_func_mobile_password_page(
        FfiConverterOptionString.lower(path),uniffiCallStatus
    )
})
}
public func mobilePasswordSearch(query: String)throws  -> MobilePasswordPage  {
    return try  FfiConverterTypeMobilePasswordPage_lift(try rustCallWithError(FfiConverterTypeMobilePasswordFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_func_mobile_password_search(
        FfiConverterString.lower(query),uniffiCallStatus
    )
})
}
public func mobileShell() -> MobileShell  {
    return try!  FfiConverterTypeMobileShell_lift(try! rustCall() {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_func_mobile_shell(uniffiCallStatus
    )
})
}
public func mobileShellFixture(state: MobileShellState) -> MobileShell  {
    return try!  FfiConverterTypeMobileShell_lift(try! rustCall() {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_func_mobile_shell_fixture(
        FfiConverterTypeMobileShellState_lower(state),uniffiCallStatus
    )
})
}
public func mobileTotpOperation() -> MobileTotpOperation  {
    return try!  FfiConverterTypeMobileTotpOperation_lift(try! rustCall() {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_func_mobile_totp_operation(uniffiCallStatus
    )
})
}
public func productName() -> String  {
    return try!  FfiConverterString.lift(try! rustCall() {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_func_product_name(uniffiCallStatus
    )
})
}
public func replaceConfiguredMobileApplicationToken(account: String, applicationToken: String)throws   {try rustCallWithError(FfiConverterTypeMobileOnboardingFfiError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_func_replace_configured_mobile_application_token(
        FfiConverterString.lower(account),
        FfiConverterString.lower(applicationToken),uniffiCallStatus
    )
}
}
public func setSelectedMobileTab(tab: MobileTab)throws   {try rustCallWithError(FfiConverterTypeMobilePreferenceError_lift) {
        uniffiCallStatus in
    uniffi_ironstorage_apple_fn_func_set_selected_mobile_tab(
        FfiConverterTypeMobileTab_lower(tab),uniffiCallStatus
    )
}
}

private enum InitializationResult {
    case ok
    case contractVersionMismatch
    case apiChecksumMismatch
}
// Use a global variable to perform the versioning checks. Swift ensures that
// the code inside is only computed once.
private let initializationResult: InitializationResult = {
    // Get the bindings contract version from our ComponentInterface
    let bindings_contract_version = 30
    // Get the scaffolding contract version by calling the into the dylib
    let scaffolding_contract_version = ffi_ironstorage_apple_uniffi_contract_version()
    if bindings_contract_version != scaffolding_contract_version {
        return InitializationResult.contractVersionMismatch
    }
    if (uniffi_ironstorage_apple_checksum_func_mobile_authentication() != 38258) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_func_mobile_home_operation() != 10595) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_func_mobile_key_transfer() != 57389) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_func_mobile_onboarding_operation() != 8354) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_func_mobile_password_page() != 64312) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_func_mobile_password_search() != 23429) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_func_mobile_shell() != 42687) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_func_mobile_shell_fixture() != 1649) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_func_mobile_totp_operation() != 22350) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_func_product_name() != 43533) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_func_replace_configured_mobile_application_token() != 32386) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_func_set_selected_mobile_tab() != 65280) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileauthentication_add_entry_editor_field() != 58790) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileauthentication_begin_create_entry() != 21567) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileauthentication_begin_entry_editor() != 63281) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileauthentication_cached_totp_page() != 36629) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileauthentication_cancel() != 6512) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileauthentication_copy_entry_field() != 17773) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileauthentication_copy_totp_code() != 8344) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileauthentication_discard_entry_editor() != 28195) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileauthentication_entry_editor() != 65179) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileauthentication_entry_page() != 9073) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileauthentication_generate_entry_editor_password() != 34289) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileauthentication_git_identity() != 29496) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileauthentication_manual_lock() != 57220) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileauthentication_perform_entry_mutation() != 7053) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileauthentication_prepare_entry_mutation() != 6234) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileauthentication_remove_entry_editor_field() != 12238) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileauthentication_reorder_entry_editor_field() != 62124) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileauthentication_replace_entry_field() != 15315) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileauthentication_reveal_entry_field() != 13396) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileauthentication_save_entry_editor() != 30971) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileauthentication_search_cached_totp_page() != 13608) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileauthentication_set_biometric_unlock() != 9486) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileauthentication_set_git_identity() != 62371) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileauthentication_set_totp_watch_shared() != 57472) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileauthentication_state() != 60826) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileauthentication_totp_detail() != 42762) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileauthentication_totp_page() != 15475) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileauthentication_touch_user_activity() != 18402) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileauthentication_unlock_entry() != 28139) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileauthentication_unlock_totp() != 816) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileauthentication_update_entry_editor() != 30139) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobilehomeoperation_cached() != 32436) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobilehomeoperation_cancel() != 13921) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobilehomeoperation_progress() != 4980) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobilehomeoperation_pull() != 9011) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobilehomeoperation_refresh() != 50081) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobilehomeoperation_refresh_if_stale() != 27818) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobilekeytransfer_export() != 50467) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobilekeytransfer_importer() != 55825) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobilekeytransfer_keys() != 1261) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobilekeytransferimport_add_frame() != 27319) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobilekeytransferimport_import() != 37403) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileonboardingoperation_cancel() != 49755) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileonboardingoperation_discover() != 2309) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileonboardingoperation_progress() != 28201) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobileonboardingoperation_setup() != 3525) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobiletotpoperation_cancel() != 30179) {
        return InitializationResult.apiChecksumMismatch
    }
    if (uniffi_ironstorage_apple_checksum_method_mobiletotpoperation_progress() != 54435) {
        return InitializationResult.apiChecksumMismatch
    }

    return InitializationResult.ok
}()

// Make the ensure init function public so that other modules which have external type references to
// our types can call it.
public func uniffiEnsureIronstorageAppleInitialized() {
    switch initializationResult {
    case .ok:
        break
    case .contractVersionMismatch:
        fatalError("UniFFI contract version mismatch: try cleaning and rebuilding your project")
    case .apiChecksumMismatch:
        fatalError("UniFFI API checksum mismatch: try cleaning and rebuilding your project")
    }
}

// swiftlint:enable all
