@medialane/sdk 0.198.0 → 0.200.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 (92) hide show
  1. package/README.md +86 -41
  2. package/dist/chains-CmwjZVU7.d.cts +85 -0
  3. package/dist/chains-CmwjZVU7.d.ts +85 -0
  4. package/dist/chunk-3HPMEDYH.cjs +967 -0
  5. package/dist/chunk-3HPMEDYH.cjs.map +1 -0
  6. package/dist/{chunk-3ME5YKTW.js → chunk-5KY6P434.js} +2 -2
  7. package/dist/chunk-5KY6P434.js.map +1 -0
  8. package/dist/chunk-F7W6IWTL.js +660 -0
  9. package/dist/chunk-F7W6IWTL.js.map +1 -0
  10. package/dist/chunk-GIBIHGSV.js +916 -0
  11. package/dist/chunk-GIBIHGSV.js.map +1 -0
  12. package/dist/chunk-GV4A2WNO.js +444 -0
  13. package/dist/chunk-GV4A2WNO.js.map +1 -0
  14. package/dist/{chunk-7EYJC5CB.cjs → chunk-H2NJB3AK.cjs} +2 -2
  15. package/dist/chunk-H2NJB3AK.cjs.map +1 -0
  16. package/dist/chunk-KGAGWULG.js +932 -0
  17. package/dist/chunk-KGAGWULG.js.map +1 -0
  18. package/dist/chunk-MEJ47LC3.cjs +463 -0
  19. package/dist/chunk-MEJ47LC3.cjs.map +1 -0
  20. package/dist/chunk-W76AZ5WC.cjs +376 -0
  21. package/dist/chunk-W76AZ5WC.cjs.map +1 -0
  22. package/dist/chunk-WRBXQPRL.js +323 -0
  23. package/dist/chunk-WRBXQPRL.js.map +1 -0
  24. package/dist/chunk-ZLMIHQWM.cjs +975 -0
  25. package/dist/chunk-ZLMIHQWM.cjs.map +1 -0
  26. package/dist/chunk-ZVANOWIB.cjs +688 -0
  27. package/dist/chunk-ZVANOWIB.cjs.map +1 -0
  28. package/dist/contract/index.cjs +88 -261
  29. package/dist/contract/index.cjs.map +1 -1
  30. package/dist/contract/index.d.cts +139 -4
  31. package/dist/contract/index.d.ts +139 -4
  32. package/dist/contract/index.js +4 -220
  33. package/dist/contract/index.js.map +1 -1
  34. package/dist/evm/index.cjs +3 -3
  35. package/dist/evm/index.d.cts +2 -1
  36. package/dist/evm/index.d.ts +2 -1
  37. package/dist/evm/index.js +1 -1
  38. package/dist/fetch-Cx9Pr7-B.d.cts +3 -0
  39. package/dist/fetch-Cx9Pr7-B.d.ts +3 -0
  40. package/dist/index.cjs +177 -833
  41. package/dist/index.cjs.map +1 -1
  42. package/dist/index.d.cts +54 -132
  43. package/dist/index.d.ts +54 -132
  44. package/dist/index.js +6 -659
  45. package/dist/index.js.map +1 -1
  46. package/dist/passkey-errors-B0HGcjPc.d.ts +981 -0
  47. package/dist/passkey-errors-yndCFeHv.d.cts +981 -0
  48. package/dist/provisioning-CwRkCN8D.d.cts +14 -0
  49. package/dist/provisioning-CwRkCN8D.d.ts +14 -0
  50. package/dist/{provisioning-BUYiU8Tr.d.ts → responses-D3nBY71f.d.cts} +40 -48
  51. package/dist/{provisioning-BUYiU8Tr.d.cts → responses-D3nBY71f.d.ts} +40 -48
  52. package/dist/server/index.cjs +117 -0
  53. package/dist/server/index.cjs.map +1 -0
  54. package/dist/server/index.d.cts +98 -0
  55. package/dist/server/index.d.ts +98 -0
  56. package/dist/server/index.js +4 -0
  57. package/dist/server/index.js.map +1 -0
  58. package/dist/services-B15RJBSW.d.cts +728 -0
  59. package/dist/services-BAnTJhwt.d.ts +728 -0
  60. package/dist/solana/index.cjs +2 -2
  61. package/dist/solana/index.d.cts +2 -1
  62. package/dist/solana/index.d.ts +2 -1
  63. package/dist/solana/index.js +1 -1
  64. package/dist/starknet/index.cjs +898 -1729
  65. package/dist/starknet/index.cjs.map +1 -1
  66. package/dist/starknet/index.d.cts +98 -467
  67. package/dist/starknet/index.d.ts +98 -467
  68. package/dist/starknet/index.js +704 -1680
  69. package/dist/starknet/index.js.map +1 -1
  70. package/dist/stellar/index.cjs +2 -2
  71. package/dist/stellar/index.d.cts +2 -1
  72. package/dist/stellar/index.d.ts +2 -1
  73. package/dist/stellar/index.js +1 -1
  74. package/dist/types-BW6ktwcT.d.ts +71 -0
  75. package/dist/types-BftPOVEJ.d.cts +71 -0
  76. package/dist/wallet/index.cjs +240 -0
  77. package/dist/wallet/index.cjs.map +1 -0
  78. package/dist/wallet/index.d.cts +319 -0
  79. package/dist/wallet/index.d.ts +319 -0
  80. package/dist/wallet/index.js +7 -0
  81. package/dist/wallet/index.js.map +1 -0
  82. package/package.json +13 -2
  83. package/dist/chunk-2R7XBA34.cjs +0 -1938
  84. package/dist/chunk-2R7XBA34.cjs.map +0 -1
  85. package/dist/chunk-3ME5YKTW.js.map +0 -1
  86. package/dist/chunk-6WVUUBFI.js +0 -1853
  87. package/dist/chunk-6WVUUBFI.js.map +0 -1
  88. package/dist/chunk-7EYJC5CB.cjs.map +0 -1
  89. package/dist/errors-CZm-NZK0.d.cts +0 -1754
  90. package/dist/errors-h6H6cj3Q.d.ts +0 -1754
  91. package/dist/types-DC4jNPAF.d.cts +0 -153
  92. package/dist/types-DC4jNPAF.d.ts +0 -153
@@ -0,0 +1,463 @@
1
+ 'use strict';
2
+
3
+ var chunkH2NJB3AK_cjs = require('./chunk-H2NJB3AK.cjs');
4
+ var zod = require('zod');
5
+
6
+ var FeeConfigSchema = zod.z.object({
7
+ enabled: zod.z.boolean().default(true),
8
+ fundAddress: zod.z.string().min(1).optional(),
9
+ marketplaceBps: zod.z.number().int().min(0).max(1e4).default(100),
10
+ launchpadBps: zod.z.number().int().min(0).max(1e4).default(100),
11
+ sponsorshipBps: zod.z.number().int().min(0).max(1e4).default(100)
12
+ });
13
+ function resolveFeeConfig(raw) {
14
+ const p = FeeConfigSchema.parse(raw ?? {});
15
+ return {
16
+ enabled: p.enabled,
17
+ fundAddress: p.fundAddress,
18
+ marketplaceBps: p.marketplaceBps,
19
+ launchpadBps: p.launchpadBps,
20
+ sponsorshipBps: p.sponsorshipBps
21
+ };
22
+ }
23
+ var MedialaneConfigSchema = zod.z.object({
24
+ chain: zod.z.enum(chunkH2NJB3AK_cjs.CHAINS).default(chunkH2NJB3AK_cjs.DEFAULT_CHAIN),
25
+ backendUrl: zod.z.string().url().optional(),
26
+ apiKey: zod.z.string().optional(),
27
+ marketplace721Contract: zod.z.string().optional(),
28
+ marketplace1155Contract: zod.z.string().optional(),
29
+ collection721Contract: zod.z.string().optional(),
30
+ collection1155Contract: zod.z.string().optional(),
31
+ retryOptions: zod.z.object({
32
+ maxAttempts: zod.z.number().int().min(1).max(10).optional(),
33
+ baseDelayMs: zod.z.number().int().min(0).optional(),
34
+ maxDelayMs: zod.z.number().int().min(0).optional()
35
+ }).optional(),
36
+ feeConfig: FeeConfigSchema.optional()
37
+ });
38
+ function resolveConfig(raw) {
39
+ const parsed = MedialaneConfigSchema.parse(raw);
40
+ const coords = chunkH2NJB3AK_cjs.getCoordinates(parsed.chain);
41
+ const sn = parsed.chain === "STARKNET" ? coords : {};
42
+ const marketplace721Contract = parsed.marketplace721Contract ?? sn.marketplace721;
43
+ const collection721Contract = parsed.collection721Contract ?? sn.collection721;
44
+ return {
45
+ chain: parsed.chain,
46
+ backendUrl: parsed.backendUrl,
47
+ apiKey: parsed.apiKey,
48
+ marketplace721Contract,
49
+ marketplace1155Contract: parsed.marketplace1155Contract ?? sn.marketplace1155,
50
+ collection721Contract,
51
+ collection1155Contract: parsed.collection1155Contract ?? sn.collection1155,
52
+ retryOptions: parsed.retryOptions,
53
+ feeConfig: resolveFeeConfig(parsed.feeConfig)
54
+ };
55
+ }
56
+
57
+ // src/routes.ts
58
+ var SUPPORTED_URL_CHAINS = ["STARKNET"];
59
+ function chainSlug(chain) {
60
+ return chain.toLowerCase();
61
+ }
62
+ function chainFromSlug(slug) {
63
+ const upper = slug.toUpperCase();
64
+ return SUPPORTED_URL_CHAINS.includes(upper) ? upper : null;
65
+ }
66
+ var seg = (v) => v == null ? "" : String(v);
67
+ function assetHref(chain, contract, tokenId) {
68
+ return `/asset/${chainSlug(chain)}/${seg(contract)}/${seg(tokenId)}`;
69
+ }
70
+ function collectionHref(chain, contract) {
71
+ return `/collections/${chainSlug(chain)}/${seg(contract)}`;
72
+ }
73
+ function dropHref(contract) {
74
+ return `/launchpad/drop/${seg(contract)}`;
75
+ }
76
+ function coinHref(chain, address) {
77
+ return `/coins/${chainSlug(chain)}/${seg(address)}`;
78
+ }
79
+ function profileHref(profile) {
80
+ const username = profile.username?.trim();
81
+ if (username) return `/creator/${username}`;
82
+ const address = profile.address?.trim();
83
+ return address ? `/account/${address}` : "/creators";
84
+ }
85
+
86
+ // src/services/registry.ts
87
+ var SN = chunkH2NJB3AK_cjs.getStarknetCoordinates("STARKNET");
88
+ var SERVICES = {
89
+ "mip-erc721": {
90
+ id: "mip-erc721",
91
+ displayName: "IP Collection",
92
+ description: "Tokenize intellectual property as a per-creator ERC-721 collection.",
93
+ standard: "ERC721",
94
+ provenance: "MEDIALANE",
95
+ onchain: {
96
+ STARKNET: {
97
+ factoryAddress: SN.collection721,
98
+ startBlock: SN.collection721StartBlock
99
+ }
100
+ },
101
+ uiVariant: "standard",
102
+ capabilities: ["list", "buy", "make_offer", "cancel", "transfer", "mint", "remix", "license"],
103
+ events: [
104
+ { name: "CollectionCreated", emittedBy: "factory" }
105
+ ],
106
+ metadataSchema: { licenseDefault: "CC BY-SA" }
107
+ },
108
+ "ip-erc721": {
109
+ id: "ip-erc721",
110
+ displayName: "Programmable IP",
111
+ description: "One shared ERC-721 contract any wallet can mint into.",
112
+ standard: "ERC721",
113
+ provenance: "MEDIALANE",
114
+ uiVariant: "standard",
115
+ capabilities: ["list", "buy", "make_offer", "cancel", "transfer", "mint", "remix", "license"],
116
+ metadataSchema: { licenseDefault: "CC BY-SA" }
117
+ },
118
+ "data-tokenization-erc721": {
119
+ id: "data-tokenization-erc721",
120
+ displayName: "Data Tokenization",
121
+ description: "Establish verifiable ownership of your data, with licensing terms that hold up wherever it travels.",
122
+ standard: "ERC721",
123
+ provenance: "MEDIALANE",
124
+ onchain: {
125
+ STARKNET: {
126
+ factoryAddress: SN.dataTokenization721,
127
+ startBlock: SN.dataTokenization721StartBlock
128
+ }
129
+ },
130
+ uiVariant: "standard",
131
+ capabilities: ["list", "buy", "make_offer", "cancel", "transfer", "mint", "remix", "license"],
132
+ events: [
133
+ { name: "CollectionCreated", emittedBy: "factory" }
134
+ ],
135
+ metadataSchema: { licenseDefault: "CC BY-SA" }
136
+ },
137
+ "mip-erc1155": {
138
+ id: "mip-erc1155",
139
+ displayName: "NFT Editions",
140
+ description: "Per-creator ERC-1155 collection; creator mints editions.",
141
+ standard: "ERC1155",
142
+ provenance: "MEDIALANE",
143
+ onchain: {
144
+ STARKNET: {
145
+ factoryAddress: SN.collection1155,
146
+ classHash: SN.collection1155ClassHash,
147
+ startBlock: SN.collection1155StartBlock
148
+ }
149
+ },
150
+ uiVariant: "edition",
151
+ capabilities: ["list", "buy", "make_offer", "cancel", "transfer", "mint", "remix", "license"],
152
+ events: [
153
+ { name: "CollectionDeployed", emittedBy: "factory" }
154
+ ],
155
+ metadataSchema: { licenseDefault: "CC BY-SA" }
156
+ },
157
+ "pop-protocol": {
158
+ id: "pop-protocol",
159
+ displayName: "POP Protocol",
160
+ description: "Soulbound proof-of-presence collectibles per event.",
161
+ standard: "ERC721",
162
+ provenance: "MEDIALANE",
163
+ onchain: {
164
+ STARKNET: {
165
+ factoryAddress: SN.popFactory,
166
+ classHash: SN.popCollectionClassHash
167
+ }
168
+ },
169
+ uiVariant: "pop",
170
+ capabilities: ["claim", "mint"],
171
+ events: [
172
+ { name: "CollectionCreated", emittedBy: "factory" }
173
+ ],
174
+ metadataSchema: { licenseDefault: "CC BY-SA" }
175
+ },
176
+ "certificate-emission": {
177
+ id: "certificate-emission",
178
+ displayName: "Certificate Emission",
179
+ description: "Issue a soulbound credential to a list of recipients in one run \u2014 everyone gets a wallet and their certificate.",
180
+ standard: "ERC721",
181
+ provenance: "MEDIALANE",
182
+ onchain: {
183
+ STARKNET: {
184
+ factoryAddress: SN.popFactory,
185
+ classHash: SN.popCollectionClassHash
186
+ }
187
+ },
188
+ uiVariant: "pop",
189
+ capabilities: ["mint", "airdrop"],
190
+ events: [
191
+ { name: "CollectionCreated", emittedBy: "factory" }
192
+ ],
193
+ metadataSchema: { licenseDefault: "CC BY-SA" }
194
+ },
195
+ "drop-collection": {
196
+ id: "drop-collection",
197
+ displayName: "Collection Drop",
198
+ description: "Sell an edition or a collection at a fixed price, with a sale window and an optional allowlist.",
199
+ standard: "ERC721",
200
+ provenance: "MEDIALANE",
201
+ onchain: {
202
+ STARKNET: {
203
+ factoryAddress: SN.dropFactory,
204
+ classHash: SN.dropCollectionClassHash
205
+ }
206
+ },
207
+ uiVariant: "drop",
208
+ capabilities: ["claim", "list", "buy", "make_offer", "cancel", "transfer"],
209
+ events: [
210
+ { name: "DropCreated", emittedBy: "factory" },
211
+ { name: "Claimed", emittedBy: "instance" },
212
+ { name: "Issued", emittedBy: "instance" },
213
+ { name: "AllowlistRootSet", emittedBy: "instance" }
214
+ ],
215
+ metadataSchema: { licenseDefault: "CC BY-SA" }
216
+ },
217
+ "ip-tickets": {
218
+ id: "ip-tickets",
219
+ displayName: "IP Tickets",
220
+ description: "Create verifiable on-chain tickets \u2014 mint to attendees, trade like any collection.",
221
+ standard: "ERC1155",
222
+ provenance: "MEDIALANE",
223
+ onchain: {
224
+ STARKNET: {
225
+ factoryAddress: SN.ipTicketsFactory,
226
+ classHash: SN.ipTicketCollectionClassHash
227
+ }
228
+ },
229
+ uiVariant: "ticket",
230
+ capabilities: ["mint", "redeem", "list", "buy", "make_offer", "cancel", "transfer"],
231
+ events: [
232
+ { name: "CollectionDeployed", emittedBy: "factory" },
233
+ { name: "TicketCreated", emittedBy: "instance" }
234
+ ],
235
+ metadataSchema: { licenseDefault: "CC BY-SA" }
236
+ },
237
+ "ip-ticketing": {
238
+ id: "ip-ticketing",
239
+ displayName: "IP Ticketing",
240
+ description: "Distribute verifiable on-chain tickets to a list of recipients in one run \u2014 everyone gets a wallet and their ticket.",
241
+ standard: "ERC1155",
242
+ provenance: "MEDIALANE",
243
+ onchain: {
244
+ STARKNET: {
245
+ factoryAddress: SN.ipTicketsFactory,
246
+ classHash: SN.ipTicketCollectionClassHash
247
+ }
248
+ },
249
+ uiVariant: "ticket",
250
+ capabilities: ["mint", "airdrop", "redeem", "list", "buy", "make_offer", "cancel", "transfer"],
251
+ events: [
252
+ { name: "CollectionDeployed", emittedBy: "factory" },
253
+ { name: "TicketCreated", emittedBy: "instance" }
254
+ ],
255
+ metadataSchema: { licenseDefault: "CC BY-SA" }
256
+ },
257
+ "ip-club": {
258
+ id: "ip-club",
259
+ displayName: "IP Club",
260
+ description: "Membership clubs \u2014 create tiers, mint membership cards, trade like any collection.",
261
+ standard: "ERC1155",
262
+ provenance: "MEDIALANE",
263
+ onchain: {
264
+ STARKNET: {
265
+ factoryAddress: SN.ipClubFactory,
266
+ classHash: SN.ipClubCollectionClassHash
267
+ }
268
+ },
269
+ uiVariant: "club",
270
+ capabilities: ["mint", "list", "buy", "make_offer", "cancel", "transfer"],
271
+ events: [
272
+ { name: "ClubDeployed", emittedBy: "factory" },
273
+ { name: "MembershipCreated", emittedBy: "instance" }
274
+ ],
275
+ metadataSchema: { licenseDefault: "CC BY-SA" }
276
+ },
277
+ "ip-sponsorship": {
278
+ id: "ip-sponsorship",
279
+ displayName: "IP Sponsorship",
280
+ description: "Sponsorship offers and licenses anchored to an existing Medialane asset.",
281
+ standard: "ERC721",
282
+ provenance: "MEDIALANE",
283
+ onchain: {
284
+ STARKNET: {
285
+ factoryAddress: SN.ipSponsorship,
286
+ classHash: SN.ipSponsorshipClassHash,
287
+ startBlock: SN.ipSponsorshipStartBlock
288
+ }
289
+ },
290
+ uiVariant: "standard",
291
+ capabilities: ["sponsor", "transfer"],
292
+ events: [
293
+ { name: "OfferCreated", emittedBy: "factory" },
294
+ { name: "ProposalCreated", emittedBy: "factory" },
295
+ { name: "LicenseMinted", emittedBy: "factory" }
296
+ ],
297
+ metadataSchema: { licenseDefault: "CC BY-SA" }
298
+ },
299
+ "creator-coin": {
300
+ id: "creator-coin",
301
+ displayName: "Creator Coin",
302
+ description: "Launch a fixed-supply social token with permanently-locked Ekubo liquidity.",
303
+ standard: "ERC20",
304
+ provenance: "MEDIALANE",
305
+ onchain: {
306
+ STARKNET: {
307
+ factoryAddress: SN.creatorCoinFactory,
308
+ classHash: SN.creatorCoinFactoryClassHash,
309
+ startBlock: SN.creatorCoinStartBlock
310
+ }
311
+ },
312
+ uiVariant: "coin",
313
+ capabilities: ["launch", "swap", "transfer"],
314
+ events: [
315
+ { name: "CreatorCoinCreated", emittedBy: "factory" },
316
+ { name: "CreatorCoinLaunched", emittedBy: "factory" }
317
+ ]
318
+ },
319
+ "medialane-marketplace-erc721": {
320
+ id: "medialane-marketplace-erc721",
321
+ displayName: "Medialane Marketplace (ERC-721)",
322
+ description: "ERC-721 order matching venue.",
323
+ standard: "ERC721",
324
+ provenance: "MEDIALANE",
325
+ onchain: {
326
+ STARKNET: {
327
+ factoryAddress: SN.marketplace721,
328
+ classHash: SN.marketplace721ClassHash,
329
+ startBlock: SN.marketplace721StartBlock
330
+ }
331
+ },
332
+ uiVariant: "standard",
333
+ capabilities: ["list", "buy", "make_offer", "cancel"],
334
+ events: [
335
+ { name: "OrderCreated", emittedBy: "factory" },
336
+ { name: "OrderFulfilled", emittedBy: "factory" },
337
+ { name: "OrderCancelled", emittedBy: "factory" }
338
+ ]
339
+ },
340
+ "medialane-marketplace-erc1155": {
341
+ id: "medialane-marketplace-erc1155",
342
+ displayName: "Medialane Marketplace (ERC-1155)",
343
+ description: "ERC-1155 order matching venue.",
344
+ standard: "ERC1155",
345
+ provenance: "MEDIALANE",
346
+ onchain: {
347
+ STARKNET: {
348
+ factoryAddress: SN.marketplace1155,
349
+ classHash: SN.marketplace1155ClassHash,
350
+ startBlock: SN.marketplace1155StartBlock
351
+ }
352
+ },
353
+ uiVariant: "edition",
354
+ capabilities: ["list", "buy", "make_offer", "cancel"],
355
+ events: [
356
+ { name: "OrderCreated", emittedBy: "factory" },
357
+ { name: "OrderFulfilled", emittedBy: "factory" },
358
+ { name: "OrderCancelled", emittedBy: "factory" }
359
+ ]
360
+ },
361
+ "unruggable-erc20": {
362
+ id: "unruggable-erc20",
363
+ displayName: "Unruggable",
364
+ description: "An ERC-20 launched through the unruggable.meme protocol, the same contract Medialane's Creator Coin is forked from. Not deployed via a Medialane service, but exposes the same on-chain guarantees: capped team allocation, permanently locked liquidity, fixed supply. Brought in by owner claim or admin/partnership \u2014 never bulk-indexed.",
365
+ standard: "ERC20",
366
+ provenance: "EXTERNAL",
367
+ uiVariant: "coin",
368
+ capabilities: ["swap", "transfer"]
369
+ },
370
+ "external-erc20": {
371
+ id: "external-erc20",
372
+ displayName: "Memecoin",
373
+ description: "A plain ERC-20 not deployed via a Medialane service and carrying no protocol-level guarantees. Brought in by owner claim or admin/partnership \u2014 never bulk-indexed. Generalizes to future chains.",
374
+ standard: "ERC20",
375
+ provenance: "EXTERNAL",
376
+ uiVariant: "coin",
377
+ capabilities: ["swap", "transfer"]
378
+ },
379
+ "external-erc721": {
380
+ id: "external-erc721",
381
+ displayName: "External ERC-721",
382
+ description: "ERC-721 contract not deployed via a Medialane service.",
383
+ standard: "ERC721",
384
+ provenance: "EXTERNAL",
385
+ uiVariant: "standard",
386
+ capabilities: ["list", "buy", "make_offer", "cancel", "transfer"]
387
+ },
388
+ "external-erc1155": {
389
+ id: "external-erc1155",
390
+ displayName: "External ERC-1155",
391
+ description: "ERC-1155 contract not deployed via a Medialane service.",
392
+ standard: "ERC1155",
393
+ provenance: "EXTERNAL",
394
+ uiVariant: "edition",
395
+ capabilities: ["list", "buy", "make_offer", "cancel", "transfer"]
396
+ }
397
+ };
398
+ function isServiceId(id) {
399
+ return typeof id === "string" && id in SERVICES;
400
+ }
401
+ function getService(id) {
402
+ return id && id in SERVICES ? SERVICES[id] : void 0;
403
+ }
404
+ function listServices() {
405
+ return Object.values(SERVICES);
406
+ }
407
+ function getServicesByCapability(cap) {
408
+ return Object.values(SERVICES).filter(
409
+ (s) => s.capabilities.includes(cap)
410
+ );
411
+ }
412
+ function hasCapability(id, cap) {
413
+ return getService(id)?.capabilities.includes(cap) ?? false;
414
+ }
415
+
416
+ // src/utils/bigint.ts
417
+ function stringifyBigInts(obj) {
418
+ if (typeof obj === "bigint") {
419
+ return obj.toString();
420
+ }
421
+ if (Array.isArray(obj)) {
422
+ return obj.map(stringifyBigInts);
423
+ }
424
+ if (obj !== null && typeof obj === "object") {
425
+ return Object.fromEntries(
426
+ Object.entries(obj).map(([key, value]) => [
427
+ key,
428
+ stringifyBigInts(value)
429
+ ])
430
+ );
431
+ }
432
+ return obj;
433
+ }
434
+ function u256ToBigInt(low, high) {
435
+ return BigInt(low) + (BigInt(high) << 128n);
436
+ }
437
+ function encodeU256(n) {
438
+ return [
439
+ (n & 0xffffffffffffffffffffffffffffffffn).toString(),
440
+ (n >> 128n).toString()
441
+ ];
442
+ }
443
+
444
+ exports.SUPPORTED_URL_CHAINS = SUPPORTED_URL_CHAINS;
445
+ exports.assetHref = assetHref;
446
+ exports.chainFromSlug = chainFromSlug;
447
+ exports.chainSlug = chainSlug;
448
+ exports.coinHref = coinHref;
449
+ exports.collectionHref = collectionHref;
450
+ exports.dropHref = dropHref;
451
+ exports.encodeU256 = encodeU256;
452
+ exports.getService = getService;
453
+ exports.getServicesByCapability = getServicesByCapability;
454
+ exports.hasCapability = hasCapability;
455
+ exports.isServiceId = isServiceId;
456
+ exports.listServices = listServices;
457
+ exports.profileHref = profileHref;
458
+ exports.resolveConfig = resolveConfig;
459
+ exports.resolveFeeConfig = resolveFeeConfig;
460
+ exports.stringifyBigInts = stringifyBigInts;
461
+ exports.u256ToBigInt = u256ToBigInt;
462
+ //# sourceMappingURL=chunk-MEJ47LC3.cjs.map
463
+ //# sourceMappingURL=chunk-MEJ47LC3.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/fee/config.ts","../src/config.ts","../src/routes.ts","../src/services/registry.ts","../src/utils/bigint.ts"],"names":["z","CHAINS","DEFAULT_CHAIN","getCoordinates","getStarknetCoordinates"],"mappings":"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","file":"chunk-MEJ47LC3.cjs","sourcesContent":["import { z } from \"zod\";\n\nexport const FeeConfigSchema = z.object({\n enabled: z.boolean().default(true),\n fundAddress: z.string().min(1).optional(),\n marketplaceBps: z.number().int().min(0).max(10000).default(100),\n launchpadBps: z.number().int().min(0).max(10000).default(100),\n sponsorshipBps: z.number().int().min(0).max(10000).default(100),\n});\n\nexport type FeeConfig = z.input<typeof FeeConfigSchema>;\n\nexport interface ResolvedFeeConfig {\n enabled: boolean;\n fundAddress: string | undefined;\n marketplaceBps: number;\n launchpadBps: number;\n sponsorshipBps: number;\n}\n\nexport function resolveFeeConfig(raw: FeeConfig | undefined): ResolvedFeeConfig {\n const p = FeeConfigSchema.parse(raw ?? {});\n return {\n enabled: p.enabled,\n fundAddress: p.fundAddress,\n marketplaceBps: p.marketplaceBps,\n launchpadBps: p.launchpadBps,\n sponsorshipBps: p.sponsorshipBps,\n };\n}\n","import { z } from \"zod\";\nimport { CHAINS, getCoordinates, DEFAULT_CHAIN, type Chain } from \"./chains.js\";\nimport type { RetryOptions } from \"./utils/retry.js\";\nimport { FeeConfigSchema, resolveFeeConfig, type ResolvedFeeConfig } from \"./fee/index.js\";\n\nexport const MedialaneConfigSchema = z.object({\n\n chain: z.enum(CHAINS).default(DEFAULT_CHAIN),\n backendUrl: z.string().url().optional(),\n apiKey: z.string().optional(),\n\n marketplace721Contract: z.string().optional(),\n marketplace1155Contract: z.string().optional(),\n collection721Contract: z.string().optional(),\n collection1155Contract: z.string().optional(),\n retryOptions: z.object({\n maxAttempts: z.number().int().min(1).max(10).optional(),\n baseDelayMs: z.number().int().min(0).optional(),\n maxDelayMs: z.number().int().min(0).optional(),\n }).optional(),\n feeConfig: FeeConfigSchema.optional(),\n});\n\nexport type MedialaneConfig = z.input<typeof MedialaneConfigSchema>;\n\nexport interface ResolvedConfig {\n chain: Chain;\n backendUrl: string | undefined;\n apiKey: string | undefined;\n marketplace721Contract: string;\n marketplace1155Contract: string;\n collection721Contract: string;\n collection1155Contract: string;\n retryOptions?: RetryOptions;\n feeConfig: ResolvedFeeConfig;\n}\n\nexport function resolveConfig(raw: MedialaneConfig): ResolvedConfig {\n const parsed = MedialaneConfigSchema.parse(raw);\n const coords = getCoordinates(parsed.chain);\n\n const sn = (parsed.chain === \"STARKNET\" ? coords : {}) as import(\"./chains.js\").StarknetCoordinates;\n\n const marketplace721Contract =\n parsed.marketplace721Contract ?? sn.marketplace721;\n const collection721Contract =\n parsed.collection721Contract ?? sn.collection721;\n\n return {\n chain: parsed.chain,\n backendUrl: parsed.backendUrl,\n apiKey: parsed.apiKey,\n marketplace721Contract,\n marketplace1155Contract: parsed.marketplace1155Contract ?? sn.marketplace1155,\n collection721Contract,\n collection1155Contract: parsed.collection1155Contract ?? sn.collection1155,\n retryOptions: parsed.retryOptions,\n feeConfig: resolveFeeConfig(parsed.feeConfig),\n };\n}\n","import type { Chain } from \"./chains.js\";\n\nexport const SUPPORTED_URL_CHAINS = [\"STARKNET\"] as const satisfies readonly Chain[];\n\nexport function chainSlug(chain: Chain): string {\n return chain.toLowerCase();\n}\n\nexport function chainFromSlug(slug: string): Chain | null {\n const upper = slug.toUpperCase() as Chain;\n return (SUPPORTED_URL_CHAINS as readonly Chain[]).includes(upper) ? upper : null;\n}\n\ntype Idish = string | number | null | undefined;\nconst seg = (v: Idish): string => (v == null ? \"\" : String(v));\n\nexport function assetHref(chain: Chain, contract: Idish, tokenId: Idish): string {\n return `/asset/${chainSlug(chain)}/${seg(contract)}/${seg(tokenId)}`;\n}\n\nexport function collectionHref(chain: Chain, contract: Idish): string {\n return `/collections/${chainSlug(chain)}/${seg(contract)}`;\n}\n\nexport function dropHref(contract: Idish): string {\n return `/launchpad/drop/${seg(contract)}`;\n}\n\nexport function coinHref(chain: Chain, address: Idish): string {\n return `/coins/${chainSlug(chain)}/${seg(address)}`;\n}\n\nexport function profileHref(profile: { username?: string | null; address?: string | null }): string {\n const username = profile.username?.trim();\n if (username) return `/creator/${username}`;\n const address = profile.address?.trim();\n return address ? `/account/${address}` : \"/creators\";\n}\n","import type { ServiceDefinition, ServiceCapability } from \"../types/api.js\";\nimport { getStarknetCoordinates } from \"../chains.js\";\n\nconst SN = getStarknetCoordinates(\"STARKNET\");\n\nconst SERVICES = {\n \"mip-erc721\": {\n id: \"mip-erc721\",\n displayName: \"IP Collection\",\n description: \"Tokenize intellectual property as a per-creator ERC-721 collection.\",\n standard: \"ERC721\",\n provenance: \"MEDIALANE\",\n onchain: {\n STARKNET: {\n factoryAddress: SN.collection721,\n startBlock: SN.collection721StartBlock,\n },\n },\n uiVariant: \"standard\",\n capabilities: [\"list\", \"buy\", \"make_offer\", \"cancel\", \"transfer\", \"mint\", \"remix\", \"license\"],\n events: [\n { name: \"CollectionCreated\", emittedBy: \"factory\" },\n\n ],\n metadataSchema: { licenseDefault: \"CC BY-SA\" },\n },\n \"ip-erc721\": {\n id: \"ip-erc721\",\n displayName: \"Programmable IP\",\n description: \"One shared ERC-721 contract any wallet can mint into.\",\n standard: \"ERC721\",\n provenance: \"MEDIALANE\",\n uiVariant: \"standard\",\n capabilities: [\"list\", \"buy\", \"make_offer\", \"cancel\", \"transfer\", \"mint\", \"remix\", \"license\"],\n\n metadataSchema: { licenseDefault: \"CC BY-SA\" },\n },\n \"data-tokenization-erc721\": {\n id: \"data-tokenization-erc721\",\n displayName: \"Data Tokenization\",\n description: \"Establish verifiable ownership of your data, with licensing terms that hold up wherever it travels.\",\n standard: \"ERC721\",\n provenance: \"MEDIALANE\",\n onchain: {\n STARKNET: {\n factoryAddress: SN.dataTokenization721,\n startBlock: SN.dataTokenization721StartBlock,\n },\n },\n uiVariant: \"standard\",\n capabilities: [\"list\", \"buy\", \"make_offer\", \"cancel\", \"transfer\", \"mint\", \"remix\", \"license\"],\n events: [\n { name: \"CollectionCreated\", emittedBy: \"factory\" },\n ],\n metadataSchema: { licenseDefault: \"CC BY-SA\" },\n },\n \"mip-erc1155\": {\n id: \"mip-erc1155\",\n displayName: \"NFT Editions\",\n description: \"Per-creator ERC-1155 collection; creator mints editions.\",\n standard: \"ERC1155\",\n provenance: \"MEDIALANE\",\n onchain: {\n STARKNET: {\n factoryAddress: SN.collection1155,\n classHash: SN.collection1155ClassHash,\n startBlock: SN.collection1155StartBlock,\n },\n },\n uiVariant: \"edition\",\n capabilities: [\"list\", \"buy\", \"make_offer\", \"cancel\", \"transfer\", \"mint\", \"remix\", \"license\"],\n events: [\n { name: \"CollectionDeployed\", emittedBy: \"factory\" },\n ],\n metadataSchema: { licenseDefault: \"CC BY-SA\" },\n },\n \"pop-protocol\": {\n id: \"pop-protocol\",\n displayName: \"POP Protocol\",\n description: \"Soulbound proof-of-presence collectibles per event.\",\n standard: \"ERC721\",\n provenance: \"MEDIALANE\",\n onchain: {\n STARKNET: {\n factoryAddress: SN.popFactory,\n classHash: SN.popCollectionClassHash,\n },\n },\n uiVariant: \"pop\",\n capabilities: [\"claim\", \"mint\"],\n events: [\n { name: \"CollectionCreated\", emittedBy: \"factory\" },\n ],\n metadataSchema: { licenseDefault: \"CC BY-SA\" },\n },\n \"certificate-emission\": {\n id: \"certificate-emission\",\n displayName: \"Certificate Emission\",\n description: \"Issue a soulbound credential to a list of recipients in one run — everyone gets a wallet and their certificate.\",\n standard: \"ERC721\",\n provenance: \"MEDIALANE\",\n onchain: {\n STARKNET: {\n factoryAddress: SN.popFactory,\n classHash: SN.popCollectionClassHash,\n },\n },\n uiVariant: \"pop\",\n capabilities: [\"mint\", \"airdrop\"],\n events: [\n { name: \"CollectionCreated\", emittedBy: \"factory\" },\n ],\n metadataSchema: { licenseDefault: \"CC BY-SA\" },\n },\n \"drop-collection\": {\n id: \"drop-collection\",\n displayName: \"Collection Drop\",\n description: \"Sell an edition or a collection at a fixed price, with a sale window and an optional allowlist.\",\n standard: \"ERC721\",\n provenance: \"MEDIALANE\",\n onchain: {\n STARKNET: {\n factoryAddress: SN.dropFactory,\n classHash: SN.dropCollectionClassHash,\n },\n },\n uiVariant: \"drop\",\n capabilities: [\"claim\", \"list\", \"buy\", \"make_offer\", \"cancel\", \"transfer\"],\n events: [\n { name: \"DropCreated\", emittedBy: \"factory\" },\n { name: \"Claimed\", emittedBy: \"instance\" },\n { name: \"Issued\", emittedBy: \"instance\" },\n { name: \"AllowlistRootSet\", emittedBy: \"instance\" },\n ],\n metadataSchema: { licenseDefault: \"CC BY-SA\" },\n },\n \"ip-tickets\": {\n id: \"ip-tickets\",\n displayName: \"IP Tickets\",\n description: \"Create verifiable on-chain tickets — mint to attendees, trade like any collection.\",\n standard: \"ERC1155\",\n provenance: \"MEDIALANE\",\n onchain: {\n STARKNET: {\n factoryAddress: SN.ipTicketsFactory,\n classHash: SN.ipTicketCollectionClassHash,\n },\n },\n uiVariant: \"ticket\",\n capabilities: [\"mint\", \"redeem\", \"list\", \"buy\", \"make_offer\", \"cancel\", \"transfer\"],\n events: [\n { name: \"CollectionDeployed\", emittedBy: \"factory\" },\n { name: \"TicketCreated\", emittedBy: \"instance\" },\n ],\n metadataSchema: { licenseDefault: \"CC BY-SA\" },\n },\n \"ip-ticketing\": {\n id: \"ip-ticketing\",\n displayName: \"IP Ticketing\",\n description: \"Distribute verifiable on-chain tickets to a list of recipients in one run — everyone gets a wallet and their ticket.\",\n standard: \"ERC1155\",\n provenance: \"MEDIALANE\",\n onchain: {\n STARKNET: {\n factoryAddress: SN.ipTicketsFactory,\n classHash: SN.ipTicketCollectionClassHash,\n },\n },\n uiVariant: \"ticket\",\n capabilities: [\"mint\", \"airdrop\", \"redeem\", \"list\", \"buy\", \"make_offer\", \"cancel\", \"transfer\"],\n events: [\n { name: \"CollectionDeployed\", emittedBy: \"factory\" },\n { name: \"TicketCreated\", emittedBy: \"instance\" },\n ],\n metadataSchema: { licenseDefault: \"CC BY-SA\" },\n },\n \"ip-club\": {\n id: \"ip-club\",\n displayName: \"IP Club\",\n description: \"Membership clubs — create tiers, mint membership cards, trade like any collection.\",\n standard: \"ERC1155\",\n provenance: \"MEDIALANE\",\n onchain: {\n STARKNET: {\n factoryAddress: SN.ipClubFactory,\n classHash: SN.ipClubCollectionClassHash,\n },\n },\n uiVariant: \"club\",\n capabilities: [\"mint\", \"list\", \"buy\", \"make_offer\", \"cancel\", \"transfer\"],\n events: [\n { name: \"ClubDeployed\", emittedBy: \"factory\" },\n { name: \"MembershipCreated\", emittedBy: \"instance\" },\n ],\n metadataSchema: { licenseDefault: \"CC BY-SA\" },\n },\n \"ip-sponsorship\": {\n id: \"ip-sponsorship\",\n displayName: \"IP Sponsorship\",\n description: \"Sponsorship offers and licenses anchored to an existing Medialane asset.\",\n standard: \"ERC721\",\n provenance: \"MEDIALANE\",\n onchain: {\n STARKNET: {\n factoryAddress: SN.ipSponsorship,\n classHash: SN.ipSponsorshipClassHash,\n startBlock: SN.ipSponsorshipStartBlock,\n },\n },\n uiVariant: \"standard\",\n\n capabilities: [\"sponsor\", \"transfer\"],\n events: [\n { name: \"OfferCreated\", emittedBy: \"factory\" },\n { name: \"ProposalCreated\", emittedBy: \"factory\" },\n { name: \"LicenseMinted\", emittedBy: \"factory\" },\n ],\n metadataSchema: { licenseDefault: \"CC BY-SA\" },\n },\n \"creator-coin\": {\n id: \"creator-coin\",\n displayName: \"Creator Coin\",\n description:\n \"Launch a fixed-supply social token with permanently-locked Ekubo liquidity.\",\n standard: \"ERC20\",\n provenance: \"MEDIALANE\",\n onchain: {\n STARKNET: {\n factoryAddress: SN.creatorCoinFactory,\n classHash: SN.creatorCoinFactoryClassHash,\n startBlock: SN.creatorCoinStartBlock,\n },\n },\n uiVariant: \"coin\",\n\n capabilities: [\"launch\", \"swap\", \"transfer\"],\n events: [\n { name: \"CreatorCoinCreated\", emittedBy: \"factory\" },\n { name: \"CreatorCoinLaunched\", emittedBy: \"factory\" },\n ],\n },\n \"medialane-marketplace-erc721\": {\n id: \"medialane-marketplace-erc721\",\n displayName: \"Medialane Marketplace (ERC-721)\",\n description: \"ERC-721 order matching venue.\",\n standard: \"ERC721\",\n provenance: \"MEDIALANE\",\n onchain: {\n STARKNET: {\n factoryAddress: SN.marketplace721,\n classHash: SN.marketplace721ClassHash,\n startBlock: SN.marketplace721StartBlock,\n },\n },\n uiVariant: \"standard\",\n capabilities: [\"list\", \"buy\", \"make_offer\", \"cancel\"],\n events: [\n { name: \"OrderCreated\", emittedBy: \"factory\" },\n { name: \"OrderFulfilled\", emittedBy: \"factory\" },\n { name: \"OrderCancelled\", emittedBy: \"factory\" },\n ],\n },\n \"medialane-marketplace-erc1155\": {\n id: \"medialane-marketplace-erc1155\",\n displayName: \"Medialane Marketplace (ERC-1155)\",\n description: \"ERC-1155 order matching venue.\",\n standard: \"ERC1155\",\n provenance: \"MEDIALANE\",\n onchain: {\n STARKNET: {\n factoryAddress: SN.marketplace1155,\n classHash: SN.marketplace1155ClassHash,\n startBlock: SN.marketplace1155StartBlock,\n },\n },\n uiVariant: \"edition\",\n capabilities: [\"list\", \"buy\", \"make_offer\", \"cancel\"],\n events: [\n { name: \"OrderCreated\", emittedBy: \"factory\" },\n { name: \"OrderFulfilled\", emittedBy: \"factory\" },\n { name: \"OrderCancelled\", emittedBy: \"factory\" },\n ],\n },\n \"unruggable-erc20\": {\n id: \"unruggable-erc20\",\n displayName: \"Unruggable\",\n description:\n \"An ERC-20 launched through the unruggable.meme protocol, the same contract Medialane's Creator Coin is forked from. Not deployed via a Medialane service, but exposes the same on-chain guarantees: capped team allocation, permanently locked liquidity, fixed supply. Brought in by owner claim or admin/partnership — never bulk-indexed.\",\n standard: \"ERC20\",\n provenance: \"EXTERNAL\",\n uiVariant: \"coin\",\n capabilities: [\"swap\", \"transfer\"],\n },\n \"external-erc20\": {\n id: \"external-erc20\",\n displayName: \"Memecoin\",\n description:\n \"A plain ERC-20 not deployed via a Medialane service and carrying no protocol-level guarantees. Brought in by owner claim or admin/partnership — never bulk-indexed. Generalizes to future chains.\",\n standard: \"ERC20\",\n provenance: \"EXTERNAL\",\n uiVariant: \"coin\",\n capabilities: [\"swap\", \"transfer\"],\n },\n \"external-erc721\": {\n id: \"external-erc721\",\n displayName: \"External ERC-721\",\n description: \"ERC-721 contract not deployed via a Medialane service.\",\n standard: \"ERC721\",\n provenance: \"EXTERNAL\",\n uiVariant: \"standard\",\n capabilities: [\"list\", \"buy\", \"make_offer\", \"cancel\", \"transfer\"],\n },\n \"external-erc1155\": {\n id: \"external-erc1155\",\n displayName: \"External ERC-1155\",\n description: \"ERC-1155 contract not deployed via a Medialane service.\",\n standard: \"ERC1155\",\n provenance: \"EXTERNAL\",\n uiVariant: \"edition\",\n capabilities: [\"list\", \"buy\", \"make_offer\", \"cancel\", \"transfer\"],\n },\n} as const satisfies Record<string, ServiceDefinition>;\n\nexport type ServiceId = keyof typeof SERVICES;\n\nexport function isServiceId(id: string | null | undefined): id is ServiceId {\n return typeof id === \"string\" && id in SERVICES;\n}\n\nexport function getService(id: string | null | undefined): ServiceDefinition | undefined {\n return id && id in SERVICES ? (SERVICES as Record<string, ServiceDefinition>)[id] : undefined;\n}\n\nexport function listServices(): ServiceDefinition[] {\n return Object.values(SERVICES);\n}\n\nexport function getServicesByCapability(cap: ServiceCapability): ServiceDefinition[] {\n return Object.values(SERVICES).filter(\n (s) => (s.capabilities as readonly ServiceCapability[]).includes(cap),\n );\n}\n\nexport function hasCapability(\n id: string | null | undefined,\n cap: ServiceCapability,\n): boolean {\n return getService(id)?.capabilities.includes(cap) ?? false;\n}\n","\nexport function stringifyBigInts(obj: unknown): unknown {\n if (typeof obj === \"bigint\") {\n return obj.toString();\n }\n if (Array.isArray(obj)) {\n return obj.map(stringifyBigInts);\n }\n if (obj !== null && typeof obj === \"object\") {\n return Object.fromEntries(\n Object.entries(obj as Record<string, unknown>).map(([key, value]) => [\n key,\n stringifyBigInts(value),\n ])\n );\n }\n return obj;\n}\n\nexport function u256ToBigInt(low: string, high: string): bigint {\n return BigInt(low) + (BigInt(high) << 128n);\n}\n\nexport function encodeU256(n: bigint): [string, string] {\n return [\n (n & 0xffffffffffffffffffffffffffffffffn).toString(),\n (n >> 128n).toString(),\n ];\n}\n"]}