@medialane/sdk 0.6.0 → 0.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -415,6 +415,25 @@ Built with:
415
415
 
416
416
  ## Changelog
417
417
 
418
+ ### v0.6.1
419
+ - **Collection Drop** — new `DropService` (`client.services.drop`) with full on-chain drop management: `claim`, `adminMint`, `setClaimConditions`, `setAllowlistEnabled`, `addToAllowlist`, `batchAddToAllowlist`, `setPaused`, `withdrawPayments`, `createDrop`
420
+ - **`client.api.getDropCollections(opts?)`** — list all `COLLECTION_DROP` collections
421
+ - **`client.api.getDropMintStatus(collection, wallet)`** — returns `{ mintedByWallet, totalMinted }`
422
+ - **`DropMintStatus`**, **`ClaimConditions`**, **`CreateDropParams`** types exported
423
+ - **`DropCollectionABI`** and **`DropFactoryABI`** exported from `@medialane/sdk`
424
+ - **`DROP_FACTORY_CONTRACT_MAINNET`** and **`DROP_COLLECTION_CLASS_HASH_MAINNET`** constants exported
425
+ - **`CollectionSource`** union extended with `"COLLECTION_DROP"`
426
+
427
+ ### v0.6.0
428
+ - **POP Protocol** — `PopService` (`client.services.pop`): `claim`, `adminMint`, `addToAllowlist`, `batchAddToAllowlist`, `removeFromAllowlist`, `setTokenUri`, `setPaused`, `createCollection`
429
+ - **`client.api.getPopCollections(opts?)`** and **`client.api.getPopEligibility(collection, wallet)`**
430
+ - **`POPCollectionABI`** and **`POPFactoryABI`** exported
431
+ - **`POP_FACTORY_CONTRACT_MAINNET`** and **`POP_COLLECTION_CLASS_HASH_MAINNET`** constants exported
432
+
433
+ ### v0.5.7
434
+ - **`ApiCollectionProfile.hasGatedContent: boolean`** — whether the collection has token-gated content configured
435
+ - **`ApiCollectionProfile.gatedContentTitle: string | null`** — public title of gated content (shown to all users; URL is accessible to holders only via the backend gated-content endpoint)
436
+
418
437
  ### v0.5.5
419
438
  - **`extendRemixOffer(id, days, clerkToken)`** — requester extends expiry of a PENDING/AUTO_PENDING remix offer by 1–30 days (`POST /v1/remix-offers/:id/extend`)
420
439
  - **`ApiRemixOfferPrice`** type — `{ raw, formatted, currency, decimals }` replaces flat `proposedPrice`/`proposedCurrency` fields on `ApiRemixOffer.price` (visible to participants only)
package/dist/index.cjs CHANGED
@@ -51,6 +51,8 @@ var DEFAULT_RPC_URLS = {
51
51
  };
52
52
  var POP_FACTORY_CONTRACT_MAINNET = "0x00b32c34b427d8f346b5843ada6a37bd3368d879fc752cd52b68a87287f60111";
53
53
  var POP_COLLECTION_CLASS_HASH_MAINNET = "0x077c421686f10851872561953ea16898d933364b7f8937a5d7e2b1ba0a36263f";
54
+ var DROP_FACTORY_CONTRACT_MAINNET = "0x03587f42e29daee1b193f6cf83bf8627908ed6632d0d83fcb26225c50547d800";
55
+ var DROP_COLLECTION_CLASS_HASH_MAINNET = "0x00092e72cdb63067521e803aaf7d4101c3e3ce026ae6bc045ec4228027e58282";
54
56
 
55
57
  // src/abis.ts
56
58
  var IPMarketplaceABI = [
@@ -501,6 +503,262 @@ var POPFactoryABI = [
501
503
  state_mutability: "external"
502
504
  }
503
505
  ];
506
+ var DropCollectionABI = [
507
+ {
508
+ type: "struct",
509
+ name: "core::byte_array::ByteArray",
510
+ members: [
511
+ { name: "data", type: "core::array::Array::<core::felt252>" },
512
+ { name: "pending_word", type: "core::felt252" },
513
+ { name: "pending_word_len", type: "core::integer::u32" }
514
+ ]
515
+ },
516
+ {
517
+ type: "struct",
518
+ name: "collection_drop::types::ClaimConditions",
519
+ members: [
520
+ { name: "start_time", type: "core::integer::u64" },
521
+ { name: "end_time", type: "core::integer::u64" },
522
+ { name: "price", type: "core::integer::u256" },
523
+ { name: "payment_token", type: "core::starknet::contract_address::ContractAddress" },
524
+ { name: "max_quantity_per_wallet", type: "core::integer::u256" }
525
+ ]
526
+ },
527
+ {
528
+ type: "function",
529
+ name: "claim",
530
+ inputs: [{ name: "quantity", type: "core::integer::u256" }],
531
+ outputs: [],
532
+ state_mutability: "external"
533
+ },
534
+ {
535
+ type: "function",
536
+ name: "admin_mint",
537
+ inputs: [
538
+ { name: "recipient", type: "core::starknet::contract_address::ContractAddress" },
539
+ { name: "quantity", type: "core::integer::u256" },
540
+ { name: "custom_uri", type: "core::byte_array::ByteArray" }
541
+ ],
542
+ outputs: [],
543
+ state_mutability: "external"
544
+ },
545
+ {
546
+ type: "function",
547
+ name: "set_claim_conditions",
548
+ inputs: [{ name: "conditions", type: "collection_drop::types::ClaimConditions" }],
549
+ outputs: [],
550
+ state_mutability: "external"
551
+ },
552
+ {
553
+ type: "function",
554
+ name: "get_claim_conditions",
555
+ inputs: [],
556
+ outputs: [{ type: "collection_drop::types::ClaimConditions" }],
557
+ state_mutability: "view"
558
+ },
559
+ {
560
+ type: "function",
561
+ name: "set_allowlist_enabled",
562
+ inputs: [{ name: "enabled", type: "core::bool" }],
563
+ outputs: [],
564
+ state_mutability: "external"
565
+ },
566
+ {
567
+ type: "function",
568
+ name: "is_allowlist_enabled",
569
+ inputs: [],
570
+ outputs: [{ type: "core::bool" }],
571
+ state_mutability: "view"
572
+ },
573
+ {
574
+ type: "function",
575
+ name: "add_to_allowlist",
576
+ inputs: [{ name: "address", type: "core::starknet::contract_address::ContractAddress" }],
577
+ outputs: [],
578
+ state_mutability: "external"
579
+ },
580
+ {
581
+ type: "function",
582
+ name: "batch_add_to_allowlist",
583
+ inputs: [{ name: "addresses", type: "core::array::Array::<core::starknet::contract_address::ContractAddress>" }],
584
+ outputs: [],
585
+ state_mutability: "external"
586
+ },
587
+ {
588
+ type: "function",
589
+ name: "remove_from_allowlist",
590
+ inputs: [{ name: "address", type: "core::starknet::contract_address::ContractAddress" }],
591
+ outputs: [],
592
+ state_mutability: "external"
593
+ },
594
+ {
595
+ type: "function",
596
+ name: "is_allowlisted",
597
+ inputs: [{ name: "address", type: "core::starknet::contract_address::ContractAddress" }],
598
+ outputs: [{ type: "core::bool" }],
599
+ state_mutability: "view"
600
+ },
601
+ {
602
+ type: "function",
603
+ name: "set_base_uri",
604
+ inputs: [{ name: "new_uri", type: "core::byte_array::ByteArray" }],
605
+ outputs: [],
606
+ state_mutability: "external"
607
+ },
608
+ {
609
+ type: "function",
610
+ name: "set_token_uri",
611
+ inputs: [
612
+ { name: "token_id", type: "core::integer::u256" },
613
+ { name: "uri", type: "core::byte_array::ByteArray" }
614
+ ],
615
+ outputs: [],
616
+ state_mutability: "external"
617
+ },
618
+ {
619
+ type: "function",
620
+ name: "set_paused",
621
+ inputs: [{ name: "paused", type: "core::bool" }],
622
+ outputs: [],
623
+ state_mutability: "external"
624
+ },
625
+ {
626
+ type: "function",
627
+ name: "withdraw_payments",
628
+ inputs: [],
629
+ outputs: [],
630
+ state_mutability: "external"
631
+ },
632
+ {
633
+ type: "function",
634
+ name: "get_drop_id",
635
+ inputs: [],
636
+ outputs: [{ type: "core::integer::u256" }],
637
+ state_mutability: "view"
638
+ },
639
+ {
640
+ type: "function",
641
+ name: "get_max_supply",
642
+ inputs: [],
643
+ outputs: [{ type: "core::integer::u256" }],
644
+ state_mutability: "view"
645
+ },
646
+ {
647
+ type: "function",
648
+ name: "total_minted",
649
+ inputs: [],
650
+ outputs: [{ type: "core::integer::u256" }],
651
+ state_mutability: "view"
652
+ },
653
+ {
654
+ type: "function",
655
+ name: "remaining_supply",
656
+ inputs: [],
657
+ outputs: [{ type: "core::integer::u256" }],
658
+ state_mutability: "view"
659
+ },
660
+ {
661
+ type: "function",
662
+ name: "minted_by_wallet",
663
+ inputs: [{ name: "wallet", type: "core::starknet::contract_address::ContractAddress" }],
664
+ outputs: [{ type: "core::integer::u256" }],
665
+ state_mutability: "view"
666
+ },
667
+ {
668
+ type: "function",
669
+ name: "is_paused",
670
+ inputs: [],
671
+ outputs: [{ type: "core::bool" }],
672
+ state_mutability: "view"
673
+ }
674
+ ];
675
+ var DropFactoryABI = [
676
+ {
677
+ type: "struct",
678
+ name: "core::byte_array::ByteArray",
679
+ members: [
680
+ { name: "data", type: "core::array::Array::<core::felt252>" },
681
+ { name: "pending_word", type: "core::felt252" },
682
+ { name: "pending_word_len", type: "core::integer::u32" }
683
+ ]
684
+ },
685
+ {
686
+ type: "struct",
687
+ name: "collection_drop::types::ClaimConditions",
688
+ members: [
689
+ { name: "start_time", type: "core::integer::u64" },
690
+ { name: "end_time", type: "core::integer::u64" },
691
+ { name: "price", type: "core::integer::u256" },
692
+ { name: "payment_token", type: "core::starknet::contract_address::ContractAddress" },
693
+ { name: "max_quantity_per_wallet", type: "core::integer::u256" }
694
+ ]
695
+ },
696
+ {
697
+ type: "function",
698
+ name: "register_organizer",
699
+ inputs: [
700
+ { name: "organizer", type: "core::starknet::contract_address::ContractAddress" },
701
+ { name: "name", type: "core::byte_array::ByteArray" }
702
+ ],
703
+ outputs: [],
704
+ state_mutability: "external"
705
+ },
706
+ {
707
+ type: "function",
708
+ name: "revoke_organizer",
709
+ inputs: [{ name: "organizer", type: "core::starknet::contract_address::ContractAddress" }],
710
+ outputs: [],
711
+ state_mutability: "external"
712
+ },
713
+ {
714
+ type: "function",
715
+ name: "is_active_organizer",
716
+ inputs: [{ name: "organizer", type: "core::starknet::contract_address::ContractAddress" }],
717
+ outputs: [{ type: "core::bool" }],
718
+ state_mutability: "view"
719
+ },
720
+ {
721
+ type: "function",
722
+ name: "create_drop",
723
+ inputs: [
724
+ { name: "name", type: "core::byte_array::ByteArray" },
725
+ { name: "symbol", type: "core::byte_array::ByteArray" },
726
+ { name: "base_uri", type: "core::byte_array::ByteArray" },
727
+ { name: "max_supply", type: "core::integer::u256" },
728
+ { name: "initial_conditions", type: "collection_drop::types::ClaimConditions" }
729
+ ],
730
+ outputs: [{ type: "core::starknet::contract_address::ContractAddress" }],
731
+ state_mutability: "external"
732
+ },
733
+ {
734
+ type: "function",
735
+ name: "get_drop_address",
736
+ inputs: [{ name: "drop_id", type: "core::integer::u256" }],
737
+ outputs: [{ type: "core::starknet::contract_address::ContractAddress" }],
738
+ state_mutability: "view"
739
+ },
740
+ {
741
+ type: "function",
742
+ name: "get_last_drop_id",
743
+ inputs: [],
744
+ outputs: [{ type: "core::integer::u256" }],
745
+ state_mutability: "view"
746
+ },
747
+ {
748
+ type: "function",
749
+ name: "get_organizer_drop_count",
750
+ inputs: [{ name: "organizer", type: "core::starknet::contract_address::ContractAddress" }],
751
+ outputs: [{ type: "core::integer::u32" }],
752
+ state_mutability: "view"
753
+ },
754
+ {
755
+ type: "function",
756
+ name: "set_drop_collection_class_hash",
757
+ inputs: [{ name: "new_class_hash", type: "core::starknet::class_hash::ClassHash" }],
758
+ outputs: [],
759
+ state_mutability: "external"
760
+ }
761
+ ];
504
762
 
505
763
  // src/utils/bigint.ts
506
764
  function stringifyBigInts(obj) {
@@ -1610,21 +1868,31 @@ var ApiClient = class {
1610
1868
  );
1611
1869
  return res.data;
1612
1870
  }
1871
+ // ─── Collection Drop ────────────────────────────────────────────────────────
1872
+ getDropCollections(opts = {}) {
1873
+ return this.getCollections(opts.page ?? 1, opts.limit ?? 20, void 0, opts.sort, "COLLECTION_DROP");
1874
+ }
1875
+ async getDropMintStatus(collection, wallet) {
1876
+ const res = await this.get(
1877
+ `/v1/drop/mint-status/${normalizeAddress(collection)}/${normalizeAddress(wallet)}`
1878
+ );
1879
+ return res.data;
1880
+ }
1613
1881
  };
1614
- var POP_FACTORY_MAINNET = "0x00b32c34b427d8f346b5843ada6a37bd3368d879fc752cd52b68a87287f60111";
1615
1882
  var PopService = class {
1616
1883
  constructor(_config) {
1617
- this.factoryAddress = POP_FACTORY_MAINNET;
1884
+ this.factoryAddress = POP_FACTORY_CONTRACT_MAINNET;
1885
+ }
1886
+ _collection(address, account) {
1887
+ return new starknet.Contract(POPCollectionABI, normalizeAddress(address), account);
1618
1888
  }
1619
1889
  async claim(account, collectionAddress) {
1620
- const collection = new starknet.Contract(POPCollectionABI, normalizeAddress(collectionAddress), account);
1621
- const call = collection.populate("claim", []);
1890
+ const call = this._collection(collectionAddress, account).populate("claim", []);
1622
1891
  const res = await account.execute([call]);
1623
1892
  return { txHash: res.transaction_hash };
1624
1893
  }
1625
1894
  async adminMint(account, params) {
1626
- const collection = new starknet.Contract(POPCollectionABI, normalizeAddress(params.collection), account);
1627
- const call = collection.populate("admin_mint", [
1895
+ const call = this._collection(params.collection, account).populate("admin_mint", [
1628
1896
  params.recipient,
1629
1897
  params.customUri ?? ""
1630
1898
  ]);
@@ -1632,49 +1900,126 @@ var PopService = class {
1632
1900
  return { txHash: res.transaction_hash };
1633
1901
  }
1634
1902
  async addToAllowlist(account, params) {
1635
- const collection = new starknet.Contract(POPCollectionABI, normalizeAddress(params.collection), account);
1636
- const call = collection.populate("add_to_allowlist", [params.address]);
1903
+ const call = this._collection(params.collection, account).populate("add_to_allowlist", [params.address]);
1637
1904
  const res = await account.execute([call]);
1638
1905
  return { txHash: res.transaction_hash };
1639
1906
  }
1640
1907
  async batchAddToAllowlist(account, params) {
1641
- const collection = new starknet.Contract(POPCollectionABI, normalizeAddress(params.collection), account);
1908
+ const collection = this._collection(params.collection, account);
1642
1909
  const CHUNK = 200;
1643
1910
  const calls = [];
1644
1911
  for (let i = 0; i < params.addresses.length; i += CHUNK) {
1645
- const chunk = params.addresses.slice(i, i + CHUNK);
1646
- calls.push(collection.populate("batch_add_to_allowlist", [chunk]));
1912
+ calls.push(collection.populate("batch_add_to_allowlist", [params.addresses.slice(i, i + CHUNK)]));
1647
1913
  }
1648
1914
  const res = await account.execute(calls);
1649
1915
  return { txHash: res.transaction_hash };
1650
1916
  }
1651
1917
  async removeFromAllowlist(account, params) {
1652
- const collection = new starknet.Contract(POPCollectionABI, normalizeAddress(params.collection), account);
1653
- const call = collection.populate("remove_from_allowlist", [params.address]);
1918
+ const call = this._collection(params.collection, account).populate("remove_from_allowlist", [params.address]);
1654
1919
  const res = await account.execute([call]);
1655
1920
  return { txHash: res.transaction_hash };
1656
1921
  }
1657
1922
  async setTokenUri(account, params) {
1658
- const collection = new starknet.Contract(POPCollectionABI, normalizeAddress(params.collection), account);
1659
- const call = collection.populate("set_token_uri", [BigInt(params.tokenId), params.uri]);
1923
+ const call = this._collection(params.collection, account).populate("set_token_uri", [
1924
+ BigInt(params.tokenId),
1925
+ params.uri
1926
+ ]);
1660
1927
  const res = await account.execute([call]);
1661
1928
  return { txHash: res.transaction_hash };
1662
1929
  }
1663
1930
  async setPaused(account, params) {
1664
- const collection = new starknet.Contract(POPCollectionABI, normalizeAddress(params.collection), account);
1665
- const call = collection.populate("set_paused", [params.paused]);
1931
+ const call = this._collection(params.collection, account).populate("set_paused", [params.paused]);
1666
1932
  const res = await account.execute([call]);
1667
1933
  return { txHash: res.transaction_hash };
1668
1934
  }
1669
1935
  async createCollection(account, params) {
1670
1936
  const factory = new starknet.Contract(POPFactoryABI, this.factoryAddress, account);
1671
- const eventTypeVariant = { [params.eventType]: {} };
1672
1937
  const call = factory.populate("create_collection", [
1673
1938
  params.name,
1674
1939
  params.symbol,
1675
1940
  params.baseUri,
1676
1941
  params.claimEndTime,
1677
- eventTypeVariant
1942
+ { [params.eventType]: {} }
1943
+ ]);
1944
+ const res = await account.execute([call]);
1945
+ return { txHash: res.transaction_hash };
1946
+ }
1947
+ };
1948
+ function toContractConditions(c) {
1949
+ return {
1950
+ start_time: c.startTime,
1951
+ end_time: c.endTime,
1952
+ price: BigInt(c.price),
1953
+ payment_token: c.paymentToken,
1954
+ max_quantity_per_wallet: BigInt(c.maxQuantityPerWallet)
1955
+ };
1956
+ }
1957
+ var DropService = class {
1958
+ constructor(_config) {
1959
+ this.factoryAddress = DROP_FACTORY_CONTRACT_MAINNET;
1960
+ }
1961
+ _collection(address, account) {
1962
+ return new starknet.Contract(DropCollectionABI, normalizeAddress(address), account);
1963
+ }
1964
+ async claim(account, collectionAddress, quantity = 1) {
1965
+ const call = this._collection(collectionAddress, account).populate("claim", [BigInt(quantity)]);
1966
+ const res = await account.execute([call]);
1967
+ return { txHash: res.transaction_hash };
1968
+ }
1969
+ async adminMint(account, params) {
1970
+ const call = this._collection(params.collection, account).populate("admin_mint", [
1971
+ params.recipient,
1972
+ BigInt(params.quantity ?? 1),
1973
+ params.customUri ?? ""
1974
+ ]);
1975
+ const res = await account.execute([call]);
1976
+ return { txHash: res.transaction_hash };
1977
+ }
1978
+ async setClaimConditions(account, params) {
1979
+ const call = this._collection(params.collection, account).populate("set_claim_conditions", [
1980
+ toContractConditions(params.conditions)
1981
+ ]);
1982
+ const res = await account.execute([call]);
1983
+ return { txHash: res.transaction_hash };
1984
+ }
1985
+ async setAllowlistEnabled(account, params) {
1986
+ const call = this._collection(params.collection, account).populate("set_allowlist_enabled", [params.enabled]);
1987
+ const res = await account.execute([call]);
1988
+ return { txHash: res.transaction_hash };
1989
+ }
1990
+ async addToAllowlist(account, params) {
1991
+ const call = this._collection(params.collection, account).populate("add_to_allowlist", [params.address]);
1992
+ const res = await account.execute([call]);
1993
+ return { txHash: res.transaction_hash };
1994
+ }
1995
+ async batchAddToAllowlist(account, params) {
1996
+ const collection = this._collection(params.collection, account);
1997
+ const CHUNK = 200;
1998
+ const calls = [];
1999
+ for (let i = 0; i < params.addresses.length; i += CHUNK) {
2000
+ calls.push(collection.populate("batch_add_to_allowlist", [params.addresses.slice(i, i + CHUNK)]));
2001
+ }
2002
+ const res = await account.execute(calls);
2003
+ return { txHash: res.transaction_hash };
2004
+ }
2005
+ async setPaused(account, params) {
2006
+ const call = this._collection(params.collection, account).populate("set_paused", [params.paused]);
2007
+ const res = await account.execute([call]);
2008
+ return { txHash: res.transaction_hash };
2009
+ }
2010
+ async withdrawPayments(account, params) {
2011
+ const call = this._collection(params.collection, account).populate("withdraw_payments", []);
2012
+ const res = await account.execute([call]);
2013
+ return { txHash: res.transaction_hash };
2014
+ }
2015
+ async createDrop(account, params) {
2016
+ const factory = new starknet.Contract(DropFactoryABI, this.factoryAddress, account);
2017
+ const call = factory.populate("create_drop", [
2018
+ params.name,
2019
+ params.symbol,
2020
+ params.baseUri,
2021
+ BigInt(params.maxSupply),
2022
+ toContractConditions(params.initialConditions)
1678
2023
  ]);
1679
2024
  const res = await account.execute([call]);
1680
2025
  return { txHash: res.transaction_hash };
@@ -1687,7 +2032,8 @@ var MedialaneClient = class {
1687
2032
  this.config = resolveConfig(rawConfig);
1688
2033
  this.marketplace = new MarketplaceModule(this.config);
1689
2034
  this.services = {
1690
- pop: new PopService(this.config)
2035
+ pop: new PopService(this.config),
2036
+ drop: new DropService(this.config)
1691
2037
  };
1692
2038
  if (!this.config.backendUrl) {
1693
2039
  this.api = new Proxy({}, {
@@ -1720,6 +2066,11 @@ var OPEN_LICENSES = ["CC0", "CC BY", "CC BY-SA", "CC BY-NC"];
1720
2066
  exports.ApiClient = ApiClient;
1721
2067
  exports.COLLECTION_CONTRACT_MAINNET = COLLECTION_CONTRACT_MAINNET;
1722
2068
  exports.DEFAULT_RPC_URLS = DEFAULT_RPC_URLS;
2069
+ exports.DROP_COLLECTION_CLASS_HASH_MAINNET = DROP_COLLECTION_CLASS_HASH_MAINNET;
2070
+ exports.DROP_FACTORY_CONTRACT_MAINNET = DROP_FACTORY_CONTRACT_MAINNET;
2071
+ exports.DropCollectionABI = DropCollectionABI;
2072
+ exports.DropFactoryABI = DropFactoryABI;
2073
+ exports.DropService = DropService;
1723
2074
  exports.IPMarketplaceABI = IPMarketplaceABI;
1724
2075
  exports.MARKETPLACE_CONTRACT_MAINNET = MARKETPLACE_CONTRACT_MAINNET;
1725
2076
  exports.MarketplaceModule = MarketplaceModule;