sui-effect 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (115) hide show
  1. package/AGENTS.md +209 -0
  2. package/LICENSE +21 -0
  3. package/LLMS.md +6707 -0
  4. package/README.md +300 -0
  5. package/dist/domain/bcs.d.ts +101 -0
  6. package/dist/domain/bcs.d.ts.map +1 -0
  7. package/dist/domain/bcs.js +183 -0
  8. package/dist/domain/bcs.js.map +1 -0
  9. package/dist/domain/errors.d.ts +595 -0
  10. package/dist/domain/errors.d.ts.map +1 -0
  11. package/dist/domain/errors.js +476 -0
  12. package/dist/domain/errors.js.map +1 -0
  13. package/dist/domain/executed.d.ts +325 -0
  14. package/dist/domain/executed.d.ts.map +1 -0
  15. package/dist/domain/executed.js +253 -0
  16. package/dist/domain/executed.js.map +1 -0
  17. package/dist/domain/journal-entry.d.ts +468 -0
  18. package/dist/domain/journal-entry.d.ts.map +1 -0
  19. package/dist/domain/journal-entry.js +63 -0
  20. package/dist/domain/journal-entry.js.map +1 -0
  21. package/dist/domain/schemas.d.ts +950 -0
  22. package/dist/domain/schemas.d.ts.map +1 -0
  23. package/dist/domain/schemas.js +571 -0
  24. package/dist/domain/schemas.js.map +1 -0
  25. package/dist/domain/sui-schema.d.ts +12 -0
  26. package/dist/domain/sui-schema.d.ts.map +1 -0
  27. package/dist/domain/sui-schema.js +12 -0
  28. package/dist/domain/sui-schema.js.map +1 -0
  29. package/dist/extension.d.ts +7 -0
  30. package/dist/extension.d.ts.map +1 -0
  31. package/dist/extension.js +7 -0
  32. package/dist/extension.js.map +1 -0
  33. package/dist/index.d.ts +31 -0
  34. package/dist/index.d.ts.map +1 -0
  35. package/dist/index.js +31 -0
  36. package/dist/index.js.map +1 -0
  37. package/dist/internal.d.ts +18 -0
  38. package/dist/internal.d.ts.map +1 -0
  39. package/dist/internal.js +18 -0
  40. package/dist/internal.js.map +1 -0
  41. package/dist/journal.d.ts +51 -0
  42. package/dist/journal.d.ts.map +1 -0
  43. package/dist/journal.js +18 -0
  44. package/dist/journal.js.map +1 -0
  45. package/dist/script.d.ts +7 -0
  46. package/dist/script.d.ts.map +1 -0
  47. package/dist/script.js +7 -0
  48. package/dist/script.js.map +1 -0
  49. package/dist/services/Journal.d.ts +76 -0
  50. package/dist/services/Journal.d.ts.map +1 -0
  51. package/dist/services/Journal.js +70 -0
  52. package/dist/services/Journal.js.map +1 -0
  53. package/dist/services/JournalKeyValueStore.d.ts +73 -0
  54. package/dist/services/JournalKeyValueStore.d.ts.map +1 -0
  55. package/dist/services/JournalKeyValueStore.js +155 -0
  56. package/dist/services/JournalKeyValueStore.js.map +1 -0
  57. package/dist/services/Script.d.ts +210 -0
  58. package/dist/services/Script.d.ts.map +1 -0
  59. package/dist/services/Script.js +441 -0
  60. package/dist/services/Script.js.map +1 -0
  61. package/dist/services/Signer.d.ts +132 -0
  62. package/dist/services/Signer.d.ts.map +1 -0
  63. package/dist/services/Signer.js +158 -0
  64. package/dist/services/Signer.js.map +1 -0
  65. package/dist/services/SubmitConfig.d.ts +175 -0
  66. package/dist/services/SubmitConfig.d.ts.map +1 -0
  67. package/dist/services/SubmitConfig.js +52 -0
  68. package/dist/services/SubmitConfig.js.map +1 -0
  69. package/dist/services/Sui.d.ts +295 -0
  70. package/dist/services/Sui.d.ts.map +1 -0
  71. package/dist/services/Sui.js +414 -0
  72. package/dist/services/Sui.js.map +1 -0
  73. package/dist/services/SuiCore.d.ts +227 -0
  74. package/dist/services/SuiCore.d.ts.map +1 -0
  75. package/dist/services/SuiCore.js +400 -0
  76. package/dist/services/SuiCore.js.map +1 -0
  77. package/dist/services/SuiCoreFake.d.ts +278 -0
  78. package/dist/services/SuiCoreFake.d.ts.map +1 -0
  79. package/dist/services/SuiCoreFake.js +1003 -0
  80. package/dist/services/SuiCoreFake.js.map +1 -0
  81. package/dist/services/SuiExtension.d.ts +208 -0
  82. package/dist/services/SuiExtension.d.ts.map +1 -0
  83. package/dist/services/SuiExtension.js +355 -0
  84. package/dist/services/SuiExtension.js.map +1 -0
  85. package/dist/services/SuiGraphQL.d.ts +98 -0
  86. package/dist/services/SuiGraphQL.d.ts.map +1 -0
  87. package/dist/services/SuiGraphQL.js +118 -0
  88. package/dist/services/SuiGraphQL.js.map +1 -0
  89. package/dist/services/Tx.d.ts +687 -0
  90. package/dist/services/Tx.d.ts.map +1 -0
  91. package/dist/services/Tx.js +1224 -0
  92. package/dist/services/Tx.js.map +1 -0
  93. package/dist/testing.d.ts +88 -0
  94. package/dist/testing.d.ts.map +1 -0
  95. package/dist/testing.js +163 -0
  96. package/dist/testing.js.map +1 -0
  97. package/dist/tx.d.ts +24 -0
  98. package/dist/tx.d.ts.map +1 -0
  99. package/dist/tx.js +24 -0
  100. package/dist/tx.js.map +1 -0
  101. package/docs/extensions.md +1685 -0
  102. package/examples/extension-template/README.md +170 -0
  103. package/examples/extension-template/package.json +44 -0
  104. package/examples/extension-template/scripts/check-package.ts +145 -0
  105. package/examples/extension-template/src/Escrow.ts +445 -0
  106. package/examples/extension-template/src/Platform.ts +136 -0
  107. package/examples/extension-template/src/errors.ts +61 -0
  108. package/examples/extension-template/src/extension.ts +63 -0
  109. package/examples/extension-template/src/index.ts +34 -0
  110. package/examples/extension-template/src/schema.ts +158 -0
  111. package/examples/extension-template/src/upstream.ts +66 -0
  112. package/examples/extension-template/test/escrow.test.ts +559 -0
  113. package/examples/extension-template/tsconfig.build.json +26 -0
  114. package/examples/extension-template/tsconfig.json +35 -0
  115. package/package.json +87 -0
@@ -0,0 +1,295 @@
1
+ /**
2
+ * `Sui`: the opinionated tier.
3
+ *
4
+ * Where `SuiCore` mirrors the SDK, `Sui` makes the decisions: fixed include
5
+ * sets, decoded BCS content, `Option` instead of not-found errors where a
6
+ * caller can act on absence, chunked and integrity-checked batch reads, streams
7
+ * for pagination, and one sender lock so gas selection cannot race itself.
8
+ *
9
+ * @since 0.1.0
10
+ */
11
+ import type { BcsType } from "@mysten/bcs";
12
+ import type { SuiClientTypes } from "@mysten/sui/client";
13
+ import { Transaction } from "@mysten/sui/transactions";
14
+ import { Config, Context, DateTime, Effect, Layer, Option, Result, Schema, Stream } from "effect";
15
+ import { BuildError, DecodeError, ExecutionFailed, NetworkMismatch, ObjectDeleted, ObjectNotFound, ObjectUnavailable, SimulationFailed, TransactionNotFound, TransportError } from "../domain/errors.ts";
16
+ import { Executed } from "../domain/executed.ts";
17
+ import { Balance, CoinType, Digest, DynamicField, DynamicFieldEntry, DynamicFieldName, ObjectId, Simulation, StructTag, SuiAddress, type SuiObject } from "../domain/schemas.ts";
18
+ import type { SuiGrpcLayerOptions } from "./SuiCore.ts";
19
+ import { SuiCore } from "./SuiCore.ts";
20
+ /** A synchronous transaction draft. Reads happen before it, so it stays replayable. */
21
+ export type Recipe = (tx: Transaction) => void;
22
+ /** The include set every object read asks for. */
23
+ export declare const OBJECT_INCLUDE: {
24
+ readonly content: true;
25
+ };
26
+ /** The include set every simulation asks for. */
27
+ export declare const SIMULATE_INCLUDE: {
28
+ readonly commandResults: true;
29
+ readonly effects: true;
30
+ readonly events: true;
31
+ readonly balanceChanges: true;
32
+ readonly objectTypes: true;
33
+ };
34
+ /** What can go wrong reading one object with a schema. */
35
+ export type GetObjectError = ObjectNotFound | ObjectDeleted | ObjectUnavailable | DecodeError | TransportError;
36
+ /** What can go wrong decoding one object of a batch read. */
37
+ export type BatchItemError = ObjectNotFound | ObjectDeleted | ObjectUnavailable | DecodeError;
38
+ /** The opinionated tier over `SuiCore`. */
39
+ export interface SuiService {
40
+ /** The network the underlying client was built for. */
41
+ readonly network: SuiClientTypes.Network;
42
+ /**
43
+ * The mechanical tier this `Sui` was built over.
44
+ *
45
+ * `Sui` is the tier application code reads through, but writing a
46
+ * transaction needs `executeTransaction` and the SDK client object behind
47
+ * `use`, neither of which belongs on the opinionated tier. Exposing the core
48
+ * here is what lets every `Tx.*` function declare `R = Sui` and nothing
49
+ * else. Reach for it directly only for a field or method `Sui` does not
50
+ * expose.
51
+ */
52
+ readonly core: SuiCore["Service"];
53
+ /** The genesis checkpoint digest of the chain, read once at layer build. */
54
+ readonly chainId: string;
55
+ /**
56
+ * The chain's own clock, read from the Clock object `0x6` through the BCS
57
+ * bridge and never cached.
58
+ *
59
+ * Fails with: `TransportError`.
60
+ */
61
+ readonly chainTime: Effect.Effect<DateTime.Utc, TransportError>;
62
+ /**
63
+ * Reads one object, decoding its BCS content with `opts.schema` when given.
64
+ *
65
+ * The object's type tag is checked before the bytes are parsed: against
66
+ * `opts.expectedType` when given, otherwise against the type
67
+ * `SuiSchema.bcs` recorded on the codec. This member and the two below are
68
+ * written as overloads, not `Effect.fn`, because `Effect.fn` cannot express
69
+ * an overload set; the implementations are `Effect.fn` and carry the span.
70
+ *
71
+ * Fails with: `ObjectNotFound`, `ObjectDeleted`, `ObjectUnavailable`,
72
+ * `DecodeError`, `TransportError`.
73
+ */
74
+ readonly getObject: {
75
+ <S>(id: ObjectId, opts: {
76
+ readonly schema: Schema.Codec<S, Uint8Array>;
77
+ readonly expectedType?: string;
78
+ }): Effect.Effect<SuiObject<S>, GetObjectError>;
79
+ (id: ObjectId, opts?: {
80
+ readonly schema?: undefined;
81
+ readonly expectedType?: string;
82
+ }): Effect.Effect<SuiObject<Uint8Array>, GetObjectError>;
83
+ };
84
+ /**
85
+ * Like `getObject`, but a missing or deleted object is `None` rather than a
86
+ * failure.
87
+ *
88
+ * Fails with: `ObjectUnavailable`, `DecodeError`, `TransportError`.
89
+ */
90
+ readonly getObjectOption: {
91
+ <S>(id: ObjectId, opts: {
92
+ readonly schema: Schema.Codec<S, Uint8Array>;
93
+ readonly expectedType?: string;
94
+ }): Effect.Effect<Option.Option<SuiObject<S>>, ObjectUnavailable | DecodeError | TransportError>;
95
+ (id: ObjectId, opts?: {
96
+ readonly schema?: undefined;
97
+ readonly expectedType?: string;
98
+ }): Effect.Effect<Option.Option<SuiObject<Uint8Array>>, ObjectUnavailable | DecodeError | TransportError>;
99
+ };
100
+ /**
101
+ * Reads many objects, chunked by 50, checking that the node answered for
102
+ * each requested id exactly once. Ids are normalized and deduplicated before
103
+ * the request, so asking twice for the same object is legal and returns the
104
+ * same `Result` twice. Per-object failures are `Result` values.
105
+ *
106
+ * Fails with: `TransportError`.
107
+ */
108
+ readonly getObjects: {
109
+ <S>(ids: ReadonlyArray<ObjectId>, opts: {
110
+ readonly schema: Schema.Codec<S, Uint8Array>;
111
+ readonly expectedType?: string;
112
+ }): Effect.Effect<ReadonlyArray<Result.Result<SuiObject<S>, BatchItemError>>, TransportError>;
113
+ (ids: ReadonlyArray<ObjectId>, opts?: {
114
+ readonly schema?: undefined;
115
+ readonly expectedType?: string;
116
+ }): Effect.Effect<ReadonlyArray<Result.Result<SuiObject<Uint8Array>, BatchItemError>>, TransportError>;
117
+ };
118
+ /**
119
+ * `getObjects` for a caller who wants the first per-item failure to fail the
120
+ * whole read.
121
+ *
122
+ * The soft idiom — filter or default the `Result` array `getObjects` returns
123
+ * — is right when a missing object is ordinary. This is the hard one: every
124
+ * id must be there, and the first that is not is the failure. Order is the
125
+ * order of `ids`.
126
+ *
127
+ * Fails with: `ObjectNotFound`, `ObjectDeleted`, `ObjectUnavailable`,
128
+ * `DecodeError`, `TransportError`.
129
+ */
130
+ readonly getObjectsOrFail: {
131
+ <S>(ids: ReadonlyArray<ObjectId>, opts: {
132
+ readonly schema: Schema.Codec<S, Uint8Array>;
133
+ readonly expectedType?: string;
134
+ }): Effect.Effect<ReadonlyArray<SuiObject<S>>, BatchItemError | TransportError>;
135
+ (ids: ReadonlyArray<ObjectId>, opts?: {
136
+ readonly schema?: undefined;
137
+ readonly expectedType?: string;
138
+ }): Effect.Effect<ReadonlyArray<SuiObject<Uint8Array>>, BatchItemError | TransportError>;
139
+ };
140
+ /** The balance of one coin type for one owner. Fails with: `TransportError`. */
141
+ readonly getBalance: (owner: SuiAddress, coinType?: CoinType) => Effect.Effect<Balance, TransportError>;
142
+ /**
143
+ * Reads one dynamic field; absence is `None`.
144
+ *
145
+ * Fails with: `TransportError`.
146
+ */
147
+ readonly getDynamicFieldOption: (parent: ObjectId, name: DynamicFieldName) => Effect.Effect<Option.Option<DynamicField>, TransportError>;
148
+ /**
149
+ * Reads an executed transaction. A historical transaction that failed on
150
+ * chain fails here too, so there is one representation of an on-chain failure.
151
+ *
152
+ * Fails with: `ExecutionFailed`, `TransactionNotFound`, `TransportError`.
153
+ */
154
+ readonly getTransaction: (digest: Digest) => Effect.Effect<Executed, ExecutionFailed | TransactionNotFound | TransportError>;
155
+ /**
156
+ * Simulates a transaction with the fixed simulate include set.
157
+ *
158
+ * `opts.sender` is set on the transaction when the recipe did not set one.
159
+ * A simulation needs *a* sender: the SDK substitutes the zero address when
160
+ * the transaction carries none, which is what a read-only simulation of a
161
+ * public function wants and is what happens here when `sender` is omitted. A
162
+ * recipe may `tx.setSender(...)` itself, and then it wins. Bytes that are
163
+ * already serialized carry their own sender and `opts.sender` does not apply.
164
+ *
165
+ * Fails with: `SimulationFailed`, `BuildError`, `TransportError`.
166
+ */
167
+ readonly simulate: (input: Recipe | Transaction | Uint8Array, opts?: {
168
+ readonly sender?: SuiAddress;
169
+ }) => Effect.Effect<Simulation, SimulationFailed | BuildError | TransportError>;
170
+ /**
171
+ * Reads a Move return value without executing: simulates with checks disabled
172
+ * and decodes return value `result` (default 0) of command `command`
173
+ * (default the last command).
174
+ *
175
+ * The codec may be a bare `@mysten/bcs` `BcsType` — `bcs.Address()`,
176
+ * `bcs.vector(bcs.u64())` — because a Move **return value** has no struct tag
177
+ * to check it against. A `SuiSchema.bcs` codec works too, and so does one
178
+ * composed with `Schema.decodeTo(DomainClass, …)`; no type tag is compared
179
+ * either way.
180
+ *
181
+ * `opts.sender` is the address the call is simulated as, defaulting to the
182
+ * zero address the way the SDK does; a recipe that sets its own sender wins.
183
+ *
184
+ * Fails with: `SimulationFailed`, `BuildError`, `DecodeError`, `TransportError`.
185
+ */
186
+ readonly view: <S, I>(recipe: Recipe, schema: Schema.Codec<S, Uint8Array> | BcsType<S, I>, opts?: {
187
+ readonly command?: number;
188
+ readonly result?: number;
189
+ readonly sender?: SuiAddress;
190
+ }) => Effect.Effect<S, SimulationFailed | BuildError | DecodeError | TransportError>;
191
+ /** Every object an address owns, paginated. Fails with: `TransportError`. */
192
+ readonly streamOwnedObjects: (owner: SuiAddress, opts?: {
193
+ readonly type?: StructTag;
194
+ }) => Stream.Stream<SuiObject<Uint8Array>, TransportError>;
195
+ /**
196
+ * Every dynamic field of a parent, paginated.
197
+ *
198
+ * There is no key filter: the node has none, so a caller filters the stream
199
+ * on `entry.name.type`. Do that with `SuiSchema.matchesType`, not with the
200
+ * SDK's `normalizeStructTag` — a dynamic-field key is legally a primitive
201
+ * (`u64`, `bool`, `address`, `vector<u8>`) and `normalizeStructTag` throws on
202
+ * every one of them, which turns the first such key in a parent's fields into
203
+ * a defect. The value bytes are decoded with `SuiSchema.decode`, passing
204
+ * `actualType: entry.valueType` so the same tag check `Sui.getObject` does
205
+ * runs before a byte is parsed.
206
+ *
207
+ * Fails with: `TransportError`.
208
+ */
209
+ readonly streamDynamicFields: (parent: ObjectId) => Stream.Stream<DynamicFieldEntry, TransportError>;
210
+ /**
211
+ * Serializes work for one sender, so two transactions from the same address
212
+ * cannot pick the same gas coin. Adds no failures of its own.
213
+ */
214
+ readonly withSenderLock: (address: SuiAddress) => <A, E, R>(effect: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
215
+ }
216
+ /** Options for {@link Sui.layerNoDepsWith}. */
217
+ export interface SuiLayerOptions {
218
+ /**
219
+ * The chain identifier this program expects, as `getChainIdentifier` returns
220
+ * it. When set, a layer over a node on another chain fails to build, and it
221
+ * overrides the {@link KNOWN_CHAIN_IDS} entry for the client's network.
222
+ *
223
+ * Leave it unset for `mainnet` and `testnet`: their chain identifiers are in
224
+ * the table and are asserted by default. `devnet`, `localnet` and any custom
225
+ * network are regenerated, so set this when the program must pin one.
226
+ */
227
+ readonly chainId?: string;
228
+ }
229
+ declare const Sui_base: Context.ServiceClass<Sui, "sui-effect/Sui", SuiService>;
230
+ /**
231
+ * The opinionated tier.
232
+ *
233
+ * @example
234
+ * ```ts
235
+ * import { Effect } from "effect"
236
+ * import { Sui } from "sui-effect"
237
+ *
238
+ * const time = Effect.gen(function*() {
239
+ * const sui = yield* Sui
240
+ * return yield* sui.chainTime
241
+ * })
242
+ * ```
243
+ */
244
+ export declare class Sui extends Sui_base {
245
+ /**
246
+ * Like {@link layerNoDeps}, but refuses to build when the node reports a
247
+ * different chain identifier than `options.chainId`, whatever the network.
248
+ *
249
+ * Fails with: `NetworkMismatch`, `TransportError`.
250
+ */
251
+ static readonly layerNoDepsWith: (options: SuiLayerOptions) => Layer.Layer<Sui, NetworkMismatch | TransportError, SuiCore>;
252
+ /**
253
+ * `Sui` over whatever `SuiCore` is provided, **without reading the chain
254
+ * identifier**: the one given is taken as the chain's.
255
+ *
256
+ * This exists for one caller: `SuiExtension.fromService` with `warm`, which
257
+ * builds its runtime synchronously inside `register` and therefore cannot
258
+ * await a `getChainIdentifier` round trip. Nothing is asserted, because
259
+ * nothing is asked — a node on another chain is not detected here. What still
260
+ * protects a warm registration is the chain itself: `Tx.build` stamps this id
261
+ * on the transaction's `ValidDuring` expiration, and a validator refuses
262
+ * bytes signed for another chain.
263
+ *
264
+ * Prefer {@link layerNoDeps}, which asks. Never fails.
265
+ */
266
+ static readonly layerNoDepsPinned: (chainId: string) => Layer.Layer<Sui, never, SuiCore>;
267
+ /**
268
+ * Builds `Sui` over whatever `SuiCore` is provided, reading the chain
269
+ * identifier once.
270
+ *
271
+ * When the client's network is one of the entries in {@link KNOWN_CHAIN_IDS}
272
+ * (`mainnet`, `testnet`) the identifier the node reports must match it, so a
273
+ * program pointed at the wrong node fails at layer build rather than reading
274
+ * the wrong chain. `devnet`, `localnet` and custom networks have no fixed
275
+ * identifier: the observed one is recorded on `Sui.chainId` and nothing is
276
+ * asserted unless {@link layerNoDepsWith} is given a `chainId`.
277
+ *
278
+ * Fails with: `NetworkMismatch`, `TransportError`.
279
+ */
280
+ static readonly layerNoDeps: Layer.Layer<Sui, NetworkMismatch | TransportError, SuiCore>;
281
+ /**
282
+ * `layerNoDeps` over a gRPC `SuiCore`.
283
+ *
284
+ * Fails with: `NetworkMismatch`, `TransportError`.
285
+ */
286
+ static readonly layer: (options: SuiGrpcLayerOptions & SuiLayerOptions) => Layer.Layer<Sui, NetworkMismatch | TransportError>;
287
+ /**
288
+ * `layerNoDeps` over `SuiCore.layerConfig`.
289
+ *
290
+ * Fails with: `ConfigError`, `NetworkMismatch`, `TransportError`.
291
+ */
292
+ static readonly layerConfig: Layer.Layer<Sui, Config.ConfigError | NetworkMismatch | TransportError>;
293
+ }
294
+ export {};
295
+ //# sourceMappingURL=Sui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Sui.d.ts","sourceRoot":"","sources":["../../src/services/Sui.ts"],"names":[],"mappings":"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"}