7
7
*
8
8
* @since 2.0.0
9
9
*/
10
+ import type * as Effect from "./Effect.js"
10
11
import type { Equal } from "./Equal.js"
11
12
import type { LazyArg } from "./Function.js"
12
13
import type { Inspectable } from "./Inspectable.js"
@@ -16,7 +17,11 @@ import type { Pipeable } from "./Pipeable.js"
16
17
import type * as Types from "./Types.js"
17
18
import type * as Unify from "./Unify.js"
18
19
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
20
25
21
26
/**
22
27
* @since 2.0.0
@@ -28,7 +33,7 @@ export type TagTypeId = typeof TagTypeId
28
33
* @since 3.5.9
29
34
* @category models
30
35
*/
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 > {
32
37
readonly _op : "Tag"
33
38
readonly Service : Value
34
39
readonly Identifier : Id
@@ -45,7 +50,27 @@ export interface Tag<in out Id, in out Value> extends Pipeable, Inspectable {
45
50
[ Unify . ignoreSymbol ] ?: TagUnifyIgnore
46
51
}
47
52
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
49
74
50
75
/**
51
76
* @since 3.11.0
0 commit comments