diff --git a/.changeset/fast-nails-swim.md b/.changeset/fast-nails-swim.md
new file mode 100644
index 0000000000..336b3d644d
--- /dev/null
+++ b/.changeset/fast-nails-swim.md
@@ -0,0 +1,5 @@
+---
+"effect": patch
+---
+
+add PrimaryKey module
diff --git a/docs/modules/PrimaryKey.ts.md b/docs/modules/PrimaryKey.ts.md
new file mode 100644
index 0000000000..59238cec1f
--- /dev/null
+++ b/docs/modules/PrimaryKey.ts.md
@@ -0,0 +1,46 @@
+---
+title: PrimaryKey.ts
+nav_order: 79
+parent: Modules
+---
+
+## PrimaryKey overview
+
+Added in v2.0.0
+
+---
+
+
Table of contents
+
+- [models](#models)
+ - [PrimaryKey (interface)](#primarykey-interface)
+- [symbols](#symbols)
+ - [symbol](#symbol)
+
+---
+
+# models
+
+## PrimaryKey (interface)
+
+**Signature**
+
+```ts
+export interface PrimaryKey {
+ [symbol](): string
+}
+```
+
+Added in v2.0.0
+
+# symbols
+
+## symbol
+
+**Signature**
+
+```ts
+export declare const symbol: typeof symbol
+```
+
+Added in v2.0.0
diff --git a/docs/modules/PubSub.ts.md b/docs/modules/PubSub.ts.md
index aab994abbd..e308e2e686 100644
--- a/docs/modules/PubSub.ts.md
+++ b/docs/modules/PubSub.ts.md
@@ -1,6 +1,6 @@
---
title: PubSub.ts
-nav_order: 79
+nav_order: 80
parent: Modules
---
diff --git a/docs/modules/Queue.ts.md b/docs/modules/Queue.ts.md
index 8e1398fb18..f75f093846 100644
--- a/docs/modules/Queue.ts.md
+++ b/docs/modules/Queue.ts.md
@@ -1,6 +1,6 @@
---
title: Queue.ts
-nav_order: 80
+nav_order: 81
parent: Modules
---
diff --git a/docs/modules/Random.ts.md b/docs/modules/Random.ts.md
index 814ed7270c..b8200c8742 100644
--- a/docs/modules/Random.ts.md
+++ b/docs/modules/Random.ts.md
@@ -1,6 +1,6 @@
---
title: Random.ts
-nav_order: 81
+nav_order: 82
parent: Modules
---
diff --git a/docs/modules/ReadonlyArray.ts.md b/docs/modules/ReadonlyArray.ts.md
index c7135004fa..b854c78750 100644
--- a/docs/modules/ReadonlyArray.ts.md
+++ b/docs/modules/ReadonlyArray.ts.md
@@ -1,6 +1,6 @@
---
title: ReadonlyArray.ts
-nav_order: 82
+nav_order: 83
parent: Modules
---
diff --git a/docs/modules/ReadonlyRecord.ts.md b/docs/modules/ReadonlyRecord.ts.md
index 34922b1193..76f640b31b 100644
--- a/docs/modules/ReadonlyRecord.ts.md
+++ b/docs/modules/ReadonlyRecord.ts.md
@@ -1,6 +1,6 @@
---
title: ReadonlyRecord.ts
-nav_order: 83
+nav_order: 84
parent: Modules
---
diff --git a/docs/modules/RedBlackTree.ts.md b/docs/modules/RedBlackTree.ts.md
index d6f50537d2..47264ff536 100644
--- a/docs/modules/RedBlackTree.ts.md
+++ b/docs/modules/RedBlackTree.ts.md
@@ -1,6 +1,6 @@
---
title: RedBlackTree.ts
-nav_order: 84
+nav_order: 85
parent: Modules
---
diff --git a/docs/modules/Ref.ts.md b/docs/modules/Ref.ts.md
index c12554aefe..0b59b53b4c 100644
--- a/docs/modules/Ref.ts.md
+++ b/docs/modules/Ref.ts.md
@@ -1,6 +1,6 @@
---
title: Ref.ts
-nav_order: 85
+nav_order: 86
parent: Modules
---
diff --git a/docs/modules/Reloadable.ts.md b/docs/modules/Reloadable.ts.md
index b8341e0158..e08b769400 100644
--- a/docs/modules/Reloadable.ts.md
+++ b/docs/modules/Reloadable.ts.md
@@ -1,6 +1,6 @@
---
title: Reloadable.ts
-nav_order: 86
+nav_order: 87
parent: Modules
---
diff --git a/docs/modules/Request.ts.md b/docs/modules/Request.ts.md
index 5a335b7b68..25529f8e59 100644
--- a/docs/modules/Request.ts.md
+++ b/docs/modules/Request.ts.md
@@ -1,6 +1,6 @@
---
title: Request.ts
-nav_order: 87
+nav_order: 88
parent: Modules
---
diff --git a/docs/modules/RequestBlock.ts.md b/docs/modules/RequestBlock.ts.md
index d73ca50c42..444082cf42 100644
--- a/docs/modules/RequestBlock.ts.md
+++ b/docs/modules/RequestBlock.ts.md
@@ -1,6 +1,6 @@
---
title: RequestBlock.ts
-nav_order: 88
+nav_order: 89
parent: Modules
---
diff --git a/docs/modules/RequestResolver.ts.md b/docs/modules/RequestResolver.ts.md
index d2019f5a5b..c6e2d5ee30 100644
--- a/docs/modules/RequestResolver.ts.md
+++ b/docs/modules/RequestResolver.ts.md
@@ -1,6 +1,6 @@
---
title: RequestResolver.ts
-nav_order: 89
+nav_order: 90
parent: Modules
---
diff --git a/docs/modules/Resource.ts.md b/docs/modules/Resource.ts.md
index dc523c9aa7..0d76052238 100644
--- a/docs/modules/Resource.ts.md
+++ b/docs/modules/Resource.ts.md
@@ -1,6 +1,6 @@
---
title: Resource.ts
-nav_order: 90
+nav_order: 91
parent: Modules
---
diff --git a/docs/modules/Runtime.ts.md b/docs/modules/Runtime.ts.md
index 32b68c5243..2f16e77637 100644
--- a/docs/modules/Runtime.ts.md
+++ b/docs/modules/Runtime.ts.md
@@ -1,6 +1,6 @@
---
title: Runtime.ts
-nav_order: 91
+nav_order: 92
parent: Modules
---
diff --git a/docs/modules/RuntimeFlags.ts.md b/docs/modules/RuntimeFlags.ts.md
index 07c2aa826e..c29e862b04 100644
--- a/docs/modules/RuntimeFlags.ts.md
+++ b/docs/modules/RuntimeFlags.ts.md
@@ -1,6 +1,6 @@
---
title: RuntimeFlags.ts
-nav_order: 92
+nav_order: 93
parent: Modules
---
diff --git a/docs/modules/RuntimeFlagsPatch.ts.md b/docs/modules/RuntimeFlagsPatch.ts.md
index 47377a81d3..0bbaef03fd 100644
--- a/docs/modules/RuntimeFlagsPatch.ts.md
+++ b/docs/modules/RuntimeFlagsPatch.ts.md
@@ -1,6 +1,6 @@
---
title: RuntimeFlagsPatch.ts
-nav_order: 93
+nav_order: 94
parent: Modules
---
diff --git a/docs/modules/STM.ts.md b/docs/modules/STM.ts.md
index 66e75a11a6..8131d102e4 100644
--- a/docs/modules/STM.ts.md
+++ b/docs/modules/STM.ts.md
@@ -1,6 +1,6 @@
---
title: STM.ts
-nav_order: 106
+nav_order: 107
parent: Modules
---
diff --git a/docs/modules/Schedule.ts.md b/docs/modules/Schedule.ts.md
index f66204c37b..c3ef8ffd45 100644
--- a/docs/modules/Schedule.ts.md
+++ b/docs/modules/Schedule.ts.md
@@ -1,6 +1,6 @@
---
title: Schedule.ts
-nav_order: 94
+nav_order: 95
parent: Modules
---
diff --git a/docs/modules/ScheduleDecision.ts.md b/docs/modules/ScheduleDecision.ts.md
index f30944f77e..af89bee62c 100644
--- a/docs/modules/ScheduleDecision.ts.md
+++ b/docs/modules/ScheduleDecision.ts.md
@@ -1,6 +1,6 @@
---
title: ScheduleDecision.ts
-nav_order: 95
+nav_order: 96
parent: Modules
---
diff --git a/docs/modules/ScheduleInterval.ts.md b/docs/modules/ScheduleInterval.ts.md
index f77897868c..426eb5ea97 100644
--- a/docs/modules/ScheduleInterval.ts.md
+++ b/docs/modules/ScheduleInterval.ts.md
@@ -1,6 +1,6 @@
---
title: ScheduleInterval.ts
-nav_order: 96
+nav_order: 97
parent: Modules
---
diff --git a/docs/modules/ScheduleIntervals.ts.md b/docs/modules/ScheduleIntervals.ts.md
index 45eda724a1..1d1b578418 100644
--- a/docs/modules/ScheduleIntervals.ts.md
+++ b/docs/modules/ScheduleIntervals.ts.md
@@ -1,6 +1,6 @@
---
title: ScheduleIntervals.ts
-nav_order: 97
+nav_order: 98
parent: Modules
---
diff --git a/docs/modules/Scheduler.ts.md b/docs/modules/Scheduler.ts.md
index f2baf6dad3..3b6a755adf 100644
--- a/docs/modules/Scheduler.ts.md
+++ b/docs/modules/Scheduler.ts.md
@@ -1,6 +1,6 @@
---
title: Scheduler.ts
-nav_order: 98
+nav_order: 99
parent: Modules
---
diff --git a/docs/modules/Scope.ts.md b/docs/modules/Scope.ts.md
index 3997f2e940..b9b76e47a2 100644
--- a/docs/modules/Scope.ts.md
+++ b/docs/modules/Scope.ts.md
@@ -1,6 +1,6 @@
---
title: Scope.ts
-nav_order: 99
+nav_order: 100
parent: Modules
---
diff --git a/docs/modules/ScopedCache.ts.md b/docs/modules/ScopedCache.ts.md
index 8bab505a45..8cdc55fe04 100644
--- a/docs/modules/ScopedCache.ts.md
+++ b/docs/modules/ScopedCache.ts.md
@@ -1,6 +1,6 @@
---
title: ScopedCache.ts
-nav_order: 100
+nav_order: 101
parent: Modules
---
diff --git a/docs/modules/ScopedRef.ts.md b/docs/modules/ScopedRef.ts.md
index c159c70183..1198a2995d 100644
--- a/docs/modules/ScopedRef.ts.md
+++ b/docs/modules/ScopedRef.ts.md
@@ -1,6 +1,6 @@
---
title: ScopedRef.ts
-nav_order: 101
+nav_order: 102
parent: Modules
---
diff --git a/docs/modules/SingleProducerAsyncInput.ts.md b/docs/modules/SingleProducerAsyncInput.ts.md
index 28070f7bb3..effe47c9b6 100644
--- a/docs/modules/SingleProducerAsyncInput.ts.md
+++ b/docs/modules/SingleProducerAsyncInput.ts.md
@@ -1,6 +1,6 @@
---
title: SingleProducerAsyncInput.ts
-nav_order: 102
+nav_order: 103
parent: Modules
---
diff --git a/docs/modules/Sink.ts.md b/docs/modules/Sink.ts.md
index 8a578668af..e078300c79 100644
--- a/docs/modules/Sink.ts.md
+++ b/docs/modules/Sink.ts.md
@@ -1,6 +1,6 @@
---
title: Sink.ts
-nav_order: 103
+nav_order: 104
parent: Modules
---
diff --git a/docs/modules/SortedMap.ts.md b/docs/modules/SortedMap.ts.md
index 557db07576..b5ec30baa4 100644
--- a/docs/modules/SortedMap.ts.md
+++ b/docs/modules/SortedMap.ts.md
@@ -1,6 +1,6 @@
---
title: SortedMap.ts
-nav_order: 104
+nav_order: 105
parent: Modules
---
diff --git a/docs/modules/SortedSet.ts.md b/docs/modules/SortedSet.ts.md
index a5330d5e74..f8b5bec5c0 100644
--- a/docs/modules/SortedSet.ts.md
+++ b/docs/modules/SortedSet.ts.md
@@ -1,6 +1,6 @@
---
title: SortedSet.ts
-nav_order: 105
+nav_order: 106
parent: Modules
---
diff --git a/docs/modules/Stream.ts.md b/docs/modules/Stream.ts.md
index d4f1e1ca91..c29de62bbe 100644
--- a/docs/modules/Stream.ts.md
+++ b/docs/modules/Stream.ts.md
@@ -1,6 +1,6 @@
---
title: Stream.ts
-nav_order: 107
+nav_order: 108
parent: Modules
---
diff --git a/docs/modules/StreamEmit.ts.md b/docs/modules/StreamEmit.ts.md
index 5e6511874b..b54b29fddf 100644
--- a/docs/modules/StreamEmit.ts.md
+++ b/docs/modules/StreamEmit.ts.md
@@ -1,6 +1,6 @@
---
title: StreamEmit.ts
-nav_order: 109
+nav_order: 110
parent: Modules
---
diff --git a/docs/modules/StreamHaltStrategy.ts.md b/docs/modules/StreamHaltStrategy.ts.md
index eb4027f32c..25edb0333c 100644
--- a/docs/modules/StreamHaltStrategy.ts.md
+++ b/docs/modules/StreamHaltStrategy.ts.md
@@ -1,6 +1,6 @@
---
title: StreamHaltStrategy.ts
-nav_order: 110
+nav_order: 111
parent: Modules
---
diff --git a/docs/modules/Streamable.ts.md b/docs/modules/Streamable.ts.md
index e7d9225ecd..a4f4a92456 100644
--- a/docs/modules/Streamable.ts.md
+++ b/docs/modules/Streamable.ts.md
@@ -1,6 +1,6 @@
---
title: Streamable.ts
-nav_order: 108
+nav_order: 109
parent: Modules
---
diff --git a/docs/modules/String.ts.md b/docs/modules/String.ts.md
index f1c4e501da..6562a65417 100644
--- a/docs/modules/String.ts.md
+++ b/docs/modules/String.ts.md
@@ -1,6 +1,6 @@
---
title: String.ts
-nav_order: 111
+nav_order: 112
parent: Modules
---
diff --git a/docs/modules/Struct.ts.md b/docs/modules/Struct.ts.md
index 1e90a73004..e758986ebf 100644
--- a/docs/modules/Struct.ts.md
+++ b/docs/modules/Struct.ts.md
@@ -1,6 +1,6 @@
---
title: Struct.ts
-nav_order: 112
+nav_order: 113
parent: Modules
---
diff --git a/docs/modules/SubscriptionRef.ts.md b/docs/modules/SubscriptionRef.ts.md
index b31f2f7af9..de9f24c810 100644
--- a/docs/modules/SubscriptionRef.ts.md
+++ b/docs/modules/SubscriptionRef.ts.md
@@ -1,6 +1,6 @@
---
title: SubscriptionRef.ts
-nav_order: 113
+nav_order: 114
parent: Modules
---
diff --git a/docs/modules/Supervisor.ts.md b/docs/modules/Supervisor.ts.md
index 3f49e76971..62301c3dbe 100644
--- a/docs/modules/Supervisor.ts.md
+++ b/docs/modules/Supervisor.ts.md
@@ -1,6 +1,6 @@
---
title: Supervisor.ts
-nav_order: 114
+nav_order: 115
parent: Modules
---
diff --git a/docs/modules/Symbol.ts.md b/docs/modules/Symbol.ts.md
index 2afd337400..06ccb5030a 100644
--- a/docs/modules/Symbol.ts.md
+++ b/docs/modules/Symbol.ts.md
@@ -1,6 +1,6 @@
---
title: Symbol.ts
-nav_order: 115
+nav_order: 116
parent: Modules
---
diff --git a/docs/modules/SynchronizedRef.ts.md b/docs/modules/SynchronizedRef.ts.md
index f18cb9f6d9..ee0709f27c 100644
--- a/docs/modules/SynchronizedRef.ts.md
+++ b/docs/modules/SynchronizedRef.ts.md
@@ -1,6 +1,6 @@
---
title: SynchronizedRef.ts
-nav_order: 116
+nav_order: 117
parent: Modules
---
diff --git a/docs/modules/TArray.ts.md b/docs/modules/TArray.ts.md
index 887742fa87..fdd2da7724 100644
--- a/docs/modules/TArray.ts.md
+++ b/docs/modules/TArray.ts.md
@@ -1,6 +1,6 @@
---
title: TArray.ts
-nav_order: 118
+nav_order: 119
parent: Modules
---
diff --git a/docs/modules/TDeferred.ts.md b/docs/modules/TDeferred.ts.md
index 967ec4e038..33cba83554 100644
--- a/docs/modules/TDeferred.ts.md
+++ b/docs/modules/TDeferred.ts.md
@@ -1,6 +1,6 @@
---
title: TDeferred.ts
-nav_order: 119
+nav_order: 120
parent: Modules
---
diff --git a/docs/modules/TMap.ts.md b/docs/modules/TMap.ts.md
index e359bb9fba..c33d3926b8 100644
--- a/docs/modules/TMap.ts.md
+++ b/docs/modules/TMap.ts.md
@@ -1,6 +1,6 @@
---
title: TMap.ts
-nav_order: 129
+nav_order: 130
parent: Modules
---
diff --git a/docs/modules/TPriorityQueue.ts.md b/docs/modules/TPriorityQueue.ts.md
index ff39fe9a00..a4380c6ea8 100644
--- a/docs/modules/TPriorityQueue.ts.md
+++ b/docs/modules/TPriorityQueue.ts.md
@@ -1,6 +1,6 @@
---
title: TPriorityQueue.ts
-nav_order: 130
+nav_order: 131
parent: Modules
---
diff --git a/docs/modules/TPubSub.ts.md b/docs/modules/TPubSub.ts.md
index c611ce30cf..1fb9eabc3f 100644
--- a/docs/modules/TPubSub.ts.md
+++ b/docs/modules/TPubSub.ts.md
@@ -1,6 +1,6 @@
---
title: TPubSub.ts
-nav_order: 131
+nav_order: 132
parent: Modules
---
diff --git a/docs/modules/TQueue.ts.md b/docs/modules/TQueue.ts.md
index 3b944e37ac..88bc180bc8 100644
--- a/docs/modules/TQueue.ts.md
+++ b/docs/modules/TQueue.ts.md
@@ -1,6 +1,6 @@
---
title: TQueue.ts
-nav_order: 132
+nav_order: 133
parent: Modules
---
diff --git a/docs/modules/TRandom.ts.md b/docs/modules/TRandom.ts.md
index 8f4952ac15..9643e55da9 100644
--- a/docs/modules/TRandom.ts.md
+++ b/docs/modules/TRandom.ts.md
@@ -1,6 +1,6 @@
---
title: TRandom.ts
-nav_order: 134
+nav_order: 135
parent: Modules
---
diff --git a/docs/modules/TReentrantLock.ts.md b/docs/modules/TReentrantLock.ts.md
index 0382429efd..725a6a25fe 100644
--- a/docs/modules/TReentrantLock.ts.md
+++ b/docs/modules/TReentrantLock.ts.md
@@ -1,6 +1,6 @@
---
title: TReentrantLock.ts
-nav_order: 135
+nav_order: 136
parent: Modules
---
diff --git a/docs/modules/TRef.ts.md b/docs/modules/TRef.ts.md
index 60b414a17f..ae82a8a04c 100644
--- a/docs/modules/TRef.ts.md
+++ b/docs/modules/TRef.ts.md
@@ -1,6 +1,6 @@
---
title: TRef.ts
-nav_order: 136
+nav_order: 137
parent: Modules
---
diff --git a/docs/modules/TSemaphore.ts.md b/docs/modules/TSemaphore.ts.md
index 49274bfe20..70fd65e7b1 100644
--- a/docs/modules/TSemaphore.ts.md
+++ b/docs/modules/TSemaphore.ts.md
@@ -1,6 +1,6 @@
---
title: TSemaphore.ts
-nav_order: 137
+nav_order: 138
parent: Modules
---
diff --git a/docs/modules/TSet.ts.md b/docs/modules/TSet.ts.md
index 88c2f34063..a8118025b9 100644
--- a/docs/modules/TSet.ts.md
+++ b/docs/modules/TSet.ts.md
@@ -1,6 +1,6 @@
---
title: TSet.ts
-nav_order: 138
+nav_order: 139
parent: Modules
---
diff --git a/docs/modules/Take.ts.md b/docs/modules/Take.ts.md
index d88c5825cc..a982c2ef00 100644
--- a/docs/modules/Take.ts.md
+++ b/docs/modules/Take.ts.md
@@ -1,6 +1,6 @@
---
title: Take.ts
-nav_order: 117
+nav_order: 118
parent: Modules
---
diff --git a/docs/modules/TestAnnotation.ts.md b/docs/modules/TestAnnotation.ts.md
index f2193f5d5b..605c1e312e 100644
--- a/docs/modules/TestAnnotation.ts.md
+++ b/docs/modules/TestAnnotation.ts.md
@@ -1,6 +1,6 @@
---
title: TestAnnotation.ts
-nav_order: 120
+nav_order: 121
parent: Modules
---
diff --git a/docs/modules/TestAnnotationMap.ts.md b/docs/modules/TestAnnotationMap.ts.md
index 88e9f42c43..7bf6ee6d9e 100644
--- a/docs/modules/TestAnnotationMap.ts.md
+++ b/docs/modules/TestAnnotationMap.ts.md
@@ -1,6 +1,6 @@
---
title: TestAnnotationMap.ts
-nav_order: 121
+nav_order: 122
parent: Modules
---
diff --git a/docs/modules/TestAnnotations.ts.md b/docs/modules/TestAnnotations.ts.md
index dc1ed9e3bb..c00cf5fff5 100644
--- a/docs/modules/TestAnnotations.ts.md
+++ b/docs/modules/TestAnnotations.ts.md
@@ -1,6 +1,6 @@
---
title: TestAnnotations.ts
-nav_order: 122
+nav_order: 123
parent: Modules
---
diff --git a/docs/modules/TestClock.ts.md b/docs/modules/TestClock.ts.md
index 0a2518595d..4ec63d43b3 100644
--- a/docs/modules/TestClock.ts.md
+++ b/docs/modules/TestClock.ts.md
@@ -1,6 +1,6 @@
---
title: TestClock.ts
-nav_order: 123
+nav_order: 124
parent: Modules
---
diff --git a/docs/modules/TestConfig.ts.md b/docs/modules/TestConfig.ts.md
index 869a547ccc..bd2b573e1f 100644
--- a/docs/modules/TestConfig.ts.md
+++ b/docs/modules/TestConfig.ts.md
@@ -1,6 +1,6 @@
---
title: TestConfig.ts
-nav_order: 124
+nav_order: 125
parent: Modules
---
diff --git a/docs/modules/TestContext.ts.md b/docs/modules/TestContext.ts.md
index 42de83f179..79ed9e3e42 100644
--- a/docs/modules/TestContext.ts.md
+++ b/docs/modules/TestContext.ts.md
@@ -1,6 +1,6 @@
---
title: TestContext.ts
-nav_order: 125
+nav_order: 126
parent: Modules
---
diff --git a/docs/modules/TestLive.ts.md b/docs/modules/TestLive.ts.md
index 8fae974240..e9a21d9dbb 100644
--- a/docs/modules/TestLive.ts.md
+++ b/docs/modules/TestLive.ts.md
@@ -1,6 +1,6 @@
---
title: TestLive.ts
-nav_order: 126
+nav_order: 127
parent: Modules
---
diff --git a/docs/modules/TestServices.ts.md b/docs/modules/TestServices.ts.md
index ef5fdfd3ea..712f157946 100644
--- a/docs/modules/TestServices.ts.md
+++ b/docs/modules/TestServices.ts.md
@@ -1,6 +1,6 @@
---
title: TestServices.ts
-nav_order: 127
+nav_order: 128
parent: Modules
---
diff --git a/docs/modules/TestSized.ts.md b/docs/modules/TestSized.ts.md
index 0a9f03fbe7..d54a8535bb 100644
--- a/docs/modules/TestSized.ts.md
+++ b/docs/modules/TestSized.ts.md
@@ -1,6 +1,6 @@
---
title: TestSized.ts
-nav_order: 128
+nav_order: 129
parent: Modules
---
diff --git a/docs/modules/Tracer.ts.md b/docs/modules/Tracer.ts.md
index f60e5568be..bd1ed0c53d 100644
--- a/docs/modules/Tracer.ts.md
+++ b/docs/modules/Tracer.ts.md
@@ -1,6 +1,6 @@
---
title: Tracer.ts
-nav_order: 133
+nav_order: 134
parent: Modules
---
diff --git a/docs/modules/Tuple.ts.md b/docs/modules/Tuple.ts.md
index fc920c1250..57cd97a0ad 100644
--- a/docs/modules/Tuple.ts.md
+++ b/docs/modules/Tuple.ts.md
@@ -1,6 +1,6 @@
---
title: Tuple.ts
-nav_order: 139
+nav_order: 140
parent: Modules
---
diff --git a/docs/modules/Types.ts.md b/docs/modules/Types.ts.md
index 22be952250..ec11ccabc6 100644
--- a/docs/modules/Types.ts.md
+++ b/docs/modules/Types.ts.md
@@ -1,6 +1,6 @@
---
title: Types.ts
-nav_order: 140
+nav_order: 141
parent: Modules
---
diff --git a/docs/modules/Unify.ts.md b/docs/modules/Unify.ts.md
index 981322d4ae..8486d9ae08 100644
--- a/docs/modules/Unify.ts.md
+++ b/docs/modules/Unify.ts.md
@@ -1,6 +1,6 @@
---
title: Unify.ts
-nav_order: 141
+nav_order: 142
parent: Modules
---
diff --git a/docs/modules/UpstreamPullRequest.ts.md b/docs/modules/UpstreamPullRequest.ts.md
index 289eb3ef21..16f2b4fefb 100644
--- a/docs/modules/UpstreamPullRequest.ts.md
+++ b/docs/modules/UpstreamPullRequest.ts.md
@@ -1,6 +1,6 @@
---
title: UpstreamPullRequest.ts
-nav_order: 142
+nav_order: 143
parent: Modules
---
diff --git a/docs/modules/UpstreamPullStrategy.ts.md b/docs/modules/UpstreamPullStrategy.ts.md
index d090e3f2ed..b6e1856900 100644
--- a/docs/modules/UpstreamPullStrategy.ts.md
+++ b/docs/modules/UpstreamPullStrategy.ts.md
@@ -1,6 +1,6 @@
---
title: UpstreamPullStrategy.ts
-nav_order: 143
+nav_order: 144
parent: Modules
---
diff --git a/docs/modules/Utils.ts.md b/docs/modules/Utils.ts.md
index cefad61938..faebe4e17b 100644
--- a/docs/modules/Utils.ts.md
+++ b/docs/modules/Utils.ts.md
@@ -1,6 +1,6 @@
---
title: Utils.ts
-nav_order: 144
+nav_order: 145
parent: Modules
---
diff --git a/docs/modules/index.ts.md b/docs/modules/index.ts.md
index b76bfd847e..a92f0f23a9 100644
--- a/docs/modules/index.ts.md
+++ b/docs/modules/index.ts.md
@@ -90,6 +90,7 @@ Added in v2.0.0
- [From "./Pipeable.js"](#from-pipeablejs)
- [From "./Pool.js"](#from-pooljs)
- [From "./Predicate.js"](#from-predicatejs)
+ - [From "./PrimaryKey.js"](#from-primarykeyjs)
- [From "./PubSub.js"](#from-pubsubjs)
- [From "./Queue.js"](#from-queuejs)
- [From "./Random.js"](#from-randomjs)
@@ -1170,6 +1171,18 @@ export * as Predicate from "./Predicate.js"
Added in v2.0.0
+## From "./PrimaryKey.js"
+
+Re-exports all named exports from the "./PrimaryKey.js" module as `PrimaryKey`.
+
+**Signature**
+
+```ts
+export * as PrimaryKey from "./PrimaryKey.js"
+```
+
+Added in v2.0.0
+
## From "./PubSub.js"
Re-exports all named exports from the "./PubSub.js" module as `PubSub`.
diff --git a/src/PrimaryKey.ts b/src/PrimaryKey.ts
new file mode 100644
index 0000000000..5b215b2664
--- /dev/null
+++ b/src/PrimaryKey.ts
@@ -0,0 +1,17 @@
+/**
+ * @since 2.0.0
+ */
+
+/**
+ * @since 2.0.0
+ * @category symbols
+ */
+export const symbol: unique symbol = Symbol.for("effect/PrimaryKey")
+
+/**
+ * @since 2.0.0
+ * @category models
+ */
+export interface PrimaryKey {
+ [symbol](): string
+}
diff --git a/src/index.ts b/src/index.ts
index 3556982031..cc88e86166 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -514,6 +514,11 @@ export * as Pool from "./Pool.js"
*/
export * as Predicate from "./Predicate.js"
+/**
+ * @since 2.0.0
+ */
+export * as PrimaryKey from "./PrimaryKey.js"
+
/**
* @since 2.0.0
*/