diff --git a/Sources/ElixxirDAppsSDK/Connection.swift b/Sources/ElixxirDAppsSDK/Connection.swift
index 9f269119d17292807e95dbbcc1ec64c4a0d9e54d..7ae0df36c1aa42a1b70dbd8242b53f308e6632d6 100644
--- a/Sources/ElixxirDAppsSDK/Connection.swift
+++ b/Sources/ElixxirDAppsSDK/Connection.swift
@@ -5,6 +5,7 @@ public struct Connection {
   public var getPartner: () -> Data
   public var send: MessageSender
   public var listen: MessageListener
+  public var close: ConnectionCloser
 }
 
 extension Connection {
@@ -20,7 +21,8 @@ extension Connection {
         return data
       },
       send: .live(bindingsConnection: bindingsConnection),
-      listen: .live(bindingsConnection: bindingsConnection)
+      listen: .live(bindingsConnection: bindingsConnection),
+      close: .live(bindingsConnection: bindingsConnection)
     )
   }
 
@@ -36,7 +38,8 @@ extension Connection {
         return data
       },
       send: .live(bindingsAuthenticatedConnection: bindingsAuthenticatedConnection),
-      listen: .live(bindingsAuthenticatedConnection: bindingsAuthenticatedConnection)
+      listen: .live(bindingsAuthenticatedConnection: bindingsAuthenticatedConnection),
+      close: .live(bindingsAuthenticatedConnection: bindingsAuthenticatedConnection)
     )
   }
 }
@@ -47,7 +50,8 @@ extension Connection {
     isAuthenticated: { fatalError("Not implemented") },
     getPartner: { fatalError("Not implemented") },
     send: .failing,
-    listen: .failing
+    listen: .failing,
+    close: .failing
   )
 }
 #endif
diff --git a/Sources/ElixxirDAppsSDK/ConnectionCloser.swift b/Sources/ElixxirDAppsSDK/ConnectionCloser.swift
new file mode 100644
index 0000000000000000000000000000000000000000..c74c62facc24cdbd70df2c1480dbd4424cf3925c
--- /dev/null
+++ b/Sources/ElixxirDAppsSDK/ConnectionCloser.swift
@@ -0,0 +1,31 @@
+import Bindings
+
+public struct ConnectionCloser {
+  public var close: () -> Void
+
+  public func callAsFunction() {
+    close()
+  }
+}
+
+extension ConnectionCloser {
+  public static func live(
+    bindingsConnection: BindingsConnection
+  ) -> ConnectionCloser {
+    ConnectionCloser(close: bindingsConnection.close)
+  }
+
+  public static func live(
+    bindingsAuthenticatedConnection: BindingsAuthenticatedConnection
+  ) -> ConnectionCloser {
+    ConnectionCloser(close: bindingsAuthenticatedConnection.close)
+  }
+}
+
+#if DEBUG
+extension ConnectionCloser {
+  public static let failing = ConnectionCloser {
+    fatalError("Not implemented")
+  }
+}
+#endif