@synonymdev/react-native-pubky 0.8.0 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. package/README.md +52 -9
  2. package/android/src/main/java/com/pubky/PubkyModule.kt +364 -273
  3. package/android/src/main/java/uniffi/pubkycore/pubkycore.kt +1327 -0
  4. package/android/src/main/jniLibs/arm64-v8a/libpubkycore.so +0 -0
  5. package/android/src/main/jniLibs/armeabi-v7a/libpubkycore.so +0 -0
  6. package/android/src/main/jniLibs/x86/libpubkycore.so +0 -0
  7. package/android/src/main/jniLibs/x86_64/libpubkycore.so +0 -0
  8. package/ios/Frameworks/{PubkyMobile.xcframework → PubkyCore.xcframework}/Info.plist +8 -8
  9. package/ios/Frameworks/{PubkyMobile.xcframework → PubkyCore.xcframework}/ios-arm64/Headers/module.modulemap +2 -2
  10. package/ios/Frameworks/PubkyCore.xcframework/ios-arm64/Headers/pubkycoreFFI.h +297 -0
  11. package/ios/Frameworks/{PubkyMobile.xcframework/ios-arm64/libpubkymobile.a → PubkyCore.xcframework/ios-arm64/libpubkycore.a} +0 -0
  12. package/ios/Frameworks/{PubkyMobile.xcframework → PubkyCore.xcframework}/ios-arm64-simulator/Headers/module.modulemap +2 -2
  13. package/ios/Frameworks/PubkyCore.xcframework/ios-arm64-simulator/Headers/pubkycoreFFI.h +297 -0
  14. package/ios/Frameworks/{PubkyMobile.xcframework/ios-arm64-simulator/libpubkymobile.a → PubkyCore.xcframework/ios-arm64-simulator/libpubkycore.a} +0 -0
  15. package/ios/Pubky-Bridging-Header.h +1 -0
  16. package/ios/Pubky.mm +16 -1
  17. package/ios/Pubky.swift +64 -1
  18. package/ios/{pubkymobile.swift → pubkycore.swift} +354 -37
  19. package/lib/commonjs/index.js +45 -0
  20. package/lib/commonjs/index.js.map +1 -1
  21. package/lib/module/index.js +42 -1
  22. package/lib/module/index.js.map +1 -1
  23. package/lib/typescript/commonjs/src/index.d.ts +16 -9
  24. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  25. package/lib/typescript/module/src/index.d.ts +16 -9
  26. package/lib/typescript/module/src/index.d.ts.map +1 -1
  27. package/package.json +12 -7
  28. package/react-native-pubky.podspec +1 -1
  29. package/src/index.tsx +62 -9
  30. package/android/src/main/java/uniffi/pubkymobile/pubkymobile.kt +0 -862
  31. package/android/src/main/jniLibs/arm64-v8a/libpubkymobile.so +0 -0
  32. package/android/src/main/jniLibs/armeabi-v7a/libpubkymobile.so +0 -0
  33. package/android/src/main/jniLibs/x86/libpubkymobile.so +0 -0
  34. package/android/src/main/jniLibs/x86_64/libpubkymobile.so +0 -0
  35. package/ios/Frameworks/PubkyMobile.xcframework/ios-arm64/Headers/mobileFFI.h +0 -188
  36. package/ios/Frameworks/PubkyMobile.xcframework/ios-arm64/Headers/pubkymobileFFI.h +0 -264
  37. package/ios/Frameworks/PubkyMobile.xcframework/ios-arm64/libmobile.a +0 -0
  38. package/ios/Frameworks/PubkyMobile.xcframework/ios-arm64-simulator/Headers/mobileFFI.h +0 -188
  39. package/ios/Frameworks/PubkyMobile.xcframework/ios-arm64-simulator/Headers/pubkymobileFFI.h +0 -264
  40. package/ios/Frameworks/PubkyMobile.xcframework/ios-arm64-simulator/libmobile.a +0 -0
package/ios/Pubky.mm CHANGED
@@ -1,6 +1,21 @@
1
1
  #import <React/RCTBridgeModule.h>
2
+ #import <React/RCTEventEmitter.h>
2
3
 
3
- @interface RCT_EXTERN_MODULE(Pubky, NSObject)
4
+ @interface RCT_EXTERN_MODULE(Pubky, RCTEventEmitter)
5
+
6
+ RCT_EXTERN_METHOD(setEventListener:(RCTPromiseResolveBlock)resolve
7
+ withRejecter:(RCTPromiseRejectBlock)reject)
8
+
9
+ RCT_EXTERN_METHOD(removeEventListener:(RCTPromiseResolveBlock)resolve
10
+ withRejecter:(RCTPromiseRejectBlock)reject)
11
+
12
+ RCT_EXTERN_METHOD(deleteFile:(NSString *)url
13
+ withResolver:(RCTPromiseResolveBlock)resolve
14
+ withRejecter:(RCTPromiseRejectBlock)reject)
15
+
16
+ RCT_EXTERN_METHOD(session:(NSString *)pubky
17
+ withResolver:(RCTPromiseResolveBlock)resolve
18
+ withRejecter:(RCTPromiseRejectBlock)reject)
4
19
 
5
20
  RCT_EXTERN_METHOD(auth:(NSString *)url
6
21
  secretKey:(NSString *)secretKey
package/ios/Pubky.swift CHANGED
@@ -1,7 +1,46 @@
1
1
  import Foundation
2
+ import React
2
3
 
3
4
  @objc(Pubky)
4
- class Pubky: NSObject {
5
+ class Pubky: RCTEventEmitter {
6
+
7
+ override init() {
8
+ super.init()
9
+ }
10
+
11
+ @objc override static func requiresMainQueueSetup() -> Bool {
12
+ return false
13
+ }
14
+
15
+ override func supportedEvents() -> [String]! {
16
+ return ["PubkyEvent"]
17
+ }
18
+
19
+ class EventListenerImpl: EventListener {
20
+ weak var pubky: Pubky?
21
+
22
+ init(pubky: Pubky) {
23
+ self.pubky = pubky
24
+ }
25
+
26
+ func onEventOccurred(eventData: String) {
27
+ pubky?.sendEvent(withName: "PubkyEvent", body: eventData)
28
+ }
29
+ }
30
+
31
+ @objc(setEventListener:withRejecter:)
32
+ func setEventListener(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
33
+ let listener = EventListenerImpl(pubky: self)
34
+ react_native_pubky.setEventListener(listener: listener)
35
+ resolve(nil)
36
+ }
37
+
38
+ @objc(removeEventListener:withRejecter:)
39
+ func removeEventListener(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
40
+ react_native_pubky.removeEventListener()
41
+ resolve(nil)
42
+ }
43
+
5
44
  @objc(auth:secretKey:withResolver:withRejecter:)
6
45
  func auth(_ url: String, secretKey: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
7
46
  Task {
@@ -144,6 +183,30 @@ class Pubky: NSObject {
144
183
  }
145
184
  }
146
185
 
186
+ @objc(deleteFile:withResolver:withRejecter:)
187
+ func deleteFile(_ url: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
188
+ Task {
189
+ do {
190
+ let result = try await react_native_pubky.deleteFile(url: url)
191
+ resolve(result)
192
+ } catch {
193
+ reject("list Error", "Failed to deleteFile", error)
194
+ }
195
+ }
196
+ }
197
+
198
+ @objc(session:withResolver:withRejecter:)
199
+ func session(_ pubky: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
200
+ Task {
201
+ do {
202
+ let result = react_native_pubky.session(pubky: pubky)
203
+ resolve(result)
204
+ } catch {
205
+ reject("session Error", "Failed to get session", error)
206
+ }
207
+ }
208
+ }
209
+
147
210
  @objc(generateSecretKey:withRejecter:)
148
211
  func generateSecretKey(_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
149
212
  Task {
@@ -5,8 +5,8 @@ import Foundation
5
5
  // Depending on the consumer's build setup, the low-level FFI code
6
6
  // might be in a separate module, or it might be compiled inline into
7
7
  // this module. This is a bit of light hackery to work with both.
8
- #if canImport(pubkymobileFFI)
9
- import pubkymobileFFI
8
+ #if canImport(pubkycoreFFI)
9
+ import pubkycoreFFI
10
10
  #endif
11
11
 
12
12
  fileprivate extension RustBuffer {
@@ -19,13 +19,13 @@ fileprivate extension RustBuffer {
19
19
  }
20
20
 
21
21
  static func from(_ ptr: UnsafeBufferPointer<UInt8>) -> RustBuffer {
22
- try! rustCall { ffi_pubkymobile_rustbuffer_from_bytes(ForeignBytes(bufferPointer: ptr), $0) }
22
+ try! rustCall { ffi_pubkycore_rustbuffer_from_bytes(ForeignBytes(bufferPointer: ptr), $0) }
23
23
  }
24
24
 
25
25
  // Frees the buffer in place.
26
26
  // The buffer must not be used after this is called.
27
27
  func deallocate() {
28
- try! rustCall { ffi_pubkymobile_rustbuffer_free(self, $0) }
28
+ try! rustCall { ffi_pubkycore_rustbuffer_free(self, $0) }
29
29
  }
30
30
  }
31
31
 
@@ -297,6 +297,27 @@ private func uniffiCheckCallStatus(
297
297
  // Public interface members begin here.
298
298
 
299
299
 
300
+ fileprivate struct FfiConverterBool : FfiConverter {
301
+ typealias FfiType = Int8
302
+ typealias SwiftType = Bool
303
+
304
+ public static func lift(_ value: Int8) throws -> Bool {
305
+ return value != 0
306
+ }
307
+
308
+ public static func lower(_ value: Bool) -> Int8 {
309
+ return value ? 1 : 0
310
+ }
311
+
312
+ public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> Bool {
313
+ return try lift(readInt(&buf))
314
+ }
315
+
316
+ public static func write(_ value: Bool, into buf: inout [UInt8]) {
317
+ writeInt(&buf, lower(value))
318
+ }
319
+ }
320
+
300
321
  fileprivate struct FfiConverterString: FfiConverter {
301
322
  typealias SwiftType = String
302
323
  typealias FfiType = RustBuffer
@@ -335,6 +356,240 @@ fileprivate struct FfiConverterString: FfiConverter {
335
356
  }
336
357
  }
337
358
 
359
+
360
+ public protocol EventNotifierProtocol {
361
+
362
+ }
363
+
364
+ public class EventNotifier: EventNotifierProtocol {
365
+ fileprivate let pointer: UnsafeMutableRawPointer
366
+
367
+ // TODO: We'd like this to be `private` but for Swifty reasons,
368
+ // we can't implement `FfiConverter` without making this `required` and we can't
369
+ // make it `required` without making it `public`.
370
+ required init(unsafeFromRawPointer pointer: UnsafeMutableRawPointer) {
371
+ self.pointer = pointer
372
+ }
373
+
374
+ deinit {
375
+ try! rustCall { uniffi_pubkycore_fn_free_eventnotifier(pointer, $0) }
376
+ }
377
+
378
+
379
+
380
+
381
+
382
+ }
383
+
384
+ public struct FfiConverterTypeEventNotifier: FfiConverter {
385
+ typealias FfiType = UnsafeMutableRawPointer
386
+ typealias SwiftType = EventNotifier
387
+
388
+ public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> EventNotifier {
389
+ let v: UInt64 = try readInt(&buf)
390
+ // The Rust code won't compile if a pointer won't fit in a UInt64.
391
+ // We have to go via `UInt` because that's the thing that's the size of a pointer.
392
+ let ptr = UnsafeMutableRawPointer(bitPattern: UInt(truncatingIfNeeded: v))
393
+ if (ptr == nil) {
394
+ throw UniffiInternalError.unexpectedNullPointer
395
+ }
396
+ return try lift(ptr!)
397
+ }
398
+
399
+ public static func write(_ value: EventNotifier, into buf: inout [UInt8]) {
400
+ // This fiddling is because `Int` is the thing that's the same size as a pointer.
401
+ // The Rust code won't compile if a pointer won't fit in a `UInt64`.
402
+ writeInt(&buf, UInt64(bitPattern: Int64(Int(bitPattern: lower(value)))))
403
+ }
404
+
405
+ public static func lift(_ pointer: UnsafeMutableRawPointer) throws -> EventNotifier {
406
+ return EventNotifier(unsafeFromRawPointer: pointer)
407
+ }
408
+
409
+ public static func lower(_ value: EventNotifier) -> UnsafeMutableRawPointer {
410
+ return value.pointer
411
+ }
412
+ }
413
+
414
+
415
+ public func FfiConverterTypeEventNotifier_lift(_ pointer: UnsafeMutableRawPointer) throws -> EventNotifier {
416
+ return try FfiConverterTypeEventNotifier.lift(pointer)
417
+ }
418
+
419
+ public func FfiConverterTypeEventNotifier_lower(_ value: EventNotifier) -> UnsafeMutableRawPointer {
420
+ return FfiConverterTypeEventNotifier.lower(value)
421
+ }
422
+
423
+ fileprivate extension NSLock {
424
+ func withLock<T>(f: () throws -> T) rethrows -> T {
425
+ self.lock()
426
+ defer { self.unlock() }
427
+ return try f()
428
+ }
429
+ }
430
+
431
+ fileprivate typealias UniFFICallbackHandle = UInt64
432
+ fileprivate class UniFFICallbackHandleMap<T> {
433
+ private var leftMap: [UniFFICallbackHandle: T] = [:]
434
+ private var counter: [UniFFICallbackHandle: UInt64] = [:]
435
+ private var rightMap: [ObjectIdentifier: UniFFICallbackHandle] = [:]
436
+
437
+ private let lock = NSLock()
438
+ private var currentHandle: UniFFICallbackHandle = 0
439
+ private let stride: UniFFICallbackHandle = 1
440
+
441
+ func insert(obj: T) -> UniFFICallbackHandle {
442
+ lock.withLock {
443
+ let id = ObjectIdentifier(obj as AnyObject)
444
+ let handle = rightMap[id] ?? {
445
+ currentHandle += stride
446
+ let handle = currentHandle
447
+ leftMap[handle] = obj
448
+ rightMap[id] = handle
449
+ return handle
450
+ }()
451
+ counter[handle] = (counter[handle] ?? 0) + 1
452
+ return handle
453
+ }
454
+ }
455
+
456
+ func get(handle: UniFFICallbackHandle) -> T? {
457
+ lock.withLock {
458
+ leftMap[handle]
459
+ }
460
+ }
461
+
462
+ func delete(handle: UniFFICallbackHandle) {
463
+ remove(handle: handle)
464
+ }
465
+
466
+ @discardableResult
467
+ func remove(handle: UniFFICallbackHandle) -> T? {
468
+ lock.withLock {
469
+ defer { counter[handle] = (counter[handle] ?? 1) - 1 }
470
+ guard counter[handle] == 1 else { return leftMap[handle] }
471
+ let obj = leftMap.removeValue(forKey: handle)
472
+ if let obj = obj {
473
+ rightMap.removeValue(forKey: ObjectIdentifier(obj as AnyObject))
474
+ }
475
+ return obj
476
+ }
477
+ }
478
+ }
479
+
480
+ // Magic number for the Rust proxy to call using the same mechanism as every other method,
481
+ // to free the callback once it's dropped by Rust.
482
+ private let IDX_CALLBACK_FREE: Int32 = 0
483
+ // Callback return codes
484
+ private let UNIFFI_CALLBACK_SUCCESS: Int32 = 0
485
+ private let UNIFFI_CALLBACK_ERROR: Int32 = 1
486
+ private let UNIFFI_CALLBACK_UNEXPECTED_ERROR: Int32 = 2
487
+
488
+ // Declaration and FfiConverters for EventListener Callback Interface
489
+
490
+ public protocol EventListener : AnyObject {
491
+ func onEventOccurred(eventData: String)
492
+
493
+ }
494
+
495
+ // The ForeignCallback that is passed to Rust.
496
+ fileprivate let foreignCallbackCallbackInterfaceEventListener : ForeignCallback =
497
+ { (handle: UniFFICallbackHandle, method: Int32, argsData: UnsafePointer<UInt8>, argsLen: Int32, out_buf: UnsafeMutablePointer<RustBuffer>) -> Int32 in
498
+
499
+
500
+ func invokeOnEventOccurred(_ swiftCallbackInterface: EventListener, _ argsData: UnsafePointer<UInt8>, _ argsLen: Int32, _ out_buf: UnsafeMutablePointer<RustBuffer>) throws -> Int32 {
501
+ var reader = createReader(data: Data(bytes: argsData, count: Int(argsLen)))
502
+ func makeCall() throws -> Int32 {
503
+ try swiftCallbackInterface.onEventOccurred(
504
+ eventData: try FfiConverterString.read(from: &reader)
505
+ )
506
+ return UNIFFI_CALLBACK_SUCCESS
507
+ }
508
+ return try makeCall()
509
+ }
510
+
511
+
512
+ switch method {
513
+ case IDX_CALLBACK_FREE:
514
+ FfiConverterCallbackInterfaceEventListener.drop(handle: handle)
515
+ // Sucessful return
516
+ // See docs of ForeignCallback in `uniffi_core/src/ffi/foreigncallbacks.rs`
517
+ return UNIFFI_CALLBACK_SUCCESS
518
+ case 1:
519
+ let cb: EventListener
520
+ do {
521
+ cb = try FfiConverterCallbackInterfaceEventListener.lift(handle)
522
+ } catch {
523
+ out_buf.pointee = FfiConverterString.lower("EventListener: Invalid handle")
524
+ return UNIFFI_CALLBACK_UNEXPECTED_ERROR
525
+ }
526
+ do {
527
+ return try invokeOnEventOccurred(cb, argsData, argsLen, out_buf)
528
+ } catch let error {
529
+ out_buf.pointee = FfiConverterString.lower(String(describing: error))
530
+ return UNIFFI_CALLBACK_UNEXPECTED_ERROR
531
+ }
532
+
533
+ // This should never happen, because an out of bounds method index won't
534
+ // ever be used. Once we can catch errors, we should return an InternalError.
535
+ // https://github.com/mozilla/uniffi-rs/issues/351
536
+ default:
537
+ // An unexpected error happened.
538
+ // See docs of ForeignCallback in `uniffi_core/src/ffi/foreigncallbacks.rs`
539
+ return UNIFFI_CALLBACK_UNEXPECTED_ERROR
540
+ }
541
+ }
542
+
543
+ // FfiConverter protocol for callback interfaces
544
+ fileprivate struct FfiConverterCallbackInterfaceEventListener {
545
+ private static let initCallbackOnce: () = {
546
+ // Swift ensures this initializer code will once run once, even when accessed by multiple threads.
547
+ try! rustCall { (err: UnsafeMutablePointer<RustCallStatus>) in
548
+ uniffi_pubkycore_fn_init_callback_eventlistener(foreignCallbackCallbackInterfaceEventListener, err)
549
+ }
550
+ }()
551
+
552
+ private static func ensureCallbackinitialized() {
553
+ _ = initCallbackOnce
554
+ }
555
+
556
+ static func drop(handle: UniFFICallbackHandle) {
557
+ handleMap.remove(handle: handle)
558
+ }
559
+
560
+ private static var handleMap = UniFFICallbackHandleMap<EventListener>()
561
+ }
562
+
563
+ extension FfiConverterCallbackInterfaceEventListener : FfiConverter {
564
+ typealias SwiftType = EventListener
565
+ // We can use Handle as the FfiType because it's a typealias to UInt64
566
+ typealias FfiType = UniFFICallbackHandle
567
+
568
+ public static func lift(_ handle: UniFFICallbackHandle) throws -> SwiftType {
569
+ ensureCallbackinitialized();
570
+ guard let callback = handleMap.get(handle: handle) else {
571
+ throw UniffiInternalError.unexpectedStaleHandle
572
+ }
573
+ return callback
574
+ }
575
+
576
+ public static func read(from buf: inout (data: Data, offset: Data.Index)) throws -> SwiftType {
577
+ ensureCallbackinitialized();
578
+ let handle: UniFFICallbackHandle = try readInt(&buf)
579
+ return try lift(handle)
580
+ }
581
+
582
+ public static func lower(_ v: SwiftType) -> UniFFICallbackHandle {
583
+ ensureCallbackinitialized();
584
+ return handleMap.insert(obj: v)
585
+ }
586
+
587
+ public static func write(_ v: SwiftType, into buf: inout [UInt8]) {
588
+ ensureCallbackinitialized();
589
+ writeInt(&buf, lower(v))
590
+ }
591
+ }
592
+
338
593
  fileprivate struct FfiConverterSequenceString: FfiConverterRustBuffer {
339
594
  typealias SwiftType = [String]
340
595
 
@@ -360,7 +615,7 @@ fileprivate struct FfiConverterSequenceString: FfiConverterRustBuffer {
360
615
  public func auth(url: String, secretKey: String) -> [String] {
361
616
  return try! FfiConverterSequenceString.lift(
362
617
  try! rustCall() {
363
- uniffi_pubkymobile_fn_func_auth(
618
+ uniffi_pubkycore_fn_func_auth(
364
619
  FfiConverterString.lower(url),
365
620
  FfiConverterString.lower(secretKey),$0)
366
621
  }
@@ -370,7 +625,7 @@ public func auth(url: String, secretKey: String) -> [String] {
370
625
  public func createRecoveryFile(secretKey: String, passphrase: String) -> [String] {
371
626
  return try! FfiConverterSequenceString.lift(
372
627
  try! rustCall() {
373
- uniffi_pubkymobile_fn_func_create_recovery_file(
628
+ uniffi_pubkycore_fn_func_create_recovery_file(
374
629
  FfiConverterString.lower(secretKey),
375
630
  FfiConverterString.lower(passphrase),$0)
376
631
  }
@@ -380,17 +635,26 @@ public func createRecoveryFile(secretKey: String, passphrase: String) -> [Strin
380
635
  public func decryptRecoveryFile(recoveryFile: String, passphrase: String) -> [String] {
381
636
  return try! FfiConverterSequenceString.lift(
382
637
  try! rustCall() {
383
- uniffi_pubkymobile_fn_func_decrypt_recovery_file(
638
+ uniffi_pubkycore_fn_func_decrypt_recovery_file(
384
639
  FfiConverterString.lower(recoveryFile),
385
640
  FfiConverterString.lower(passphrase),$0)
386
641
  }
387
642
  )
388
643
  }
389
644
 
645
+ public func deleteFile(url: String) -> [String] {
646
+ return try! FfiConverterSequenceString.lift(
647
+ try! rustCall() {
648
+ uniffi_pubkycore_fn_func_delete_file(
649
+ FfiConverterString.lower(url),$0)
650
+ }
651
+ )
652
+ }
653
+
390
654
  public func generateSecretKey() -> [String] {
391
655
  return try! FfiConverterSequenceString.lift(
392
656
  try! rustCall() {
393
- uniffi_pubkymobile_fn_func_generate_secret_key($0)
657
+ uniffi_pubkycore_fn_func_generate_secret_key($0)
394
658
  }
395
659
  )
396
660
  }
@@ -398,7 +662,7 @@ public func generateSecretKey() -> [String] {
398
662
  public func get(url: String) -> [String] {
399
663
  return try! FfiConverterSequenceString.lift(
400
664
  try! rustCall() {
401
- uniffi_pubkymobile_fn_func_get(
665
+ uniffi_pubkycore_fn_func_get(
402
666
  FfiConverterString.lower(url),$0)
403
667
  }
404
668
  )
@@ -407,7 +671,7 @@ public func get(url: String) -> [String] {
407
671
  public func getPublicKeyFromSecretKey(secretKey: String) -> [String] {
408
672
  return try! FfiConverterSequenceString.lift(
409
673
  try! rustCall() {
410
- uniffi_pubkymobile_fn_func_get_public_key_from_secret_key(
674
+ uniffi_pubkycore_fn_func_get_public_key_from_secret_key(
411
675
  FfiConverterString.lower(secretKey),$0)
412
676
  }
413
677
  )
@@ -416,7 +680,7 @@ public func getPublicKeyFromSecretKey(secretKey: String) -> [String] {
416
680
  public func list(url: String) -> [String] {
417
681
  return try! FfiConverterSequenceString.lift(
418
682
  try! rustCall() {
419
- uniffi_pubkymobile_fn_func_list(
683
+ uniffi_pubkycore_fn_func_list(
420
684
  FfiConverterString.lower(url),$0)
421
685
  }
422
686
  )
@@ -425,7 +689,7 @@ public func list(url: String) -> [String] {
425
689
  public func parseAuthUrl(url: String) -> [String] {
426
690
  return try! FfiConverterSequenceString.lift(
427
691
  try! rustCall() {
428
- uniffi_pubkymobile_fn_func_parse_auth_url(
692
+ uniffi_pubkycore_fn_func_parse_auth_url(
429
693
  FfiConverterString.lower(url),$0)
430
694
  }
431
695
  )
@@ -434,7 +698,7 @@ public func parseAuthUrl(url: String) -> [String] {
434
698
  public func publish(recordName: String, recordContent: String, secretKey: String) -> [String] {
435
699
  return try! FfiConverterSequenceString.lift(
436
700
  try! rustCall() {
437
- uniffi_pubkymobile_fn_func_publish(
701
+ uniffi_pubkycore_fn_func_publish(
438
702
  FfiConverterString.lower(recordName),
439
703
  FfiConverterString.lower(recordContent),
440
704
  FfiConverterString.lower(secretKey),$0)
@@ -445,7 +709,7 @@ public func publish(recordName: String, recordContent: String, secretKey: String
445
709
  public func publishHttps(recordName: String, target: String, secretKey: String) -> [String] {
446
710
  return try! FfiConverterSequenceString.lift(
447
711
  try! rustCall() {
448
- uniffi_pubkymobile_fn_func_publish_https(
712
+ uniffi_pubkycore_fn_func_publish_https(
449
713
  FfiConverterString.lower(recordName),
450
714
  FfiConverterString.lower(target),
451
715
  FfiConverterString.lower(secretKey),$0)
@@ -456,17 +720,25 @@ public func publishHttps(recordName: String, target: String, secretKey: String)
456
720
  public func put(url: String, content: String) -> [String] {
457
721
  return try! FfiConverterSequenceString.lift(
458
722
  try! rustCall() {
459
- uniffi_pubkymobile_fn_func_put(
723
+ uniffi_pubkycore_fn_func_put(
460
724
  FfiConverterString.lower(url),
461
725
  FfiConverterString.lower(content),$0)
462
726
  }
463
727
  )
464
728
  }
465
729
 
730
+ public func removeEventListener() {
731
+ try! rustCall() {
732
+ uniffi_pubkycore_fn_func_remove_event_listener($0)
733
+ }
734
+ }
735
+
736
+
737
+
466
738
  public func resolve(publicKey: String) -> [String] {
467
739
  return try! FfiConverterSequenceString.lift(
468
740
  try! rustCall() {
469
- uniffi_pubkymobile_fn_func_resolve(
741
+ uniffi_pubkycore_fn_func_resolve(
470
742
  FfiConverterString.lower(publicKey),$0)
471
743
  }
472
744
  )
@@ -475,16 +747,34 @@ public func resolve(publicKey: String) -> [String] {
475
747
  public func resolveHttps(publicKey: String) -> [String] {
476
748
  return try! FfiConverterSequenceString.lift(
477
749
  try! rustCall() {
478
- uniffi_pubkymobile_fn_func_resolve_https(
750
+ uniffi_pubkycore_fn_func_resolve_https(
479
751
  FfiConverterString.lower(publicKey),$0)
480
752
  }
481
753
  )
482
754
  }
483
755
 
756
+ public func session(pubky: String) -> [String] {
757
+ return try! FfiConverterSequenceString.lift(
758
+ try! rustCall() {
759
+ uniffi_pubkycore_fn_func_session(
760
+ FfiConverterString.lower(pubky),$0)
761
+ }
762
+ )
763
+ }
764
+
765
+ public func setEventListener(listener: EventListener) {
766
+ try! rustCall() {
767
+ uniffi_pubkycore_fn_func_set_event_listener(
768
+ FfiConverterCallbackInterfaceEventListener.lower(listener),$0)
769
+ }
770
+ }
771
+
772
+
773
+
484
774
  public func signIn(secretKey: String) -> [String] {
485
775
  return try! FfiConverterSequenceString.lift(
486
776
  try! rustCall() {
487
- uniffi_pubkymobile_fn_func_sign_in(
777
+ uniffi_pubkycore_fn_func_sign_in(
488
778
  FfiConverterString.lower(secretKey),$0)
489
779
  }
490
780
  )
@@ -493,7 +783,7 @@ public func signIn(secretKey: String) -> [String] {
493
783
  public func signOut(secretKey: String) -> [String] {
494
784
  return try! FfiConverterSequenceString.lift(
495
785
  try! rustCall() {
496
- uniffi_pubkymobile_fn_func_sign_out(
786
+ uniffi_pubkycore_fn_func_sign_out(
497
787
  FfiConverterString.lower(secretKey),$0)
498
788
  }
499
789
  )
@@ -502,13 +792,22 @@ public func signOut(secretKey: String) -> [String] {
502
792
  public func signUp(secretKey: String, homeserver: String) -> [String] {
503
793
  return try! FfiConverterSequenceString.lift(
504
794
  try! rustCall() {
505
- uniffi_pubkymobile_fn_func_sign_up(
795
+ uniffi_pubkycore_fn_func_sign_up(
506
796
  FfiConverterString.lower(secretKey),
507
797
  FfiConverterString.lower(homeserver),$0)
508
798
  }
509
799
  )
510
800
  }
511
801
 
802
+ public func switchNetwork(useTestnet: Bool) -> [String] {
803
+ return try! FfiConverterSequenceString.lift(
804
+ try! rustCall() {
805
+ uniffi_pubkycore_fn_func_switch_network(
806
+ FfiConverterBool.lower(useTestnet),$0)
807
+ }
808
+ )
809
+ }
810
+
512
811
  private enum InitializationResult {
513
812
  case ok
514
813
  case contractVersionMismatch
@@ -520,56 +819,74 @@ private var initializationResult: InitializationResult {
520
819
  // Get the bindings contract version from our ComponentInterface
521
820
  let bindings_contract_version = 24
522
821
  // Get the scaffolding contract version by calling the into the dylib
523
- let scaffolding_contract_version = ffi_pubkymobile_uniffi_contract_version()
822
+ let scaffolding_contract_version = ffi_pubkycore_uniffi_contract_version()
524
823
  if bindings_contract_version != scaffolding_contract_version {
525
824
  return InitializationResult.contractVersionMismatch
526
825
  }
527
- if (uniffi_pubkymobile_checksum_func_auth() != 61378) {
826
+ if (uniffi_pubkycore_checksum_func_auth() != 51826) {
827
+ return InitializationResult.apiChecksumMismatch
828
+ }
829
+ if (uniffi_pubkycore_checksum_func_create_recovery_file() != 48846) {
830
+ return InitializationResult.apiChecksumMismatch
831
+ }
832
+ if (uniffi_pubkycore_checksum_func_decrypt_recovery_file() != 26407) {
833
+ return InitializationResult.apiChecksumMismatch
834
+ }
835
+ if (uniffi_pubkycore_checksum_func_delete_file() != 9063) {
836
+ return InitializationResult.apiChecksumMismatch
837
+ }
838
+ if (uniffi_pubkycore_checksum_func_generate_secret_key() != 12800) {
839
+ return InitializationResult.apiChecksumMismatch
840
+ }
841
+ if (uniffi_pubkycore_checksum_func_get() != 6591) {
842
+ return InitializationResult.apiChecksumMismatch
843
+ }
844
+ if (uniffi_pubkycore_checksum_func_get_public_key_from_secret_key() != 40316) {
528
845
  return InitializationResult.apiChecksumMismatch
529
846
  }
530
- if (uniffi_pubkymobile_checksum_func_create_recovery_file() != 55903) {
847
+ if (uniffi_pubkycore_checksum_func_list() != 43198) {
531
848
  return InitializationResult.apiChecksumMismatch
532
849
  }
533
- if (uniffi_pubkymobile_checksum_func_decrypt_recovery_file() != 59688) {
850
+ if (uniffi_pubkycore_checksum_func_parse_auth_url() != 27379) {
534
851
  return InitializationResult.apiChecksumMismatch
535
852
  }
536
- if (uniffi_pubkymobile_checksum_func_generate_secret_key() != 63116) {
853
+ if (uniffi_pubkycore_checksum_func_publish() != 48989) {
537
854
  return InitializationResult.apiChecksumMismatch
538
855
  }
539
- if (uniffi_pubkymobile_checksum_func_get() != 21596) {
856
+ if (uniffi_pubkycore_checksum_func_publish_https() != 5614) {
540
857
  return InitializationResult.apiChecksumMismatch
541
858
  }
542
- if (uniffi_pubkymobile_checksum_func_get_public_key_from_secret_key() != 23603) {
859
+ if (uniffi_pubkycore_checksum_func_put() != 48150) {
543
860
  return InitializationResult.apiChecksumMismatch
544
861
  }
545
- if (uniffi_pubkymobile_checksum_func_list() != 8522) {
862
+ if (uniffi_pubkycore_checksum_func_remove_event_listener() != 23534) {
546
863
  return InitializationResult.apiChecksumMismatch
547
864
  }
548
- if (uniffi_pubkymobile_checksum_func_parse_auth_url() != 29088) {
865
+ if (uniffi_pubkycore_checksum_func_resolve() != 34317) {
549
866
  return InitializationResult.apiChecksumMismatch
550
867
  }
551
- if (uniffi_pubkymobile_checksum_func_publish() != 20156) {
868
+ if (uniffi_pubkycore_checksum_func_resolve_https() != 17266) {
552
869
  return InitializationResult.apiChecksumMismatch
553
870
  }
554
- if (uniffi_pubkymobile_checksum_func_publish_https() != 14705) {
871
+ if (uniffi_pubkycore_checksum_func_session() != 59795) {
555
872
  return InitializationResult.apiChecksumMismatch
556
873
  }
557
- if (uniffi_pubkymobile_checksum_func_put() != 51107) {
874
+ if (uniffi_pubkycore_checksum_func_set_event_listener() != 60071) {
558
875
  return InitializationResult.apiChecksumMismatch
559
876
  }
560
- if (uniffi_pubkymobile_checksum_func_resolve() != 18303) {
877
+ if (uniffi_pubkycore_checksum_func_sign_in() != 21584) {
561
878
  return InitializationResult.apiChecksumMismatch
562
879
  }
563
- if (uniffi_pubkymobile_checksum_func_resolve_https() != 34593) {
880
+ if (uniffi_pubkycore_checksum_func_sign_out() != 34903) {
564
881
  return InitializationResult.apiChecksumMismatch
565
882
  }
566
- if (uniffi_pubkymobile_checksum_func_sign_in() != 21006) {
883
+ if (uniffi_pubkycore_checksum_func_sign_up() != 37999) {
567
884
  return InitializationResult.apiChecksumMismatch
568
885
  }
569
- if (uniffi_pubkymobile_checksum_func_sign_out() != 59116) {
886
+ if (uniffi_pubkycore_checksum_func_switch_network() != 64215) {
570
887
  return InitializationResult.apiChecksumMismatch
571
888
  }
572
- if (uniffi_pubkymobile_checksum_func_sign_up() != 58756) {
889
+ if (uniffi_pubkycore_checksum_method_eventlistener_on_event_occurred() != 11531) {
573
890
  return InitializationResult.apiChecksumMismatch
574
891
  }
575
892