@medialane/sdk 0.85.4 → 0.85.6

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.
@@ -1,6 +1,6 @@
1
- import { b6 as ResolvedConfig, bf as TxResult, at as CreatePopCollectionParams, ae as ClaimConditions, ap as CreateDropParams, ay as CreateTicketParams, aT as MintTicketsParams, ar as CreateMembershipParams, aS as MintMembershipsParams, aw as CreateSponsorshipOfferParams, b3 as ProposeSponsorshipParams, l as ApiClient, aQ as MedialaneConfig, aR as MedialaneErrorCode, aY as OrderDetails, b7 as ResolvedFeeConfig } from '../services-CovenF1m.js';
1
+ import { b6 as ResolvedConfig, bf as TxResult, at as CreatePopCollectionParams, ae as ClaimConditions, ap as CreateDropParams, ay as CreateTicketParams, aT as MintTicketsParams, ar as CreateMembershipParams, aS as MintMembershipsParams, aw as CreateSponsorshipOfferParams, b3 as ProposeSponsorshipParams, l as ApiClient, aQ as MedialaneConfig, aR as MedialaneErrorCode, aY as OrderDetails, b7 as ResolvedFeeConfig } from '../services-okgZ2AMD.js';
2
2
  import { AccountInterface, Call, ProviderInterface, TypedData, constants, BigNumberish, DeployAccountContractPayload } from 'starknet';
3
- import { V as VenueAdapter, O as OrderRef, A as AdapterTxResult, R as RegisterOrderParams, j as VenueSigner } from '../types-sIc3OCpo.js';
3
+ import { V as VenueAdapter, O as OrderRef, A as AdapterTxResult, R as RegisterOrderParams, j as VenueSigner } from '../types-nPIXtCF5.js';
4
4
  import 'zod';
5
5
 
6
6
  declare class PopService {
@@ -37,8 +37,6 @@ declare class PopService {
37
37
  createCollection(account: AccountInterface, params: CreatePopCollectionParams): Promise<TxResult>;
38
38
  }
39
39
 
40
- /** Exported so the backend orchestrator can build `create_drop`/`set_claim_conditions`
41
- * calldata with the exact same conversion this service uses client-side. */
42
40
  declare function toContractConditions(c: ClaimConditions): {
43
41
  start_time: number;
44
42
  end_time: number;
@@ -85,50 +83,28 @@ declare class DropService {
85
83
  }
86
84
 
87
85
  interface DeployCollectionParams {
88
- /** Human-readable collection name (e.g. "My IP Collection") */
89
86
  name: string;
90
- /** Short ticker symbol (e.g. "MIP") */
91
87
  symbol: string;
92
- /**
93
- * Collection-level metadata URI (e.g. "ipfs://Qm…/collection.json").
94
- * Should point to a JSON containing `name`, `description`, `image`, and `external_link`.
95
- * Stored on-chain at deploy time. Pass an empty string if not available.
96
- */
97
88
  baseUri: string;
98
89
  }
99
90
  interface MintEditionParams {
100
- /** ERC-1155 collection contract address */
101
91
  collection: string;
102
- /** Recipient wallet address */
103
92
  to: string;
104
- /** Number of copies of this new edition to mint */
105
93
  value: bigint | string;
106
- /**
107
- * Metadata URI — must start with `ipfs://` or `ar://`.
108
- * Immutable: validated and stored at mint. The token id is assigned on-chain
109
- * (sequential from 1); read it from the `IPMinted` event of the returned tx.
110
- */
111
94
  tokenUri: string;
112
95
  }
113
96
  interface BatchMintEditionParams {
114
- /** ERC-1155 collection contract address */
115
97
  collection: string;
116
- /** Recipient wallet address */
117
98
  to: string;
118
- /** New editions to create; ids are assigned sequentially on-chain. */
119
99
  items: Array<{
120
100
  value: bigint | string;
121
101
  tokenUri: string;
122
102
  }>;
123
103
  }
124
104
  interface AddSupplyParams {
125
- /** ERC-1155 collection contract address */
126
105
  collection: string;
127
- /** Recipient wallet address */
128
106
  to: string;
129
- /** Existing edition id to mint more copies of (reverts if it doesn't exist) */
130
107
  tokenId: bigint | string;
131
- /** Number of additional copies */
132
108
  value: bigint | string;
133
109
  }
134
110
  declare class ERC1155CollectionService {
@@ -136,56 +112,21 @@ declare class ERC1155CollectionService {
136
112
  constructor(config: ResolvedConfig);
137
113
  private _factory;
138
114
  private _collection;
139
- /**
140
- * Deploy a new ERC-1155 IP collection.
141
- * Caller becomes the collection owner and can mint items.
142
- * Returns the transaction hash; the deployed collection address is emitted
143
- * in the `CollectionDeployed` event of the factory.
144
- */
145
115
  deployCollection(account: AccountInterface, params: DeployCollectionParams): Promise<TxResult>;
146
- /**
147
- * Mint a new edition into an existing ERC-1155 collection.
148
- * Caller must be the collection owner. The token id is assigned on-chain
149
- * (sequential from 1) — read it from the `IPMinted` event of the returned tx.
150
- * The `tokenUri` is immutable.
151
- */
152
116
  mintEdition(account: AccountInterface, params: MintEditionParams): Promise<TxResult>;
153
- /**
154
- * Batch-mint multiple new editions into an existing ERC-1155 collection.
155
- * All editions go to the same `to` address; ids are assigned sequentially
156
- * on-chain. Caller must be the collection owner.
157
- */
158
117
  batchMintEdition(account: AccountInterface, params: BatchMintEditionParams): Promise<TxResult>;
159
- /**
160
- * Mint additional copies of an EXISTING edition into an ERC-1155 collection.
161
- * Reverts on-chain if `tokenId` has never been minted. Provenance/URI unchanged.
162
- * Caller must be the collection owner.
163
- */
164
118
  addSupply(account: AccountInterface, params: AddSupplyParams): Promise<TxResult>;
165
- /**
166
- * Set the default ERC-2981 royalty for the entire collection.
167
- * `feeNumerator` is out of 10 000 (e.g. 500 = 5%).
168
- * Caller must be the collection owner.
169
- */
170
119
  setDefaultRoyalty(account: AccountInterface, params: {
171
120
  collection: string;
172
121
  receiver: string;
173
122
  feeNumerator: number;
174
123
  }): Promise<TxResult>;
175
- /**
176
- * Set a per-token ERC-2981 royalty override.
177
- * `feeNumerator` is out of 10 000. Caller must be the collection owner.
178
- */
179
124
  setTokenRoyalty(account: AccountInterface, params: {
180
125
  collection: string;
181
126
  tokenId: bigint | string;
182
127
  receiver: string;
183
128
  feeNumerator: number;
184
129
  }): Promise<TxResult>;
185
- /**
186
- * Approve the Medialane1155 marketplace (or any operator) to transfer
187
- * all tokens on behalf of `account`. Required before listing.
188
- */
189
130
  setApprovalForAll(account: AccountInterface, params: {
190
131
  collection: string;
191
132
  operator: string;
@@ -194,16 +135,12 @@ declare class ERC1155CollectionService {
194
135
  }
195
136
 
196
137
  interface CreateCreatorCoinParams {
197
- /** Owner of the new coin — the only address allowed to launch it. */
198
138
  owner: string;
199
139
  name: string;
200
140
  symbol: string;
201
- /** Full fixed supply (raw, 18 decimals). Minted to the Factory until launch. */
202
141
  initialSupply: bigint | string;
203
- /** Deterministic deploy salt. Defaults to a timestamp-derived value. */
204
142
  salt?: bigint | string;
205
143
  }
206
- /** Ekubo pool params (off-chain tick). The `startingPrice` is an Ekubo i129 tick. */
207
144
  interface EkuboPoolParams {
208
145
  fee: bigint | string;
209
146
  tickSpacing: bigint | string;
@@ -215,91 +152,25 @@ interface EkuboPoolParams {
215
152
  }
216
153
  interface EkuboLaunchParams {
217
154
  creatorCoin: string;
218
- /** Quote token (e.g. STRK). Must NOT itself be a Creator Coin. */
219
155
  quoteToken: string;
220
- /** Team-allocation recipients (≤10% of supply, summed). */
221
156
  initialHolders: string[];
222
157
  initialHoldersAmounts: (bigint | string)[];
223
- /** Anti-snipe window in seconds. 0 = none. */
224
158
  transferRestrictionDelay?: number;
225
- /** Max % of supply buyable per tx during the window, in bps (≥50 = 0.5%). */
226
159
  maxPercentageBuyLaunch?: number;
227
- /** Ekubo pool params. Defaults to {@link VALIDATED_EKUBO_PARAMS} (0.01 quote/coin). */
228
160
  ekubo?: EkuboPoolParams;
229
- /**
230
- * Quote (raw units) to transfer to the Factory in the same multicall, used to
231
- * buy the team allocation back out of the pool. Must cover
232
- * `sum(initialHoldersAmounts) × price` (leftover is returned to the caller).
233
- * If omitted, the Factory must already hold enough quote.
234
- */
235
161
  quoteFundAmount?: bigint | string;
236
162
  }
237
- /**
238
- * Smoke-validated Ekubo params (mainnet 2026-06-04): 0.01 quote/coin for an
239
- * 18-decimal quote. `sign: true` yields 0.01 quote/coin regardless of token0/1
240
- * ordering — the launcher compensates internally.
241
- *
242
- * TODO: a `priceToEkuboParams(price, quoteDecimals, tickSpacing)` helper (port of
243
- * unrug's `ekubo/helpers.cairo` tick math) so callers can pick an arbitrary price.
244
- */
245
163
  declare const VALIDATED_EKUBO_PARAMS: EkuboPoolParams;
246
- /**
247
- * Compute the Ekubo `EkuboPoolParams` for launching a coin at `price`
248
- * (default: the fixed 0.01 quote/coin every launch already uses) against a
249
- * quote token of any decimals — not just the 18-decimal case
250
- * `VALIDATED_EKUBO_PARAMS` was smoke-tested for.
251
- *
252
- * No address/ordering parameters: the contract itself determines
253
- * `is_token1_quote` on-chain (`launcher.cairo`) and flips the tick's SIGN
254
- * accordingly — magnitude never changes with ordering. This function
255
- * always computes the tick as if quote were token1; the contract
256
- * compensates sign itself if that assumption doesn't hold for the real
257
- * deployed addresses (this is exactly what "sign: true yields 0.01
258
- * quote/coin regardless of token0/1 ordering" already meant).
259
- *
260
- * `fee`/`tickSpacing`/`bound` are decimal-independent (bound is a pure
261
- * tick-count offset, not a price) and reused from `VALIDATED_EKUBO_PARAMS`
262
- * as-is. Only `startingPrice` is computed:
263
- * decAdj = 10^(coinDecimals − quoteDecimals)
264
- * rawRatio = price / decAdj
265
- * tick = trunc(log(rawRatio) / log(1.000001) / tickSpacing) × tickSpacing
266
- * (rounds toward zero, not nearest — confirmed against the
267
- * known-good on-chain constant, which is 769×tickSpacing,
268
- * not the nearer 770×tickSpacing)
269
- * sign = tick < 0
270
- *
271
- * Cross-verified against the real on-chain constant: for an 18-decimal
272
- * quote this reproduces `VALIDATED_EKUBO_PARAMS.startingPrice` exactly
273
- * (mag 4600158 = 769 × tickSpacing 5982).
274
- */
275
164
  declare function priceToEkuboParams(quoteDecimals: number, price?: number): EkuboPoolParams;
276
- /** A Creator Coin's live spot price, read from its Ekubo pool. */
277
165
  interface CreatorCoinPrice {
278
- /** Quote tokens per 1 coin, human units (e.g. 0.0101 = 0.0101 STRK/coin). */
279
166
  quotePerCoin: number;
280
- /** The quote token the coin is paired against on Ekubo. */
281
167
  quoteToken: string;
282
168
  quoteSymbol: string | null;
283
169
  quoteDecimals: number;
284
170
  }
285
- /**
286
- * Read a Creator Coin's live spot price directly from its Ekubo pool (read-only).
287
- *
288
- * Self-contained: discovers the pool params (quote token, fee, tick spacing) from the
289
- * coin's own `launched_with_liquidity_parameters`, reads `Core.get_pool_price`, and
290
- * converts the `sqrt_ratio` to quote-per-coin (handling token0/1 ordering + decimals).
291
- * Returns `null` if the coin isn't launched on Ekubo. No backend, no swap-quote
292
- * dependency — works for day-one coins that AVNU doesn't index yet.
293
- */
294
171
  declare function getCreatorCoinPrice(coinAddress: string, provider: ProviderInterface): Promise<CreatorCoinPrice | null>;
295
- /** Build the `create_creator_coin` call (full supply minted to the Factory). */
296
172
  declare function buildCreateCreatorCoinCall(params: CreateCreatorCoinParams): Call;
297
- /**
298
- * Build the Ekubo launch multicall: optional quote `transfer` (pre-funds the
299
- * Factory for the team-allocation buyback) + `launch_on_ekubo`.
300
- */
301
173
  declare function buildLaunchOnEkuboCalls(params: EkuboLaunchParams): Call[];
302
- /** Minimal receipt shape — works with any starknet.js receipt version. */
303
174
  interface CreatorCoinReceiptLike {
304
175
  events?: Array<{
305
176
  from_address?: string;
@@ -307,33 +178,15 @@ interface CreatorCoinReceiptLike {
307
178
  data?: string[];
308
179
  }>;
309
180
  }
310
- /**
311
- * Pull the deployed coin address from a `create_creator_coin` tx receipt.
312
- * Event data = [owner, name, symbol, supply_low, supply_high, coin_address].
313
- * Throws when the receipt carries no matching Factory event.
314
- */
315
181
  declare function parseCreatorCoinCreated(receipt: CreatorCoinReceiptLike): string;
316
- /**
317
- * On-chain Creator Coin interactions (Ekubo-only launchpad).
318
- * Faithful fork of unruggable.meme — permanent LP lock + team-allocation buyback.
319
- */
320
182
  declare class CreatorCoinService {
321
183
  private readonly factoryAddress;
322
184
  private readonly config;
323
185
  constructor(config: ResolvedConfig);
324
186
  private _factory;
325
- /** Deploy a fixed-supply CreatorCoin (full supply minted to the Factory). */
326
187
  createCreatorCoin(account: AccountInterface, params: CreateCreatorCoinParams): Promise<TxResult>;
327
- /**
328
- * Launch a coin on Ekubo (owner-only). Optionally pre-funds the Factory with
329
- * quote (for the buyback) in the same multicall. Liquidity is permanently
330
- * locked in the EkuboLauncher.
331
- */
332
188
  launchOnEkubo(account: AccountInterface, params: EkuboLaunchParams): Promise<TxResult>;
333
- /** View: is this address a Factory-deployed Creator Coin? */
334
189
  isCreatorCoin(address: string, account: AccountInterface): Promise<boolean>;
335
- /** Read a coin's live Ekubo spot price (quote-per-coin) via the configured RPC.
336
- * Read-only; returns null if the coin isn't launched on Ekubo. */
337
190
  getPrice(coinAddress: string): Promise<CreatorCoinPrice | null>;
338
191
  }
339
192
 
@@ -352,32 +205,22 @@ declare class TicketService {
352
205
  private _factory;
353
206
  private _collection;
354
207
  private _collectionRead;
355
- /**
356
- * Deploys a new IPTicketCollection via the factory. Caller becomes owner.
357
- * `baseUri` is the collection-level metadata URI, embedded on-chain in the
358
- * deploy transaction.
359
- */
360
208
  deployCollection(account: AccountInterface, params: {
361
209
  name: string;
362
210
  symbol: string;
363
211
  baseUri: string;
364
212
  factoryAddress?: string;
365
213
  }): Promise<TxResult>;
366
- /** Owner-only. Creates a new ticket inside the caller's deployed collection. */
367
214
  createTicket(account: AccountInterface, params: CreateTicketParams): Promise<TxResult>;
368
- /** Owner-only. Mints `amount` of `tokenId` to `to`. */
369
215
  mint(account: AccountInterface, params: MintTicketsParams): Promise<TxResult>;
370
- /** Read — true if holder has balance > 0 and current time is within the ticket window. */
371
216
  isValid(params: {
372
217
  collection: string;
373
218
  tokenId: bigint | string;
374
219
  holder: string;
375
220
  }): Promise<boolean>;
376
- /** Read — number of tickets created so far (ids are sequential from 1). */
377
221
  getTicketCount(params: {
378
222
  collection: string;
379
223
  }): Promise<bigint>;
380
- /** Read — returns the Ticket record for a token ID. */
381
224
  getTicket(params: {
382
225
  collection: string;
383
226
  tokenId: bigint | string;
@@ -399,36 +242,23 @@ declare class ClubService {
399
242
  private _factory;
400
243
  private _collection;
401
244
  private _collectionRead;
402
- /**
403
- * Deploys a new IPClubCollection via the factory. Caller becomes owner.
404
- * `baseUri` is the collection-level metadata URI, embedded on-chain in the
405
- * deploy transaction.
406
- */
407
245
  deployCollection(account: AccountInterface, params: {
408
246
  name: string;
409
247
  symbol: string;
410
248
  baseUri: string;
411
249
  factoryAddress?: string;
412
250
  }): Promise<TxResult>;
413
- /** Owner-only. Creates a new membership tier inside the caller's deployed collection. */
414
251
  createMembership(account: AccountInterface, params: CreateMembershipParams): Promise<TxResult>;
415
- /**
416
- * Owner-only. Mints `amount` of `tokenId` to `to`. The validity window
417
- * gates membership, never minting — future-window tiers mint fine.
418
- */
419
252
  mint(account: AccountInterface, params: MintMembershipsParams): Promise<TxResult>;
420
- /** Read — true if holder holds any tier currently inside its validity window. */
421
253
  isMember(params: {
422
254
  collection: string;
423
255
  holder: string;
424
256
  }): Promise<boolean>;
425
- /** Read — true if holder holds `tokenId` and the current time is inside its window. */
426
257
  isMemberOf(params: {
427
258
  collection: string;
428
259
  tokenId: bigint | string;
429
260
  holder: string;
430
261
  }): Promise<boolean>;
431
- /** Read — returns the Membership record for a token ID. */
432
262
  getMembership(params: {
433
263
  collection: string;
434
264
  tokenId: bigint | string;
@@ -454,7 +284,6 @@ interface SponsorshipProposalRecord {
454
284
  tokenId: bigint;
455
285
  amount: bigint;
456
286
  duration: number;
457
- /** Unix seconds; 0 = no deadline. */
458
287
  validUntil: number;
459
288
  paymentToken: string;
460
289
  licenseTermsUri: string;
@@ -462,34 +291,20 @@ interface SponsorshipProposalRecord {
462
291
  open: boolean;
463
292
  royaltyBps: bigint;
464
293
  }
465
- /**
466
- * IP Sponsorship v3 — one contract is both the offer/bid/proposal registry
467
- * AND the issued license collection (a standard ERC-721; embeds
468
- * ERC721Component directly, no separate receipt contract, no `set_minter`
469
- * bootstrap). `transferable`/expiry are declarative terms only — never
470
- * contract-enforced against a transfer — carried in `license_terms_uri`
471
- * metadata and the `LicenseMinted` event; the indexer, not this contract,
472
- * derives validity. A license moves through the standard ERC-721
473
- * `transfer_from`/`safe_transfer_from` on this same contract address, so
474
- * there is no bespoke transfer wrapper here.
475
- */
476
294
  declare class SponsorshipService {
477
295
  private readonly sponsorshipAddress?;
478
296
  private readonly config;
479
297
  constructor(config: ResolvedConfig);
480
298
  private _contract;
481
299
  private _contractRead;
482
- /** The offer author must currently own (nftContract, tokenId) — enforced on-chain at create and accept. */
483
300
  createOffer(account: AccountInterface, params: CreateSponsorshipOfferParams & {
484
301
  sponsorshipAddress?: string;
485
302
  }): Promise<TxResult>;
486
- /** Reversible — gates new bids/acceptance only. */
487
303
  setOfferOpen(account: AccountInterface, params: {
488
304
  offerId: bigint | string;
489
305
  open: boolean;
490
306
  sponsorshipAddress?: string;
491
307
  }): Promise<TxResult>;
492
- /** A bid is a signal plus an open ERC-20 allowance — no tokens move until accepted. Prepends the approve. */
493
308
  placeBid(account: AccountInterface, params: {
494
309
  offerId: bigint | string;
495
310
  amount: bigint | string;
@@ -500,11 +315,6 @@ declare class SponsorshipService {
500
315
  offerId: bigint | string;
501
316
  sponsorshipAddress?: string;
502
317
  }): Promise<TxResult>;
503
- /**
504
- * Author-only. Re-verifies IP ownership, settles the sponsor's payment
505
- * (allowance pull, no escrow), and mints the license — a real ERC-721 on
506
- * this same contract — to the sponsor, all atomically in one call.
507
- */
508
318
  acceptBid(account: AccountInterface, params: {
509
319
  offerId: bigint | string;
510
320
  sponsor: string;
@@ -513,22 +323,14 @@ declare class SponsorshipService {
513
323
  proposeSponsorship(account: AccountInterface, params: ProposeSponsorshipParams & {
514
324
  sponsorshipAddress?: string;
515
325
  }): Promise<TxResult>;
516
- /** Proposer-only. Advisory against an acceptance in flight in the same block. */
517
326
  withdrawProposal(account: AccountInterface, params: {
518
327
  proposalId: bigint | string;
519
328
  sponsorshipAddress?: string;
520
329
  }): Promise<TxResult>;
521
- /**
522
- * Asset-owner-only (re-verified on-chain — a proposal binds to the asset,
523
- * not a person: whoever owns it at acceptance time is paid and issues the
524
- * license). Settles payment and mints the license atomically, same as
525
- * `acceptBid`.
526
- */
527
330
  acceptProposal(account: AccountInterface, params: {
528
331
  proposalId: bigint | string;
529
332
  sponsorshipAddress?: string;
530
333
  }): Promise<TxResult>;
531
- /** Asset-owner-only. */
532
334
  rejectProposal(account: AccountInterface, params: {
533
335
  proposalId: bigint | string;
534
336
  sponsorshipAddress?: string;
@@ -555,7 +357,6 @@ declare class SponsorshipService {
555
357
  getLastLicenseId(params?: {
556
358
  sponsorshipAddress?: string;
557
359
  }): Promise<bigint>;
558
- /** EIP-2981 — royalty recipient (the license's issuing author) and amount owed on a resale at `salePrice`. */
559
360
  royaltyInfo(params: {
560
361
  licenseId: bigint | string;
561
362
  salePrice: bigint | string;
@@ -567,10 +368,6 @@ declare class SponsorshipService {
567
368
  }
568
369
 
569
370
  declare class MedialaneClient {
570
- /**
571
- * Off-chain API client — covers all /v1/* backend endpoints.
572
- * Requires `backendUrl` in config; pass `apiKey` for authenticated routes.
573
- */
574
371
  readonly api: ApiClient;
575
372
  readonly services: {
576
373
  readonly pop: PopService;
@@ -600,40 +397,17 @@ declare function getCounter(address: string, config: ResolvedConfig): Promise<bi
600
397
  declare function getOrderDetails1155(orderHash: string, config: ResolvedConfig): Promise<OrderDetails>;
601
398
  declare function getCounter1155(address: string, config: ResolvedConfig): Promise<bigint>;
602
399
 
603
- /** What a stored/registered order resolves to for fulfilment/cancellation. */
604
400
  interface ResolvedOrder {
605
- /** ERC-20 consideration token address. */
606
401
  paymentToken: string;
607
- /** Per-unit price in raw token units, as a decimal string. The total paid is
608
- * `unitPrice × quantity` (quantity is 1 for ERC-721). */
609
402
  unitPrice: string;
610
- /** Which venue the order lives on. */
611
403
  standard: "ERC721" | "ERC1155";
612
404
  }
613
- /**
614
- * Dependencies for {@link StarknetVenue}. The token standard is resolved through
615
- * injected reads (the backend already tracks it per collection) rather than an
616
- * on-chain interface probe — Starknet has no single canonical ERC-1155 interface
617
- * id and the app already carries the standard from the indexer.
618
- */
619
405
  interface StarknetVenueDeps {
620
406
  config: ResolvedConfig;
621
- /** Read provider for building (counter/approval reads) and the post-tx receipt. */
622
407
  provider: ProviderInterface;
623
- /** Resolve a registered order (payment token, per-unit price, venue) from its digest. */
624
408
  resolveOrder: (orderRef: OrderRef) => Promise<ResolvedOrder>;
625
- /** Resolve a collection's token standard (from the indexer). */
626
409
  resolveStandard: (contract: string) => Promise<"ERC721" | "ERC1155">;
627
410
  }
628
- /**
629
- * First-class Starknet venue adapter. It orchestrates the marketplace protocol
630
- * over the chain-neutral {@link StarknetVenueSigner} capability port: it *builds*
631
- * typed data + calldata via the pure marketplace builders and *reads* chain state
632
- * (counter, approvals, receipt) on `deps.provider`, but it never signs or executes
633
- * itself — the app's signer does that (sign + submit + confirm). This is what lets
634
- * a single adapter drive every wallet (injected/Cartridge/Privy) and the AVNU
635
- * paymaster without knowing they differ.
636
- */
637
411
  declare class StarknetVenue implements VenueAdapter<StarknetVenueSigner> {
638
412
  private readonly deps;
639
413
  readonly chain: "STARKNET";
@@ -649,36 +423,21 @@ declare class StarknetVenue implements VenueAdapter<StarknetVenueSigner> {
649
423
  orderRef: OrderRef;
650
424
  }>;
651
425
  private readCounter;
652
- /** 721 listing approval: `get_approved(tokenId) == marketplace` ⇒ no approve. */
653
426
  private approval721ForListing;
654
- /** 1155 listing approval: `is_approved_for_all(owner, marketplace)`. */
655
427
  private approval1155ForListing;
656
- /** Offers always approve the ERC-20 spend (no read). */
657
428
  private approvalForErc20;
658
- /** The canonical Starknet order id = the contract-emitted `OrderCreated`
659
- * hash (`keys[1]`), which is exactly what the indexer stores. */
660
429
  private orderRefFromReceipt;
661
430
  }
662
431
 
663
432
  type FeeSurface = "marketplace" | "launchpad" | "sponsorship";
664
433
  interface BuildFeeCallParams {
665
434
  surface: FeeSurface;
666
- /** ERC-20 address the gross amount is denominated in. */
667
435
  token: string;
668
- /** Gross amount in raw token units (e.g. price in wei, or price * quantity). */
669
436
  grossAmount: bigint;
670
437
  }
671
- /**
672
- * The single source of truth for the platform fee. Returns one ERC-20
673
- * `transfer(fundAddress, feeAmount)` Call to bundle into the settlement
674
- * multicall, or `null` when no fee should be charged.
675
- *
676
- * Fail-safe: returns null if disabled, no fund address, or the fee floors to 0.
677
- */
678
438
  declare function buildFeeCall(p: BuildFeeCallParams, cfg: ResolvedFeeConfig): Call | null;
679
439
 
680
440
  declare const ADMIN_SCOPE = "admin-api";
681
- /** The wallet-signed authorization for a session key. */
682
441
  interface AdminGrant {
683
442
  wallet: string;
684
443
  chain: string;
@@ -700,19 +459,11 @@ interface AdminRequest {
700
459
  nonce: string;
701
460
  ts: number;
702
461
  }
703
- /** Compact session-key signature over adminRequestDigest. */
704
462
  type AdminRequestSig = string;
705
463
 
706
- /**
707
- * Canonical felt digest of a request — the SINGLE definition shared by signer
708
- * (portal/agent) and verifier (backend). Binds method+path+query+body+nonce+ts,
709
- * so a captured request cannot be retargeted or mutated without invalidating it.
710
- */
711
464
  declare function adminRequestDigest(req: AdminRequest): string;
712
465
 
713
- /** Sign a request with the session private key. */
714
466
  declare function signAdminRequest(sessionPrivateKey: string, req: AdminRequest): AdminRequestSig;
715
- /** Verify a request signature against the full session public key. */
716
467
  declare function verifyAdminRequestSig(sessionPublicKey: string, req: AdminRequest, sig: AdminRequestSig): boolean;
717
468
 
718
469
  interface AdminSessionTypedDataInput {
@@ -722,7 +473,6 @@ interface AdminSessionTypedDataInput {
722
473
  expiresAt: number;
723
474
  chainId?: string;
724
475
  }
725
- /** The SNIP-12 typed data the wallet signs — rebuilt identically on the backend. */
726
476
  declare function buildAdminSessionTypedData(p: AdminSessionTypedDataInput): {
727
477
  readonly types: {
728
478
  readonly StarknetDomain: readonly [{
@@ -766,7 +516,6 @@ declare function buildAdminSessionTypedData(p: AdminSessionTypedDataInput): {
766
516
  readonly expiresAt: string;
767
517
  };
768
518
  };
769
- /** felt commitment to a full session public key (fits in the signed message). */
770
519
  declare function sessionKeyHashOf(sessionPublicKey: string): string;
771
520
  interface CreateGrantOpts {
772
521
  wallet: string;
@@ -775,10 +524,6 @@ interface CreateGrantOpts {
775
524
  ttlSeconds?: number;
776
525
  now?: () => number;
777
526
  }
778
- /**
779
- * Generate an ephemeral session keypair and have `signTypedData` (the connected
780
- * wallet's signMessage) sign the grant. The private key never leaves the caller.
781
- */
782
527
  declare function createAdminSessionGrant(signTypedData: (data: ReturnType<typeof buildAdminSessionTypedData>) => Promise<string[]>, opts: CreateGrantOpts): Promise<AdminSession>;
783
528
 
784
529
  declare const ADMIN_HEADERS: {
@@ -788,7 +533,6 @@ declare const ADMIN_HEADERS: {
788
533
  readonly ts: "x-ml-admin-ts";
789
534
  };
790
535
  declare function randomNonce(): string;
791
- /** Build the four request headers from a session + (method, path, body). */
792
536
  declare function encodeAdminHeaders(session: AdminSession, reqInit: {
793
537
  method: string;
794
538
  path: string;
@@ -801,15 +545,12 @@ interface ParsedAdminHeaders {
801
545
  nonce: string;
802
546
  ts: number;
803
547
  }
804
- /** Parse + shape-check the headers on the backend. Returns null if malformed. */
805
548
  declare function parseAdminHeaders(get: (name: string) => string | null | undefined): ParsedAdminHeaders | null;
806
549
 
807
- /** Anything that can produce a Starknet signature over SNIP-12 typed data. */
808
550
  interface SiwsSigner {
809
551
  signMessage: (typedData: TypedData) => Promise<unknown>;
810
552
  }
811
553
  interface RequestSiwsTokenArgs {
812
- /** Medialane backend base URL (each app resolves this per its own env/proxy setup). */
813
554
  backendUrl: string;
814
555
  walletAddress: string;
815
556
  signer: SiwsSigner;
@@ -817,18 +558,9 @@ interface RequestSiwsTokenArgs {
817
558
 
818
559
  declare function getSiwsStorageKey(address: string): string;
819
560
  declare function isSiwsTokenValid(token: string | null | undefined): token is string;
820
- /** Browser-only (returns null server-side, same as a cache miss). */
821
561
  declare function getStoredSiwsToken(address: string): string | null;
822
- /** Browser-only (no-op server-side). */
823
562
  declare function storeSiwsToken(address: string, token: string): void;
824
563
  declare function normalizeSiwsSignature(signature: unknown): string[];
825
- /**
826
- * Request a nonce, sign it with `signer`, verify with the backend, and cache
827
- * the resulting token in localStorage (expiry-aware). Single source for the
828
- * SIWS client protocol — medialane-starknet and medialane-io both delegate
829
- * to this instead of keeping their own copies (see medialane-core/docs/specs/
830
- * 2026-06-30-remove-clerk-from-backend-design.md §IX).
831
- */
832
564
  declare function requestSiwsToken({ backendUrl, walletAddress, signer, }: RequestSiwsTokenArgs): Promise<string>;
833
565
 
834
566
  declare const IPMarketplaceABI: readonly [{
@@ -8099,93 +7831,29 @@ declare const MAX_SUPPLY = 1000000000000n;
8099
7831
  declare function validateName(s: string): string | null;
8100
7832
  declare function validateSymbol(s: string): string | null;
8101
7833
  declare function validateSupply(human: string): string | null;
8102
- /** Human integer → raw base units (default 18-dec coin). */
8103
7834
  declare function toRaw(human: bigint, decimals?: number): bigint;
8104
- /** Team allocation in raw coin units. `pct` is whole-percent 0–10. */
8105
7835
  declare function teamCoinsRaw(supplyRaw: bigint, pct: number): bigint;
8106
- /** Quote (raw) needed to buy the team allocation back out of the pool:
8107
- * teamCoins(human) × 0.01, in the quote token's raw units.
8108
- * = teamCoinsRaw × 10^quoteDecimals / (100 × 10^18). For 18-dec quote → /100. */
8109
7836
  declare function buybackQuoteRaw(teamCoinsRawValue: bigint, quoteDecimals: number): bigint;
8110
- /** Fully-diluted value (human, in quote) for the live preview. */
8111
7837
  declare function fdvHuman(supplyHuman: number): number;
8112
7838
 
8113
- /**
8114
- * Serialize a string as Cairo ByteArray calldata felts using UTF-8 encoding.
8115
- *
8116
- * starknet.js byteArray.byteArrayFromString calls encodeShortString internally
8117
- * which rejects non-ASCII characters (accented letters, CJK, Arabic, etc.).
8118
- * This implementation packs raw UTF-8 bytes into 31-byte chunks as big-endian
8119
- * felts, matching the Cairo ByteArray struct layout.
8120
- *
8121
- * Return layout: [chunks_len, ...chunk_felts, pending_word, pending_word_len]
8122
- */
8123
7839
  declare function encodeByteArray(str: string): string[];
8124
7840
 
8125
- /**
8126
- * Build SNIP-12 typed data for signing an OrderParameters struct.
8127
- * The shape is identical across ERC-721 and ERC-1155 (nested OfferItem +
8128
- * ConsiderationItem) — only the domain version differs.
8129
- */
8130
7841
  declare function buildOrderTypedData(message: Record<string, unknown>, chainId: constants.StarknetChainId | string): TypedData;
8131
7842
  declare function build1155OrderTypedData(message: Record<string, unknown>, chainId: constants.StarknetChainId | string): TypedData;
8132
- /** OrderCancellation typed data — identical shape across both standards. */
8133
7843
  declare function buildCancellationTypedData(message: Record<string, unknown>, chainId: constants.StarknetChainId | string): TypedData;
8134
7844
  declare function build1155CancellationTypedData(message: Record<string, unknown>, chainId: constants.StarknetChainId | string): TypedData;
8135
7845
 
8136
- /**
8137
- * Derive a MediaWallet owner key pair from a business-held secret and a
8138
- * per-recipient identifier (typically their email) — deterministic, so the
8139
- * business never has to store a per-recipient key: recompute it from the one
8140
- * secret it already holds whenever it's needed (deploy time, handoff time),
8141
- * then discard it. HKDF-SHA256(secret, recipientId), reduced mod the Stark
8142
- * curve order to get a valid scalar (never zero).
8143
- */
8144
7846
  declare function deriveOwnerKeyPair(secret: Uint8Array, recipientId: string): {
8145
7847
  privateKey: string;
8146
7848
  publicKey: string;
8147
7849
  };
8148
7850
 
8149
- /**
8150
- * Account constructor calldata for a Stark-curve owner and no guardian:
8151
- * `serialize((Signer::Starknet(owner_pubkey), Option::None))` = `[0, owner_pubkey, 1]`.
8152
- * Verified against `medialane-contracts/contracts/MediaWallet`'s factory
8153
- * `build_constructor_calldata`.
8154
- */
8155
7851
  declare function ownerConstructorCalldata(ownerPubkey: BigNumberish): string[];
8156
- /**
8157
- * Counterfactual MediaWallet account address for `(ownerPubkey, salt)` —
8158
- * standard Starknet derivation with `deploy_from_zero` (deployer address = 0).
8159
- * With `salt = 0` the address is a pure function of the owner key, so it can
8160
- * be computed before anything is deployed on-chain.
8161
- */
8162
7852
  declare function computeAccountAddress(ownerPubkey: BigNumberish, salt?: BigNumberish): string;
8163
7853
 
8164
- /**
8165
- * GUID of a Stark-curve owner, matching MediaWallet's
8166
- * `SignerTrait::into_guid` for `Signer::Starknet` — `poseidon_2("Starknet
8167
- * Signer", pubkey)`. `change_owners` removes owners by GUID, not by raw
8168
- * pubkey.
8169
- */
8170
7854
  declare function computeOwnerGuid(ownerPubkey: BigNumberish): string;
8171
- /**
8172
- * The `change_owners` call that hands a provisioned account off to its real
8173
- * owner: removes the business-derived interim owner (by GUID) and adds the
8174
- * recipient's own new owner key (by pubkey) — one call, immediate, no
8175
- * timelock. Must be signed by a *current* owner (the interim key) to
8176
- * succeed on-chain.
8177
- */
8178
7855
  declare function buildChangeOwnersCall(accountAddress: string, removeOwnerPubkey: BigNumberish, addOwnerPubkey: BigNumberish): Call;
8179
7856
 
8180
- /**
8181
- * The exact payload starknet.js's `Account.deployAccount()` expects — the
8182
- * caller constructs a signing `Account` from the derived private key
8183
- * (`deriveOwnerKeyPair`) against a **pre-funded** counterfactual address
8184
- * (`computeAccountAddress`) and calls
8185
- * `account.deployAccount(buildDeployAccountParams(ownerPubkey))` directly.
8186
- * This function only builds the payload — it never signs or submits
8187
- * anything itself.
8188
- */
8189
7857
  declare function buildDeployAccountParams(ownerPubkey: BigNumberish, salt?: BigNumberish): DeployAccountContractPayload;
8190
7858
 
8191
7859
  type StarknetVenueSigner = VenueSigner<TypedData, Call>;