@medialane/sdk 0.35.1 → 0.37.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/dist/index.d.cts CHANGED
@@ -1,82 +1,41 @@
1
1
  import { z } from 'zod';
2
2
  import { Call, AccountInterface, constants, TypedData, ProviderInterface } from 'starknet';
3
3
 
4
- /** Medialane721 marketplace venue immutable, ownerless (redesign, deployed 2026-05-31). */
5
- declare const MARKETPLACE_721_CONTRACT_MAINNET = "0x069cf5391077e3ebdd9cb6aebf90ed530d29f0d6aa34a43f5afae938c0fb565e";
6
- /** Class hash of the Medialane721 venue. */
7
- declare const MARKETPLACE_721_CLASS_HASH_MAINNET = "0x04c6f952d747ad7ead1b3dad4c1d587837d38f8ec29d6c095a4afa5b5ece5957";
8
- /** First mainnet block for the Medialane721 venue deployment. */
9
- declare const MARKETPLACE_721_START_BLOCK_MAINNET = 10350340;
10
- /** Medialane1155 marketplace venue — immutable, ownerless (redesign, deployed 2026-05-31). */
11
- declare const MARKETPLACE_1155_CONTRACT_MAINNET = "0x040cd7b3e73bb3c892166e34bdc01d1797f97ecbc356c23f1cf38033cacf0077";
12
- /** Class hash of the Medialane1155 venue. */
13
- declare const MARKETPLACE_1155_CLASS_HASH_MAINNET = "0x02600bb720908f119afe482309d36c39d087587f0df9576454acfb6363e78cd8";
14
- /** First mainnet block for the Medialane1155 venue deployment. */
15
- declare const MARKETPLACE_1155_START_BLOCK_MAINNET = 10350855;
16
- declare const COLLECTION_721_CONTRACT_MAINNET = "0x0322cb7119955e01ac778d40976eb3ba50540bb0899f812d612f9c7e63e49fd2";
17
- /** Class hash of the IPNft (per-collection ERC-721) implementation. */
18
- declare const IPNFT_CLASS_HASH_MAINNET = "0x27ee4ded786d51bced1e94afec3034d6ffce71c032c45ee1ff283ccfa9db12e";
19
- /** Class hash of the IPCollection registry. */
20
- declare const IPCOLLECTION_CLASS_HASH_MAINNET = "0x287ccdff8b6655a2248cfe170d82eae3a35303cd00ef3e751b25ddca26d9095";
21
- /** First mainnet block for the current MIP IPCollection registry deployment. */
22
- declare const COLLECTION_721_START_BLOCK_MAINNET = 10046166;
23
- declare const DROP_FACTORY_CONTRACT_MAINNET = "0x03587f42e29daee1b193f6cf83bf8627908ed6632d0d83fcb26225c50547d800";
24
- declare const POP_FACTORY_CONTRACT_MAINNET = "0x00b32c34b427d8f346b5843ada6a37bd3368d879fc752cd52b68a87287f60111";
25
- /** NFTComments on-chain comment system — immutable, no admin key. */
26
- declare const NFTCOMMENTS_CONTRACT_MAINNET = "0x02cdac70c94447189af0389dfea63f4d5e4154ea8a563de288a5ab1c39e37843";
27
- declare const SUPPORTED_TOKENS: readonly [{
28
- readonly symbol: "USDC";
29
- readonly address: "0x033068f6539f8e6e6b131e6b2b814e6c34a5224bc66947c47dab9dfee93b35fb";
30
- readonly decimals: 6;
31
- readonly listable: true;
32
- }, {
33
- readonly symbol: "USDT";
34
- readonly address: "0x068f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8";
35
- readonly decimals: 6;
36
- readonly listable: true;
37
- }, {
38
- readonly symbol: "ETH";
39
- readonly address: "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7";
40
- readonly decimals: 18;
41
- readonly listable: true;
42
- }, {
43
- readonly symbol: "STRK";
44
- readonly address: "0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d";
45
- readonly decimals: 18;
46
- readonly listable: true;
47
- }, {
48
- readonly symbol: "WBTC";
49
- readonly address: "0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac";
50
- readonly decimals: 8;
51
- readonly listable: true;
52
- }];
53
- type SupportedTokenSymbol = (typeof SUPPORTED_TOKENS)[number]["symbol"];
54
- declare const SUPPORTED_NETWORKS: readonly ["mainnet"];
55
- type Network = (typeof SUPPORTED_NETWORKS)[number];
56
- declare const DEFAULT_RPC_URL = "https://rpc.starknet.lava.build";
57
- declare const POP_COLLECTION_CLASS_HASH_MAINNET = "0x077c421686f10851872561953ea16898d933364b7f8937a5d7e2b1ba0a36263f";
58
- declare const DROP_COLLECTION_CLASS_HASH_MAINNET = "0x00092e72cdb63067521e803aaf7d4101c3e3ce026ae6bc045ec4228027e58282";
59
- /** IPCollectionFactory v0.3.0 (deployed mainnet 2026-06-10): sequential on-chain
60
- * edition ids, ownerless/immutable. New collections deploy from here. */
61
- declare const COLLECTION_1155_CONTRACT_MAINNET = "0x0083543c3ee15040a419fc539fa6889f5b956e7d071bcfa97842cb0ae42ad6cc";
62
- /** Class hash of the IPCollectionFactory v0.3.0 implementation. */
63
- declare const COLLECTION_1155_FACTORY_CLASS_HASH_MAINNET = "0x331a69da8655a882ba1fbcb55188b8fa09116521db901bbbaafc9fead0689f8";
64
- /** Class hash of the IPCollection ERC-1155 v0.3.0 implementation. */
65
- declare const COLLECTION_1155_CLASS_HASH_MAINNET = "0x4e110b59af240ae6c7742999964c4eae13fb2ed935c47fe97653ec017ebea34";
66
- /** First mainnet block of the v0.3.0 ERC-1155 factory deployment. */
67
- declare const COLLECTION_1155_START_BLOCK_MAINNET = 10665319;
68
- /** Creator Coin Factory — entrypoint: create_creator_coin + launch_on_ekubo. */
69
- declare const CREATOR_COIN_FACTORY_CONTRACT_MAINNET = "0x50fa807b5274079fb19374673d7bab6d2dc3af7e1032ea43eb6e44bcbde4c3c";
70
- /** EkuboLauncher — permanently holds (locks) each Creator Coin's LP position. */
71
- declare const CREATOR_COIN_EKUBO_LAUNCHER_MAINNET = "0x4f7fceb5ac10f12f9544a09580592e5bdf1b7f04f48765eecf12286d8ccb7b4";
72
- /** Class hash of the per-coin CreatorCoin ERC-20 the Factory deploys. */
73
- declare const CREATOR_COIN_CLASS_HASH_MAINNET = "0x743e4c8a5b96bb83bbf4af04edbbb482d5ece89eed9b729a79fb7df0cd0b6b6";
74
- /** Class hash of the Creator Coin Factory. */
75
- declare const CREATOR_COIN_FACTORY_CLASS_HASH_MAINNET = "0x51765926b1344c9a20b8cd4b5abe7b7d47375ae97cf6804db3ea5d4b05a9b55";
76
- /** First mainnet block of the Factory deployment. */
77
- declare const CREATOR_COIN_START_BLOCK_MAINNET = 10474544;
78
- /** Ekubo Core (Starknet mainnet) — Creator Coin pools live here; read spot price via `get_pool_price`. */
79
- declare const EKUBO_CORE_MAINNET = "0x00000005dd3d2f4429af886cd1a3b08289dbcea99a294197e9eb43b0e0325b4b";
4
+ /** Mirrors the backend Prisma `Chain` enum. */
5
+ declare const CHAINS: readonly ["STARKNET", "ETHEREUM", "SOLANA", "BASE", "BITCOIN"];
6
+ type Chain = (typeof CHAINS)[number];
7
+ /** Per-chain on-chain coordinates of Medialane services + venues. All fields
8
+ * optional because not every service exists on every chain. */
9
+ interface ChainCoordinates {
10
+ rpcUrl: string;
11
+ marketplace721?: string;
12
+ marketplace721ClassHash?: string;
13
+ marketplace721StartBlock?: number;
14
+ marketplace1155?: string;
15
+ marketplace1155ClassHash?: string;
16
+ marketplace1155StartBlock?: number;
17
+ collection721?: string;
18
+ collection721StartBlock?: number;
19
+ ipNftClassHash?: string;
20
+ ipCollectionClassHash?: string;
21
+ collection1155?: string;
22
+ collection1155FactoryClassHash?: string;
23
+ collection1155ClassHash?: string;
24
+ collection1155StartBlock?: number;
25
+ popFactory?: string;
26
+ popCollectionClassHash?: string;
27
+ dropFactory?: string;
28
+ dropCollectionClassHash?: string;
29
+ nftComments?: string;
30
+ creatorCoinFactory?: string;
31
+ creatorCoinEkuboLauncher?: string;
32
+ creatorCoinClassHash?: string;
33
+ creatorCoinFactoryClassHash?: string;
34
+ creatorCoinStartBlock?: number;
35
+ ekuboCore?: string;
36
+ }
37
+ declare function getCoordinates(chain: Chain): ChainCoordinates;
38
+ declare const DEFAULT_CHAIN: Chain;
80
39
 
81
40
  interface RetryOptions {
82
41
  maxAttempts?: number;
@@ -127,7 +86,7 @@ interface BuildFeeCallParams {
127
86
  declare function buildFeeCall(p: BuildFeeCallParams, cfg: ResolvedFeeConfig): Call | null;
128
87
 
129
88
  declare const MedialaneConfigSchema: z.ZodObject<{
130
- network: z.ZodDefault<z.ZodEnum<["mainnet"]>>;
89
+ chain: z.ZodDefault<z.ZodEnum<["STARKNET", "ETHEREUM", "SOLANA", "BASE", "BITCOIN"]>>;
131
90
  rpcUrl: z.ZodOptional<z.ZodString>;
132
91
  backendUrl: z.ZodOptional<z.ZodString>;
133
92
  apiKey: z.ZodOptional<z.ZodString>;
@@ -167,7 +126,7 @@ declare const MedialaneConfigSchema: z.ZodObject<{
167
126
  launchpadBps?: number | undefined;
168
127
  }>>;
169
128
  }, "strip", z.ZodTypeAny, {
170
- network: "mainnet";
129
+ chain: "STARKNET" | "ETHEREUM" | "SOLANA" | "BASE" | "BITCOIN";
171
130
  rpcUrl?: string | undefined;
172
131
  backendUrl?: string | undefined;
173
132
  apiKey?: string | undefined;
@@ -189,8 +148,8 @@ declare const MedialaneConfigSchema: z.ZodObject<{
189
148
  fundAddress?: string | undefined;
190
149
  } | undefined;
191
150
  }, {
192
- network?: "mainnet" | undefined;
193
151
  rpcUrl?: string | undefined;
152
+ chain?: "STARKNET" | "ETHEREUM" | "SOLANA" | "BASE" | "BITCOIN" | undefined;
194
153
  backendUrl?: string | undefined;
195
154
  apiKey?: string | undefined;
196
155
  marketplace721Contract?: string | undefined;
@@ -213,7 +172,7 @@ declare const MedialaneConfigSchema: z.ZodObject<{
213
172
  }>;
214
173
  type MedialaneConfig = z.input<typeof MedialaneConfigSchema>;
215
174
  interface ResolvedConfig {
216
- network: Network;
175
+ chain: Chain;
217
176
  rpcUrl: string;
218
177
  backendUrl: string | undefined;
219
178
  apiKey: string | undefined;
@@ -487,11 +446,11 @@ interface ServiceDefinition {
487
446
  description: string;
488
447
  standard: "ERC721" | "ERC1155" | "ERC20" | "UNKNOWN";
489
448
  provenance: "MEDIALANE" | "EXTERNAL";
490
- onchain?: {
449
+ onchain?: Partial<Record<Chain, {
491
450
  factoryAddress?: string;
492
451
  classHash?: string;
493
452
  startBlock?: number;
494
- };
453
+ }>>;
495
454
  /** Drives the dapp asset/collection page variant. */
496
455
  uiVariant: string;
497
456
  capabilities: ServiceCapability[];
@@ -1162,9 +1121,12 @@ declare class MedialaneApiError extends Error {
1162
1121
  }
1163
1122
  declare class ApiClient {
1164
1123
  private readonly baseUrl;
1124
+ private readonly chain;
1165
1125
  private readonly baseHeaders;
1166
1126
  private readonly retryOptions;
1167
- constructor(baseUrl: string, apiKey?: string, retryOptions?: RetryOptions);
1127
+ constructor(baseUrl: string, apiKey?: string, retryOptions?: RetryOptions, chain?: Chain);
1128
+ /** Normalize an address for this client's chain (chain-scoped — Decision B). */
1129
+ private addr;
1168
1130
  private request;
1169
1131
  private get;
1170
1132
  private post;
@@ -1719,11 +1681,85 @@ declare class MedialaneClient {
1719
1681
  };
1720
1682
  private readonly config;
1721
1683
  constructor(rawConfig?: MedialaneConfig);
1722
- get network(): "mainnet";
1684
+ get chain(): "STARKNET" | "ETHEREUM" | "SOLANA" | "BASE" | "BITCOIN";
1723
1685
  get rpcUrl(): string;
1724
1686
  get marketplaceContract(): string;
1725
1687
  }
1726
1688
 
1689
+ /** Medialane721 marketplace venue — immutable, ownerless (redesign, deployed 2026-05-31). */
1690
+ declare const MARKETPLACE_721_CONTRACT_MAINNET: string;
1691
+ /** Class hash of the Medialane721 venue. */
1692
+ declare const MARKETPLACE_721_CLASS_HASH_MAINNET: string;
1693
+ /** First mainnet block for the Medialane721 venue deployment. */
1694
+ declare const MARKETPLACE_721_START_BLOCK_MAINNET: number;
1695
+ /** Medialane1155 marketplace venue — immutable, ownerless (redesign, deployed 2026-05-31). */
1696
+ declare const MARKETPLACE_1155_CONTRACT_MAINNET: string;
1697
+ /** Class hash of the Medialane1155 venue. */
1698
+ declare const MARKETPLACE_1155_CLASS_HASH_MAINNET: string;
1699
+ /** First mainnet block for the Medialane1155 venue deployment. */
1700
+ declare const MARKETPLACE_1155_START_BLOCK_MAINNET: number;
1701
+ declare const COLLECTION_721_CONTRACT_MAINNET: string;
1702
+ /** Class hash of the IPNft (per-collection ERC-721) implementation. */
1703
+ declare const IPNFT_CLASS_HASH_MAINNET: string;
1704
+ /** Class hash of the IPCollection registry. */
1705
+ declare const IPCOLLECTION_CLASS_HASH_MAINNET: string;
1706
+ /** First mainnet block for the current MIP IPCollection registry deployment. */
1707
+ declare const COLLECTION_721_START_BLOCK_MAINNET: number;
1708
+ declare const DROP_FACTORY_CONTRACT_MAINNET: string;
1709
+ declare const POP_FACTORY_CONTRACT_MAINNET: string;
1710
+ /** NFTComments on-chain comment system — immutable, no admin key. */
1711
+ declare const NFTCOMMENTS_CONTRACT_MAINNET: string;
1712
+ declare const SUPPORTED_TOKENS: readonly [{
1713
+ readonly symbol: "USDC";
1714
+ readonly address: "0x033068f6539f8e6e6b131e6b2b814e6c34a5224bc66947c47dab9dfee93b35fb";
1715
+ readonly decimals: 6;
1716
+ readonly listable: true;
1717
+ }, {
1718
+ readonly symbol: "USDT";
1719
+ readonly address: "0x068f5c6a61780768455de69077e07e89787839bf8166decfbf92b645209c0fb8";
1720
+ readonly decimals: 6;
1721
+ readonly listable: true;
1722
+ }, {
1723
+ readonly symbol: "ETH";
1724
+ readonly address: "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7";
1725
+ readonly decimals: 18;
1726
+ readonly listable: true;
1727
+ }, {
1728
+ readonly symbol: "STRK";
1729
+ readonly address: "0x04718f5a0fc34cc1af16a1cdee98ffb20c31f5cd61d6ab07201858f4287c938d";
1730
+ readonly decimals: 18;
1731
+ readonly listable: true;
1732
+ }, {
1733
+ readonly symbol: "WBTC";
1734
+ readonly address: "0x03fe2b97c1fd336e750087d68b9b867997fd64a2661ff3ca5a7c771641e8e7ac";
1735
+ readonly decimals: 8;
1736
+ readonly listable: true;
1737
+ }];
1738
+ type SupportedTokenSymbol = (typeof SUPPORTED_TOKENS)[number]["symbol"];
1739
+ declare const POP_COLLECTION_CLASS_HASH_MAINNET: string;
1740
+ declare const DROP_COLLECTION_CLASS_HASH_MAINNET: string;
1741
+ /** IPCollectionFactory v0.3.0 (deployed mainnet 2026-06-10): sequential on-chain
1742
+ * edition ids, ownerless/immutable. New collections deploy from here. */
1743
+ declare const COLLECTION_1155_CONTRACT_MAINNET: string;
1744
+ /** Class hash of the IPCollectionFactory v0.3.0 implementation. */
1745
+ declare const COLLECTION_1155_FACTORY_CLASS_HASH_MAINNET: string;
1746
+ /** Class hash of the IPCollection ERC-1155 v0.3.0 implementation. */
1747
+ declare const COLLECTION_1155_CLASS_HASH_MAINNET: string;
1748
+ /** First mainnet block of the v0.3.0 ERC-1155 factory deployment. */
1749
+ declare const COLLECTION_1155_START_BLOCK_MAINNET: number;
1750
+ /** Creator Coin Factory — entrypoint: create_creator_coin + launch_on_ekubo. */
1751
+ declare const CREATOR_COIN_FACTORY_CONTRACT_MAINNET: string;
1752
+ /** EkuboLauncher — permanently holds (locks) each Creator Coin's LP position. */
1753
+ declare const CREATOR_COIN_EKUBO_LAUNCHER_MAINNET: string;
1754
+ /** Class hash of the per-coin CreatorCoin ERC-20 the Factory deploys. */
1755
+ declare const CREATOR_COIN_CLASS_HASH_MAINNET: string;
1756
+ /** Class hash of the Creator Coin Factory. */
1757
+ declare const CREATOR_COIN_FACTORY_CLASS_HASH_MAINNET: string;
1758
+ /** First mainnet block of the Factory deployment. */
1759
+ declare const CREATOR_COIN_START_BLOCK_MAINNET: number;
1760
+ /** Ekubo Core (Starknet mainnet) — Creator Coin pools live here; read spot price via `get_pool_price`. */
1761
+ declare const EKUBO_CORE_MAINNET: string;
1762
+
1727
1763
  declare const IPMarketplaceABI: readonly [{
1728
1764
  readonly type: "impl";
1729
1765
  readonly name: "Medialane721Impl";
@@ -5511,13 +5547,31 @@ declare const CreatorCoinFactoryABI: readonly [{
5511
5547
  }];
5512
5548
  }];
5513
5549
 
5550
+ declare const LAUNCH_PRICE_QUOTE_PER_COIN = 0.01;
5551
+ declare const MIN_SUPPLY = 1000n;
5552
+ declare const MAX_SUPPLY = 1000000000000n;
5553
+ declare function validateName(s: string): string | null;
5554
+ declare function validateSymbol(s: string): string | null;
5555
+ declare function validateSupply(human: string): string | null;
5556
+ /** Human integer → raw base units (default 18-dec coin). */
5557
+ declare function toRaw(human: bigint, decimals?: number): bigint;
5558
+ /** Team allocation in raw coin units. `pct` is whole-percent 0–10. */
5559
+ declare function teamCoinsRaw(supplyRaw: bigint, pct: number): bigint;
5560
+ /** Quote (raw) needed to buy the team allocation back out of the pool:
5561
+ * teamCoins(human) × 0.01, in the quote token's raw units.
5562
+ * = teamCoinsRaw × 10^quoteDecimals / (100 × 10^18). For 18-dec quote → /100. */
5563
+ declare function buybackQuoteRaw(teamCoinsRawValue: bigint, quoteDecimals: number): bigint;
5564
+ /** Fully-diluted value (human, in quote) for the live preview. */
5565
+ declare function fdvHuman(supplyHuman: number): number;
5566
+
5514
5567
  /**
5515
5568
  * The Medialane service registry (05-service-model §II, §VI).
5516
5569
  * Canonical long-form IDs (01-core-model §III). SDK-resident in v1;
5517
- * on-chain registry in year 2 (08-dao-governance §IV).
5570
+ * on-chain registry later (08-dao-governance §IV).
5518
5571
  *
5519
- * Year-2 forward-compat: cross-account identity uses the future `AccountID`
5520
- * contract (07-identity-model §IV) no field here yet, intentionally.
5572
+ * `onchain` is keyed per chain (spec 2026-06-13 §3.1, Decision A): the SDK
5573
+ * registry is the single source of a service's coordinates on each chain.
5574
+ * Only STARKNET is populated today; adding a chain adds a key here.
5521
5575
  *
5522
5576
  * Phase 2B.2 of the service-model refactor. `ip-erc721` has no dedicated
5523
5577
  * on-chain constant in src/constants.ts, so its `onchain` is omitted rather
@@ -5531,8 +5585,10 @@ declare const SERVICES: {
5531
5585
  readonly standard: "ERC721";
5532
5586
  readonly provenance: "MEDIALANE";
5533
5587
  readonly onchain: {
5534
- readonly factoryAddress: "0x0322cb7119955e01ac778d40976eb3ba50540bb0899f812d612f9c7e63e49fd2";
5535
- readonly startBlock: 10046166;
5588
+ readonly STARKNET: {
5589
+ readonly factoryAddress: string;
5590
+ readonly startBlock: number;
5591
+ };
5536
5592
  };
5537
5593
  readonly uiVariant: "standard";
5538
5594
  readonly capabilities: ["list", "buy", "make_offer", "cancel", "transfer", "mint", "remix", "license"];
@@ -5563,9 +5619,11 @@ declare const SERVICES: {
5563
5619
  readonly standard: "ERC1155";
5564
5620
  readonly provenance: "MEDIALANE";
5565
5621
  readonly onchain: {
5566
- readonly factoryAddress: "0x0083543c3ee15040a419fc539fa6889f5b956e7d071bcfa97842cb0ae42ad6cc";
5567
- readonly classHash: "0x4e110b59af240ae6c7742999964c4eae13fb2ed935c47fe97653ec017ebea34";
5568
- readonly startBlock: 10665319;
5622
+ readonly STARKNET: {
5623
+ readonly factoryAddress: string;
5624
+ readonly classHash: string;
5625
+ readonly startBlock: number;
5626
+ };
5569
5627
  };
5570
5628
  readonly uiVariant: "edition";
5571
5629
  readonly capabilities: ["list", "buy", "make_offer", "cancel", "transfer", "mint", "remix", "license"];
@@ -5584,8 +5642,10 @@ declare const SERVICES: {
5584
5642
  readonly standard: "ERC721";
5585
5643
  readonly provenance: "MEDIALANE";
5586
5644
  readonly onchain: {
5587
- readonly factoryAddress: "0x00b32c34b427d8f346b5843ada6a37bd3368d879fc752cd52b68a87287f60111";
5588
- readonly classHash: "0x077c421686f10851872561953ea16898d933364b7f8937a5d7e2b1ba0a36263f";
5645
+ readonly STARKNET: {
5646
+ readonly factoryAddress: string;
5647
+ readonly classHash: string;
5648
+ };
5589
5649
  };
5590
5650
  readonly uiVariant: "pop";
5591
5651
  readonly capabilities: ["claim", "transfer"];
@@ -5608,8 +5668,10 @@ declare const SERVICES: {
5608
5668
  readonly standard: "ERC721";
5609
5669
  readonly provenance: "MEDIALANE";
5610
5670
  readonly onchain: {
5611
- readonly factoryAddress: "0x03587f42e29daee1b193f6cf83bf8627908ed6632d0d83fcb26225c50547d800";
5612
- readonly classHash: "0x00092e72cdb63067521e803aaf7d4101c3e3ce026ae6bc045ec4228027e58282";
5671
+ readonly STARKNET: {
5672
+ readonly factoryAddress: string;
5673
+ readonly classHash: string;
5674
+ };
5613
5675
  };
5614
5676
  readonly uiVariant: "drop";
5615
5677
  readonly capabilities: ["claim", "list", "buy", "make_offer", "cancel", "transfer"];
@@ -5632,9 +5694,11 @@ declare const SERVICES: {
5632
5694
  readonly standard: "ERC20";
5633
5695
  readonly provenance: "MEDIALANE";
5634
5696
  readonly onchain: {
5635
- readonly factoryAddress: "0x50fa807b5274079fb19374673d7bab6d2dc3af7e1032ea43eb6e44bcbde4c3c";
5636
- readonly classHash: "0x51765926b1344c9a20b8cd4b5abe7b7d47375ae97cf6804db3ea5d4b05a9b55";
5637
- readonly startBlock: 10474544;
5697
+ readonly STARKNET: {
5698
+ readonly factoryAddress: string;
5699
+ readonly classHash: string;
5700
+ readonly startBlock: number;
5701
+ };
5638
5702
  };
5639
5703
  readonly uiVariant: "coin";
5640
5704
  readonly capabilities: ["launch", "swap", "transfer"];
@@ -5653,9 +5717,11 @@ declare const SERVICES: {
5653
5717
  readonly standard: "ERC721";
5654
5718
  readonly provenance: "MEDIALANE";
5655
5719
  readonly onchain: {
5656
- readonly factoryAddress: "0x069cf5391077e3ebdd9cb6aebf90ed530d29f0d6aa34a43f5afae938c0fb565e";
5657
- readonly classHash: "0x04c6f952d747ad7ead1b3dad4c1d587837d38f8ec29d6c095a4afa5b5ece5957";
5658
- readonly startBlock: 10350340;
5720
+ readonly STARKNET: {
5721
+ readonly factoryAddress: string;
5722
+ readonly classHash: string;
5723
+ readonly startBlock: number;
5724
+ };
5659
5725
  };
5660
5726
  readonly uiVariant: "standard";
5661
5727
  readonly capabilities: ["list", "buy", "make_offer", "cancel"];
@@ -5677,9 +5743,11 @@ declare const SERVICES: {
5677
5743
  readonly standard: "ERC1155";
5678
5744
  readonly provenance: "MEDIALANE";
5679
5745
  readonly onchain: {
5680
- readonly factoryAddress: "0x040cd7b3e73bb3c892166e34bdc01d1797f97ecbc356c23f1cf38033cacf0077";
5681
- readonly classHash: "0x02600bb720908f119afe482309d36c39d087587f0df9576454acfb6363e78cd8";
5682
- readonly startBlock: 10350855;
5746
+ readonly STARKNET: {
5747
+ readonly factoryAddress: string;
5748
+ readonly classHash: string;
5749
+ readonly startBlock: number;
5750
+ };
5683
5751
  };
5684
5752
  readonly uiVariant: "edition";
5685
5753
  readonly capabilities: ["list", "buy", "make_offer", "cancel"];
@@ -5743,28 +5811,25 @@ declare function listServices(): ServiceDefinition[];
5743
5811
  declare function getServicesByCapability(cap: ServiceCapability): ServiceDefinition[];
5744
5812
 
5745
5813
  /**
5746
- * Normalize a Starknet address to a 0x-prefixed 64-character lowercase hex
5747
- * string. Validates the input by routing through `BigInt(...)` — non-numeric
5748
- * input throws `Invalid Starknet address: "<input>"`.
5749
- *
5750
- * The single source of truth for address normalization across Medialane.
5814
+ * Normalize an address to its chain's canonical form. The single source of
5815
+ * address normalization across Medialane (07-identity §I; spec 2026-06-13 §3.2).
5751
5816
  * `medialane-backend` re-exports this; do not maintain a parallel copy.
5752
- */
5753
- declare function normalizeAddress(address: string): string;
5754
- /**
5755
- * Normalize a Starknet felt/hash (tx hash, order hash, etc.) to a 0x-prefixed
5756
- * 64-character lowercase hex string. Same shape as `normalizeAddress` — kept
5757
- * as a separate name so the *intent* of each call site is explicit.
5758
5817
  *
5759
- * Starknet RPCs and wallets may omit leading zeroes for the same value;
5760
- * database uniqueness must not treat those textual variants as different
5761
- * transactions.
5818
+ * - STARKNET: 0x-prefixed 64-char lowercase hex (felt, zero-padded).
5819
+ * - ETHEREUM / BASE: EIP-55 mixed-case checksum.
5820
+ * - SOLANA: base58, validated as a 32-byte public key, returned verbatim.
5821
+ * - BITCOIN: not implemented — a non-foreclosed seam, gated on a future
5822
+ * Bitcoin fork (chain-sovereignty §2); never a built path today.
5762
5823
  */
5763
- declare function normalizeHash(hash: string): string;
5824
+ declare function normalizeAddress(chain: Chain, address: string): string;
5764
5825
  /**
5765
- * Shorten an address to "0x1234...abcd" format.
5826
+ * Normalize a felt/hash (tx hash, order hash) to 0x-prefixed 64-char lowercase
5827
+ * hex. Starknet-shaped; chain-scoped at call sites that handle other chains'
5828
+ * hashes.
5766
5829
  */
5767
- declare function shortenAddress(address: string, chars?: number): string;
5830
+ declare function normalizeHash(hash: string): string;
5831
+ /** Shorten an address to "0x1234...abcd" form, normalized for its chain. */
5832
+ declare function shortenAddress(chain: Chain, address: string, chars?: number): string;
5768
5833
 
5769
5834
  type SupportedToken = (typeof SUPPORTED_TOKENS)[number];
5770
5835
  /**
@@ -5883,4 +5948,4 @@ declare function build1155OrderTypedData(message: Record<string, unknown>, chain
5883
5948
  declare function buildCancellationTypedData(message: Record<string, unknown>, chainId: constants.StarknetChainId | string): TypedData;
5884
5949
  declare function build1155CancellationTypedData(message: Record<string, unknown>, chainId: constants.StarknetChainId | string): TypedData;
5885
5950
 
5886
- export { type ActivityType, type AddSupplyParams, type ApiActivitiesQuery, type ApiActivity, type ApiActivityPrice, type ApiAdminCollectionClaim, type ApiAppSource, type ApiChain, ApiClient, type ApiCollection, type ApiCollectionClaim, type ApiCollectionProfile, type ApiCollectionSlugClaim, type ApiCollectionsQuery, type ApiComment, type ApiCounterOffersQuery, type ApiCreatorListResult, type ApiCreatorProfile, type ApiIntent, type ApiIntentCreated, type ApiKeyStatus, type ApiMeta, type ApiMetadataSignedUrl, type ApiMetadataUpload, type ApiOrder, type ApiOrderConsideration, type ApiOrderOffer, type ApiOrderPrice, type ApiOrderTokenMeta, type ApiOrderTxHash, type ApiOrdersQuery, type ApiPortalKey, type ApiPortalKeyCreated, type ApiPortalMe, type ApiPublicRemix, type ApiRemixOffer, type ApiRemixOfferPrice, type ApiRemixOffersQuery, type ApiResponse, type ApiSearchCollectionResult, type ApiSearchCreatorResult, type ApiSearchResult, type ApiSearchTokenResult, type ApiToken, type ApiTokenBalance, type ApiTokenMetadata, type ApiUsageDay, type ApiUserWallet, type ApiWalletType, type ApiWebhookCreated, type ApiWebhookEndpoint, type AutoRemixOfferParams, type BatchMintEditionParams, type BuildFeeCallParams, COLLECTION_1155_CLASS_HASH_MAINNET, COLLECTION_1155_CONTRACT_MAINNET, COLLECTION_1155_FACTORY_CLASS_HASH_MAINNET, COLLECTION_1155_START_BLOCK_MAINNET, COLLECTION_721_CONTRACT_MAINNET, COLLECTION_721_START_BLOCK_MAINNET, CREATOR_COIN_CLASS_HASH_MAINNET, CREATOR_COIN_EKUBO_LAUNCHER_MAINNET, CREATOR_COIN_FACTORY_CLASS_HASH_MAINNET, CREATOR_COIN_FACTORY_CONTRACT_MAINNET, CREATOR_COIN_START_BLOCK_MAINNET, type CancelOrder1155Params, type CancelOrderIntentParams, type CancelOrderParams, type Cancelation, type CartItem, type ClaimConditions, CollectionRegistryABI, type CollectionSort, type ConfirmRemixOfferParams, type ConfirmSelfRemixParams, type ConsiderationItem, type CreateCollectionIntentParams, type CreateCollectionParams, type CreateCounterOfferIntentParams, type CreateCreatorCoinParams, type CreateDropParams, type CreateListing1155Params, type CreateListingIntentParams, type CreateListingParams, type CreateMintIntentParams, type CreatePopCollectionParams, type CreateRemixOfferParams, type CreateWebhookParams, CreatorCoinFactoryABI, type CreatorCoinPrice, type CreatorCoinReceiptLike, CreatorCoinService, DEFAULT_RPC_URL, DROP_COLLECTION_CLASS_HASH_MAINNET, DROP_FACTORY_CONTRACT_MAINNET, type DeployCollectionParams, DropCollectionABI, DropFactoryABI, type DropMintStatus, DropService, EKUBO_CORE_MAINNET, ERC1155CollectionService, type EkuboLaunchParams, type EkuboPoolParams, type EnforcementDeclaration, type FailoverFetchOptions, type FeeConfig, FeeConfigSchema, type FeeSurface, type FulfillOrder1155Params, type FulfillOrderIntentParams, type FulfillOrderParams, IPCOLLECTION_CLASS_HASH_MAINNET, IPCollection1155ABI, IPCollection1155FactoryABI, IPCollectionABI, IPMarketplaceABI, IPNFT_CLASS_HASH_MAINNET, IPNftABI, type IPType, type IntentCall, type IntentStatus, type IntentType, type IpAttribute, type IpNftMetadata, MARKETPLACE_1155_CLASS_HASH_MAINNET, MARKETPLACE_1155_CONTRACT_MAINNET, MARKETPLACE_1155_START_BLOCK_MAINNET, MARKETPLACE_721_CLASS_HASH_MAINNET, MARKETPLACE_721_CONTRACT_MAINNET, MARKETPLACE_721_START_BLOCK_MAINNET, type MakeOffer1155Params, type MakeOfferIntentParams, type MakeOfferParams, MarketplaceModule, Medialane1155ABI, Medialane1155Module, MedialaneApiError, MedialaneClient, type MedialaneConfig, MedialaneError, type MedialaneErrorCode, type MintEditionParams, type MintParams, NFTCOMMENTS_CONTRACT_MAINNET, type Network, OPEN_LICENSES, type OfferItem, type OpenLicense, type Order, type OrderDetails, type OrderParameters, type OrderStatus, POPCollectionABI, POPFactoryABI, POP_COLLECTION_CLASS_HASH_MAINNET, POP_FACTORY_CONTRACT_MAINNET, PUBLIC_RPC_FALLBACKS, type PopBatchEligibilityItem, type PopClaimStatus, type PopEventType, PopService, type RemixOfferStatus, type ResolvedConfig, type ResolvedFeeConfig, type RetryOptions, SUPPORTED_NETWORKS, SUPPORTED_TOKENS, type ServiceCapability, type ServiceDefinition, type ServiceEventDeclaration, type ServiceId, type SortOrder, type SupportedToken, type SupportedTokenSymbol, type TenantPlan, type TxResult, VALIDATED_EKUBO_PARAMS, type WebhookEventType, type WebhookStatus, build1155CancellationTypedData, build1155OrderTypedData, buildCancellationTypedData, buildCreateCreatorCoinCall, buildFeeCall, buildLaunchOnEkuboCalls, buildOrderTypedData, createFailoverFetch, encodeByteArray, formatAmount, getCreatorCoinPrice, getListableTokens, getService, getServicesByCapability, getTokenByAddress, getTokenBySymbol, isServiceId, isTransientRpcError, listServices, normalizeAddress, normalizeHash, parseAmount, parseCreatorCoinCreated, resolveConfig, resolveFeeConfig, shortenAddress, stringifyBigInts, u256ToBigInt };
5951
+ export { type ActivityType, type AddSupplyParams, type ApiActivitiesQuery, type ApiActivity, type ApiActivityPrice, type ApiAdminCollectionClaim, type ApiAppSource, type ApiChain, ApiClient, type ApiCollection, type ApiCollectionClaim, type ApiCollectionProfile, type ApiCollectionSlugClaim, type ApiCollectionsQuery, type ApiComment, type ApiCounterOffersQuery, type ApiCreatorListResult, type ApiCreatorProfile, type ApiIntent, type ApiIntentCreated, type ApiKeyStatus, type ApiMeta, type ApiMetadataSignedUrl, type ApiMetadataUpload, type ApiOrder, type ApiOrderConsideration, type ApiOrderOffer, type ApiOrderPrice, type ApiOrderTokenMeta, type ApiOrderTxHash, type ApiOrdersQuery, type ApiPortalKey, type ApiPortalKeyCreated, type ApiPortalMe, type ApiPublicRemix, type ApiRemixOffer, type ApiRemixOfferPrice, type ApiRemixOffersQuery, type ApiResponse, type ApiSearchCollectionResult, type ApiSearchCreatorResult, type ApiSearchResult, type ApiSearchTokenResult, type ApiToken, type ApiTokenBalance, type ApiTokenMetadata, type ApiUsageDay, type ApiUserWallet, type ApiWalletType, type ApiWebhookCreated, type ApiWebhookEndpoint, type AutoRemixOfferParams, type BatchMintEditionParams, type BuildFeeCallParams, CHAINS, MAX_SUPPLY as COIN_MAX_SUPPLY, MIN_SUPPLY as COIN_MIN_SUPPLY, COLLECTION_1155_CLASS_HASH_MAINNET, COLLECTION_1155_CONTRACT_MAINNET, COLLECTION_1155_FACTORY_CLASS_HASH_MAINNET, COLLECTION_1155_START_BLOCK_MAINNET, COLLECTION_721_CONTRACT_MAINNET, COLLECTION_721_START_BLOCK_MAINNET, CREATOR_COIN_CLASS_HASH_MAINNET, CREATOR_COIN_EKUBO_LAUNCHER_MAINNET, CREATOR_COIN_FACTORY_CLASS_HASH_MAINNET, CREATOR_COIN_FACTORY_CONTRACT_MAINNET, CREATOR_COIN_START_BLOCK_MAINNET, type CancelOrder1155Params, type CancelOrderIntentParams, type CancelOrderParams, type Cancelation, type CartItem, type Chain, type ChainCoordinates, type ClaimConditions, CollectionRegistryABI, type CollectionSort, type ConfirmRemixOfferParams, type ConfirmSelfRemixParams, type ConsiderationItem, type CreateCollectionIntentParams, type CreateCollectionParams, type CreateCounterOfferIntentParams, type CreateCreatorCoinParams, type CreateDropParams, type CreateListing1155Params, type CreateListingIntentParams, type CreateListingParams, type CreateMintIntentParams, type CreatePopCollectionParams, type CreateRemixOfferParams, type CreateWebhookParams, CreatorCoinFactoryABI, type CreatorCoinPrice, type CreatorCoinReceiptLike, CreatorCoinService, DEFAULT_CHAIN, DROP_COLLECTION_CLASS_HASH_MAINNET, DROP_FACTORY_CONTRACT_MAINNET, type DeployCollectionParams, DropCollectionABI, DropFactoryABI, type DropMintStatus, DropService, EKUBO_CORE_MAINNET, ERC1155CollectionService, type EkuboLaunchParams, type EkuboPoolParams, type EnforcementDeclaration, type FailoverFetchOptions, type FeeConfig, FeeConfigSchema, type FeeSurface, type FulfillOrder1155Params, type FulfillOrderIntentParams, type FulfillOrderParams, IPCOLLECTION_CLASS_HASH_MAINNET, IPCollection1155ABI, IPCollection1155FactoryABI, IPCollectionABI, IPMarketplaceABI, IPNFT_CLASS_HASH_MAINNET, IPNftABI, type IPType, type IntentCall, type IntentStatus, type IntentType, type IpAttribute, type IpNftMetadata, LAUNCH_PRICE_QUOTE_PER_COIN, MARKETPLACE_1155_CLASS_HASH_MAINNET, MARKETPLACE_1155_CONTRACT_MAINNET, MARKETPLACE_1155_START_BLOCK_MAINNET, MARKETPLACE_721_CLASS_HASH_MAINNET, MARKETPLACE_721_CONTRACT_MAINNET, MARKETPLACE_721_START_BLOCK_MAINNET, type MakeOffer1155Params, type MakeOfferIntentParams, type MakeOfferParams, MarketplaceModule, Medialane1155ABI, Medialane1155Module, MedialaneApiError, MedialaneClient, type MedialaneConfig, MedialaneError, type MedialaneErrorCode, type MintEditionParams, type MintParams, NFTCOMMENTS_CONTRACT_MAINNET, OPEN_LICENSES, type OfferItem, type OpenLicense, type Order, type OrderDetails, type OrderParameters, type OrderStatus, POPCollectionABI, POPFactoryABI, POP_COLLECTION_CLASS_HASH_MAINNET, POP_FACTORY_CONTRACT_MAINNET, PUBLIC_RPC_FALLBACKS, type PopBatchEligibilityItem, type PopClaimStatus, type PopEventType, PopService, type RemixOfferStatus, type ResolvedConfig, type ResolvedFeeConfig, type RetryOptions, SUPPORTED_TOKENS, type ServiceCapability, type ServiceDefinition, type ServiceEventDeclaration, type ServiceId, type SortOrder, type SupportedToken, type SupportedTokenSymbol, type TenantPlan, type TxResult, VALIDATED_EKUBO_PARAMS, type WebhookEventType, type WebhookStatus, build1155CancellationTypedData, build1155OrderTypedData, buildCancellationTypedData, buildCreateCreatorCoinCall, buildFeeCall, buildLaunchOnEkuboCalls, buildOrderTypedData, buybackQuoteRaw, toRaw as coinToRaw, createFailoverFetch, encodeByteArray, fdvHuman, formatAmount, getCoordinates, getCreatorCoinPrice, getListableTokens, getService, getServicesByCapability, getTokenByAddress, getTokenBySymbol, isServiceId, isTransientRpcError, listServices, normalizeAddress, normalizeHash, parseAmount, parseCreatorCoinCreated, resolveConfig, resolveFeeConfig, shortenAddress, stringifyBigInts, teamCoinsRaw, u256ToBigInt, validateName as validateCoinName, validateSupply as validateCoinSupply, validateSymbol as validateCoinSymbol };