diff --git a/build.gradle.kts b/build.gradle.kts
new file mode 100644
index 0000000000000000000000000000000000000000..80a1d35495c7f69b78a8418f3bbdcf8d7c729269
--- /dev/null
+++ b/build.gradle.kts
@@ -0,0 +1,59 @@
+// Copyright © 2020, Concordant and contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+// associated documentation files (the "Software"), to deal in the Software without restriction,
+// including without limitation the rights to use, copy, modify, merge, publish, distribute,
+// sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or
+// substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+// NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+plugins {
+    kotlin("multiplatform") version "1.3.72"
+}
+
+repositories {
+    jcenter()
+    mavenCentral()
+}
+
+kotlin {
+
+    jvm() {
+    }
+
+    js("nodeJs") {
+        nodejs {}
+    }
+
+    sourceSets {
+
+        val commonMain by getting {
+            dependencies {
+                implementation(kotlin("stdlib"))
+                implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
+            }
+        }
+
+        val jvmMain by getting {
+            dependencies {
+                implementation(kotlin("stdlib-jdk8"))
+                implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
+            }
+        }
+
+        val nodeJsMain by getting {
+            dependencies {
+                implementation(kotlin("stdlib-js"))
+                implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))
+            }
+        }
+    }
+}
diff --git a/libs/c-crdtlib.jar b/libs/c-crdtlib.jar
new file mode 100644
index 0000000000000000000000000000000000000000..a3f0bd99ee1a1b3de27679e38394472da65f0802
Binary files /dev/null and b/libs/c-crdtlib.jar differ
diff --git a/settings.gradle.kts b/settings.gradle.kts
new file mode 100644
index 0000000000000000000000000000000000000000..1b9fead8ceb0d59da42944f04a468728e40176f5
--- /dev/null
+++ b/settings.gradle.kts
@@ -0,0 +1,18 @@
+// Copyright © 2020, Concordant and contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+// associated documentation files (the "Software"), to deal in the Software without restriction,
+// including without limitation the rights to use, copy, modify, merge, publish, distribute,
+// sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in all copies or
+// substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+// NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+rootProject.name = "c-client"
diff --git a/src/commonMain/kotlin/client/CObject.kt b/src/commonMain/kotlin/client/CObject.kt
new file mode 100644
index 0000000000000000000000000000000000000000..192b94e28f76aef967e894b9dc86f152abb310b8
--- /dev/null
+++ b/src/commonMain/kotlin/client/CObject.kt
@@ -0,0 +1,59 @@
+/*
+* Copyright © 2020, Concordant and contributors.
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+* associated documentation files (the "Software"), to deal in the Software without restriction,
+* including without limitation the rights to use, copy, modify, merge, publish, distribute,
+* sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in all copies or
+* substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+* NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+package client
+
+import client.utils.ActiveSession
+import client.utils.CObjectUId
+
+class CObject<T> {
+
+    /**
+    * Concordant object unique id
+    */
+    private val id: CObjectUId
+
+    /**
+    * Is openned in read only mode
+    */
+    private val readOnly: Boolean
+
+    constructor(oid: CObjectUId, readOnly: Boolean) {
+        this.id = oid
+        this.readOnly = readOnly
+    }
+
+    fun update() {
+        if (this.readOnly) throw RuntimeException("CObject has been opened in read-only mode.")
+
+        // Should be integrated to CRDTs
+        val crdt = CService.getObject<T>(this.id)
+        val ts = ActiveSession.environment.tick()
+        // crdt.update(ts)
+        CService.pushObject<T>(this.id, crdt)
+    }
+
+    fun getter(): Any {
+        val crdt = CService.getObject<T>(this.id)
+        return 1 // crdt.getter()
+    }
+
+    fun close() {
+    }
+}
diff --git a/src/commonMain/kotlin/client/CService.kt b/src/commonMain/kotlin/client/CService.kt
new file mode 100644
index 0000000000000000000000000000000000000000..12cee746fc1ae8b50ba6da9a70e2b1e66d60f8c5
--- /dev/null
+++ b/src/commonMain/kotlin/client/CService.kt
@@ -0,0 +1,44 @@
+/*
+* Copyright © 2020, Concordant and contributors.
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+* associated documentation files (the "Software"), to deal in the Software without restriction,
+* including without limitation the rights to use, copy, modify, merge, publish, distribute,
+* sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in all copies or
+* substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+* NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+package client
+
+import client.utils.CObjectUId
+import crdtlib.crdt.DeltaCRDT
+import crdtlib.utils.ClientUId
+
+class CService {
+
+    companion object {
+
+        fun connect(dbName: String, cid: ClientUId): Boolean {
+            return true
+        }
+
+        fun <T> getObject(oid: CObjectUId): DeltaCRDT<T>? {
+            return null
+        }
+
+        fun <T> pushObject(oid: CObjectUId, crdt: DeltaCRDT<T>) {
+        }
+
+        fun close(cid: ClientUId) {
+        }
+    }
+}
diff --git a/src/commonMain/kotlin/client/Collection.kt b/src/commonMain/kotlin/client/Collection.kt
new file mode 100644
index 0000000000000000000000000000000000000000..98a82df5e8fc3e1bda86e50f241a6f401b5647a3
--- /dev/null
+++ b/src/commonMain/kotlin/client/Collection.kt
@@ -0,0 +1,54 @@
+/*
+* Copyright © 2020, Concordant and contributors.
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+* associated documentation files (the "Software"), to deal in the Software without restriction,
+* including without limitation the rights to use, copy, modify, merge, publish, distribute,
+* sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in all copies or
+* substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+* NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+package client
+
+import client.utils.CObjectUId
+import client.utils.CollectionUId
+import client.utils.NotificationHandler
+
+class Collection {
+
+    /**
+    * The collection unique id
+    */
+    private val id: CollectionUId
+
+    /**
+    * Is the collection open in read only mode
+    */
+    private val readOnly: Boolean
+
+    constructor(cid: CollectionUId, readOnly: Boolean) {
+        this.id = cid
+        this.readOnly = readOnly
+    }
+
+    // c_open_read|write<T>
+    fun <T> open(oid: String, readOnly: Boolean, handler: NotificationHandler): T {
+        if (this.readOnly && !readOnly) throw RuntimeException("Collection has been opened in read-only mode.")
+
+        val oid = CObjectUId<T>(this.id, oid, T)
+        return CObject<T>(oid, readOnly)
+    }
+
+    // c_close_collection
+    fun close() {
+    }
+}
diff --git a/src/commonMain/kotlin/client/Session.kt b/src/commonMain/kotlin/client/Session.kt
new file mode 100644
index 0000000000000000000000000000000000000000..52b549c2480155b203bd041cbcd5f353cae05c9c
--- /dev/null
+++ b/src/commonMain/kotlin/client/Session.kt
@@ -0,0 +1,76 @@
+/*
+* Copyright © 2020, Concordant and contributors.
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+* associated documentation files (the "Software"), to deal in the Software without restriction,
+* including without limitation the rights to use, copy, modify, merge, publish, distribute,
+* sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in all copies or
+* substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+* NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+
+package client
+
+import client.utils.ActiveSession
+import client.utils.CollectionUId
+import client.utils.ConsistencyLevel
+import crdtlib.utils.ClientUId
+import crdtlib.utils.SimpleEnvironment
+import crdtlib.utils.VersionVector
+
+class Session {
+
+    /**
+    * The client unique id
+    */
+    private val clientUId: ClientUId
+
+    /**
+    * The environment linked to the session
+    */
+    private val environment: SimpleEnvironment
+
+    private constructor(cid: ClientUId) {
+        this.clientUId = cid
+        this.environment = SimpleEnvironment(this.clientUId)
+    }
+
+    // c_pull_XX_view
+    fun pull(type: ConsistencyLevel) {
+    }
+
+    // c_pull_XX_view(v)
+    fun pull(type: ConsistencyLevel, vv: VersionVector) {
+    }
+  
+    // c_open_collection_read|write
+    fun openCollection(cid: CollectionUId, readOnly: Boolean): Collection {
+        return Collection(cid, readOnly)
+    }
+
+    // c_end_session
+    fun close() {
+        CService.close(this.clientUId)
+        ActiveSession = null
+    }
+
+    companion object {
+        // c_begin_session
+        fun connect(dbName: String, credentials: String): Session {
+            val clientUId = UUID()
+            if (!CService.connect(dbName, clientUId)) throw RuntimeException("Connection to server failed.")
+            val session = Session(clientUId)
+            ActiveSession = session
+            return session
+        }
+    }
+}
diff --git a/src/commonMain/kotlin/client/utils/CObjectUId.kt b/src/commonMain/kotlin/client/utils/CObjectUId.kt
new file mode 100644
index 0000000000000000000000000000000000000000..88d253abf8f93ceaf60446cc0ab19c0b32ce4240
--- /dev/null
+++ b/src/commonMain/kotlin/client/utils/CObjectUId.kt
@@ -0,0 +1,25 @@
+/*
+* Copyright © 2020, Concordant and contributors.
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+* associated documentation files (the "Software"), to deal in the Software without restriction,
+* including without limitation the rights to use, copy, modify, merge, publish, distribute,
+* sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in all copies or
+* substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+* NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+package client.utils
+
+/**
+* Concordant object unique identifiers
+*/
+data class CObjectUId(val cid: CollectionUId, val name: String, val type: Type)
diff --git a/src/commonMain/kotlin/client/utils/CollectionUId.kt b/src/commonMain/kotlin/client/utils/CollectionUId.kt
new file mode 100644
index 0000000000000000000000000000000000000000..2d266f395b1fede44e52d4c27b503d18da9614f0
--- /dev/null
+++ b/src/commonMain/kotlin/client/utils/CollectionUId.kt
@@ -0,0 +1,26 @@
+/*
+* Copyright © 2020, Concordant and contributors.
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+* associated documentation files (the "Software"), to deal in the Software without restriction,
+* including without limitation the rights to use, copy, modify, merge, publish, distribute,
+* sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in all copies or
+* substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+* NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+
+package client.utils
+
+/**
+* Collection unique identifiers
+*/
+typealias CollectionUId = String
diff --git a/src/commonMain/kotlin/client/utils/ConsistencyLevel.kt b/src/commonMain/kotlin/client/utils/ConsistencyLevel.kt
new file mode 100644
index 0000000000000000000000000000000000000000..3decd745fd3eb142c039f0350a12bb44c7754e61
--- /dev/null
+++ b/src/commonMain/kotlin/client/utils/ConsistencyLevel.kt
@@ -0,0 +1,30 @@
+/*
+* Copyright © 2020, Concordant and contributors.
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+* associated documentation files (the "Software"), to deal in the Software without restriction,
+* including without limitation the rights to use, copy, modify, merge, publish, distribute,
+* sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in all copies or
+* substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+* NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+package client.utils
+
+/**
+* Different types of consistency level provided by the Concordant platform
+*/
+enum class ConsistencyLevel {
+
+  RC,
+  Snapshot,
+  Strong
+}
diff --git a/src/commonMain/kotlin/client/utils/Globals.kt b/src/commonMain/kotlin/client/utils/Globals.kt
new file mode 100644
index 0000000000000000000000000000000000000000..c1f3ea3c01dfa8bff84eb1affae09f3485ce6d9b
--- /dev/null
+++ b/src/commonMain/kotlin/client/utils/Globals.kt
@@ -0,0 +1,27 @@
+/*
+* Copyright © 2020, Concordant and contributors.
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+* associated documentation files (the "Software"), to deal in the Software without restriction,
+* including without limitation the rights to use, copy, modify, merge, publish, distribute,
+* sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in all copies or
+* substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+* NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+package client.utils
+
+import client.Session
+
+/**
+* Global variable(s)
+*/
+var ActiveSession: Session? = null
diff --git a/src/commonMain/kotlin/client/utils/NotificationHandler.kt b/src/commonMain/kotlin/client/utils/NotificationHandler.kt
new file mode 100644
index 0000000000000000000000000000000000000000..bdd03a8c7851a18814be65455dd64834dd2659a7
--- /dev/null
+++ b/src/commonMain/kotlin/client/utils/NotificationHandler.kt
@@ -0,0 +1,27 @@
+/*
+* Copyright © 2020, Concordant and contributors.
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+* associated documentation files (the "Software"), to deal in the Software without restriction,
+* including without limitation the rights to use, copy, modify, merge, publish, distribute,
+* sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in all copies or
+* substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+* NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+package client.utils
+
+import crdtlib.utils.VersionVector
+
+/**
+* The notification handler (function) type accepted for c-objects
+*/
+typealias NotificationHandler = (VersionVector, CObjectUId) -> Unit
diff --git a/src/commonMain/kotlin/client/utils/OperationUId.kt b/src/commonMain/kotlin/client/utils/OperationUId.kt
new file mode 100644
index 0000000000000000000000000000000000000000..997b6a66f7340f0448c82da5a838f56351797b55
--- /dev/null
+++ b/src/commonMain/kotlin/client/utils/OperationUId.kt
@@ -0,0 +1,27 @@
+/*
+* Copyright © 2020, Concordant and contributors.
+*
+* Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
+* associated documentation files (the "Software"), to deal in the Software without restriction,
+* including without limitation the rights to use, copy, modify, merge, publish, distribute,
+* sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in all copies or
+* substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
+* NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+package client.utils
+
+import crdtlib.utils.Timestamp
+
+/**
+* Operations unique identifiers
+*/
+typealias OperationUId = Timestamp