@meddleware/docs 0.0.1

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 (137) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/LICENSE +14 -0
  3. package/README.md +54 -0
  4. package/docs/.vitepress/config.ts +101 -0
  5. package/docs/.vitepress/theme/custom.css +51 -0
  6. package/docs/.vitepress/theme/index.ts +8 -0
  7. package/docs/access-gate/api/functions/buildAccessProof.md +38 -0
  8. package/docs/access-gate/api/functions/buildAirdropTx.md +21 -0
  9. package/docs/access-gate/api/functions/buildConsumeTx.md +27 -0
  10. package/docs/access-gate/api/functions/buildCreateGateTx.md +52 -0
  11. package/docs/access-gate/api/functions/buildMakeGateImmutableTx.md +19 -0
  12. package/docs/access-gate/api/functions/buildPurchaseTx.md +23 -0
  13. package/docs/access-gate/api/functions/buildSetAutoBurnAtZeroTx.md +21 -0
  14. package/docs/access-gate/api/functions/buildSetDefaultUsesTx.md +21 -0
  15. package/docs/access-gate/api/functions/buildSetNftDescriptionTx.md +21 -0
  16. package/docs/access-gate/api/functions/buildSetNftImageUrlTx.md +21 -0
  17. package/docs/access-gate/api/functions/buildSetNftNameTx.md +21 -0
  18. package/docs/access-gate/api/functions/buildSetPausedTx.md +21 -0
  19. package/docs/access-gate/api/functions/buildSetPaymentRecipientTx.md +21 -0
  20. package/docs/access-gate/api/functions/buildSetPriceTx.md +21 -0
  21. package/docs/access-gate/api/functions/buildSetSoulboundTx.md +21 -0
  22. package/docs/access-gate/api/functions/decodeAccessProof.md +17 -0
  23. package/docs/access-gate/api/functions/encodeAccessProof.md +17 -0
  24. package/docs/access-gate/api/functions/fetchAccessNftById.md +27 -0
  25. package/docs/access-gate/api/functions/fetchAccessNfts.md +34 -0
  26. package/docs/access-gate/api/functions/fetchAdminCaps.md +30 -0
  27. package/docs/access-gate/api/functions/fetchChallenge.md +32 -0
  28. package/docs/access-gate/api/functions/fetchGate.md +26 -0
  29. package/docs/access-gate/api/functions/fetchOwnedGates.md +31 -0
  30. package/docs/access-gate/api/functions/ownsAccessNft.md +35 -0
  31. package/docs/access-gate/api/functions/parseAdminCap.md +26 -0
  32. package/docs/access-gate/api/functions/parseGate.md +19 -0
  33. package/docs/access-gate/api/functions/parseOwnedAccessNft.md +19 -0
  34. package/docs/access-gate/api/functions/personalMessageForNonce.md +18 -0
  35. package/docs/access-gate/api/index.md +47 -0
  36. package/docs/access-gate/api/interfaces/AccessGateConfig.md +57 -0
  37. package/docs/access-gate/api/interfaces/AccessProof.md +46 -0
  38. package/docs/access-gate/api/interfaces/Challenge.md +25 -0
  39. package/docs/access-gate/api/interfaces/GateAdminContext.md +37 -0
  40. package/docs/access-gate/api/interfaces/OwnedAccessNft.md +31 -0
  41. package/docs/access-gate/api/interfaces/OwnedGate.md +125 -0
  42. package/docs/access-gate/api/interfaces/OwnedObjectsClient.md +49 -0
  43. package/docs/access-gate/api/interfaces/SuiObjectClient.md +37 -0
  44. package/docs/access-gate/api/type-aliases/PersonalMessageSigner.md +17 -0
  45. package/docs/access-gate/api/typedoc-sidebar.json +1 -0
  46. package/docs/access-gate/index.md +61 -0
  47. package/docs/access-gate/reference.md +111 -0
  48. package/docs/access-gate/using.md +68 -0
  49. package/docs/architecture.md +61 -0
  50. package/docs/dao/index.md +71 -0
  51. package/docs/dao/reference.md +94 -0
  52. package/docs/getting-started.md +59 -0
  53. package/docs/index.md +58 -0
  54. package/docs/sealed-storage/api/classes/PolicyRegistry.md +103 -0
  55. package/docs/sealed-storage/api/classes/SealController.md +113 -0
  56. package/docs/sealed-storage/api/functions/buildPublishSealedContentTx.md +27 -0
  57. package/docs/sealed-storage/api/functions/bytesToHex.md +17 -0
  58. package/docs/sealed-storage/api/functions/concatBytes.md +17 -0
  59. package/docs/sealed-storage/api/functions/createDefaultRegistry.md +22 -0
  60. package/docs/sealed-storage/api/functions/createNftGateProvider.md +21 -0
  61. package/docs/sealed-storage/api/functions/hexToBytes.md +17 -0
  62. package/docs/sealed-storage/api/functions/objectIdBytes.md +17 -0
  63. package/docs/sealed-storage/api/functions/randomBytes.md +17 -0
  64. package/docs/sealed-storage/api/functions/sealedContentEventType.md +17 -0
  65. package/docs/sealed-storage/api/functions/u64beBytes.md +17 -0
  66. package/docs/sealed-storage/api/index.md +45 -0
  67. package/docs/sealed-storage/api/interfaces/EncryptResult.md +23 -0
  68. package/docs/sealed-storage/api/interfaces/FieldSpec.md +51 -0
  69. package/docs/sealed-storage/api/interfaces/FieldSuggestion.md +21 -0
  70. package/docs/sealed-storage/api/interfaces/KeyServerConfig.md +35 -0
  71. package/docs/sealed-storage/api/interfaces/NftGateParams.md +33 -0
  72. package/docs/sealed-storage/api/interfaces/PolicyDescriptor.md +49 -0
  73. package/docs/sealed-storage/api/interfaces/SealControllerConfig.md +63 -0
  74. package/docs/sealed-storage/api/interfaces/SealPolicyProvider.md +115 -0
  75. package/docs/sealed-storage/api/interfaces/SealSuggestClient.md +74 -0
  76. package/docs/sealed-storage/api/interfaces/SealedContentInput.md +45 -0
  77. package/docs/sealed-storage/api/interfaces/SealedContentPointer.md +53 -0
  78. package/docs/sealed-storage/api/interfaces/SealedManifest.md +65 -0
  79. package/docs/sealed-storage/api/interfaces/SuggestContext.md +25 -0
  80. package/docs/sealed-storage/api/interfaces/TimeLockParams.md +13 -0
  81. package/docs/sealed-storage/api/type-aliases/SignPersonalMessage.md +17 -0
  82. package/docs/sealed-storage/api/typedoc-sidebar.json +1 -0
  83. package/docs/sealed-storage/api/variables/nftGateProvider.md +9 -0
  84. package/docs/sealed-storage/api/variables/timeLockProvider.md +9 -0
  85. package/docs/sealed-storage/index.md +68 -0
  86. package/docs/sealed-storage/policies.md +52 -0
  87. package/docs/sealed-storage/reference.md +79 -0
  88. package/docs/sealed-storage/using.md +55 -0
  89. package/docs/walrus-storage/api/classes/RetryableWalrusClientError.md +101 -0
  90. package/docs/walrus-storage/api/classes/WalrusFile.md +111 -0
  91. package/docs/walrus-storage/api/functions/buildAccessProofToken.md +21 -0
  92. package/docs/walrus-storage/api/functions/certifyBlobTransaction.md +30 -0
  93. package/docs/walrus-storage/api/functions/createBlobUploadFlow.md +30 -0
  94. package/docs/walrus-storage/api/functions/createRelayAccessToken.md +45 -0
  95. package/docs/walrus-storage/api/functions/createUploadFlow.md +30 -0
  96. package/docs/walrus-storage/api/functions/createWalrusClient.md +23 -0
  97. package/docs/walrus-storage/api/functions/estimateStorageCost.md +35 -0
  98. package/docs/walrus-storage/api/functions/extendBlobLifetime.md +40 -0
  99. package/docs/walrus-storage/api/functions/extendBlobLifetimeTransaction.md +34 -0
  100. package/docs/walrus-storage/api/functions/fetchOwnedWalrusBlobs.md +34 -0
  101. package/docs/walrus-storage/api/functions/fetchRelayChallenge.md +32 -0
  102. package/docs/walrus-storage/api/functions/getWalrusPackageConfig.md +25 -0
  103. package/docs/walrus-storage/api/functions/personalMessageForNonce.md +18 -0
  104. package/docs/walrus-storage/api/functions/readBlobAttributes.md +27 -0
  105. package/docs/walrus-storage/api/functions/setBlobAttributes.md +40 -0
  106. package/docs/walrus-storage/api/functions/setBlobAttributesTransaction.md +34 -0
  107. package/docs/walrus-storage/api/functions/uploadBytes.md +38 -0
  108. package/docs/walrus-storage/api/functions/uploadImageBytes.md +34 -0
  109. package/docs/walrus-storage/api/functions/uploadLocalFile.md +37 -0
  110. package/docs/walrus-storage/api/functions/walrusBlobUrl.md +26 -0
  111. package/docs/walrus-storage/api/index.md +56 -0
  112. package/docs/walrus-storage/api/interfaces/CertifyOptions.md +46 -0
  113. package/docs/walrus-storage/api/interfaces/StorageCost.md +35 -0
  114. package/docs/walrus-storage/api/type-aliases/AccessProofInput.md +7 -0
  115. package/docs/walrus-storage/api/type-aliases/CreateWalrusClientOptions.md +113 -0
  116. package/docs/walrus-storage/api/type-aliases/ExtendOptions.md +8 -0
  117. package/docs/walrus-storage/api/type-aliases/OwnedBlob.md +57 -0
  118. package/docs/walrus-storage/api/type-aliases/PersonalMessageSigner.md +17 -0
  119. package/docs/walrus-storage/api/type-aliases/RelayChallenge.md +7 -0
  120. package/docs/walrus-storage/api/type-aliases/UploadOptions.md +37 -0
  121. package/docs/walrus-storage/api/type-aliases/UploadResult.md +27 -0
  122. package/docs/walrus-storage/api/type-aliases/WalrusClient.md +7 -0
  123. package/docs/walrus-storage/api/type-aliases/WalrusNetwork.md +7 -0
  124. package/docs/walrus-storage/api/typedoc-sidebar.json +1 -0
  125. package/docs/walrus-storage/api/variables/DEFAULT_RPC_URLS.md +7 -0
  126. package/docs/walrus-storage/api/variables/LONG_TERM_EPOCHS.md +12 -0
  127. package/docs/walrus-storage/api/variables/MAINNET_WALRUS_PACKAGE_CONFIG.md +15 -0
  128. package/docs/walrus-storage/api/variables/PUBLIC_UPLOAD_RELAY_HOSTS.md +10 -0
  129. package/docs/walrus-storage/api/variables/TESTNET_WALRUS_PACKAGE_CONFIG.md +19 -0
  130. package/docs/walrus-storage/api/variables/WALRUS_AGGREGATOR_HOSTS.md +7 -0
  131. package/docs/walrus-storage/index.md +54 -0
  132. package/docs/walrus-storage/reference.md +69 -0
  133. package/docs/walrus-storage/using.md +53 -0
  134. package/package.json +50 -0
  135. package/scripts/gen-api.mjs +107 -0
  136. package/tsconfig.json +13 -0
  137. package/tsconfig.typedoc.json +20 -0
@@ -0,0 +1,49 @@
1
+ # Interface: PolicyDescriptor
2
+
3
+ Defined in: types.ts:54
4
+
5
+ UI-facing description of a policy: label + which fields encrypt vs decrypt need.
6
+
7
+ ## Properties
8
+
9
+ ### decryptFields
10
+
11
+ > **decryptFields**: [`FieldSpec`](FieldSpec.md)[]
12
+
13
+ Defined in: types.ts:61
14
+
15
+ Fields required to DECRYPT (feed `buildApprove`), in addition to the stored identity.
16
+
17
+ ***
18
+
19
+ ### encryptFields
20
+
21
+ > **encryptFields**: [`FieldSpec`](FieldSpec.md)[]
22
+
23
+ Defined in: types.ts:59
24
+
25
+ Fields required to ENCRYPT under this policy (feed `buildId`).
26
+
27
+ ***
28
+
29
+ ### help
30
+
31
+ > **help**: `string`
32
+
33
+ Defined in: types.ts:57
34
+
35
+ ***
36
+
37
+ ### label
38
+
39
+ > **label**: `string`
40
+
41
+ Defined in: types.ts:56
42
+
43
+ ***
44
+
45
+ ### type
46
+
47
+ > **type**: `string`
48
+
49
+ Defined in: types.ts:55
@@ -0,0 +1,63 @@
1
+ # Interface: SealControllerConfig
2
+
3
+ Defined in: controller.ts:17
4
+
5
+ ## Properties
6
+
7
+ ### packageId
8
+
9
+ > **packageId**: `string`
10
+
11
+ Defined in: controller.ts:21
12
+
13
+ Published `seal_policies` package id (feeds encrypt, SessionKey, and the approve PTB).
14
+
15
+ ***
16
+
17
+ ### serverConfigs
18
+
19
+ > **serverConfigs**: [`KeyServerConfig`](KeyServerConfig.md)[]
20
+
21
+ Defined in: controller.ts:23
22
+
23
+ Committee of key servers: encryption targets all; decryption needs `threshold` of them.
24
+
25
+ ***
26
+
27
+ ### sessionTtlMin?
28
+
29
+ > `optional` **sessionTtlMin?**: `number`
30
+
31
+ Defined in: controller.ts:27
32
+
33
+ SessionKey time-to-live in minutes (default 10).
34
+
35
+ ***
36
+
37
+ ### suiClient
38
+
39
+ > **suiClient**: `SealCompatibleClient`
40
+
41
+ Defined in: controller.ts:19
42
+
43
+ A Sui client exposing the core API (e.g. `SuiGrpcClient` from `@mysten/sui/grpc`).
44
+
45
+ ***
46
+
47
+ ### threshold
48
+
49
+ > **threshold**: `number`
50
+
51
+ Defined in: controller.ts:25
52
+
53
+ `t` in t-of-n. With a 3-server committee, 2 tolerates any one server being offline.
54
+
55
+ ***
56
+
57
+ ### verifyKeyServers?
58
+
59
+ > `optional` **verifyKeyServers?**: `boolean`
60
+
61
+ Defined in: controller.ts:29
62
+
63
+ Verify key server object ids on-chain (default false; committee mode is testnet-only).
@@ -0,0 +1,115 @@
1
+ # Interface: SealPolicyProvider\<P\>
2
+
3
+ Defined in: types.ts:69
4
+
5
+ A Seal access policy, mirrored 1:1 with a `seal_policies` Move module. Providers are peers —
6
+ none is privileged. Adding a policy type is a new provider here + a new Move module; existing
7
+ code is untouched.
8
+
9
+ ## Type Parameters
10
+
11
+ ### P
12
+
13
+ `P` = `Record`\<`string`, `unknown`\>
14
+
15
+ ## Properties
16
+
17
+ ### type
18
+
19
+ > `readonly` **type**: `string`
20
+
21
+ Defined in: types.ts:71
22
+
23
+ Stable machine id, e.g. 'nft-gate' | 'time-lock'.
24
+
25
+ ## Methods
26
+
27
+ ### buildApprove()
28
+
29
+ > **buildApprove**(`tx`, `packageId`, `idBytes`, `params`): `void`
30
+
31
+ Defined in: types.ts:84
32
+
33
+ Append the `seal_approve*` move call (target + the identity as the first arg + policy
34
+ objects) to `tx`. Called at decrypt time to produce the PTB the key servers dry-run.
35
+
36
+ #### Parameters
37
+
38
+ ##### tx
39
+
40
+ `Transaction`
41
+
42
+ ##### packageId
43
+
44
+ `string`
45
+
46
+ ##### idBytes
47
+
48
+ `Uint8Array`
49
+
50
+ ##### params
51
+
52
+ `P`
53
+
54
+ #### Returns
55
+
56
+ `void`
57
+
58
+ ***
59
+
60
+ ### buildId()
61
+
62
+ > **buildId**(`params`): `Uint8Array`
63
+
64
+ Defined in: types.ts:78
65
+
66
+ Build the Seal identity bytes for a new ciphertext (namespace prefix + a random nonce).
67
+ Called once at encrypt time; the result is persisted in the manifest and reused verbatim
68
+ to decrypt.
69
+
70
+ #### Parameters
71
+
72
+ ##### params
73
+
74
+ `P`
75
+
76
+ #### Returns
77
+
78
+ `Uint8Array`
79
+
80
+ ***
81
+
82
+ ### describe()
83
+
84
+ > **describe**(): [`PolicyDescriptor`](PolicyDescriptor.md)
85
+
86
+ Defined in: types.ts:87
87
+
88
+ Form/rendering metadata (drives a generic, registry-driven UI).
89
+
90
+ #### Returns
91
+
92
+ [`PolicyDescriptor`](PolicyDescriptor.md)
93
+
94
+ ***
95
+
96
+ ### suggest()?
97
+
98
+ > `optional` **suggest**(`context`): `Promise`\<`Partial`\<`Record`\<`string`, [`FieldSuggestion`](FieldSuggestion.md)[]\>\>\>
99
+
100
+ Defined in: types.ts:95
101
+
102
+ Optional: suggest values for form fields by querying chain state (e.g. objects owned by the
103
+ connected wallet). Returns a map of `fieldName → suggestions[]`. Only fields with non-empty
104
+ suggestion arrays need be included. The UI renders a picker for those fields and falls back
105
+ to a plain text input when no suggestions are available or the user opts out.
106
+
107
+ #### Parameters
108
+
109
+ ##### context
110
+
111
+ [`SuggestContext`](SuggestContext.md)
112
+
113
+ #### Returns
114
+
115
+ `Promise`\<`Partial`\<`Record`\<`string`, [`FieldSuggestion`](FieldSuggestion.md)[]\>\>\>
@@ -0,0 +1,74 @@
1
+ # Interface: SealSuggestClient
2
+
3
+ Defined in: types.ts:13
4
+
5
+ Minimal structural subset of a Sui gRPC core client needed by `suggest`.
6
+ Compatible with `SuiGrpcClient.core` from `@mysten/sui/grpc` without importing it directly.
7
+
8
+ ## Properties
9
+
10
+ ### core
11
+
12
+ > **core**: `object`
13
+
14
+ Defined in: types.ts:14
15
+
16
+ #### getObject()
17
+
18
+ > **getObject**(`options`): `Promise`\<\{ `object`: \{ `json?`: `Record`\<`string`, `unknown`\>; `objectId`: `string`; `type?`: `string`; \}; \}\>
19
+
20
+ ##### Parameters
21
+
22
+ ###### options
23
+
24
+ ###### include?
25
+
26
+ \{ `json?`: `boolean`; \}
27
+
28
+ ###### include.json?
29
+
30
+ `boolean`
31
+
32
+ ###### objectId
33
+
34
+ `string`
35
+
36
+ ##### Returns
37
+
38
+ `Promise`\<\{ `object`: \{ `json?`: `Record`\<`string`, `unknown`\>; `objectId`: `string`; `type?`: `string`; \}; \}\>
39
+
40
+ #### listOwnedObjects()
41
+
42
+ > **listOwnedObjects**(`options`): `Promise`\<\{ `cursor`: `string`; `hasNextPage`: `boolean`; `objects`: `object`[]; \}\>
43
+
44
+ ##### Parameters
45
+
46
+ ###### options
47
+
48
+ ###### cursor?
49
+
50
+ `string`
51
+
52
+ ###### include?
53
+
54
+ \{ `json?`: `boolean`; \}
55
+
56
+ ###### include.json?
57
+
58
+ `boolean`
59
+
60
+ ###### limit?
61
+
62
+ `number`
63
+
64
+ ###### owner
65
+
66
+ `string`
67
+
68
+ ###### type?
69
+
70
+ `string`
71
+
72
+ ##### Returns
73
+
74
+ `Promise`\<\{ `cursor`: `string`; `hasNextPage`: `boolean`; `objects`: `object`[]; \}\>
@@ -0,0 +1,45 @@
1
+ # Interface: SealedContentInput
2
+
3
+ Defined in: sealed-content.ts:4
4
+
5
+ Fields needed to publish an on-chain pointer binding sealed content to a gate.
6
+
7
+ ## Properties
8
+
9
+ ### blobId
10
+
11
+ > **blobId**: `string`
12
+
13
+ Defined in: sealed-content.ts:8
14
+
15
+ Walrus blob id of the ciphertext.
16
+
17
+ ***
18
+
19
+ ### gateId
20
+
21
+ > **gateId**: `string`
22
+
23
+ Defined in: sealed-content.ts:6
24
+
25
+ The access gate object id the content is sealed to.
26
+
27
+ ***
28
+
29
+ ### label
30
+
31
+ > **label**: `string`
32
+
33
+ Defined in: sealed-content.ts:12
34
+
35
+ Human-readable label shown in unlock UIs.
36
+
37
+ ***
38
+
39
+ ### sealId
40
+
41
+ > **sealId**: `string`
42
+
43
+ Defined in: sealed-content.ts:10
44
+
45
+ Seal identity (hex) the content was encrypted under.
@@ -0,0 +1,53 @@
1
+ # Interface: SealedContentPointer
2
+
3
+ Defined in: sealed-content.ts:37
4
+
5
+ A discovered on-chain pointer to gate-unlockable sealed content.
6
+
7
+ ## Properties
8
+
9
+ ### blobId
10
+
11
+ > **blobId**: `string`
12
+
13
+ Defined in: sealed-content.ts:40
14
+
15
+ ***
16
+
17
+ ### contentId
18
+
19
+ > **contentId**: `string`
20
+
21
+ Defined in: sealed-content.ts:38
22
+
23
+ ***
24
+
25
+ ### gateId
26
+
27
+ > **gateId**: `string`
28
+
29
+ Defined in: sealed-content.ts:39
30
+
31
+ ***
32
+
33
+ ### label
34
+
35
+ > **label**: `string`
36
+
37
+ Defined in: sealed-content.ts:42
38
+
39
+ ***
40
+
41
+ ### publisher
42
+
43
+ > **publisher**: `string`
44
+
45
+ Defined in: sealed-content.ts:43
46
+
47
+ ***
48
+
49
+ ### sealId
50
+
51
+ > **sealId**: `string`
52
+
53
+ Defined in: sealed-content.ts:41
@@ -0,0 +1,65 @@
1
+ # Interface: SealedManifest
2
+
3
+ Defined in: types.ts:99
4
+
5
+ Portable pointer to one sealed blob — the interchange format between encrypt and decrypt.
6
+
7
+ ## Properties
8
+
9
+ ### blobId
10
+
11
+ > **blobId**: `string`
12
+
13
+ Defined in: types.ts:105
14
+
15
+ Storage pointer to the ciphertext (e.g. a Walrus blob id).
16
+
17
+ ***
18
+
19
+ ### id
20
+
21
+ > **id**: `string`
22
+
23
+ Defined in: types.ts:103
24
+
25
+ Seal identity (hex, no 0x) produced by `buildId` — required to decrypt.
26
+
27
+ ***
28
+
29
+ ### label?
30
+
31
+ > `optional` **label?**: `string`
32
+
33
+ Defined in: types.ts:111
34
+
35
+ Optional human label.
36
+
37
+ ***
38
+
39
+ ### network
40
+
41
+ > **network**: `string`
42
+
43
+ Defined in: types.ts:107
44
+
45
+ Network the policy package + key servers live on.
46
+
47
+ ***
48
+
49
+ ### params?
50
+
51
+ > `optional` **params?**: `Record`\<`string`, `unknown`\>
52
+
53
+ Defined in: types.ts:109
54
+
55
+ Non-secret policy params needed to rebuild the approve PTB (e.g. gateId).
56
+
57
+ ***
58
+
59
+ ### policyType
60
+
61
+ > **policyType**: `string`
62
+
63
+ Defined in: types.ts:101
64
+
65
+ Policy `type` used to seal this content.
@@ -0,0 +1,25 @@
1
+ # Interface: SuggestContext
2
+
3
+ Defined in: types.ts:34
4
+
5
+ Context passed to a provider's `suggest` method.
6
+
7
+ ## Properties
8
+
9
+ ### account
10
+
11
+ > **account**: `string`
12
+
13
+ Defined in: types.ts:36
14
+
15
+ The connected wallet address.
16
+
17
+ ***
18
+
19
+ ### client
20
+
21
+ > **client**: [`SealSuggestClient`](SealSuggestClient.md)
22
+
23
+ Defined in: types.ts:38
24
+
25
+ Sui gRPC client (structural — any compatible client is accepted).
@@ -0,0 +1,13 @@
1
+ # Interface: TimeLockParams
2
+
3
+ Defined in: providers/timelock.ts:4
4
+
5
+ ## Properties
6
+
7
+ ### unlockMs?
8
+
9
+ > `optional` **unlockMs?**: `number`
10
+
11
+ Defined in: providers/timelock.ts:6
12
+
13
+ Unlock time in epoch milliseconds. Needed to encrypt; not needed to decrypt.
@@ -0,0 +1,17 @@
1
+ # Type Alias: SignPersonalMessage
2
+
3
+ > **SignPersonalMessage** = (`message`) => `Promise`\<\{ `signature`: `string`; \}\>
4
+
5
+ Defined in: controller.ts:33
6
+
7
+ Wallet hook: sign a personal message, returning the signature (base64).
8
+
9
+ ## Parameters
10
+
11
+ ### message
12
+
13
+ `Uint8Array`
14
+
15
+ ## Returns
16
+
17
+ `Promise`\<\{ `signature`: `string`; \}\>
@@ -0,0 +1 @@
1
+ [{"text":"Classes","collapsed":true,"items":[{"text":"PolicyRegistry","link":"/docs/sealed-storage/api/classes/PolicyRegistry.md"},{"text":"SealController","link":"/docs/sealed-storage/api/classes/SealController.md"}]},{"text":"Interfaces","collapsed":true,"items":[{"text":"EncryptResult","link":"/docs/sealed-storage/api/interfaces/EncryptResult.md"},{"text":"FieldSpec","link":"/docs/sealed-storage/api/interfaces/FieldSpec.md"},{"text":"FieldSuggestion","link":"/docs/sealed-storage/api/interfaces/FieldSuggestion.md"},{"text":"KeyServerConfig","link":"/docs/sealed-storage/api/interfaces/KeyServerConfig.md"},{"text":"NftGateParams","link":"/docs/sealed-storage/api/interfaces/NftGateParams.md"},{"text":"PolicyDescriptor","link":"/docs/sealed-storage/api/interfaces/PolicyDescriptor.md"},{"text":"SealControllerConfig","link":"/docs/sealed-storage/api/interfaces/SealControllerConfig.md"},{"text":"SealedContentInput","link":"/docs/sealed-storage/api/interfaces/SealedContentInput.md"},{"text":"SealedContentPointer","link":"/docs/sealed-storage/api/interfaces/SealedContentPointer.md"},{"text":"SealedManifest","link":"/docs/sealed-storage/api/interfaces/SealedManifest.md"},{"text":"SealPolicyProvider","link":"/docs/sealed-storage/api/interfaces/SealPolicyProvider.md"},{"text":"SealSuggestClient","link":"/docs/sealed-storage/api/interfaces/SealSuggestClient.md"},{"text":"SuggestContext","link":"/docs/sealed-storage/api/interfaces/SuggestContext.md"},{"text":"TimeLockParams","link":"/docs/sealed-storage/api/interfaces/TimeLockParams.md"}]},{"text":"Type Aliases","collapsed":true,"items":[{"text":"SignPersonalMessage","link":"/docs/sealed-storage/api/type-aliases/SignPersonalMessage.md"}]},{"text":"Variables","collapsed":true,"items":[{"text":"nftGateProvider","link":"/docs/sealed-storage/api/variables/nftGateProvider.md"},{"text":"timeLockProvider","link":"/docs/sealed-storage/api/variables/timeLockProvider.md"}]},{"text":"Functions","collapsed":true,"items":[{"text":"buildPublishSealedContentTx","link":"/docs/sealed-storage/api/functions/buildPublishSealedContentTx.md"},{"text":"bytesToHex","link":"/docs/sealed-storage/api/functions/bytesToHex.md"},{"text":"concatBytes","link":"/docs/sealed-storage/api/functions/concatBytes.md"},{"text":"createDefaultRegistry","link":"/docs/sealed-storage/api/functions/createDefaultRegistry.md"},{"text":"createNftGateProvider","link":"/docs/sealed-storage/api/functions/createNftGateProvider.md"},{"text":"hexToBytes","link":"/docs/sealed-storage/api/functions/hexToBytes.md"},{"text":"objectIdBytes","link":"/docs/sealed-storage/api/functions/objectIdBytes.md"},{"text":"randomBytes","link":"/docs/sealed-storage/api/functions/randomBytes.md"},{"text":"sealedContentEventType","link":"/docs/sealed-storage/api/functions/sealedContentEventType.md"},{"text":"u64beBytes","link":"/docs/sealed-storage/api/functions/u64beBytes.md"}]}]
@@ -0,0 +1,9 @@
1
+ # ~~Variable: nftGateProvider~~
2
+
3
+ > `const` **nftGateProvider**: [`SealPolicyProvider`](../interfaces/SealPolicyProvider.md)\<[`NftGateParams`](../interfaces/NftGateParams.md)\>
4
+
5
+ Defined in: providers/nft-gate.ts:110
6
+
7
+ ## Deprecated
8
+
9
+ Use `createNftGateProvider(packageId)` — this zero-package-id fallback has no suggest capability.
@@ -0,0 +1,9 @@
1
+ # Variable: timeLockProvider
2
+
3
+ > `const` **timeLockProvider**: [`SealPolicyProvider`](../interfaces/SealPolicyProvider.md)\<[`TimeLockParams`](../interfaces/TimeLockParams.md)\>
4
+
5
+ Defined in: providers/timelock.ts:19
6
+
7
+ Time-lock encryption: decryptable by anyone once the on-chain Clock passes the unlock time.
8
+ Mirrors `seal_policies::timelock`. Identity layout: `[8-byte BE unlock_ms][8-byte nonce]`.
9
+ Deliberately shares nothing with `nft-gate` — different fields, different args.
@@ -0,0 +1,68 @@
1
+ # Sealed Storage
2
+
3
+ Encrypt a file in your browser, store the ciphertext on [Walrus](/walrus-storage/), and let only the
4
+ right people decrypt it — with the access rule enforced **on-chain**. Open the app at
5
+ [sui-seal.meddleware.co.uk](https://sui-seal.meddleware.co.uk).
6
+
7
+ ## What it is
8
+
9
+ Sealed Storage combines three things:
10
+
11
+ - **[Seal](https://seal-docs.wal.app/)** — threshold encryption where the decryption keys are held by
12
+ a committee of independent **key servers**, not by any single party (or by Meddleware).
13
+ - **[Walrus](/walrus-storage/)** — decentralised storage for the encrypted bytes.
14
+ - A **policy** — an on-chain rule that decides who is allowed to decrypt.
15
+
16
+ You encrypt under a policy, share a small **manifest** (a pointer), and anyone who satisfies the
17
+ policy can decrypt. Nobody else can — even though the ciphertext itself is stored publicly.
18
+
19
+ ## When to use it
20
+
21
+ - You want to store something **private** on public/decentralised storage.
22
+ - You want access tied to an **on-chain condition** — for example, "only holders of this
23
+ [Access Gate](/access-gate/) pass" or "only after a certain time".
24
+ - You want to **share** encrypted content without running your own key server or handing anyone a raw
25
+ key.
26
+
27
+ When plain [Walrus Storage](/walrus-storage/) is enough: if the content isn't sensitive, skip
28
+ encryption.
29
+
30
+ ## How it works, in three steps
31
+
32
+ 1. **Encrypt** — the file is encrypted in your browser under the policy you choose. No key material
33
+ ever touches a server.
34
+ 2. **Store** — the opaque ciphertext is uploaded to Walrus; you keep the returned blob ID in the
35
+ manifest.
36
+ 3. **Decrypt** — you sign **one** wallet message (which mints a short-lived session key); a threshold
37
+ of the key servers releases key shares **only if** the on-chain policy check passes.
38
+
39
+ ```
40
+ encrypt (browser) store decrypt (if policy allows)
41
+ file → ciphertext → Walrus blob → sign once → committee releases shares → file
42
+
43
+ policy: who may decrypt (NFT pass / time-lock / …)
44
+ ```
45
+
46
+ ## The manifest
47
+
48
+ Sealing produces a small **manifest** — the portable pointer you share or save. It records the policy
49
+ type, the encryption **identity**, the Walrus blob ID, the network, and any non-secret parameters
50
+ (like which gate). It contains **no secrets**; it's just enough to locate the ciphertext and rebuild
51
+ the on-chain access check. See [Reference](/sealed-storage/reference).
52
+
53
+ ## Who holds the keys?
54
+
55
+ No one you have to trust unilaterally. Decryption keys are split across a **committee** of independent
56
+ key servers; a configurable **threshold** (e.g. 2 of 3) must agree. Meddleware never holds your keys,
57
+ and the app never sends key material to a server.
58
+
59
+ ::: tip Network availability
60
+ Committee mode currently runs on **testnet**. Mainnet is enabled purely by configuration once the
61
+ committee is available — the app shows a clear notice until then.
62
+ :::
63
+
64
+ ## Next
65
+
66
+ - **[Using it](/sealed-storage/using)** — encrypt, share, and decrypt step by step.
67
+ - **[Policies](/sealed-storage/policies)** — the access rules you can choose, and when to use each.
68
+ - **[Reference](/sealed-storage/reference)** — manifest shape and the SDK API.
@@ -0,0 +1,52 @@
1
+ # Sealed Storage — policies
2
+
3
+ A **policy** is the on-chain rule that decides who may decrypt sealed content. You choose one when you
4
+ encrypt. Each policy is a self-contained on-chain module with a matching option in the app.
5
+
6
+ ## Built-in policies
7
+
8
+ ### Access-gate NFT (`nft-gate`)
9
+
10
+ **Only holders of a valid pass for a chosen [Access Gate](/access-gate/) can decrypt.**
11
+
12
+ - **Encrypt with:** the gate's object ID.
13
+ - **Decrypt with:** the pass NFT you hold for that gate (and whether it's soulbound).
14
+ - **Use it when:** you want membership- or purchase-gated content — a paid community, subscriber-only
15
+ files, gated downloads. Combine it with the Access Gate tool to sell the passes.
16
+
17
+ Content is namespaced to the specific gate, so a pass for one gate can never decrypt another gate's
18
+ content. A single-use pass acts as **membership** here — decrypting doesn't consume a use — but an
19
+ already-exhausted pass is rejected.
20
+
21
+ ### Time-lock (`time-lock`)
22
+
23
+ **Anyone can decrypt once a chosen unlock time has passed.**
24
+
25
+ - **Encrypt with:** an unlock time.
26
+ - **Decrypt with:** nothing special — just wait until the time arrives.
27
+ - **Use it when:** you want a timed reveal — embargoed announcements, scheduled disclosures, "open
28
+ after" content, commit-and-reveal schemes.
29
+
30
+ The unlock time is checked against the on-chain clock, so it can't be faked by changing your device
31
+ clock.
32
+
33
+ ## Choosing a policy
34
+
35
+ | You want… | Use |
36
+ | --- | --- |
37
+ | Access limited to holders of a pass you sell or grant | **Access-gate NFT** |
38
+ | A timed reveal open to everyone after a date | **Time-lock** |
39
+ | Both (e.g. gated *and* not before a date) | Not a single built-in today — see roadmap |
40
+
41
+ ## Roadmap
42
+
43
+ The policy system is **extensible** — each new policy is an additional on-chain module plus an app
44
+ option, without touching existing ones. Planned policies (not yet available) include allowlists,
45
+ time-bound subscriptions, owner-only, token/balance gating, and more. These will appear in the app's
46
+ policy picker automatically as they ship.
47
+
48
+ ::: tip Developer note
49
+ The mechanics of writing a new policy (the on-chain `seal_approve` module + the matching client
50
+ provider) are `dev.meddleware.co.uk` material, planned in the `seal-policies` and `seal-client`
51
+ package docs. The [Reference](/sealed-storage/reference) lists the current policy identifiers.
52
+ :::