@misonetwork/sdk 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 (238) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +644 -0
  3. package/dist/client.d.ts +197 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +218 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/contracts/composition_credits/composition_credits.d.ts +181 -0
  8. package/dist/contracts/composition_credits/composition_credits.d.ts.map +1 -0
  9. package/dist/contracts/composition_credits/composition_credits.js +109 -0
  10. package/dist/contracts/composition_credits/composition_credits.js.map +1 -0
  11. package/dist/contracts/composition_credits/composition_party_role.d.ts +119 -0
  12. package/dist/contracts/composition_credits/composition_party_role.d.ts.map +1 -0
  13. package/dist/contracts/composition_credits/composition_party_role.js +139 -0
  14. package/dist/contracts/composition_credits/composition_party_role.js.map +1 -0
  15. package/dist/contracts/composition_credits/deps/miso_credit/credit.d.ts +24 -0
  16. package/dist/contracts/composition_credits/deps/miso_credit/credit.d.ts.map +1 -0
  17. package/dist/contracts/composition_credits/deps/miso_credit/credit.js +23 -0
  18. package/dist/contracts/composition_credits/deps/miso_credit/credit.js.map +1 -0
  19. package/dist/contracts/composition_credits/deps/sui/vec_map.d.ts +37 -0
  20. package/dist/contracts/composition_credits/deps/sui/vec_map.d.ts.map +1 -0
  21. package/dist/contracts/composition_credits/deps/sui/vec_map.js +28 -0
  22. package/dist/contracts/composition_credits/deps/sui/vec_map.js.map +1 -0
  23. package/dist/contracts/composition_royalty_pool/composition_royalty_pool.d.ts +87 -0
  24. package/dist/contracts/composition_royalty_pool/composition_royalty_pool.d.ts.map +1 -0
  25. package/dist/contracts/composition_royalty_pool/composition_royalty_pool.js +80 -0
  26. package/dist/contracts/composition_royalty_pool/composition_royalty_pool.js.map +1 -0
  27. package/dist/contracts/cover_art/cover_art.d.ts +85 -0
  28. package/dist/contracts/cover_art/cover_art.d.ts.map +1 -0
  29. package/dist/contracts/cover_art/cover_art.js +68 -0
  30. package/dist/contracts/cover_art/cover_art.js.map +1 -0
  31. package/dist/contracts/cover_art/deps/ori/walrus_data.d.ts +52 -0
  32. package/dist/contracts/cover_art/deps/ori/walrus_data.d.ts.map +1 -0
  33. package/dist/contracts/cover_art/deps/ori/walrus_data.js +37 -0
  34. package/dist/contracts/cover_art/deps/ori/walrus_data.js.map +1 -0
  35. package/dist/contracts/miso/composition.d.ts +231 -0
  36. package/dist/contracts/miso/composition.d.ts.map +1 -0
  37. package/dist/contracts/miso/composition.js +231 -0
  38. package/dist/contracts/miso/composition.js.map +1 -0
  39. package/dist/contracts/miso/deal.d.ts +184 -0
  40. package/dist/contracts/miso/deal.d.ts.map +1 -0
  41. package/dist/contracts/miso/deal.js +184 -0
  42. package/dist/contracts/miso/deal.js.map +1 -0
  43. package/dist/contracts/miso/deps/bps/bps.d.ts +19 -0
  44. package/dist/contracts/miso/deps/bps/bps.d.ts.map +1 -0
  45. package/dist/contracts/miso/deps/bps/bps.js +21 -0
  46. package/dist/contracts/miso/deps/bps/bps.js.map +1 -0
  47. package/dist/contracts/miso/recording.d.ts +228 -0
  48. package/dist/contracts/miso/recording.d.ts.map +1 -0
  49. package/dist/contracts/miso/recording.js +221 -0
  50. package/dist/contracts/miso/recording.js.map +1 -0
  51. package/dist/contracts/miso/release.d.ts +280 -0
  52. package/dist/contracts/miso/release.d.ts.map +1 -0
  53. package/dist/contracts/miso/release.js +282 -0
  54. package/dist/contracts/miso/release.js.map +1 -0
  55. package/dist/contracts/miso/track.d.ts +118 -0
  56. package/dist/contracts/miso/track.d.ts.map +1 -0
  57. package/dist/contracts/miso/track.js +118 -0
  58. package/dist/contracts/miso/track.js.map +1 -0
  59. package/dist/contracts/recording_credits/deps/miso_credit/credit.d.ts +24 -0
  60. package/dist/contracts/recording_credits/deps/miso_credit/credit.d.ts.map +1 -0
  61. package/dist/contracts/recording_credits/deps/miso_credit/credit.js +23 -0
  62. package/dist/contracts/recording_credits/deps/miso_credit/credit.js.map +1 -0
  63. package/dist/contracts/recording_credits/deps/sui/vec_map.d.ts +37 -0
  64. package/dist/contracts/recording_credits/deps/sui/vec_map.d.ts.map +1 -0
  65. package/dist/contracts/recording_credits/deps/sui/vec_map.js +28 -0
  66. package/dist/contracts/recording_credits/deps/sui/vec_map.js.map +1 -0
  67. package/dist/contracts/recording_credits/deps/sui/vec_set.d.ts +21 -0
  68. package/dist/contracts/recording_credits/deps/sui/vec_set.d.ts.map +1 -0
  69. package/dist/contracts/recording_credits/deps/sui/vec_set.js +20 -0
  70. package/dist/contracts/recording_credits/deps/sui/vec_set.js.map +1 -0
  71. package/dist/contracts/recording_credits/recording_credits.d.ts +2313 -0
  72. package/dist/contracts/recording_credits/recording_credits.d.ts.map +1 -0
  73. package/dist/contracts/recording_credits/recording_credits.js +270 -0
  74. package/dist/contracts/recording_credits/recording_credits.js.map +1 -0
  75. package/dist/contracts/recording_credits/recording_party_role.d.ts +1174 -0
  76. package/dist/contracts/recording_credits/recording_party_role.d.ts.map +1 -0
  77. package/dist/contracts/recording_credits/recording_party_role.js +692 -0
  78. package/dist/contracts/recording_credits/recording_party_role.js.map +1 -0
  79. package/dist/contracts/recording_royalty_pool/recording_royalty_pool.d.ts +90 -0
  80. package/dist/contracts/recording_royalty_pool/recording_royalty_pool.d.ts.map +1 -0
  81. package/dist/contracts/recording_royalty_pool/recording_royalty_pool.js +80 -0
  82. package/dist/contracts/recording_royalty_pool/recording_royalty_pool.js.map +1 -0
  83. package/dist/contracts/release_cover_art/deps/0x340057f2174fb59e4626742dd2b46c662237837b6187450cb59e4976ce7eac78/walrus_data.d.ts +52 -0
  84. package/dist/contracts/release_cover_art/deps/0x340057f2174fb59e4626742dd2b46c662237837b6187450cb59e4976ce7eac78/walrus_data.d.ts.map +1 -0
  85. package/dist/contracts/release_cover_art/deps/0x340057f2174fb59e4626742dd2b46c662237837b6187450cb59e4976ce7eac78/walrus_data.js +37 -0
  86. package/dist/contracts/release_cover_art/deps/0x340057f2174fb59e4626742dd2b46c662237837b6187450cb59e4976ce7eac78/walrus_data.js.map +1 -0
  87. package/dist/contracts/release_cover_art/deps/cover_art/cover_art.d.ts +46 -0
  88. package/dist/contracts/release_cover_art/deps/cover_art/cover_art.d.ts.map +1 -0
  89. package/dist/contracts/release_cover_art/deps/cover_art/cover_art.js +21 -0
  90. package/dist/contracts/release_cover_art/deps/cover_art/cover_art.js.map +1 -0
  91. package/dist/contracts/release_cover_art/deps/per_track/per_track.d.ts +33 -0
  92. package/dist/contracts/release_cover_art/deps/per_track/per_track.d.ts.map +1 -0
  93. package/dist/contracts/release_cover_art/deps/per_track/per_track.js +32 -0
  94. package/dist/contracts/release_cover_art/deps/per_track/per_track.js.map +1 -0
  95. package/dist/contracts/release_cover_art/release_cover_art.d.ts +300 -0
  96. package/dist/contracts/release_cover_art/release_cover_art.d.ts.map +1 -0
  97. package/dist/contracts/release_cover_art/release_cover_art.js +168 -0
  98. package/dist/contracts/release_cover_art/release_cover_art.js.map +1 -0
  99. package/dist/contracts/release_credits/deps/miso_credit/credit.d.ts +24 -0
  100. package/dist/contracts/release_credits/deps/miso_credit/credit.d.ts.map +1 -0
  101. package/dist/contracts/release_credits/deps/miso_credit/credit.js +23 -0
  102. package/dist/contracts/release_credits/deps/miso_credit/credit.js.map +1 -0
  103. package/dist/contracts/release_credits/deps/sui/vec_map.d.ts +37 -0
  104. package/dist/contracts/release_credits/deps/sui/vec_map.d.ts.map +1 -0
  105. package/dist/contracts/release_credits/deps/sui/vec_map.js +28 -0
  106. package/dist/contracts/release_credits/deps/sui/vec_map.js.map +1 -0
  107. package/dist/contracts/release_credits/release_credits.d.ts +142 -0
  108. package/dist/contracts/release_credits/release_credits.d.ts.map +1 -0
  109. package/dist/contracts/release_credits/release_credits.js +108 -0
  110. package/dist/contracts/release_credits/release_credits.js.map +1 -0
  111. package/dist/contracts/release_credits/release_party_role.d.ts +58 -0
  112. package/dist/contracts/release_credits/release_party_role.d.ts.map +1 -0
  113. package/dist/contracts/release_credits/release_party_role.js +66 -0
  114. package/dist/contracts/release_credits/release_party_role.js.map +1 -0
  115. package/dist/contracts/royalty_pool/deps/std/type_name.d.ts +18 -0
  116. package/dist/contracts/royalty_pool/deps/std/type_name.d.ts.map +1 -0
  117. package/dist/contracts/royalty_pool/deps/std/type_name.js +20 -0
  118. package/dist/contracts/royalty_pool/deps/std/type_name.js.map +1 -0
  119. package/dist/contracts/royalty_pool/deps/sui/balance.d.ts +13 -0
  120. package/dist/contracts/royalty_pool/deps/sui/balance.d.ts.map +1 -0
  121. package/dist/contracts/royalty_pool/deps/sui/balance.js +15 -0
  122. package/dist/contracts/royalty_pool/deps/sui/balance.js.map +1 -0
  123. package/dist/contracts/royalty_pool/deps/sui/vec_map.d.ts +37 -0
  124. package/dist/contracts/royalty_pool/deps/sui/vec_map.d.ts.map +1 -0
  125. package/dist/contracts/royalty_pool/deps/sui/vec_map.js +28 -0
  126. package/dist/contracts/royalty_pool/deps/sui/vec_map.js.map +1 -0
  127. package/dist/contracts/royalty_pool/pool.d.ts +358 -0
  128. package/dist/contracts/royalty_pool/pool.d.ts.map +1 -0
  129. package/dist/contracts/royalty_pool/pool.js +352 -0
  130. package/dist/contracts/royalty_pool/pool.js.map +1 -0
  131. package/dist/contracts/royalty_pool/stake.d.ts +202 -0
  132. package/dist/contracts/royalty_pool/stake.d.ts.map +1 -0
  133. package/dist/contracts/royalty_pool/stake.js +197 -0
  134. package/dist/contracts/royalty_pool/stake.js.map +1 -0
  135. package/dist/contracts/utils/index.d.ts +31 -0
  136. package/dist/contracts/utils/index.d.ts.map +1 -0
  137. package/dist/contracts/utils/index.js +162 -0
  138. package/dist/contracts/utils/index.js.map +1 -0
  139. package/dist/contracts.d.ts +18 -0
  140. package/dist/contracts.d.ts.map +1 -0
  141. package/dist/contracts.js +26 -0
  142. package/dist/contracts.js.map +1 -0
  143. package/dist/cover.d.ts +48 -0
  144. package/dist/cover.d.ts.map +1 -0
  145. package/dist/cover.js +68 -0
  146. package/dist/cover.js.map +1 -0
  147. package/dist/credits.d.ts +171 -0
  148. package/dist/credits.d.ts.map +1 -0
  149. package/dist/credits.js +360 -0
  150. package/dist/credits.js.map +1 -0
  151. package/dist/execute.d.ts +49 -0
  152. package/dist/execute.d.ts.map +1 -0
  153. package/dist/execute.js +114 -0
  154. package/dist/execute.js.map +1 -0
  155. package/dist/extensions/royalty-pool.d.ts +32 -0
  156. package/dist/extensions/royalty-pool.d.ts.map +1 -0
  157. package/dist/extensions/royalty-pool.js +33 -0
  158. package/dist/extensions/royalty-pool.js.map +1 -0
  159. package/dist/index.d.ts +13 -0
  160. package/dist/index.d.ts.map +1 -0
  161. package/dist/index.js +16 -0
  162. package/dist/index.js.map +1 -0
  163. package/dist/internal.d.ts +20 -0
  164. package/dist/internal.d.ts.map +1 -0
  165. package/dist/internal.js +48 -0
  166. package/dist/internal.js.map +1 -0
  167. package/dist/parsers.d.ts +9 -0
  168. package/dist/parsers.d.ts.map +1 -0
  169. package/dist/parsers.js +52 -0
  170. package/dist/parsers.js.map +1 -0
  171. package/dist/queries.d.ts +105 -0
  172. package/dist/queries.d.ts.map +1 -0
  173. package/dist/queries.js +380 -0
  174. package/dist/queries.js.map +1 -0
  175. package/dist/schemas.d.ts +99 -0
  176. package/dist/schemas.d.ts.map +1 -0
  177. package/dist/schemas.js +76 -0
  178. package/dist/schemas.js.map +1 -0
  179. package/dist/transactions.d.ts +158 -0
  180. package/dist/transactions.d.ts.map +1 -0
  181. package/dist/transactions.js +154 -0
  182. package/dist/transactions.js.map +1 -0
  183. package/dist/types.d.ts +204 -0
  184. package/dist/types.d.ts.map +1 -0
  185. package/dist/types.js +4 -0
  186. package/dist/types.js.map +1 -0
  187. package/dist/view.d.ts +21 -0
  188. package/dist/view.d.ts.map +1 -0
  189. package/dist/view.js +36 -0
  190. package/dist/view.js.map +1 -0
  191. package/package.json +111 -0
  192. package/src/client.ts +278 -0
  193. package/src/contracts/composition_credits/composition_credits.ts +169 -0
  194. package/src/contracts/composition_credits/composition_party_role.ts +189 -0
  195. package/src/contracts/composition_credits/deps/miso_credit/credit.ts +27 -0
  196. package/src/contracts/composition_credits/deps/sui/vec_map.ts +33 -0
  197. package/src/contracts/composition_royalty_pool/composition_royalty_pool.ts +135 -0
  198. package/src/contracts/cover_art/cover_art.ts +99 -0
  199. package/src/contracts/cover_art/deps/ori/walrus_data.ts +36 -0
  200. package/src/contracts/miso/composition.ts +343 -0
  201. package/src/contracts/miso/deal.ts +257 -0
  202. package/src/contracts/miso/deps/bps/bps.ts +23 -0
  203. package/src/contracts/miso/recording.ts +298 -0
  204. package/src/contracts/miso/release.ts +392 -0
  205. package/src/contracts/miso/track.ts +153 -0
  206. package/src/contracts/recording_credits/deps/miso_credit/credit.ts +27 -0
  207. package/src/contracts/recording_credits/deps/sui/vec_map.ts +33 -0
  208. package/src/contracts/recording_credits/deps/sui/vec_set.ts +21 -0
  209. package/src/contracts/recording_credits/recording_credits.ts +458 -0
  210. package/src/contracts/recording_credits/recording_party_role.ts +1041 -0
  211. package/src/contracts/recording_royalty_pool/recording_royalty_pool.ts +138 -0
  212. package/src/contracts/release_cover_art/deps/0x340057f2174fb59e4626742dd2b46c662237837b6187450cb59e4976ce7eac78/walrus_data.ts +36 -0
  213. package/src/contracts/release_cover_art/deps/cover_art/cover_art.ts +23 -0
  214. package/src/contracts/release_cover_art/deps/per_track/per_track.ts +36 -0
  215. package/src/contracts/release_cover_art/release_cover_art.ts +251 -0
  216. package/src/contracts/release_credits/deps/miso_credit/credit.ts +27 -0
  217. package/src/contracts/release_credits/deps/sui/vec_map.ts +33 -0
  218. package/src/contracts/release_credits/release_credits.ts +156 -0
  219. package/src/contracts/release_credits/release_party_role.ts +87 -0
  220. package/src/contracts/royalty_pool/deps/std/type_name.ts +22 -0
  221. package/src/contracts/royalty_pool/deps/sui/balance.ts +17 -0
  222. package/src/contracts/royalty_pool/deps/sui/vec_map.ts +33 -0
  223. package/src/contracts/royalty_pool/pool.ts +577 -0
  224. package/src/contracts/royalty_pool/stake.ts +317 -0
  225. package/src/contracts/utils/index.ts +229 -0
  226. package/src/contracts.ts +30 -0
  227. package/src/cover.ts +136 -0
  228. package/src/credits.ts +645 -0
  229. package/src/execute.ts +141 -0
  230. package/src/extensions/royalty-pool.ts +85 -0
  231. package/src/index.ts +17 -0
  232. package/src/internal.ts +85 -0
  233. package/src/parsers.ts +80 -0
  234. package/src/queries.ts +478 -0
  235. package/src/schemas.ts +96 -0
  236. package/src/transactions.ts +290 -0
  237. package/src/types.ts +244 -0
  238. package/src/view.ts +59 -0
@@ -0,0 +1,380 @@
1
+ // Copyright (c) Miso Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { graphql } from "@mysten/sui/graphql/schema";
4
+ import { deriveObjectID } from "@mysten/sui/utils";
5
+ import { Composition as CompositionBcs } from "./contracts/miso/composition.js";
6
+ import { Deal as DealBcs } from "./contracts/miso/deal.js";
7
+ import { Recording as RecordingBcs } from "./contracts/miso/recording.js";
8
+ import { Release as ReleaseBcs } from "./contracts/miso/release.js";
9
+ import { mapBps, mapComposition, mapRecording, mapRelease } from "./internal.js";
10
+ // ============================================================================
11
+ // Helpers
12
+ // ============================================================================
13
+ /**
14
+ * Extracts the type parameter `T` from `package::module::Type<T>`. For multi-
15
+ * parameter types this returns everything between the outer angle brackets —
16
+ * use {@link extractTypeParams2} to split two top-level parameters.
17
+ */
18
+ export function extractTypeParam(objectType) {
19
+ const match = objectType.match(/<(.+)>$/);
20
+ if (!match?.[1])
21
+ throw new Error(`Could not extract type parameter from: ${objectType}`);
22
+ return match[1];
23
+ }
24
+ /** Splits the two top-level type parameters of `pkg::mod::Type<A, B>`. */
25
+ export function extractTypeParams2(objectType) {
26
+ const inner = extractTypeParam(objectType);
27
+ let depth = 0;
28
+ for (let i = 0; i < inner.length; i++) {
29
+ const ch = inner[i];
30
+ if (ch === "<")
31
+ depth++;
32
+ else if (ch === ">")
33
+ depth--;
34
+ else if (ch === "," && depth === 0)
35
+ return [inner.slice(0, i).trim(), inner.slice(i + 1).trim()];
36
+ }
37
+ throw new Error(`Expected two type parameters in: ${objectType}`);
38
+ }
39
+ /**
40
+ * True when `e` is a "this object does not exist" error from any of the Sui
41
+ * client transports, so null-returning readers can distinguish absence from
42
+ * transport failure. Matches, in order of preference:
43
+ *
44
+ * 1. Structured `ObjectError.code` values thrown by the JSON-RPC core client
45
+ * (`notExists`, `deleted`, `dynamicFieldNotFound`) and the GraphQL core
46
+ * client (`notFound`). The class itself is not exported by `@mysten/sui`,
47
+ * so we duck-type on `code`.
48
+ * 2. The message shapes those clients (and the gRPC core client, which wraps
49
+ * the server's per-object status message in a plain `Error`) produce:
50
+ * "Object 0x… does not exist" / "Object 0x… not found" / "Object 0x… has
51
+ * been deleted" / "Dynamic field not found for object 0x…" / "No object
52
+ * found for id 0x…".
53
+ *
54
+ * Transport/protocol errors must NOT match: every message pattern requires
55
+ * object-ish context ("object" / "dynamic field"), so e.g. a JSON-RPC
56
+ * "Method not found" or a gRPC "peer not found" is never treated as a missing
57
+ * object and propagates to the caller.
58
+ */
59
+ export function isNotFound(e) {
60
+ if (typeof e === "object" && e !== null && "code" in e) {
61
+ const code = e.code;
62
+ if (code === "notExists" || code === "deleted" || code === "dynamicFieldNotFound" || code === "notFound") {
63
+ return true;
64
+ }
65
+ }
66
+ const msg = e instanceof Error ? e.message : String(e);
67
+ return (/\bobject\b[\s\S]*\b(?:not\s?found|does not exist|has been deleted)\b/i.test(msg) ||
68
+ /\bdynamic field\b[\s\S]*\bnot\s?found\b/i.test(msg) ||
69
+ /\bno object\b/i.test(msg));
70
+ }
71
+ /** Key bytes for Move unit structs (single `0x00` for `dummy_field: bool = false`). */
72
+ const UNIT_STRUCT_KEY_BYTES = new Uint8Array([0x00]);
73
+ /** Fetches one object's BCS content bytes (or null if absent). */
74
+ async function getContent(client, objectId) {
75
+ const { object } = await client.core.getObject({ objectId, include: { content: true } });
76
+ return object.content ?? null;
77
+ }
78
+ // ============================================================================
79
+ // GraphQL discovery queries
80
+ // ============================================================================
81
+ /** Object addresses matching a fully-qualified type. */
82
+ const AddressesByTypeQuery = graphql(`
83
+ query AddressesByType($type: String!) {
84
+ objects(filter: { type: $type }) {
85
+ nodes { address }
86
+ }
87
+ }
88
+ `);
89
+ /**
90
+ * Object addresses AND their instantiated types, for a type filter.
91
+ *
92
+ * Needed where the filter cannot be fully qualified: a type filter must supply
93
+ * either ALL of a type's parameters or none, so a two-parameter type that is
94
+ * only known by its first parameter (`Recording<RecordingShare, ?>`) has to be
95
+ * filtered by bare type name and disambiguated client-side on the returned
96
+ * `repr`.
97
+ */
98
+ const AddressesAndTypesByTypeQuery = graphql(`
99
+ query AddressesAndTypesByType($type: String!) {
100
+ objects(filter: { type: $type }) {
101
+ nodes { address asMoveObject { contents { type { repr } } } }
102
+ }
103
+ }
104
+ `);
105
+ // ============================================================================
106
+ // Composition
107
+ // ============================================================================
108
+ /** Fetches multiple compositions by ID in one Core request. */
109
+ export async function getCompositionsByIds(client, compositionIds) {
110
+ if (compositionIds.length === 0)
111
+ return {};
112
+ const { objects } = await client.core.getObjects({ objectIds: compositionIds, include: { content: true } });
113
+ const out = {};
114
+ for (const obj of objects) {
115
+ if (obj instanceof Error || !obj.content)
116
+ continue;
117
+ out[obj.objectId] = mapComposition(obj.objectId, CompositionBcs.parse(obj.content));
118
+ }
119
+ return out;
120
+ }
121
+ /** Fetches a composition by its object ID. */
122
+ export async function getCompositionById(client, compositionId) {
123
+ const content = await getContent(client, compositionId);
124
+ if (!content)
125
+ throw new Error(`Composition not found: ${compositionId}`);
126
+ return mapComposition(compositionId, CompositionBcs.parse(content));
127
+ }
128
+ /** Extracts the share type `T` from a `Composition<T>` object. */
129
+ export async function getCompositionShareType(client, compositionId) {
130
+ const { object } = await client.core.getObject({ objectId: compositionId });
131
+ return extractTypeParam(object.type);
132
+ }
133
+ /** Fetches a composition by its share type (GraphQL discovery + Core read). */
134
+ export async function getCompositionByShareType(client, graphqlClient, shareType, misoPackageId) {
135
+ const type = `${misoPackageId}::composition::Composition<${shareType}>`;
136
+ const address = await firstAddressOfType(graphqlClient, type);
137
+ if (!address)
138
+ throw new Error(`Composition not found for share type: ${shareType}`);
139
+ return getCompositionById(client, address);
140
+ }
141
+ export async function getCompositionAdminCapById(client, adminCapId) {
142
+ const { object } = await client.core.getObject({ objectId: adminCapId });
143
+ return { id: adminCapId, shareType: extractTypeParam(object.type) };
144
+ }
145
+ /**
146
+ * Composition admin caps owned by `owner`.
147
+ *
148
+ * Core API (no GraphQL): `listOwnedObjects` takes a type filter and returns each
149
+ * object's instantiated `type`, so the share type is read straight off
150
+ * `CompositionAdminCap<CompositionShare>` with no second round-trip.
151
+ */
152
+ export async function getOwnedCompositionAdminCaps(client, owner, misoPackageId) {
153
+ const capType = `${misoPackageId}::composition::CompositionAdminCap`;
154
+ const { objects } = await client.core.listOwnedObjects({ owner, type: capType });
155
+ const caps = [];
156
+ for (const obj of objects) {
157
+ const match = obj.type?.match(/<(.+)>$/);
158
+ if (match?.[1])
159
+ caps.push({ id: obj.objectId, shareType: match[1] });
160
+ }
161
+ return caps;
162
+ }
163
+ export function deriveCompositionAdminCapId(compositionId, misoPackageId) {
164
+ return deriveObjectID(compositionId, `${misoPackageId}::composition::CompositionAdminCapKey`, UNIT_STRUCT_KEY_BYTES);
165
+ }
166
+ // ============================================================================
167
+ // Recording
168
+ // ============================================================================
169
+ export async function getRecordingsByIds(client, recordingIds) {
170
+ if (recordingIds.length === 0)
171
+ return {};
172
+ const { objects } = await client.core.getObjects({ objectIds: recordingIds, include: { content: true } });
173
+ const out = {};
174
+ for (const obj of objects) {
175
+ if (obj instanceof Error || !obj.content)
176
+ continue;
177
+ out[obj.objectId] = mapRecording(obj.objectId, RecordingBcs.parse(obj.content));
178
+ }
179
+ return out;
180
+ }
181
+ export async function getRecordingById(client, recordingId) {
182
+ const content = await getContent(client, recordingId);
183
+ if (!content)
184
+ throw new Error(`Recording not found: ${recordingId}`);
185
+ return mapRecording(recordingId, RecordingBcs.parse(content));
186
+ }
187
+ /**
188
+ * The recording's OWN share type (`RecordingShare`). `Recording` is generic over
189
+ * two phantoms — `Recording<RecordingShare, CompositionShare>` — so this splits
190
+ * them and returns the first; use {@link getRecordingShareTypes} when the
191
+ * parent composition's share type is needed too.
192
+ */
193
+ export async function getRecordingShareType(client, recordingId) {
194
+ const [recordingShareType] = await getRecordingShareTypes(client, recordingId);
195
+ return recordingShareType;
196
+ }
197
+ /**
198
+ * Both of a recording's share types, as `[RecordingShare, CompositionShare]`.
199
+ * Most builders need the pair — `deal::new`, `track::new`, `recording::publish`
200
+ * and the recording credit/pool extensions are all generic over both, in this
201
+ * order.
202
+ */
203
+ export async function getRecordingShareTypes(client, recordingId) {
204
+ const { object } = await client.core.getObject({ objectId: recordingId });
205
+ return extractTypeParams2(object.type);
206
+ }
207
+ export async function getRecordingByShareType(client, graphqlClient, shareType, misoPackageId) {
208
+ const address = await addressOfRecordingWithShareType(graphqlClient, misoPackageId, shareType);
209
+ if (!address)
210
+ throw new Error(`Recording not found for share type: ${shareType}`);
211
+ return getRecordingById(client, address);
212
+ }
213
+ export async function getRecordingAdminCapById(client, adminCapId) {
214
+ const { object } = await client.core.getObject({ objectId: adminCapId });
215
+ return { id: adminCapId, shareType: extractTypeParam(object.type) };
216
+ }
217
+ /**
218
+ * Recording admin caps owned by `owner`.
219
+ *
220
+ * Core API (no GraphQL), same shape as {@link getOwnedCompositionAdminCaps}.
221
+ * Note `RecordingAdminCap<phantom RecordingShare>` is deliberately single-param,
222
+ * so this yields only the recording's own share type — its parent composition's
223
+ * share type is not recoverable from the cap alone.
224
+ */
225
+ export async function getOwnedRecordingAdminCaps(client, owner, misoPackageId) {
226
+ const capType = `${misoPackageId}::recording::RecordingAdminCap`;
227
+ const { objects } = await client.core.listOwnedObjects({ owner, type: capType });
228
+ const caps = [];
229
+ for (const obj of objects) {
230
+ const match = obj.type?.match(/<(.+)>$/);
231
+ if (match?.[1])
232
+ caps.push({ id: obj.objectId, shareType: match[1] });
233
+ }
234
+ return caps;
235
+ }
236
+ export function deriveRecordingAdminCapId(recordingId, misoPackageId) {
237
+ return deriveObjectID(recordingId, `${misoPackageId}::recording::RecordingAdminCapKey`, UNIT_STRUCT_KEY_BYTES);
238
+ }
239
+ // ============================================================================
240
+ // Deal
241
+ // ============================================================================
242
+ /** Fetches a deal by its object ID (share types read from the type parameters). */
243
+ export async function getDealById(client, dealId) {
244
+ const { object } = await client.core.getObject({ objectId: dealId, include: { content: true } });
245
+ if (!object.content)
246
+ throw new Error(`Deal not found: ${dealId}`);
247
+ const d = DealBcs.parse(object.content);
248
+ const [recordingShareType, compositionShareType] = extractTypeParams2(object.type);
249
+ return {
250
+ id: dealId,
251
+ releaseId: d.release_id,
252
+ trackSplitBps: mapBps(d.track_split_bps),
253
+ recordingShareType,
254
+ compositionShareType,
255
+ };
256
+ }
257
+ // ============================================================================
258
+ // Release
259
+ // ============================================================================
260
+ export async function getReleasesByIds(client, releaseIds) {
261
+ if (releaseIds.length === 0)
262
+ return {};
263
+ const { objects } = await client.core.getObjects({ objectIds: releaseIds, include: { content: true } });
264
+ const out = {};
265
+ for (const obj of objects) {
266
+ if (obj instanceof Error || !obj.content)
267
+ continue;
268
+ out[obj.objectId] = mapRelease(obj.objectId, ReleaseBcs.parse(obj.content));
269
+ }
270
+ return out;
271
+ }
272
+ export async function getReleaseById(client, releaseId) {
273
+ const content = await getContent(client, releaseId);
274
+ if (!content)
275
+ throw new Error(`Release not found: ${releaseId}`);
276
+ return mapRelease(releaseId, ReleaseBcs.parse(content));
277
+ }
278
+ export async function getReleaseRegistry(client, misoPackageId) {
279
+ const address = await firstAddressOfType(client, `${misoPackageId}::release::ReleaseRegistry`);
280
+ if (!address)
281
+ throw new Error("ReleaseRegistry not found");
282
+ return address;
283
+ }
284
+ export async function getReleaseAdminCapById(client, adminCapId) {
285
+ const { object } = await client.core.getObject({ objectId: adminCapId, include: { json: true } });
286
+ const json = object.json;
287
+ if (!json?.release_id)
288
+ throw new Error(`ReleaseAdminCap not found: ${adminCapId}`);
289
+ return { id: adminCapId, releaseId: json.release_id };
290
+ }
291
+ export async function getOwnedReleaseAdminCaps(client, owner, misoPackageId) {
292
+ const capType = `${misoPackageId}::release::ReleaseAdminCap`;
293
+ const { objects } = await client.core.listOwnedObjects({ owner, type: capType });
294
+ if (objects.length === 0)
295
+ return [];
296
+ const { objects: details } = await client.core.getObjects({
297
+ objectIds: objects.map((o) => o.objectId),
298
+ include: { json: true },
299
+ });
300
+ const caps = [];
301
+ for (const obj of details) {
302
+ if (obj instanceof Error)
303
+ continue;
304
+ const json = obj.json;
305
+ if (json?.release_id)
306
+ caps.push({ id: obj.objectId, releaseId: json.release_id });
307
+ }
308
+ return caps;
309
+ }
310
+ export function deriveReleaseAdminCapId(releaseId, misoPackageId) {
311
+ return deriveObjectID(releaseId, `${misoPackageId}::release::ReleaseAdminCapKey`, UNIT_STRUCT_KEY_BYTES);
312
+ }
313
+ // ============================================================================
314
+ // Share Currency
315
+ // ============================================================================
316
+ /** Extracts the share type `T` from a `Currency<T>` object. */
317
+ export async function getShareCurrencyType(client, shareCurrencyId) {
318
+ const { object } = await client.core.getObject({ objectId: shareCurrencyId });
319
+ return extractTypeParam(object.type);
320
+ }
321
+ /**
322
+ * Finds the `TreasuryCap<ShareType>` owned by `owner`. One Core API call.
323
+ *
324
+ * Takes the share TYPE, not the `Currency` object id, because callers almost
325
+ * always have it already — it is {@link ShareCurrencyBinding.shareType},
326
+ * threaded through every builder. Taking the object id instead would force a
327
+ * `getObject` purely to read the type parameter back off the tag, a round trip
328
+ * the caller already paid for. If you genuinely hold only the currency id,
329
+ * compose the two:
330
+ *
331
+ * ```ts
332
+ * const shareType = await getShareCurrencyType(client, shareCurrencyId);
333
+ * const capId = await getShareCurrencyTreasuryCap(client, shareType, owner);
334
+ * ```
335
+ */
336
+ export async function getShareCurrencyTreasuryCap(client, shareType, owner) {
337
+ const { objects } = await client.core.listOwnedObjects({
338
+ owner,
339
+ type: `0x2::coin::TreasuryCap<${shareType}>`,
340
+ });
341
+ if (objects.length === 0) {
342
+ throw new Error(`No TreasuryCap found for ${shareType} owned by ${owner}`);
343
+ }
344
+ return objects[0].objectId;
345
+ }
346
+ // ============================================================================
347
+ // Private
348
+ // ============================================================================
349
+ /** Returns the first object address of a fully-qualified type, or null. */
350
+ async function firstAddressOfType(client, type) {
351
+ const result = await client.query({ query: AddressesByTypeQuery, variables: { type } });
352
+ return result.data?.objects?.nodes?.[0]?.address ?? null;
353
+ }
354
+ /**
355
+ * Address of the `Recording` whose FIRST type parameter is `shareType`, or null.
356
+ *
357
+ * `Recording<RecordingShare, CompositionShare>` takes two parameters and a type
358
+ * filter must supply all of them or none, so filtering by
359
+ * `Recording<${shareType}>` matches nothing. Callers generally know only the
360
+ * recording's own share type — `RecordingAdminCap<phantom RecordingShare>` is
361
+ * deliberately single-param — so this filters by bare type name and matches the
362
+ * first parameter client-side. A recording's share currency is unique to it, so
363
+ * the match is unambiguous.
364
+ */
365
+ async function addressOfRecordingWithShareType(client, misoPackageId, shareType) {
366
+ const result = await client.query({
367
+ query: AddressesAndTypesByTypeQuery,
368
+ variables: { type: `${misoPackageId}::recording::Recording` },
369
+ });
370
+ for (const node of result.data?.objects?.nodes ?? []) {
371
+ const repr = node?.asMoveObject?.contents?.type?.repr;
372
+ if (!repr || !node.address)
373
+ continue;
374
+ const [recordingShareType] = extractTypeParams2(repr);
375
+ if (recordingShareType === shareType)
376
+ return node.address;
377
+ }
378
+ return null;
379
+ }
380
+ //# sourceMappingURL=queries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queries.js","sourceRoot":"","sources":["../src/queries.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,sCAAsC;AAqBtC,OAAO,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,SAAS,IAAI,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAWjF,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAkB;IACjD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,UAAU,EAAE,CAAC,CAAC;IACzF,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,MAAM,KAAK,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,EAAE,KAAK,GAAG;YAAE,KAAK,EAAE,CAAC;aACnB,IAAI,EAAE,KAAK,GAAG;YAAE,KAAK,EAAE,CAAC;aACxB,IAAI,EAAE,KAAK,GAAG,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACnG,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,oCAAoC,UAAU,EAAE,CAAC,CAAC;AACpE,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,UAAU,CAAC,CAAU;IACnC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QACvD,MAAM,IAAI,GAAI,CAAuB,CAAC,IAAI,CAAC;QAC3C,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,sBAAsB,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACzG,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACvD,OAAO,CACL,uEAAuE,CAAC,IAAI,CAAC,GAAG,CAAC;QACjF,0CAA0C,CAAC,IAAI,CAAC,GAAG,CAAC;QACpD,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAC3B,CAAC;AACJ,CAAC;AAED,uFAAuF;AACvF,MAAM,qBAAqB,GAAG,IAAI,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAErD,kEAAkE;AAClE,KAAK,UAAU,UAAU,CAAC,MAAyB,EAAE,QAAgB;IACnE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACzF,OAAO,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC;AAChC,CAAC;AAED,+EAA+E;AAC/E,4BAA4B;AAC5B,+EAA+E;AAE/E,wDAAwD;AACxD,MAAM,oBAAoB,GAAG,OAAO,CAAC;;;;;;CAMpC,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,MAAM,4BAA4B,GAAG,OAAO,CAAC;;;;;;CAM5C,CAAC,CAAC;AAEH,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E,+DAA+D;AAC/D,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAyB,EACzB,cAAwB;IAExB,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC3C,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IAC5G,MAAM,GAAG,GAAgC,EAAE,CAAC;IAC5C,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,GAAG,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,SAAS;QACnD,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,8CAA8C;AAC9C,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAyB,EAAE,aAAqB;IACvF,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACxD,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,aAAa,EAAE,CAAC,CAAC;IACzE,OAAO,cAAc,CAAC,aAAa,EAAE,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,kEAAkE;AAClE,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,MAAyB,EAAE,aAAqB;IAC5F,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAC;IAC5E,OAAO,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,MAAyB,EACzB,aAA+B,EAC/B,SAAiB,EACjB,aAAqB;IAErB,MAAM,IAAI,GAAG,GAAG,aAAa,8BAA8B,SAAS,GAAG,CAAC;IACxE,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IAC9D,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,SAAS,EAAE,CAAC,CAAC;IACpF,OAAO,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,MAAyB,EACzB,UAAkB;IAElB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;IACzE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AACtE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,MAAyB,EACzB,KAAa,EACb,aAAqB;IAErB,MAAM,OAAO,GAAG,GAAG,aAAa,oCAAoC,CAAC;IACrE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACjF,MAAM,IAAI,GAA0B,EAAE,CAAC;IACvC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,aAAqB,EAAE,aAAqB;IACtF,OAAO,cAAc,CAAC,aAAa,EAAE,GAAG,aAAa,uCAAuC,EAAE,qBAAqB,CAAC,CAAC;AACvH,CAAC;AAED,+EAA+E;AAC/E,YAAY;AACZ,+EAA+E;AAE/E,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAyB,EACzB,YAAsB;IAEtB,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACzC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IAC1G,MAAM,GAAG,GAA8B,EAAE,CAAC;IAC1C,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,GAAG,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,SAAS;QACnD,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAyB,EAAE,WAAmB;IACnF,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACtD,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,WAAW,EAAE,CAAC,CAAC;IACrE,OAAO,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAChE,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,MAAyB,EAAE,WAAmB;IACxF,MAAM,CAAC,kBAAkB,CAAC,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC/E,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAAyB,EACzB,WAAmB;IAEnB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,CAAC;IAC1E,OAAO,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAyB,EACzB,aAA+B,EAC/B,SAAiB,EACjB,aAAqB;IAErB,MAAM,OAAO,GAAG,MAAM,+BAA+B,CAAC,aAAa,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;IAC/F,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,SAAS,EAAE,CAAC,CAAC;IAClF,OAAO,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,MAAyB,EACzB,UAAkB;IAElB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,CAAC;IACzE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AACtE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,MAAyB,EACzB,KAAa,EACb,aAAqB;IAErB,MAAM,OAAO,GAAG,GAAG,aAAa,gCAAgC,CAAC;IACjE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACjF,MAAM,IAAI,GAAwB,EAAE,CAAC;IACrC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,WAAmB,EAAE,aAAqB;IAClF,OAAO,cAAc,CAAC,WAAW,EAAE,GAAG,aAAa,mCAAmC,EAAE,qBAAqB,CAAC,CAAC;AACjH,CAAC;AAED,+EAA+E;AAC/E,OAAO;AACP,+EAA+E;AAE/E,mFAAmF;AACnF,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAyB,EAAE,MAAc;IACzE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACjG,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;IAClE,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnF,OAAO;QACL,EAAE,EAAE,MAAM;QACV,SAAS,EAAE,CAAC,CAAC,UAAU;QACvB,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC;QACxC,kBAAkB;QAClB,oBAAoB;KACrB,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAyB,EACzB,UAAoB;IAEpB,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACxG,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,GAAG,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,SAAS;QACnD,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAyB,EAAE,SAAiB;IAC/E,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACpD,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC;IACjE,OAAO,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAwB,EAAE,aAAqB;IACtF,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,MAAM,EAAE,GAAG,aAAa,4BAA4B,CAAC,CAAC;IAC/F,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC3D,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAAyB,EACzB,UAAkB;IAElB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IAClG,MAAM,IAAI,GAAG,MAAM,CAAC,IAAqC,CAAC;IAC1D,IAAI,CAAC,IAAI,EAAE,UAAU;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,UAAU,EAAE,CAAC,CAAC;IACnF,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,MAAyB,EACzB,KAAa,EACb,aAAqB;IAErB,MAAM,OAAO,GAAG,GAAG,aAAa,4BAA4B,CAAC;IAC7D,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IACjF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACpC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;QACxD,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QACzC,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;KACxB,CAAC,CAAC;IACH,MAAM,IAAI,GAAsB,EAAE,CAAC;IACnC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,GAAG,YAAY,KAAK;YAAE,SAAS;QACnC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAqC,CAAC;QACvD,IAAI,IAAI,EAAE,UAAU;YAAE,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,SAAiB,EAAE,aAAqB;IAC9E,OAAO,cAAc,CAAC,SAAS,EAAE,GAAG,aAAa,+BAA+B,EAAE,qBAAqB,CAAC,CAAC;AAC3G,CAAC;AAED,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,+DAA+D;AAC/D,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAAyB,EAAE,eAAuB;IAC3F,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC;IAC9E,OAAO,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,MAAyB,EACzB,SAAiB,EACjB,KAAa;IAEb,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;QACrD,KAAK;QACL,IAAI,EAAE,0BAA0B,SAAS,GAAG;KAC7C,CAAC,CAAC;IACH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,4BAA4B,SAAS,aAAa,KAAK,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,OAAO,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC;AAC9B,CAAC;AAED,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E,2EAA2E;AAC3E,KAAK,UAAU,kBAAkB,CAAC,MAAwB,EAAE,IAAY;IACtE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IACxF,OAAO,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;GAUG;AACH,KAAK,UAAU,+BAA+B,CAC5C,MAAwB,EACxB,aAAqB,EACrB,SAAiB;IAEjB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;QAChC,KAAK,EAAE,4BAA4B;QACnC,SAAS,EAAE,EAAE,IAAI,EAAE,GAAG,aAAa,wBAAwB,EAAE;KAC9D,CAAC,CAAC;IACH,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC;QACrD,MAAM,IAAI,GAAG,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC;QACtD,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,SAAS;QACrC,MAAM,CAAC,kBAAkB,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,kBAAkB,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC;IAC5D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,99 @@
1
+ import { z } from "zod";
2
+ export declare const CompositionStateSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3
+ type: z.ZodLiteral<"Initialized">;
4
+ }, z.core.$strip>, z.ZodObject<{
5
+ type: z.ZodLiteral<"Published">;
6
+ timestampMs: z.ZodNumber;
7
+ }, z.core.$strip>], "type">;
8
+ export declare const CompositionSchema: z.ZodObject<{
9
+ id: z.ZodString;
10
+ state: z.ZodDiscriminatedUnion<[z.ZodObject<{
11
+ type: z.ZodLiteral<"Initialized">;
12
+ }, z.core.$strip>, z.ZodObject<{
13
+ type: z.ZodLiteral<"Published">;
14
+ timestampMs: z.ZodNumber;
15
+ }, z.core.$strip>], "type">;
16
+ title: z.ZodString;
17
+ royaltyRate: z.ZodObject<{
18
+ value: z.ZodNumber;
19
+ }, z.core.$strip>;
20
+ }, z.core.$strip>;
21
+ export declare const CompositionPublishedEventSchema: z.ZodObject<{
22
+ compositionId: z.ZodString;
23
+ }, z.core.$strip>;
24
+ export declare const CompositionRoyaltySetEventSchema: z.ZodObject<{
25
+ royaltyRateBps: z.ZodNumber;
26
+ }, z.core.$strip>;
27
+ export declare const RecordingStateSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
28
+ type: z.ZodLiteral<"Initialized">;
29
+ }, z.core.$strip>, z.ZodObject<{
30
+ type: z.ZodLiteral<"Published">;
31
+ timestampMs: z.ZodNumber;
32
+ }, z.core.$strip>], "type">;
33
+ export declare const RecordingSchema: z.ZodObject<{
34
+ id: z.ZodString;
35
+ state: z.ZodDiscriminatedUnion<[z.ZodObject<{
36
+ type: z.ZodLiteral<"Initialized">;
37
+ }, z.core.$strip>, z.ZodObject<{
38
+ type: z.ZodLiteral<"Published">;
39
+ timestampMs: z.ZodNumber;
40
+ }, z.core.$strip>], "type">;
41
+ }, z.core.$strip>;
42
+ export declare const RecordingPublishedEventSchema: z.ZodObject<{
43
+ recordingId: z.ZodString;
44
+ }, z.core.$strip>;
45
+ export declare const TrackSchema: z.ZodObject<{
46
+ state: z.ZodEnum<{
47
+ Unassigned: "Unassigned";
48
+ Assigned: "Assigned";
49
+ }>;
50
+ recordingId: z.ZodString;
51
+ splitBps: z.ZodObject<{
52
+ value: z.ZodNumber;
53
+ }, z.core.$strip>;
54
+ }, z.core.$strip>;
55
+ export declare const ReleaseStateSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
56
+ type: z.ZodLiteral<"Initialized">;
57
+ }, z.core.$strip>, z.ZodObject<{
58
+ type: z.ZodLiteral<"Published">;
59
+ timestampMs: z.ZodNumber;
60
+ }, z.core.$strip>], "type">;
61
+ export declare const ReleaseSchema: z.ZodObject<{
62
+ id: z.ZodString;
63
+ state: z.ZodDiscriminatedUnion<[z.ZodObject<{
64
+ type: z.ZodLiteral<"Initialized">;
65
+ }, z.core.$strip>, z.ZodObject<{
66
+ type: z.ZodLiteral<"Published">;
67
+ timestampMs: z.ZodNumber;
68
+ }, z.core.$strip>], "type">;
69
+ title: z.ZodString;
70
+ tracks: z.ZodArray<z.ZodObject<{
71
+ state: z.ZodEnum<{
72
+ Unassigned: "Unassigned";
73
+ Assigned: "Assigned";
74
+ }>;
75
+ recordingId: z.ZodString;
76
+ splitBps: z.ZodObject<{
77
+ value: z.ZodNumber;
78
+ }, z.core.$strip>;
79
+ }, z.core.$strip>>;
80
+ }, z.core.$strip>;
81
+ export declare const ReleasePublishedEventSchema: z.ZodObject<{
82
+ releaseId: z.ZodString;
83
+ }, z.core.$strip>;
84
+ export declare const DealCreatedEventSchema: z.ZodObject<{
85
+ dealId: z.ZodString;
86
+ releaseId: z.ZodString;
87
+ trackSplitBps: z.ZodObject<{
88
+ value: z.ZodNumber;
89
+ }, z.core.$strip>;
90
+ }, z.core.$strip>;
91
+ export declare const DealAcceptedEventSchema: z.ZodObject<{
92
+ dealId: z.ZodString;
93
+ releaseId: z.ZodString;
94
+ }, z.core.$strip>;
95
+ export declare const DealRejectedEventSchema: z.ZodObject<{
96
+ dealId: z.ZodString;
97
+ releaseId: z.ZodString;
98
+ }, z.core.$strip>;
99
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB,eAAO,MAAM,sBAAsB;;;;;2BAGjC,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;iBAK5B,CAAC;AAEH,eAAO,MAAM,+BAA+B;;iBAE1C,CAAC;AAEH,eAAO,MAAM,gCAAgC;;iBAE3C,CAAC;AAMH,eAAO,MAAM,oBAAoB;;;;;2BAG/B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;iBAG1B,CAAC;AAEH,eAAO,MAAM,6BAA6B;;iBAExC,CAAC;AAMH,eAAO,MAAM,WAAW;;;;;;;;;iBAItB,CAAC;AAMH,eAAO,MAAM,kBAAkB;;;;;2BAG7B,CAAC;AAEH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;iBAKxB,CAAC;AAEH,eAAO,MAAM,2BAA2B;;iBAEtC,CAAC;AAMH,eAAO,MAAM,sBAAsB;;;;;;iBAIjC,CAAC;AAOH,eAAO,MAAM,uBAAuB;;;iBAAoC,CAAC;AAEzE,eAAO,MAAM,uBAAuB;;;iBAAoC,CAAC"}
@@ -0,0 +1,76 @@
1
+ // Copyright (c) Miso Labs, Inc.
2
+ // SPDX-License-Identifier: Apache-2.0
3
+ import { z } from "zod";
4
+ import { isValidSuiObjectId } from "@mysten/sui/utils";
5
+ // ============================================================================
6
+ // Composition
7
+ // ============================================================================
8
+ export const CompositionStateSchema = z.discriminatedUnion("type", [
9
+ z.object({ type: z.literal("Initialized") }),
10
+ z.object({ type: z.literal("Published"), timestampMs: z.number().int().min(0) }),
11
+ ]);
12
+ export const CompositionSchema = z.object({
13
+ id: z.string().refine(isValidSuiObjectId, "Invalid Sui object ID"),
14
+ state: CompositionStateSchema,
15
+ title: z.string().min(1, "Composition title cannot be empty"),
16
+ royaltyRate: z.object({ value: z.number().int().min(0).max(2000) }),
17
+ });
18
+ export const CompositionPublishedEventSchema = z.object({
19
+ compositionId: z.string().refine(isValidSuiObjectId, "Invalid Sui object ID"),
20
+ });
21
+ export const CompositionRoyaltySetEventSchema = z.object({
22
+ royaltyRateBps: z.number().int().min(0).max(2000),
23
+ });
24
+ // ============================================================================
25
+ // Recording
26
+ // ============================================================================
27
+ export const RecordingStateSchema = z.discriminatedUnion("type", [
28
+ z.object({ type: z.literal("Initialized") }),
29
+ z.object({ type: z.literal("Published"), timestampMs: z.number().int().min(0) }),
30
+ ]);
31
+ export const RecordingSchema = z.object({
32
+ id: z.string().refine(isValidSuiObjectId, "Invalid Sui object ID"),
33
+ state: RecordingStateSchema,
34
+ });
35
+ export const RecordingPublishedEventSchema = z.object({
36
+ recordingId: z.string().refine(isValidSuiObjectId, "Invalid Sui object ID"),
37
+ });
38
+ // ============================================================================
39
+ // Track
40
+ // ============================================================================
41
+ export const TrackSchema = z.object({
42
+ state: z.enum(["Unassigned", "Assigned"]),
43
+ recordingId: z.string().refine(isValidSuiObjectId, "Invalid Sui object ID"),
44
+ splitBps: z.object({ value: z.number().int().min(0).max(10000) }),
45
+ });
46
+ // ============================================================================
47
+ // Release
48
+ // ============================================================================
49
+ export const ReleaseStateSchema = z.discriminatedUnion("type", [
50
+ z.object({ type: z.literal("Initialized") }),
51
+ z.object({ type: z.literal("Published"), timestampMs: z.number().int().min(0) }),
52
+ ]);
53
+ export const ReleaseSchema = z.object({
54
+ id: z.string().refine(isValidSuiObjectId, "Invalid Sui object ID"),
55
+ state: ReleaseStateSchema,
56
+ title: z.string().min(1, "Release title cannot be empty"),
57
+ tracks: z.array(TrackSchema).max(255, "Release cannot have more than 255 tracks"),
58
+ });
59
+ export const ReleasePublishedEventSchema = z.object({
60
+ releaseId: z.string().refine(isValidSuiObjectId, "Invalid Sui object ID"),
61
+ });
62
+ // ============================================================================
63
+ // Deal Events
64
+ // ============================================================================
65
+ export const DealCreatedEventSchema = z.object({
66
+ dealId: z.string().refine(isValidSuiObjectId, "Invalid Sui object ID"),
67
+ releaseId: z.string().refine(isValidSuiObjectId, "Invalid Sui object ID"),
68
+ trackSplitBps: z.object({ value: z.number().int().min(0).max(10000) }),
69
+ });
70
+ const dealLifecycleEventShape = {
71
+ dealId: z.string().refine(isValidSuiObjectId, "Invalid Sui object ID"),
72
+ releaseId: z.string().refine(isValidSuiObjectId, "Invalid Sui object ID"),
73
+ };
74
+ export const DealAcceptedEventSchema = z.object(dealLifecycleEventShape);
75
+ export const DealRejectedEventSchema = z.object(dealLifecycleEventShape);
76
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}