@mysten/docs 0.1.13 → 0.1.14

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 (2) hide show
  1. package/dist/walrus/index.md +130 -137
  2. package/package.json +9 -9
@@ -2,6 +2,18 @@
2
2
 
3
3
  > Store and retrieve blobs on Walrus decentralized storage
4
4
 
5
+ The Walrus TypeScript SDK works directly with Walrus storage nodes or with the Walrus upload relay.
6
+ When you use the Walrus SDK without an upload relay, reading and writing Walrus blobs requires many
7
+ requests (approximately 2200 to write a blob and approximately 335 to read a blob). The upload relay
8
+ reduces the number of requests needed to write a blob, but reads through the Walrus SDK still
9
+ require many requests. For many applications, using publishers and aggregators is recommended, but
10
+ the TypeScript SDK is useful when building applications where the application needs to directly
11
+ interact with Walrus, or when users need to pay for their own storage directly.
12
+
13
+ The Walrus SDK exposes high-level methods for reading and writing blobs, as well as lower-level
14
+ methods for the individual steps in the process. You can use the lower-level methods to implement
15
+ more complex flows when you want more control over optimization.
16
+
5
17
  ## Installation
6
18
 
7
19
  ```bash npm2yarn
@@ -10,8 +22,8 @@ npm install --save @mysten/walrus @mysten/sui
10
22
 
11
23
  ## Setup
12
24
 
13
- To use the walrus SDK you will need to create a Client from the typescript SDK, and extend it with
14
- the walrus SDK.
25
+ To use the Walrus SDK, you need to create a client from the TypeScript SDK and extend it with the
26
+ Walrus SDK.
15
27
 
16
28
  ```ts
17
29
 
@@ -21,9 +33,9 @@ const client = new SuiGrpcClient({
21
33
  }).$extend(walrus());
22
34
  ```
23
35
 
24
- The walrus SDK currently includes all the relevant package and object IDs needed for connecting to
25
- testnet. You can also manually configure the walrus sdk to use a different set of ids, allowing you
26
- to connect to a different network or updated deployment of the walrus contracts.
36
+ The Walrus SDK includes all the relevant package and object IDs needed for connecting to Testnet.
37
+ You can also manually configure the Walrus SDK to use a different set of IDs, allowing you to
38
+ connect to a different network or updated deployment of the Walrus contracts.
27
39
 
28
40
  ```ts
29
41
 
@@ -40,7 +52,7 @@ const client = new SuiGrpcClient({
40
52
  );
41
53
  ```
42
54
 
43
- For some environments you may need to customize how data is fetched:
55
+ Some environments require you to customize how data is fetched:
44
56
 
45
57
  ```ts
46
58
 
@@ -60,37 +72,22 @@ const client = new SuiGrpcClient({
60
72
  );
61
73
  ```
62
74
 
63
- This can be used to implement a fetch function with custom timeouts, rate limits, retry logic, or
64
- any other desired behavior.
65
-
66
- ## SDK Overview
67
-
68
- The Walrus TS SDK is designed to work directly with walrus storage nodes, or with the walrus upload
69
- relay. When using the walrus SDK without an upload relay, it is important to understand that reading
70
- and writing walrus blobs requires a lot of requests (~2200 to write a blob, ~335 to read a blob).
71
- The upload relay will reduce the number of requests needed to write a blob, but reads through the
72
- walrus SDK will still require a lot of requests. For many applications, using publishers and
73
- aggregators is recommended, but the TS SDK can be useful when building applications where the
74
- application needs to directly interact with walrus or users need to pay for their own storage
75
- directly.
76
-
77
- The walrus sdk exposes high level methods for reading and writing blobs, as well as lower level
78
- methods for the individual steps in the process that can be used to implement more complex flows
79
- when you want more control to implement more optimized implementations.
75
+ You can use this approach to implement a fetch function with custom timeouts, rate limits, retry
76
+ logic, or any other desired behavior.
80
77
 
81
- ## WalrusFiles
78
+ ## `WalrusFile` API
82
79
 
83
- The `WalrusFile` API provides a higher level abstraction so that applications don't need to worry
84
- about how data is stored in walrus. Today it handles data stored directly in blobs, and data stored
85
- in Quilts, but may be expanded to cover other storage patterns in the future.
80
+ The `WalrusFile` API provides a higher-level abstraction so that applications do not need to worry
81
+ about how data is stored in Walrus. It handles data stored directly in blobs and data stored in
82
+ quilts, but might expand to cover other storage patterns in the future.
86
83
 
87
84
  ### Reading files
88
85
 
89
- To read files, you can use the `getFiles` method. This method accepts both Blob IDs and Quilt IDs,
90
- and will return a `WalrusFile`.
86
+ To read files, use the `getFiles` method. This method accepts both blob IDs and quilt IDs, and
87
+ returns a `WalrusFile`.
91
88
 
92
- It is encouraged to always read files in batches when possible, which will allow the client to be
93
- more efficient when loading multiple files from the same quilt.
89
+ Read files in batches when possible, which allows the client to be more efficient when loading
90
+ multiple files from the same quilt.
94
91
 
95
92
  ```ts
96
93
  const [file1, file2] = await client.walrus.getFiles({ ids: [anyBlobId, orQuiltId] });
@@ -107,17 +104,16 @@ const text = await file1.text();
107
104
  const json = await file2.json();
108
105
  ```
109
106
 
110
- A `WalrusFile` may also have and `identifier` and `tags` properties if the file was stored in a
111
- quilt.
107
+ A `WalrusFile` might also have `identifier` and `tags` properties if the file was stored in a quilt.
112
108
 
113
109
  ```ts
114
110
  const identifier: string | null = await file1.getIdentifier();
115
111
  const tags: Record<string, string> = await file1.getTags();
116
112
  ```
117
113
 
118
- ### WalrusBlobs
114
+ #### `WalrusBlob`
119
115
 
120
- You can also get a `WalrusBlob` instead of a `WalrusFile` if you have the blobId:
116
+ You can also get a `WalrusBlob` instead of a `WalrusFile` if you have the `blobId`:
121
117
 
122
118
  ```ts
123
119
  const blob = await client.walrus.getBlob({ blobId });
@@ -138,8 +134,8 @@ const filesById = await blob.files({ ids: [quiltID] });
138
134
 
139
135
  ### Writing files
140
136
 
141
- You can also construct a `WalrusFile` from a `Uint8Array`, `Blob`, or a `string` which can then be
142
- stored on walrus:
137
+ You can also construct a `WalrusFile` from a `Uint8Array`, `Blob`, or a `string`, which you can then
138
+ store on Walrus:
143
139
 
144
140
  ```ts
145
141
  const file1 = WalrusFile.from({
@@ -159,15 +155,15 @@ const file3 = WalrusFile.from({
159
155
  });
160
156
  ```
161
157
 
162
- Once you have your files you can use the `writeFiles` method to write them to walrus.
158
+ After you have your files, use the `writeFiles` method to write them to Walrus.
163
159
 
164
- Along with the files, you will also need to provide a `Signer` instance that signs and pays for the
165
- transaction/storage fees. The signer's address will need to have sufficient `SUI` to cover the
166
- transactions that register the blob, and certify its availability after it's been uploaded. The
167
- Signer must own sufficient `WAL` to pay to store the blob for the specified number of epochs, as
168
- well as the write fee for writing the blob.
160
+ Along with the files, you also need to provide a `Signer` instance that signs and pays for the
161
+ transaction and storage fees. The signer's address needs sufficient SUI to cover the transactions
162
+ that register the blob and certify its availability after upload. The signer must own sufficient WAL
163
+ to pay to store the blob for the specified number of epochs, as well as the write fee for writing
164
+ the blob.
169
165
 
170
- The exact costs will depend on the size of the blobs, as well as the current gas and storage prices.
166
+ The exact costs depend on the size of the blobs, as well as the current gas and storage prices.
171
167
 
172
168
  ```ts
173
169
  const results: {
@@ -182,32 +178,32 @@ const results: {
182
178
  });
183
179
  ```
184
180
 
185
- Currently, the provided files will all be written into a single quilt. Future versions of the SDK
186
- may optimize how files are stored to be more efficient by splitting files into multiple quilts.
181
+ The provided files are all written into a single quilt. Future versions of the SDK might optimize
182
+ how files are stored to be more efficient by splitting files into multiple quilts.
187
183
 
188
184
  The current quilt encoding is less efficient for single files, so writing multiple files together is
189
185
  recommended when possible. Writing raw blobs directly is also possible using the `writeBlob` API
190
- (described below)
186
+ described below.
191
187
 
192
- ### Writing files in browser environments
188
+ #### Writing files in browser environments
193
189
 
194
- When the transactions to upload a blob are signed by a wallet in a browser, some wallets will use
195
- popups to prompt the user for a signature. If the popups are not opened in direct response to a user
196
- interaction, they may be blocked by the browser.
190
+ When the transactions to upload a blob are signed by a wallet in a browser, some wallets use popups
191
+ to prompt you for a signature. If the popups are not opened in direct response to a user
192
+ interaction, the browser might block them.
197
193
 
198
- To avoid this, we need to ensure that we execute the transactions that register and certify the blob
199
- in separate events handlers by creating separate buttons for the user to click for each step.
194
+ To avoid this, execute the transactions that register and certify the blob in separate event
195
+ handlers by creating separate buttons for each step.
200
196
 
201
197
  The `client.writeFilesFlow` method returns an object with a set of methods that break the write flow
202
198
  into several smaller steps:
203
199
 
204
- 1. `encode` - Encodes the files and generates a blobId
205
- 2. `register` - returns a transaction that will register the blob on-chain
206
- 3. `upload` - Uploads the data to storage nodes
207
- 4. `certify` - returns a transaction that will certify the blob on-chain
208
- 5. `listFiles` - returns a list of the created files
200
+ 1. `encode`: Encodes the files and generates a `blobId`.
201
+ 2. `register`: Returns a transaction that registers the blob onchain.
202
+ 3. `upload`: Uploads the data to storage nodes.
203
+ 4. `certify`: Returns a transaction that certifies the blob onchain.
204
+ 5. `listFiles`: Returns a list of the created files.
209
205
 
210
- Here's a simplified example showing the core API usage with separate user interactions:
206
+ The following simplified example shows the core API usage with separate user interactions:
211
207
 
212
208
  ```tsx
213
209
  // Step 1: Create and encode the flow (can be done immediately when file is selected)
@@ -263,9 +259,8 @@ interactions, allowing wallet popups to work properly without being blocked by t
263
259
 
264
260
  ### Running the full flow
265
261
 
266
- If you don't need separate user interactions for each step, you can use `run()` to execute the full
267
- pipeline as an async iterator. Each step yields a `WriteBlobStep` that you can persist for crash
268
- recovery:
262
+ If you do not need separate user interactions for each step, use `run()` to execute the full
263
+ pipeline as an async iterator.
269
264
 
270
265
  ```ts
271
266
  const flow = client.walrus.writeBlobFlow({ blob });
@@ -286,10 +281,11 @@ const up = await flow.upload({ digest: reg.txDigest });
286
281
  const cert = await flow.executeCertify({ signer });
287
282
  ```
288
283
 
289
- ### Resuming uploads
284
+ #### Resuming uploads
290
285
 
291
- To resume an upload after a crash, pass a saved `WriteBlobStep` as `resume`. The flow will skip
292
- completed steps, validate the blobId, and only upload slivers that aren't already stored:
286
+ Each step executed by `run()` produces a `WriteBlobStep` that you can persist for crash recovery. To
287
+ resume an upload after a crash, pass a saved `WriteBlobStep` as `resume`. The flow skips completed
288
+ steps, validates the `blobId`, and only uploads slivers that are not already stored:
293
289
 
294
290
  ```ts
295
291
  const saved = await db.load(fileId);
@@ -300,13 +296,12 @@ for await (const step of flow.run({ signer, epochs: 3, deletable: true })) {
300
296
  }
301
297
  ```
302
298
 
303
- ## Writing blobs with an upload relay
299
+ ## Using an upload relay
304
300
 
305
- Writing blobs directly from a client requires a lot of requests to write data to all the storage
306
- nodes. An upload relay can be used to offload the work of these writes to a server, reducing
307
- complexity for the client.
301
+ Writing blobs directly from a client requires many requests to write data to all the storage nodes.
302
+ An upload relay offloads the work of these writes to a server, reducing complexity for the client.
308
303
 
309
- To use an upload relay, you can add the `uploadRelay` option when adding the walrus extension:
304
+ To use an upload relay, add the `uploadRelay` option when adding the Walrus extension:
310
305
 
311
306
  ```ts
312
307
  const client = new SuiGrpcClient({
@@ -324,18 +319,18 @@ const client = new SuiGrpcClient({
324
319
  );
325
320
  ```
326
321
 
327
- The `host` option is required, and indicates the url for your upload relay. Upload relays may
328
- require a tip to be included to cover the cost of writing the blob. You can configure a maximum tip
329
- (paid in MIST) and the `WalrusClient` will automatically determine the required tip for your upload
330
- relay, or you can manually configure the tip configuration as shown below.
322
+ The `host` option is required and indicates the URL for your upload relay. Upload relays might
323
+ require a tip to cover the cost of writing the blob. You can configure a maximum tip (paid in MIST)
324
+ and the `WalrusClient` automatically determines the required tip for your upload relay. You can also
325
+ manually configure the tip as shown below.
331
326
 
332
- The tip required by an upload relay can be found using the `tip-config` endpoint: (e.g.
333
- `https://upload-relay.testnet.walrus.space/v1/tip-config`) and may either be a `const` or a `linear`
334
- tip.
327
+ Find the tip required by an upload relay using the `tip-config` endpoint (for example,
328
+ `https://upload-relay.testnet.walrus.space/v1/tip-config`). The tip is either a `const` or a
329
+ `linear` type.
335
330
 
336
331
  ### `const` tip
337
332
 
338
- A `const` will send a fixed amount for each blob written to the upload relay.
333
+ A `const` tip sends a fixed amount for each blob written to the upload relay.
339
334
 
340
335
  ```ts
341
336
  const client = new SuiGrpcClient({
@@ -358,8 +353,8 @@ const client = new SuiGrpcClient({
358
353
 
359
354
  ### `linear` tip
360
355
 
361
- A `linear` tip will send a fixed amount for each blob written to the fan out proxy, plus a
362
- multiplier based on the size of the blob.
356
+ A `linear` tip sends a fixed amount for each blob written to the upload relay, plus a multiplier
357
+ based on the size of the blob.
363
358
 
364
359
  ```ts
365
360
  const client = new SuiGrpcClient({
@@ -385,22 +380,22 @@ const client = new SuiGrpcClient({
385
380
 
386
381
  ## Interacting with blobs directly
387
382
 
388
- In case you do not want to use the `WalrusFile` abstractions, you can use the `readBlob` and
389
- `writeBlob` APIs directly
383
+ If you do not want to use the `WalrusFile` abstractions, use the `readBlob` and `writeBlob` APIs
384
+ directly.
390
385
 
391
386
  ### Reading blobs
392
387
 
393
- The `readBlob` method will read a blob given the blobId and return Uint8Array containing the blobs
388
+ The `readBlob` method reads a blob given the `blobId` and returns a `Uint8Array` containing the blob
394
389
  content:
395
390
 
396
391
  ```ts
397
392
  const blob = await client.walrus.readBlob({ blobId });
398
393
  ```
399
394
 
400
- ### Writing Blobs
395
+ ### Writing blobs
401
396
 
402
- The writeBlob method can be used to write a blob (as a `Uint8Array`) to walrus. You will need to
403
- specify how long the blob should be stored for, and if the blob should be deletable.
397
+ The `writeBlob` method writes a blob (as a `Uint8Array`) to Walrus. You need to specify how long the
398
+ blob should be stored for and whether the blob should be deletable.
404
399
 
405
400
  ```ts
406
401
  const file = new TextEncoder().encode('Hello from the TS SDK!!!\n');
@@ -426,26 +421,14 @@ const { blobId } = await client.walrus.writeBlob({
426
421
  });
427
422
  ```
428
423
 
429
- ## Full API
430
-
431
- For a complete overview of the available methods on the `WalrusClient` you can reference type
432
- [TypeDocs](/typedoc/classes/_mysten_walrus.WalrusClient.html)
433
-
434
- ## Examples
435
-
436
- There are a number of simple
437
- [examples you can reference](https://github.com/MystenLabs/ts-sdks/tree/main/packages/walrus/examples)
438
- in the `ts-sdks` repo that show things like building simple aggregators and publishers with the
439
- walrus SDK
440
-
441
424
  ## Error handling
442
425
 
443
426
  The SDK exports all the error classes for different types of errors that can be thrown. Walrus is a
444
- fault-tolerant distributed system, where many types of errors can be recovered from. During epoch
445
- changes there may be times when the data cached in the `WalrusClient` can become invalid. Errors
446
- that result from this situation will extend the `RetryableWalrusClientError` class.
427
+ fault-tolerant distributed system where many types of errors can be recovered from. During epoch
428
+ changes, the data cached in the `WalrusClient` can become invalid. Errors that result from this
429
+ situation extend the `RetryableWalrusClientError` class.
447
430
 
448
- You can check for these errors, and reset the client before retrying:
431
+ You can check for these errors and reset the client before retrying:
449
432
 
450
433
  ```ts
451
434
 
@@ -456,25 +439,25 @@ if (error instanceof RetryableWalrusClientError) {
456
439
  }
457
440
  ```
458
441
 
459
- `RetryableWalrusClientError` are not guaranteed to succeed after resetting the client and retrying,
460
- but this pattern can be used to handle some edge cases.
442
+ `RetryableWalrusClientError` errors are not guaranteed to succeed after resetting the client and
443
+ retrying, but this pattern handles some edge cases.
461
444
 
462
- High level methods like `readBlob` already handle various error cases and will automatically retry
463
- when hitting these methods, as well as handling cases where only a subset of nodes need to respond
445
+ High-level methods like `readBlob` already handle various error cases and automatically retry when
446
+ encountering these errors, as well as handling cases where only a subset of nodes need to respond
464
447
  successfully to read or publish a blob.
465
448
 
466
- When using the lower level methods to build your own read or publish flows, it is recommended to
467
- understand the number of shards/sliver that need to be successfully written or read for you
468
- operation to succeed, and gracefully handle cases where some nodes may be in a bad state.
449
+ When using the lower-level methods to build your own read or publish flows, understand the number of
450
+ shards and slivers that need to be successfully written or read for your operation to succeed.
451
+ Gracefully handle cases where some nodes might be in a bad state.
469
452
 
470
453
  ### Network errors
471
454
 
472
- Walrus is designed to handle some nodes being down, and the SDK will only throw errors when it can't
473
- read from or write to enough storage nodes. When trying to troubleshoot problems, it can be
474
- challenging to figure out what's going wrong when you don't see all the individual network errors.
455
+ Walrus handles some nodes being down, and the SDK only throws errors when it cannot read from or
456
+ write to enough storage nodes. When troubleshooting problems, figuring out what went wrong can be
457
+ challenging because you do not see all the individual network errors.
475
458
 
476
- You can pass an `onError` option in the storageNodeClientOptions to get the individual errors from
477
- failed requests:
459
+ Pass an `onError` option in the `storageNodeClientOptions` to get the individual errors from failed
460
+ requests:
478
461
 
479
462
  ```ts
480
463
  const client = new SuiGrpcClient({
@@ -491,16 +474,14 @@ const client = new SuiGrpcClient({
491
474
 
492
475
  ## Configuring network requests
493
476
 
494
- Reading and writing blobs directly from storage nodes requires a lot of requests. The walrus SDK
495
- will issue all requests needed to complete these operations, but does not handling all the
496
- complexities a robust aggregator or publisher might encounter.
477
+ Reading and writing blobs directly from storage nodes requires many requests. The Walrus SDK issues
478
+ all requests needed to complete these operations, but does not handle all the complexities a robust
479
+ aggregator or publisher might encounter.
497
480
 
498
- By default, all requests are issued using the global `fetch` for whatever runtime the SDK is running
499
- in.
481
+ By default, all requests use the global `fetch` for whatever runtime the SDK runs in.
500
482
 
501
- This will not impose any limitations on concurrency, and will be subject to default timeouts and
502
- behavior defined by your runtime. To customize how requests are made, you can provide a custom
503
- `fetch` method:
483
+ This does not impose any limitations on concurrency, and is subject to default timeouts and behavior
484
+ defined by your runtime. To customize how requests are made, provide a custom `fetch` method:
504
485
 
505
486
  ```ts
506
487
 
@@ -525,15 +506,15 @@ const client = new SuiGrpcClient({
525
506
  );
526
507
  ```
527
508
 
528
- ## Loading the wasm module in vite or client side apps
509
+ ## Loading the WASM module in Vite or client-side apps
529
510
 
530
- The walrus SDK requires wasm bindings to encode and decode blobs. When running in node or bun and
531
- some bundlers this will work without any additional configuration.
511
+ The Walrus SDK requires WASM bindings to encode and decode blobs. When running in Node.js or Bun,
512
+ and with some bundlers, this works without any additional configuration.
532
513
 
533
- In some cases you may need to manually specify where the SDK loads the wasm bindings from.
514
+ In some cases, you might need to manually specify where the SDK loads the WASM bindings from.
534
515
 
535
- In vite you can get the url for the wasm bindings by importing the wasm file with a `?url` suffix,
536
- and then passed into the walrus client:
516
+ In Vite, get the URL for the WASM bindings by importing the WASM file with a `?url` suffix, then
517
+ pass it into the Walrus client:
537
518
 
538
519
  ```ts
539
520
 
@@ -547,8 +528,8 @@ const client = new SuiGrpcClient({
547
528
  );
548
529
  ```
549
530
 
550
- If you are unable to get a url for the wasm file in your bundler or build system, you can self host
551
- the wasm bindings, or load them from a CDN:
531
+ If you are unable to get a URL for the WASM file in your bundler or build system, you can self-host
532
+ the WASM bindings or load them from a CDN:
552
533
 
553
534
  ```ts
554
535
  const client = new SuiGrpcClient({
@@ -561,8 +542,8 @@ const client = new SuiGrpcClient({
561
542
  );
562
543
  ```
563
544
 
564
- In next.js when using walrus in API routes, you may need to tell next.js to skip bundling for the
565
- walrus packages:
545
+ In Next.js, when using Walrus in API routes, you might need to tell Next.js to skip bundling for the
546
+ Walrus packages:
566
547
 
567
548
  ```ts
568
549
  // next.config.ts
@@ -571,9 +552,21 @@ const nextConfig: NextConfig = {
571
552
  };
572
553
  ```
573
554
 
574
- ## Known fetch limitations you might run into
555
+ ## Known fetch limitations
556
+
557
+ - Some nodes can be slow to respond. When running in Node.js, the default `connectTimeout` is 10
558
+ seconds and can cause request timeouts.
559
+ - In Bun, the `abort` signal stops requests from responding, but the requests still wait for
560
+ completion before their promises reject.
561
+
562
+ ## Full API
563
+
564
+ For a complete overview of the available methods on the `WalrusClient`, reference the
565
+ [TypeDocs](/typedoc/classes/_mysten_walrus.WalrusClient.html).
575
566
 
576
- - Some nodes can be slow to respond. When running in node, the default connectTimeout is 10 seconds
577
- and can cause request timeouts
578
- - In `bun` the `abort` signal will stop requests from responding, but they still wait for completion
579
- before their promises reject
567
+ ## Examples
568
+
569
+ There are a number of
570
+ [examples you can reference](https://github.com/MystenLabs/ts-sdks/tree/main/packages/walrus/examples)
571
+ in the `ts-sdks` repository that show things like building aggregators and publishers with the
572
+ Walrus SDK.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mysten/docs",
3
- "version": "0.1.13",
3
+ "version": "0.1.14",
4
4
  "description": "LLM-friendly documentation for the Sui TypeScript SDK ecosystem",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -26,24 +26,24 @@
26
26
  "next": "^16.1.7",
27
27
  "react": "^19.2.3",
28
28
  "react-dom": "^19.2.3",
29
+ "@mysten/bcs": "2.0.3",
29
30
  "@mysten/dapp-kit": "1.0.4",
30
- "@mysten/dapp-kit-core": "1.2.2",
31
- "@mysten/dapp-kit-react": "2.0.1",
32
31
  "@mysten/deepbook-v3": "1.2.1",
33
- "@mysten/bcs": "2.0.3",
32
+ "@mysten/dapp-kit-react": "2.0.1",
33
+ "@mysten/dapp-kit-core": "1.2.2",
34
34
  "@mysten/enoki": "1.0.4",
35
- "@mysten/enoki-connect": "1.0.2",
36
- "@mysten/kiosk": "1.2.0",
37
- "@mysten/payment-kit": "0.1.4",
38
35
  "@mysten/seal": "1.1.1",
39
36
  "@mysten/signers": "1.0.2",
37
+ "@mysten/enoki-connect": "1.0.2",
40
38
  "@mysten/slush-wallet": "1.0.3",
41
39
  "@mysten/sui": "2.14.1",
42
40
  "@mysten/utils": "0.3.1",
41
+ "@mysten/suins": "1.0.2",
43
42
  "@mysten/wallet-standard": "0.20.1",
44
- "@mysten/walrus": "1.1.0",
45
43
  "@mysten/zksend": "1.0.3",
46
- "@mysten/suins": "1.0.2"
44
+ "@mysten/kiosk": "1.2.0",
45
+ "@mysten/payment-kit": "0.1.5",
46
+ "@mysten/walrus": "1.1.0"
47
47
  },
48
48
  "devDependencies": {
49
49
  "@tailwindcss/postcss": "^4.1.18",