@medialane/sdk 0.85.5 → 0.85.7
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/dist/evm/index.cjs +0 -7
- package/dist/evm/index.cjs.map +1 -1
- package/dist/evm/index.d.cts +1 -23
- package/dist/evm/index.d.ts +1 -23
- package/dist/evm/index.js +0 -7
- package/dist/evm/index.js.map +1 -1
- package/dist/index.cjs +7 -139
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +4 -146
- package/dist/index.d.ts +4 -146
- package/dist/index.js +7 -139
- package/dist/index.js.map +1 -1
- package/dist/{services-hDpCpw3d.d.ts → services-BN4c7iT1.d.cts} +8 -329
- package/dist/{services-xJvXhXQi.d.cts → services-B_7IX3dM.d.ts} +8 -329
- package/dist/solana/index.cjs +0 -5
- package/dist/solana/index.cjs.map +1 -1
- package/dist/solana/index.d.cts +1 -14
- package/dist/solana/index.d.ts +1 -14
- package/dist/solana/index.js +0 -5
- package/dist/solana/index.js.map +1 -1
- package/dist/starknet/index.cjs +7 -219
- package/dist/starknet/index.cjs.map +1 -1
- package/dist/starknet/index.d.cts +2 -334
- package/dist/starknet/index.d.ts +2 -334
- package/dist/starknet/index.js +7 -219
- package/dist/starknet/index.js.map +1 -1
- package/dist/stellar/index.cjs +0 -5
- package/dist/stellar/index.cjs.map +1 -1
- package/dist/stellar/index.d.cts +1 -9
- package/dist/stellar/index.d.ts +1 -9
- package/dist/stellar/index.js +0 -5
- package/dist/stellar/index.js.map +1 -1
- package/dist/{types-sIc3OCpo.d.cts → types-nPIXtCF5.d.cts} +0 -45
- package/dist/{types-sIc3OCpo.d.ts → types-nPIXtCF5.d.ts} +0 -45
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -42,11 +42,6 @@ var COORDINATES = {
|
|
|
42
42
|
ipClubFactoryClassHash: "0x05d9d431bd3532b1fa4d5bab572f49c5ad8034ee3cc83951aa41ae82c9cad266",
|
|
43
43
|
ipClubCollectionClassHash: "0x05b8477c72e6bf0cf64967d71155021fd4d77d9a57e8805c6b40709121c002c5",
|
|
44
44
|
ipClubFactoryStartBlock: 11928775,
|
|
45
|
-
// v3 redesign (deployed 2026-07-15): single contract is both the
|
|
46
|
-
// offer/bid/proposal registry and the license collection (embeds
|
|
47
|
-
// ERC721Component directly) — no separate receipt contract, no
|
|
48
|
-
// set_minter bootstrap. Supersedes the 2026-07-02 v2 address, which had
|
|
49
|
-
// zero offers/licenses ever issued (clean cutover, no reclassification).
|
|
50
45
|
ipSponsorship: "0x03729ebe0fedf29ec97fca34db09174772af7f870af26a26e024a61040143e5c",
|
|
51
46
|
ipSponsorshipClassHash: "0x0626daac2ed7e2bf630ef5b10104b3202db1559216c0c1a504c0e99be2fbfec3",
|
|
52
47
|
ipSponsorshipStartBlock: 11896456,
|
|
@@ -85,13 +80,10 @@ function resolveFeeConfig(raw) {
|
|
|
85
80
|
|
|
86
81
|
// src/config.ts
|
|
87
82
|
var MedialaneConfigSchema = z.object({
|
|
88
|
-
// Chain-scoped client (spec 2026-06-13 Decision B): one client per chain,
|
|
89
|
-
// coordinates resolved from the registry. Replaces the removed `network` axis.
|
|
90
83
|
chain: z.enum(CHAINS).default(DEFAULT_CHAIN),
|
|
91
84
|
rpcUrl: z.string().url().optional(),
|
|
92
85
|
backendUrl: z.string().url().optional(),
|
|
93
86
|
apiKey: z.string().optional(),
|
|
94
|
-
// Per-contract overrides remain for tests/forks; default from the registry.
|
|
95
87
|
marketplace721Contract: z.string().optional(),
|
|
96
88
|
marketplaceContract: z.string().optional(),
|
|
97
89
|
marketplace1155Contract: z.string().optional(),
|
|
@@ -281,17 +273,9 @@ var ApiClient = class {
|
|
|
281
273
|
this.baseHeaders = apiKey ? { "x-api-key": apiKey } : {};
|
|
282
274
|
this.retryOptions = retryOptions;
|
|
283
275
|
}
|
|
284
|
-
/** Normalize an address for this client's chain (chain-scoped — Decision B). */
|
|
285
276
|
addr(a) {
|
|
286
277
|
return normalizeAddress(this.chain, a);
|
|
287
278
|
}
|
|
288
|
-
/**
|
|
289
|
-
* The one HTTP path for the whole client: base headers (incl. x-api-key),
|
|
290
|
-
* JSON error unwrapping, and `withRetry` (5xx/network only — 4xx never
|
|
291
|
-
* retried). `allow404`/`allow403` turn those statuses into a `null` result
|
|
292
|
-
* instead of a throw, for "profile may not exist" / "not a holder" reads —
|
|
293
|
-
* so no method needs to hand-roll `fetch` to get that behavior.
|
|
294
|
-
*/
|
|
295
279
|
async request(path, init, opts) {
|
|
296
280
|
const url = `${this.baseUrl.replace(/\/$/, "")}${path}`;
|
|
297
281
|
const headers = { ...this.baseHeaders };
|
|
@@ -331,11 +315,9 @@ var ApiClient = class {
|
|
|
331
315
|
del(path) {
|
|
332
316
|
return this.request(path, { method: "DELETE" });
|
|
333
317
|
}
|
|
334
|
-
/** Bearer header for SIWS-token-authenticated routes. */
|
|
335
318
|
bearer(siwsToken) {
|
|
336
319
|
return { Authorization: `Bearer ${siwsToken}` };
|
|
337
320
|
}
|
|
338
|
-
// ─── Orders ────────────────────────────────────────────────────────────────
|
|
339
321
|
getOrders(query = {}) {
|
|
340
322
|
const params = new URLSearchParams();
|
|
341
323
|
if (query.status) params.set("status", query.status);
|
|
@@ -362,7 +344,6 @@ var ApiClient = class {
|
|
|
362
344
|
`/v1/orders/user/${this.addr(address)}?page=${page}&limit=${limit}`
|
|
363
345
|
);
|
|
364
346
|
}
|
|
365
|
-
// ─── Tokens ────────────────────────────────────────────────────────────────
|
|
366
347
|
getToken(contract, tokenId, wait = false) {
|
|
367
348
|
return this.get(
|
|
368
349
|
`/v1/tokens/${contract}/${tokenId}${wait ? "?wait=true" : ""}`
|
|
@@ -378,7 +359,6 @@ var ApiClient = class {
|
|
|
378
359
|
`/v1/tokens/${contract}/${tokenId}/history?page=${page}&limit=${limit}`
|
|
379
360
|
);
|
|
380
361
|
}
|
|
381
|
-
// ─── Collections ───────────────────────────────────────────────────────────
|
|
382
362
|
getCollections(page = 1, limit = 20, isKnown, sort, service, chain, standard) {
|
|
383
363
|
const params = new URLSearchParams({ page: String(page), limit: String(limit) });
|
|
384
364
|
if (isKnown !== void 0) params.set("isKnown", String(isKnown));
|
|
@@ -400,7 +380,6 @@ var ApiClient = class {
|
|
|
400
380
|
`/v1/collections/${this.addr(contract)}/tokens?page=${page}&limit=${limit}&sort=${sort}`
|
|
401
381
|
);
|
|
402
382
|
}
|
|
403
|
-
// ─── Activities ────────────────────────────────────────────────────────────
|
|
404
383
|
getActivities(query = {}) {
|
|
405
384
|
const params = new URLSearchParams();
|
|
406
385
|
if (query.type) params.set("type", query.type);
|
|
@@ -416,7 +395,6 @@ var ApiClient = class {
|
|
|
416
395
|
`/v1/activities/${this.addr(address)}?page=${page}&limit=${limit}`
|
|
417
396
|
);
|
|
418
397
|
}
|
|
419
|
-
// ─── Comments ──────────────────────────────────────────────────────────────
|
|
420
398
|
getTokenComments(contract, tokenId, opts = {}) {
|
|
421
399
|
const params = new URLSearchParams();
|
|
422
400
|
if (opts.page !== void 0) params.set("page", String(opts.page));
|
|
@@ -426,7 +404,6 @@ var ApiClient = class {
|
|
|
426
404
|
`/v1/tokens/${this.addr(contract)}/${tokenId}/comments${qs ? `?${qs}` : ""}`
|
|
427
405
|
);
|
|
428
406
|
}
|
|
429
|
-
// ─── Search ────────────────────────────────────────────────────────────────
|
|
430
407
|
search(q, limit = 10, chain) {
|
|
431
408
|
const params = new URLSearchParams({ q, limit: String(limit) });
|
|
432
409
|
if (chain) params.set("chain", chain);
|
|
@@ -434,7 +411,6 @@ var ApiClient = class {
|
|
|
434
411
|
`/v1/search?${params.toString()}`
|
|
435
412
|
);
|
|
436
413
|
}
|
|
437
|
-
// ─── Intents ───────────────────────────────────────────────────────────────
|
|
438
414
|
createListingIntent(params) {
|
|
439
415
|
return this.post("/v1/intents/listing", params);
|
|
440
416
|
}
|
|
@@ -501,11 +477,6 @@ var ApiClient = class {
|
|
|
501
477
|
rejectSponsorshipProposalIntent(params) {
|
|
502
478
|
return this.post("/v1/intents/sponsorship-proposal-reject", params);
|
|
503
479
|
}
|
|
504
|
-
/**
|
|
505
|
-
* Create a counter-offer intent. The seller proposes a new price in response
|
|
506
|
-
* to a buyer's active bid. siwsToken is optional — the endpoint authenticates
|
|
507
|
-
* via the tenant API key; pass a SIWS token only if your backend requires it.
|
|
508
|
-
*/
|
|
509
480
|
createCounterOfferIntent(params, siwsToken) {
|
|
510
481
|
const extraHeaders = siwsToken ? { "Authorization": `Bearer ${siwsToken}` } : {};
|
|
511
482
|
return this.request("/v1/intents/counter-offer", {
|
|
@@ -514,10 +485,6 @@ var ApiClient = class {
|
|
|
514
485
|
headers: extraHeaders
|
|
515
486
|
});
|
|
516
487
|
}
|
|
517
|
-
/**
|
|
518
|
-
* Fetch counter-offers. Pass `originalOrderHash` (buyer view) or
|
|
519
|
-
* `sellerAddress` (seller view) — at least one is required.
|
|
520
|
-
*/
|
|
521
488
|
getCounterOffers(query) {
|
|
522
489
|
const params = new URLSearchParams();
|
|
523
490
|
if (query.originalOrderHash) params.set("originalOrderHash", query.originalOrderHash);
|
|
@@ -526,7 +493,6 @@ var ApiClient = class {
|
|
|
526
493
|
if (query.limit !== void 0) params.set("limit", String(query.limit));
|
|
527
494
|
return this.get(`/v1/orders/counter-offers?${params}`);
|
|
528
495
|
}
|
|
529
|
-
// ─── Metadata ──────────────────────────────────────────────────────────────
|
|
530
496
|
getMetadataSignedUrl() {
|
|
531
497
|
return this.get("/v1/metadata/signed-url");
|
|
532
498
|
}
|
|
@@ -545,7 +511,6 @@ var ApiClient = class {
|
|
|
545
511
|
body: formData
|
|
546
512
|
});
|
|
547
513
|
}
|
|
548
|
-
// ─── Portal (tenant self-service) ──────────────────────────────────────────
|
|
549
514
|
getMe() {
|
|
550
515
|
return this.get("/v1/portal/me");
|
|
551
516
|
}
|
|
@@ -572,11 +537,6 @@ var ApiClient = class {
|
|
|
572
537
|
`/v1/portal/webhooks/${id}`
|
|
573
538
|
);
|
|
574
539
|
}
|
|
575
|
-
// ─── Collection Claims ──────────────────────────────────────────────────────
|
|
576
|
-
/**
|
|
577
|
-
* Path 1: On-chain auto claim. Sends both x-api-key (tenant auth) and
|
|
578
|
-
* Authorization: Bearer (SIWS token) simultaneously.
|
|
579
|
-
*/
|
|
580
540
|
async claimCollection(contractAddress, walletAddress, siwsToken) {
|
|
581
541
|
return this.request("/v1/collections/claim", {
|
|
582
542
|
method: "POST",
|
|
@@ -584,23 +544,18 @@ var ApiClient = class {
|
|
|
584
544
|
headers: this.bearer(siwsToken)
|
|
585
545
|
});
|
|
586
546
|
}
|
|
587
|
-
/**
|
|
588
|
-
* Path 3: Manual off-chain claim request (email-based).
|
|
589
|
-
*/
|
|
590
547
|
requestCollectionClaim(params) {
|
|
591
548
|
return this.request("/v1/collections/claim/request", {
|
|
592
549
|
method: "POST",
|
|
593
550
|
body: JSON.stringify(params)
|
|
594
551
|
});
|
|
595
552
|
}
|
|
596
|
-
// ─── Business Provisioning ──────────────────────────────────────────────────
|
|
597
553
|
registerBusinessProvisioning(params) {
|
|
598
554
|
return this.post("/v1/business/provisioning", params);
|
|
599
555
|
}
|
|
600
556
|
completeBusinessProvisioning(id) {
|
|
601
557
|
return this.post(`/v1/business/provisioning/${id}/complete`, {});
|
|
602
558
|
}
|
|
603
|
-
// ─── Collection Profiles ────────────────────────────────────────────────────
|
|
604
559
|
getCollectionProfile(contractAddress) {
|
|
605
560
|
return this.request(
|
|
606
561
|
`/v1/collections/${this.addr(contractAddress)}/profile`,
|
|
@@ -608,16 +563,12 @@ var ApiClient = class {
|
|
|
608
563
|
{ allow404: true }
|
|
609
564
|
);
|
|
610
565
|
}
|
|
611
|
-
/**
|
|
612
|
-
* Update collection profile. Requires SIWS token for ownership check.
|
|
613
|
-
*/
|
|
614
566
|
updateCollectionProfile(contractAddress, data, siwsToken) {
|
|
615
567
|
return this.request(
|
|
616
568
|
`/v1/collections/${this.addr(contractAddress)}/profile`,
|
|
617
569
|
{ method: "PATCH", body: JSON.stringify(data), headers: this.bearer(siwsToken) }
|
|
618
570
|
);
|
|
619
571
|
}
|
|
620
|
-
/** No signature required — wallet activity is public on-chain data, read like any other /v1 GET. */
|
|
621
572
|
getWalletActivity(address, chain = "STARKNET") {
|
|
622
573
|
return this.get(
|
|
623
574
|
`/v1/wallet-activity?address=${this.addr(address)}&chain=${chain}`
|
|
@@ -630,8 +581,6 @@ var ApiClient = class {
|
|
|
630
581
|
{ allow404: true, allow403: true }
|
|
631
582
|
);
|
|
632
583
|
}
|
|
633
|
-
// ─── Creator Profiles ───────────────────────────────────────────────────────
|
|
634
|
-
/** List all creators with an approved username. */
|
|
635
584
|
getCreators(opts = {}) {
|
|
636
585
|
const params = new URLSearchParams();
|
|
637
586
|
if (opts.search) params.set("search", opts.search);
|
|
@@ -647,7 +596,6 @@ var ApiClient = class {
|
|
|
647
596
|
{ allow404: true }
|
|
648
597
|
);
|
|
649
598
|
}
|
|
650
|
-
/** Resolve a username slug to a creator profile (public). */
|
|
651
599
|
getCreatorByUsername(username) {
|
|
652
600
|
return this.request(
|
|
653
601
|
`/v1/creators/by-username/${encodeURIComponent(username.toLowerCase().trim())}`,
|
|
@@ -655,23 +603,17 @@ var ApiClient = class {
|
|
|
655
603
|
{ allow404: true }
|
|
656
604
|
);
|
|
657
605
|
}
|
|
658
|
-
/**
|
|
659
|
-
* Update creator profile. Requires SIWS token; wallet must match authenticated user.
|
|
660
|
-
*/
|
|
661
606
|
updateCreatorProfile(walletAddress, data, siwsToken) {
|
|
662
607
|
return this.request(
|
|
663
608
|
`/v1/creators/${this.addr(walletAddress)}/profile`,
|
|
664
609
|
{ method: "PATCH", body: JSON.stringify(data), headers: this.bearer(siwsToken) }
|
|
665
610
|
);
|
|
666
611
|
}
|
|
667
|
-
// ─── Collection Slug Claims ───────────────────────────────────────────────────
|
|
668
|
-
/** Check if a collection slug is available (public, no auth). */
|
|
669
612
|
checkCollectionSlugAvailability(slug) {
|
|
670
613
|
return this.get(
|
|
671
614
|
`/v1/collection-slug-claims/check/${encodeURIComponent(slug.toLowerCase().trim())}`
|
|
672
615
|
);
|
|
673
616
|
}
|
|
674
|
-
/** Submit a slug claim for a collection. Requires SIWS token — caller must be the collection owner. */
|
|
675
617
|
submitCollectionSlugClaim(contractAddress, slug, siwsToken, notifyEmail) {
|
|
676
618
|
return this.request("/v1/collection-slug-claims", {
|
|
677
619
|
method: "POST",
|
|
@@ -679,14 +621,12 @@ var ApiClient = class {
|
|
|
679
621
|
headers: this.bearer(siwsToken)
|
|
680
622
|
});
|
|
681
623
|
}
|
|
682
|
-
/** Returns all slug claims submitted by the authenticated wallet. Requires SIWS token. */
|
|
683
624
|
getMyCollectionSlugClaims(siwsToken) {
|
|
684
625
|
return this.request("/v1/collection-slug-claims/me", {
|
|
685
626
|
method: "GET",
|
|
686
627
|
headers: this.bearer(siwsToken)
|
|
687
628
|
});
|
|
688
629
|
}
|
|
689
|
-
/** Resolve a collection slug to a full collection. Returns null if not found. */
|
|
690
630
|
getCollectionBySlug(slug) {
|
|
691
631
|
return this.request(
|
|
692
632
|
`/v1/collections/by-slug/${encodeURIComponent(slug.toLowerCase().trim())}`,
|
|
@@ -694,12 +634,6 @@ var ApiClient = class {
|
|
|
694
634
|
{ allow404: true }
|
|
695
635
|
);
|
|
696
636
|
}
|
|
697
|
-
// ─── User Wallet ─────────────────────────────────────────────────────────────
|
|
698
|
-
/**
|
|
699
|
-
* Frictionless wallet registration. Tenant API key only (no SIWS token required).
|
|
700
|
-
* Idempotent — backend's ensureAccountForWallet upserts and upgrades existing
|
|
701
|
-
* UNKNOWN walletType rows when a more specific value is supplied.
|
|
702
|
-
*/
|
|
703
637
|
async registerUser(params) {
|
|
704
638
|
return this.post("/v1/users/register", params);
|
|
705
639
|
}
|
|
@@ -718,18 +652,12 @@ var ApiClient = class {
|
|
|
718
652
|
headers: this.bearer(siwsToken)
|
|
719
653
|
});
|
|
720
654
|
}
|
|
721
|
-
/** Whether an email already has an account attached — used by io's onboarding to branch into an "already exists" message instead of creating a duplicate account. */
|
|
722
655
|
async checkEmailExists(email) {
|
|
723
656
|
const { exists } = await this.get(
|
|
724
657
|
`/v1/auth/email/exists?email=${encodeURIComponent(email)}`
|
|
725
658
|
);
|
|
726
659
|
return exists;
|
|
727
660
|
}
|
|
728
|
-
/**
|
|
729
|
-
* Get the authenticated user's stored wallet address from the backend DB.
|
|
730
|
-
* Returns null if the user has not completed onboarding yet.
|
|
731
|
-
* Requires SIWS token; no tenant API key needed.
|
|
732
|
-
*/
|
|
733
661
|
getMyWallet(siwsToken) {
|
|
734
662
|
return this.request(
|
|
735
663
|
"/v1/users/me",
|
|
@@ -737,10 +665,13 @@ var ApiClient = class {
|
|
|
737
665
|
{ allow404: true }
|
|
738
666
|
);
|
|
739
667
|
}
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
668
|
+
changeMyEmail(email, siwsToken) {
|
|
669
|
+
return this.request("/v1/users/me/email", {
|
|
670
|
+
method: "POST",
|
|
671
|
+
headers: this.bearer(siwsToken),
|
|
672
|
+
body: JSON.stringify({ email })
|
|
673
|
+
});
|
|
674
|
+
}
|
|
744
675
|
getTokenRemixes(contract, tokenId, opts = {}) {
|
|
745
676
|
const params = new URLSearchParams();
|
|
746
677
|
if (opts.page !== void 0) params.set("page", String(opts.page));
|
|
@@ -750,9 +681,6 @@ var ApiClient = class {
|
|
|
750
681
|
`/v1/tokens/${this.addr(contract)}/${tokenId}/remixes${qs ? `?${qs}` : ""}`
|
|
751
682
|
);
|
|
752
683
|
}
|
|
753
|
-
/**
|
|
754
|
-
* Submit a custom remix offer for a token. Requires SIWS token.
|
|
755
|
-
*/
|
|
756
684
|
submitRemixOffer(params, siwsToken) {
|
|
757
685
|
return this.request("/v1/remix-offers", {
|
|
758
686
|
method: "POST",
|
|
@@ -760,9 +688,6 @@ var ApiClient = class {
|
|
|
760
688
|
headers: { "Authorization": `Bearer ${siwsToken}` }
|
|
761
689
|
});
|
|
762
690
|
}
|
|
763
|
-
/**
|
|
764
|
-
* Submit an auto remix offer for a token with an open license. Requires SIWS token.
|
|
765
|
-
*/
|
|
766
691
|
submitAutoRemixOffer(params, siwsToken) {
|
|
767
692
|
return this.request("/v1/remix-offers/auto", {
|
|
768
693
|
method: "POST",
|
|
@@ -770,9 +695,6 @@ var ApiClient = class {
|
|
|
770
695
|
headers: { "Authorization": `Bearer ${siwsToken}` }
|
|
771
696
|
});
|
|
772
697
|
}
|
|
773
|
-
/**
|
|
774
|
-
* Record a self-remix (owner remixing their own token). Requires SIWS token.
|
|
775
|
-
*/
|
|
776
698
|
confirmSelfRemix(params, siwsToken) {
|
|
777
699
|
return this.request("/v1/remix-offers/self/confirm", {
|
|
778
700
|
method: "POST",
|
|
@@ -780,11 +702,6 @@ var ApiClient = class {
|
|
|
780
702
|
headers: { "Authorization": `Bearer ${siwsToken}` }
|
|
781
703
|
});
|
|
782
704
|
}
|
|
783
|
-
/**
|
|
784
|
-
* List remix offers by role. Requires SIWS token.
|
|
785
|
-
* role="creator" — offers where you are the original creator.
|
|
786
|
-
* role="requester" — offers you made.
|
|
787
|
-
*/
|
|
788
705
|
getRemixOffers(query, siwsToken) {
|
|
789
706
|
const params = new URLSearchParams({ role: query.role });
|
|
790
707
|
if (query.page !== void 0) params.set("page", String(query.page));
|
|
@@ -794,18 +711,12 @@ var ApiClient = class {
|
|
|
794
711
|
headers: this.bearer(siwsToken)
|
|
795
712
|
});
|
|
796
713
|
}
|
|
797
|
-
/**
|
|
798
|
-
* Get a single remix offer. SIWS token optional (price/currency hidden for non-participants).
|
|
799
|
-
*/
|
|
800
714
|
getRemixOffer(id, siwsToken) {
|
|
801
715
|
return this.request(`/v1/remix-offers/${id}`, {
|
|
802
716
|
method: "GET",
|
|
803
717
|
headers: siwsToken ? this.bearer(siwsToken) : void 0
|
|
804
718
|
});
|
|
805
719
|
}
|
|
806
|
-
/**
|
|
807
|
-
* Creator approves a remix offer (authorises the requester to mint). Requires SIWS token.
|
|
808
|
-
*/
|
|
809
720
|
confirmRemixOffer(id, params, siwsToken) {
|
|
810
721
|
return this.request(`/v1/remix-offers/${id}/confirm`, {
|
|
811
722
|
method: "POST",
|
|
@@ -813,9 +724,6 @@ var ApiClient = class {
|
|
|
813
724
|
headers: { "Authorization": `Bearer ${siwsToken}` }
|
|
814
725
|
});
|
|
815
726
|
}
|
|
816
|
-
/**
|
|
817
|
-
* Creator rejects a remix offer. Requires SIWS token.
|
|
818
|
-
*/
|
|
819
727
|
rejectRemixOffer(id, siwsToken) {
|
|
820
728
|
return this.request(`/v1/remix-offers/${id}/reject`, {
|
|
821
729
|
method: "POST",
|
|
@@ -823,10 +731,6 @@ var ApiClient = class {
|
|
|
823
731
|
headers: { "Authorization": `Bearer ${siwsToken}` }
|
|
824
732
|
});
|
|
825
733
|
}
|
|
826
|
-
/**
|
|
827
|
-
* Requester extends the expiry of a pending remix offer by 1–30 days.
|
|
828
|
-
* Requires SIWS token.
|
|
829
|
-
*/
|
|
830
734
|
extendRemixOffer(id, days, siwsToken) {
|
|
831
735
|
return this.request(`/v1/remix-offers/${id}/extend`, {
|
|
832
736
|
method: "POST",
|
|
@@ -834,7 +738,6 @@ var ApiClient = class {
|
|
|
834
738
|
headers: { "Authorization": `Bearer ${siwsToken}` }
|
|
835
739
|
});
|
|
836
740
|
}
|
|
837
|
-
// ─── POP Protocol ──────────────────────────────────────────────────────────
|
|
838
741
|
getPopCollections(opts = {}) {
|
|
839
742
|
return this.getCollections(opts.page ?? 1, opts.limit ?? 20, void 0, opts.sort, "POP_PROTOCOL");
|
|
840
743
|
}
|
|
@@ -851,9 +754,6 @@ var ApiClient = class {
|
|
|
851
754
|
);
|
|
852
755
|
return res.data;
|
|
853
756
|
}
|
|
854
|
-
// ─── Coins (fungible — ERC-20 etc.) ───────────────────────────────────────────
|
|
855
|
-
// Coins are a separate model from Collections (spec 2026-06-14). Price/liquidity
|
|
856
|
-
// is read live from Ekubo (CreatorCoinService.getPrice), never from these.
|
|
857
757
|
getCoins(opts = {}) {
|
|
858
758
|
const params = new URLSearchParams();
|
|
859
759
|
if (opts.page) params.set("page", String(opts.page));
|
|
@@ -866,11 +766,6 @@ var ApiClient = class {
|
|
|
866
766
|
getCoin(contract) {
|
|
867
767
|
return this.get(`/v1/coins/${this.addr(contract)}`);
|
|
868
768
|
}
|
|
869
|
-
/**
|
|
870
|
-
* Creator-authed coin profile edit (image/description). Backend authorizes
|
|
871
|
-
* via `coin.creator` (trustless — from the factory event), not a body param;
|
|
872
|
-
* `siwsToken` is the caller's SIWS bearer token for `identityAuth`.
|
|
873
|
-
*/
|
|
874
769
|
updateCoinProfile(contract, data, siwsToken) {
|
|
875
770
|
return this.request(`/v1/coins/${this.addr(contract)}`, {
|
|
876
771
|
method: "PATCH",
|
|
@@ -878,7 +773,6 @@ var ApiClient = class {
|
|
|
878
773
|
headers: this.bearer(siwsToken)
|
|
879
774
|
});
|
|
880
775
|
}
|
|
881
|
-
// ─── Collection Drop ────────────────────────────────────────────────────────
|
|
882
776
|
getDropCollections(opts = {}) {
|
|
883
777
|
return this.getCollections(opts.page ?? 1, opts.limit ?? 20, void 0, opts.sort, "COLLECTION_DROP");
|
|
884
778
|
}
|
|
@@ -888,29 +782,22 @@ var ApiClient = class {
|
|
|
888
782
|
);
|
|
889
783
|
return res.data;
|
|
890
784
|
}
|
|
891
|
-
// ─── Rewards (v0.49.0) ─────────────────────────────────────────────────────
|
|
892
|
-
// Scores are recomputed on a schedule by the backend (~15 min) — reads only.
|
|
893
|
-
/** Score + level + progress + badges for one address (zeroed for unknown). */
|
|
894
785
|
async getRewards(address) {
|
|
895
786
|
const res = await this.get(`/v1/rewards/${this.addr(address)}`);
|
|
896
787
|
return res.data;
|
|
897
788
|
}
|
|
898
|
-
/** Paginated XP leaderboard. */
|
|
899
789
|
getRewardsLeaderboard(page = 1, limit = 50) {
|
|
900
790
|
return this.get(`/v1/rewards?page=${page}&limit=${limit}`);
|
|
901
791
|
}
|
|
902
|
-
/** Point-event history for an address. */
|
|
903
792
|
getRewardsEvents(address, page = 1, limit = 20) {
|
|
904
793
|
return this.get(
|
|
905
794
|
`/v1/rewards/${this.addr(address)}/events?page=${page}&limit=${limit}`
|
|
906
795
|
);
|
|
907
796
|
}
|
|
908
|
-
/** Reward configuration: level ladder, enabled action XP values, badge catalog. */
|
|
909
797
|
async getRewardsConfig() {
|
|
910
798
|
const res = await this.get(`/v1/rewards/config`);
|
|
911
799
|
return res.data;
|
|
912
800
|
}
|
|
913
|
-
/** Minimal level info for up to 50 addresses — one call per list page. */
|
|
914
801
|
async getRewardsBatch(addresses) {
|
|
915
802
|
if (addresses.length === 0) return [];
|
|
916
803
|
const params = new URLSearchParams({ addresses: addresses.map((a) => this.addr(a)).join(",") });
|
|
@@ -958,7 +845,6 @@ var STARKNET_CREATOR_COIN_START_BLOCK = SN.creatorCoinStartBlock;
|
|
|
958
845
|
var STARKNET_EKUBO_CORE = SN.ekuboCore;
|
|
959
846
|
var SUPPORTED_TOKENS = [
|
|
960
847
|
{
|
|
961
|
-
// Circle-native USDC on Starknet (canonical)
|
|
962
848
|
symbol: "USDC",
|
|
963
849
|
address: "0x033068f6539f8e6e6b131e6b2b814e6c34a5224bc66947c47dab9dfee93b35fb",
|
|
964
850
|
decimals: 6,
|
|
@@ -1030,10 +916,6 @@ var SERVICES = {
|
|
|
1030
916
|
capabilities: ["list", "buy", "make_offer", "cancel", "transfer", "mint", "remix", "license"],
|
|
1031
917
|
events: [
|
|
1032
918
|
{ name: "CollectionCreated", emittedBy: "factory" }
|
|
1033
|
-
// Per-instance ERC-721 Transfer emitted by each deployed collection; not
|
|
1034
|
-
// yet declared here because the indexer polls discovered instances on a
|
|
1035
|
-
// slow schedule. Plan 2026-05-24-data-driven-event-registry.md covers
|
|
1036
|
-
// the migration.
|
|
1037
919
|
],
|
|
1038
920
|
metadataSchema: { licenseDefault: "CC BY-SA" }
|
|
1039
921
|
},
|
|
@@ -1045,8 +927,6 @@ var SERVICES = {
|
|
|
1045
927
|
provenance: "MEDIALANE",
|
|
1046
928
|
uiVariant: "standard",
|
|
1047
929
|
capabilities: ["list", "buy", "make_offer", "cancel", "transfer", "mint", "remix", "license"],
|
|
1048
|
-
// No factory — single shared contract. Events declared when the genesis
|
|
1049
|
-
// contract address is wired into onchain.STARKNET.factoryAddress here.
|
|
1050
930
|
metadataSchema: { licenseDefault: "CC BY-SA" }
|
|
1051
931
|
},
|
|
1052
932
|
"mip-erc1155": {
|
|
@@ -1163,14 +1043,6 @@ var SERVICES = {
|
|
|
1163
1043
|
}
|
|
1164
1044
|
},
|
|
1165
1045
|
uiVariant: "standard",
|
|
1166
|
-
// v3: one contract is both the offer/bid/proposal registry and the
|
|
1167
|
-
// issued license collection (a real, standard ERC-721 minted internally
|
|
1168
|
-
// — no separate receipt contract). `transfer` reflects that a license is
|
|
1169
|
-
// freely transferable at the protocol layer; transferable/expiry intent
|
|
1170
|
-
// is declarative (carried in metadata + LicenseMinted), never
|
|
1171
|
-
// contract-enforced. Supersedes the 2026-07-02 v2 `ip-sponsorship`
|
|
1172
|
-
// (registry-only) + `ip-sponsorship-license` (non-authoritative receipt
|
|
1173
|
-
// via a dedicated ip-erc721 instance) pair — retired as of this redesign.
|
|
1174
1046
|
capabilities: ["sponsor", "transfer"],
|
|
1175
1047
|
events: [
|
|
1176
1048
|
{ name: "OfferCreated", emittedBy: "factory" },
|
|
@@ -1193,10 +1065,6 @@ var SERVICES = {
|
|
|
1193
1065
|
}
|
|
1194
1066
|
},
|
|
1195
1067
|
uiVariant: "coin",
|
|
1196
|
-
// `swap` is a UI affordance (05 §III): the marketplace renders an embedded
|
|
1197
|
-
// Ekubo swap (via StarkZapp) for the coin. Settlement is Ekubo — Medialane
|
|
1198
|
-
// operates NO trading venue and custodies nothing. No venue service exists
|
|
1199
|
-
// for coins (unlike NFTs, whose Medialane marketplace contract settles them).
|
|
1200
1068
|
capabilities: ["launch", "swap", "transfer"],
|
|
1201
1069
|
events: [
|
|
1202
1070
|
{ name: "CreatorCoinCreated", emittedBy: "factory" },
|