@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.
- package/README.md +86 -41
- package/dist/chains-CmwjZVU7.d.cts +85 -0
- package/dist/chains-CmwjZVU7.d.ts +85 -0
- package/dist/chunk-3HPMEDYH.cjs +967 -0
- package/dist/chunk-3HPMEDYH.cjs.map +1 -0
- package/dist/{chunk-3ME5YKTW.js → chunk-5KY6P434.js} +2 -2
- package/dist/chunk-5KY6P434.js.map +1 -0
- package/dist/chunk-F7W6IWTL.js +660 -0
- package/dist/chunk-F7W6IWTL.js.map +1 -0
- package/dist/chunk-GIBIHGSV.js +916 -0
- package/dist/chunk-GIBIHGSV.js.map +1 -0
- package/dist/chunk-GV4A2WNO.js +444 -0
- package/dist/chunk-GV4A2WNO.js.map +1 -0
- package/dist/{chunk-7EYJC5CB.cjs → chunk-H2NJB3AK.cjs} +2 -2
- package/dist/chunk-H2NJB3AK.cjs.map +1 -0
- package/dist/chunk-KGAGWULG.js +932 -0
- package/dist/chunk-KGAGWULG.js.map +1 -0
- package/dist/chunk-MEJ47LC3.cjs +463 -0
- package/dist/chunk-MEJ47LC3.cjs.map +1 -0
- package/dist/chunk-W76AZ5WC.cjs +376 -0
- package/dist/chunk-W76AZ5WC.cjs.map +1 -0
- package/dist/chunk-WRBXQPRL.js +323 -0
- package/dist/chunk-WRBXQPRL.js.map +1 -0
- package/dist/chunk-ZLMIHQWM.cjs +975 -0
- package/dist/chunk-ZLMIHQWM.cjs.map +1 -0
- package/dist/chunk-ZVANOWIB.cjs +688 -0
- package/dist/chunk-ZVANOWIB.cjs.map +1 -0
- package/dist/contract/index.cjs +88 -261
- package/dist/contract/index.cjs.map +1 -1
- package/dist/contract/index.d.cts +139 -4
- package/dist/contract/index.d.ts +139 -4
- package/dist/contract/index.js +4 -220
- package/dist/contract/index.js.map +1 -1
- package/dist/evm/index.cjs +3 -3
- package/dist/evm/index.d.cts +2 -1
- package/dist/evm/index.d.ts +2 -1
- package/dist/evm/index.js +1 -1
- package/dist/fetch-Cx9Pr7-B.d.cts +3 -0
- package/dist/fetch-Cx9Pr7-B.d.ts +3 -0
- package/dist/index.cjs +177 -833
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +54 -132
- package/dist/index.d.ts +54 -132
- package/dist/index.js +6 -659
- package/dist/index.js.map +1 -1
- package/dist/passkey-errors-B0HGcjPc.d.ts +981 -0
- package/dist/passkey-errors-yndCFeHv.d.cts +981 -0
- package/dist/provisioning-CwRkCN8D.d.cts +14 -0
- package/dist/provisioning-CwRkCN8D.d.ts +14 -0
- package/dist/{provisioning-BUYiU8Tr.d.ts → responses-D3nBY71f.d.cts} +40 -48
- package/dist/{provisioning-BUYiU8Tr.d.cts → responses-D3nBY71f.d.ts} +40 -48
- package/dist/server/index.cjs +117 -0
- package/dist/server/index.cjs.map +1 -0
- package/dist/server/index.d.cts +98 -0
- package/dist/server/index.d.ts +98 -0
- package/dist/server/index.js +4 -0
- package/dist/server/index.js.map +1 -0
- package/dist/services-B15RJBSW.d.cts +728 -0
- package/dist/services-BAnTJhwt.d.ts +728 -0
- package/dist/solana/index.cjs +2 -2
- package/dist/solana/index.d.cts +2 -1
- package/dist/solana/index.d.ts +2 -1
- package/dist/solana/index.js +1 -1
- package/dist/starknet/index.cjs +898 -1729
- package/dist/starknet/index.cjs.map +1 -1
- package/dist/starknet/index.d.cts +98 -467
- package/dist/starknet/index.d.ts +98 -467
- package/dist/starknet/index.js +704 -1680
- package/dist/starknet/index.js.map +1 -1
- package/dist/stellar/index.cjs +2 -2
- package/dist/stellar/index.d.cts +2 -1
- package/dist/stellar/index.d.ts +2 -1
- package/dist/stellar/index.js +1 -1
- package/dist/types-BW6ktwcT.d.ts +71 -0
- package/dist/types-BftPOVEJ.d.cts +71 -0
- package/dist/wallet/index.cjs +240 -0
- package/dist/wallet/index.cjs.map +1 -0
- package/dist/wallet/index.d.cts +319 -0
- package/dist/wallet/index.d.ts +319 -0
- package/dist/wallet/index.js +7 -0
- package/dist/wallet/index.js.map +1 -0
- package/package.json +13 -2
- package/dist/chunk-2R7XBA34.cjs +0 -1938
- package/dist/chunk-2R7XBA34.cjs.map +0 -1
- package/dist/chunk-3ME5YKTW.js.map +0 -1
- package/dist/chunk-6WVUUBFI.js +0 -1853
- package/dist/chunk-6WVUUBFI.js.map +0 -1
- package/dist/chunk-7EYJC5CB.cjs.map +0 -1
- package/dist/errors-CZm-NZK0.d.cts +0 -1754
- package/dist/errors-h6H6cj3Q.d.ts +0 -1754
- package/dist/types-DC4jNPAF.d.cts +0 -153
- 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"]}
|