77 *
88 * @since 2.0.0
99 */
10+ import type * as Effect from "./Effect.js"
1011import type { Equal } from "./Equal.js"
1112import type { LazyArg } from "./Function.js"
1213import type { Inspectable } from "./Inspectable.js"
@@ -16,7 +17,11 @@ import type { Pipeable } from "./Pipeable.js"
1617import type * as Types from "./Types.js"
1718import type * as Unify from "./Unify.js"
1819
19- const TagTypeId : unique symbol = internal . TagTypeId
20+ /**
21+ * @since 2.0.0
22+ * @category symbol
23+ */
24+ export const TagTypeId : unique symbol = internal . TagTypeId
2025
2126/**
2227 * @since 2.0.0
@@ -28,7 +33,7 @@ export type TagTypeId = typeof TagTypeId
2833 * @since 3.5.9
2934 * @category models
3035 */
31- export interface Tag < in out Id , in out Value > extends Pipeable , Inspectable {
36+ export interface Tag < in out Id , in out Value > extends Pipeable , Inspectable , ReadonlyTag < Id , Value > {
3237 readonly _op : "Tag"
3338 readonly Service : Value
3439 readonly Identifier : Id
@@ -45,7 +50,27 @@ export interface Tag<in out Id, in out Value> extends Pipeable, Inspectable {
4550 [ Unify . ignoreSymbol ] ?: TagUnifyIgnore
4651}
4752
48- const ReferenceTypeId : unique symbol = internal . ReferenceTypeId
53+ /**
54+ * @since 3.5.9
55+ * @category models
56+ */
57+ export interface ReadonlyTag < in out Id , out Value > extends Pipeable , Inspectable , Effect . Effect < Value , never , Id > {
58+ readonly _op : "Tag"
59+ readonly Service : Value
60+ readonly Identifier : Id
61+ readonly [ TagTypeId ] : {
62+ readonly _Service : Types . Covariant < Value >
63+ readonly _Identifier : Types . Invariant < Id >
64+ }
65+ readonly stack ?: string | undefined
66+ readonly key : string
67+ }
68+
69+ /**
70+ * @since 3.11.0
71+ * @category symbol
72+ */
73+ export const ReferenceTypeId : unique symbol = internal . ReferenceTypeId
4974
5075/**
5176 * @since 3.11.0
0 commit comments