diff --git a/Sources/ElixxirDAppsSDK/Backup/Backup.swift b/Sources/ElixxirDAppsSDK/Backup/Backup.swift
new file mode 100644
index 0000000000000000000000000000000000000000..7c8abc19758748a34e21b2163db6b9a53f9d4055
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/Backup/Backup.swift
@@ -0,0 +1,25 @@
+import Bindings
+
+public struct Backup {
+  public var isRunning: BackupIsRunning
+  public var addJSON: BackupAddJSON
+  public var stop: BackupStop
+}
+
+extension Backup {
+  public static func live(_ bindingsBackup: BindingsBackup) -> Backup {
+    Backup(
+      isRunning: .live(bindingsBackup),
+      addJSON: .live(bindingsBackup),
+      stop: .live(bindingsBackup)
+    )
+  }
+}
+
+extension Backup {
+  public static let unimplemented = Backup(
+    isRunning: .unimplemented,
+    addJSON: .unimplemented,
+    stop: .unimplemented
+  )
+}
diff --git a/Sources/ElixxirDAppsSDK/Backup/Functors/BackupAddJson.swift b/Sources/ElixxirDAppsSDK/Backup/Functors/BackupAddJson.swift
new file mode 100644
index 0000000000000000000000000000000000000000..6c16884fdeca03546fefa6c5ce298bb18d3486f0
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/Backup/Functors/BackupAddJson.swift
@@ -0,0 +1,22 @@
+import Bindings
+import XCTestDynamicOverlay
+
+public struct BackupAddJSON {
+  public var run: (String) -> Void
+
+  public func callAsFunction(_ jsonString: String) {
+    run(jsonString)
+  }
+}
+
+extension BackupAddJSON {
+  public static func live(_ bindingsBackup: BindingsBackup) -> BackupAddJSON {
+    BackupAddJSON(run: bindingsBackup.addJson)
+  }
+}
+
+extension BackupAddJSON {
+  public static let unimplemented = BackupAddJSON(
+    run: XCTUnimplemented("\(Self.self)")
+  )
+}
diff --git a/Sources/ElixxirDAppsSDK/Backup/Functors/BackupIsRunning.swift b/Sources/ElixxirDAppsSDK/Backup/Functors/BackupIsRunning.swift
new file mode 100644
index 0000000000000000000000000000000000000000..ceee54543c848993c3fb265f2d6699b544c0098f
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/Backup/Functors/BackupIsRunning.swift
@@ -0,0 +1,22 @@
+import Bindings
+import XCTestDynamicOverlay
+
+public struct BackupIsRunning {
+  public var run: () -> Bool
+
+  public func callAsFunction() -> Bool {
+    run()
+  }
+}
+
+extension BackupIsRunning {
+  public static func live(_ bindingsBackup: BindingsBackup) -> BackupIsRunning {
+    BackupIsRunning(run: bindingsBackup.isBackupRunning)
+  }
+}
+
+extension BackupIsRunning {
+  public static let unimplemented = BackupIsRunning(
+    run: XCTUnimplemented("\(Self.self)")
+  )
+}
diff --git a/Sources/ElixxirDAppsSDK/Backup/Functors/BackupStop.swift b/Sources/ElixxirDAppsSDK/Backup/Functors/BackupStop.swift
new file mode 100644
index 0000000000000000000000000000000000000000..b2df31eff1a1e3944ee04fce381d064f61d0c587
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/Backup/Functors/BackupStop.swift
@@ -0,0 +1,22 @@
+import Bindings
+import XCTestDynamicOverlay
+
+public struct BackupStop {
+  public var run: () throws -> Void
+
+  public func callAsFunction() throws {
+    try run()
+  }
+}
+
+extension BackupStop {
+  public static func live(_ bindingsBackup: BindingsBackup) -> BackupStop {
+    BackupStop(run: bindingsBackup.stop)
+  }
+}
+
+extension BackupStop {
+  public static let unimplemented = BackupStop(
+    run: XCTUnimplemented("\(Self.self)")
+  )
+}