@medialane/sdk 0.5.7 → 0.6.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.ts CHANGED
@@ -33,6 +33,8 @@ type SupportedTokenSymbol = (typeof SUPPORTED_TOKENS)[number]["symbol"];
33
33
  declare const SUPPORTED_NETWORKS: readonly ["mainnet", "sepolia"];
34
34
  type Network = (typeof SUPPORTED_NETWORKS)[number];
35
35
  declare const DEFAULT_RPC_URLS: Record<Network, string>;
36
+ declare const POP_FACTORY_CONTRACT_MAINNET = "0x00b32c34b427d8f346b5843ada6a37bd3368d879fc752cd52b68a87287f60111";
37
+ declare const POP_COLLECTION_CLASS_HASH_MAINNET = "0x077c421686f10851872561953ea16898d933364b7f8937a5d7e2b1ba0a36263f";
36
38
 
37
39
  interface RetryOptions {
38
40
  maxAttempts?: number;
@@ -205,12 +207,14 @@ declare class MarketplaceModule {
205
207
 
206
208
  type IPType = "Audio" | "Art" | "Documents" | "NFT" | "Video" | "Photography" | "Patents" | "Posts" | "Publications" | "RWA" | "Software" | "Custom";
207
209
  type CollectionSort = "recent" | "supply" | "floor" | "volume" | "name";
210
+ type CollectionSource = "MEDIALANE_REGISTRY" | "EXTERNAL" | "PARTNERSHIP" | "IP_TICKET" | "IP_CLUB" | "GAME" | "POP_PROTOCOL";
208
211
  interface ApiCollectionsQuery {
209
212
  page?: number;
210
213
  limit?: number;
211
214
  isKnown?: boolean;
212
215
  sort?: CollectionSort;
213
216
  owner?: string;
217
+ source?: CollectionSource;
214
218
  }
215
219
  type OrderStatus = "ACTIVE" | "FULFILLED" | "CANCELLED" | "EXPIRED" | "COUNTER_OFFERED";
216
220
  type SortOrder = "price_asc" | "price_desc" | "recent";
@@ -371,7 +375,7 @@ interface ApiCollection {
371
375
  startBlock: string;
372
376
  metadataStatus: "PENDING" | "FETCHING" | "FETCHED" | "FAILED";
373
377
  isKnown: boolean;
374
- source: "MEDIALANE_REGISTRY" | "EXTERNAL" | "PARTNERSHIP" | "IP_TICKET" | "IP_CLUB" | "GAME";
378
+ source: "MEDIALANE_REGISTRY" | "EXTERNAL" | "PARTNERSHIP" | "IP_TICKET" | "IP_CLUB" | "GAME" | "POP_PROTOCOL";
375
379
  claimedBy: string | null;
376
380
  profile?: ApiCollectionProfile | null;
377
381
  floorPrice: string | null;
@@ -727,6 +731,15 @@ interface ApiAdminCollectionClaim extends ApiCollectionClaim {
727
731
  reviewedAt: string | null;
728
732
  updatedAt: string;
729
733
  }
734
+ interface PopClaimStatus {
735
+ isEligible: boolean;
736
+ hasClaimed: boolean;
737
+ tokenId: string | null;
738
+ }
739
+ interface PopBatchEligibilityItem extends PopClaimStatus {
740
+ wallet: string;
741
+ }
742
+ type PopEventType = "Conference" | "Bootcamp" | "Workshop" | "Hackathon" | "Meetup" | "Course" | "Other";
730
743
 
731
744
  declare class MedialaneApiError extends Error {
732
745
  readonly status: number;
@@ -750,7 +763,7 @@ declare class ApiClient {
750
763
  getToken(contract: string, tokenId: string, wait?: boolean): Promise<ApiResponse<ApiToken>>;
751
764
  getTokensByOwner(address: string, page?: number, limit?: number): Promise<ApiResponse<ApiToken[]>>;
752
765
  getTokenHistory(contract: string, tokenId: string, page?: number, limit?: number): Promise<ApiResponse<ApiActivity[]>>;
753
- getCollections(page?: number, limit?: number, isKnown?: boolean, sort?: CollectionSort): Promise<ApiResponse<ApiCollection[]>>;
766
+ getCollections(page?: number, limit?: number, isKnown?: boolean, sort?: CollectionSort, source?: CollectionSource): Promise<ApiResponse<ApiCollection[]>>;
754
767
  getCollectionsByOwner(owner: string, page?: number, limit?: number): Promise<ApiResponse<ApiCollection[]>>;
755
768
  getCollection(contract: string): Promise<ApiResponse<ApiCollection>>;
756
769
  getCollectionTokens(contract: string, page?: number, limit?: number): Promise<ApiResponse<ApiToken[]>>;
@@ -826,6 +839,11 @@ declare class ApiClient {
826
839
  * Update collection profile. Requires Clerk JWT for ownership check.
827
840
  */
828
841
  updateCollectionProfile(contractAddress: string, data: Partial<Omit<ApiCollectionProfile, "contractAddress" | "chain" | "updatedBy" | "updatedAt">>, clerkToken: string): Promise<ApiCollectionProfile>;
842
+ getGatedContent(contractAddress: string, clerkToken: string): Promise<{
843
+ title: string;
844
+ url: string;
845
+ type: string;
846
+ } | null>;
829
847
  /** List all creators with an approved username. */
830
848
  getCreators(opts?: {
831
849
  search?: string;
@@ -893,6 +911,53 @@ declare class ApiClient {
893
911
  * Requires Clerk JWT.
894
912
  */
895
913
  extendRemixOffer(id: string, days: number, clerkToken: string): Promise<ApiResponse<ApiRemixOffer>>;
914
+ getPopCollections(opts?: {
915
+ page?: number;
916
+ limit?: number;
917
+ sort?: CollectionSort;
918
+ }): Promise<ApiResponse<ApiCollection[]>>;
919
+ getPopEligibility(collection: string, wallet: string): Promise<PopClaimStatus>;
920
+ getPopEligibilityBatch(collection: string, wallets: string[]): Promise<PopBatchEligibilityItem[]>;
921
+ }
922
+
923
+ interface CreatePopCollectionParams {
924
+ name: string;
925
+ symbol: string;
926
+ baseUri: string;
927
+ claimEndTime: number;
928
+ eventType: PopEventType;
929
+ }
930
+ declare class PopService {
931
+ private readonly factoryAddress;
932
+ constructor(_config: ResolvedConfig);
933
+ claim(account: AccountInterface, collectionAddress: string): Promise<TxResult>;
934
+ adminMint(account: AccountInterface, params: {
935
+ collection: string;
936
+ recipient: string;
937
+ customUri?: string;
938
+ }): Promise<TxResult>;
939
+ addToAllowlist(account: AccountInterface, params: {
940
+ collection: string;
941
+ address: string;
942
+ }): Promise<TxResult>;
943
+ batchAddToAllowlist(account: AccountInterface, params: {
944
+ collection: string;
945
+ addresses: string[];
946
+ }): Promise<TxResult>;
947
+ removeFromAllowlist(account: AccountInterface, params: {
948
+ collection: string;
949
+ address: string;
950
+ }): Promise<TxResult>;
951
+ setTokenUri(account: AccountInterface, params: {
952
+ collection: string;
953
+ tokenId: string | bigint;
954
+ uri: string;
955
+ }): Promise<TxResult>;
956
+ setPaused(account: AccountInterface, params: {
957
+ collection: string;
958
+ paused: boolean;
959
+ }): Promise<TxResult>;
960
+ createCollection(account: AccountInterface, params: CreatePopCollectionParams): Promise<TxResult>;
896
961
  }
897
962
 
898
963
  declare class MedialaneClient {
@@ -903,6 +968,9 @@ declare class MedialaneClient {
903
968
  * Requires `backendUrl` in config; pass `apiKey` for authenticated routes.
904
969
  */
905
970
  readonly api: ApiClient;
971
+ readonly services: {
972
+ readonly pop: PopService;
973
+ };
906
974
  private readonly config;
907
975
  constructor(rawConfig?: MedialaneConfig);
908
976
  get network(): "mainnet" | "sepolia";
@@ -1279,6 +1347,202 @@ declare const IPMarketplaceABI: readonly [{
1279
1347
  readonly kind: "nested";
1280
1348
  }];
1281
1349
  }];
1350
+ declare const POPCollectionABI: readonly [{
1351
+ readonly type: "struct";
1352
+ readonly name: "core::byte_array::ByteArray";
1353
+ readonly members: readonly [{
1354
+ readonly name: "data";
1355
+ readonly type: "core::array::Array::<core::felt252>";
1356
+ }, {
1357
+ readonly name: "pending_word";
1358
+ readonly type: "core::felt252";
1359
+ }, {
1360
+ readonly name: "pending_word_len";
1361
+ readonly type: "core::integer::u32";
1362
+ }];
1363
+ }, {
1364
+ readonly type: "function";
1365
+ readonly name: "claim";
1366
+ readonly inputs: readonly [];
1367
+ readonly outputs: readonly [];
1368
+ readonly state_mutability: "external";
1369
+ }, {
1370
+ readonly type: "function";
1371
+ readonly name: "admin_mint";
1372
+ readonly inputs: readonly [{
1373
+ readonly name: "recipient";
1374
+ readonly type: "core::starknet::contract_address::ContractAddress";
1375
+ }, {
1376
+ readonly name: "custom_uri";
1377
+ readonly type: "core::byte_array::ByteArray";
1378
+ }];
1379
+ readonly outputs: readonly [];
1380
+ readonly state_mutability: "external";
1381
+ }, {
1382
+ readonly type: "function";
1383
+ readonly name: "add_to_allowlist";
1384
+ readonly inputs: readonly [{
1385
+ readonly name: "address";
1386
+ readonly type: "core::starknet::contract_address::ContractAddress";
1387
+ }];
1388
+ readonly outputs: readonly [];
1389
+ readonly state_mutability: "external";
1390
+ }, {
1391
+ readonly type: "function";
1392
+ readonly name: "batch_add_to_allowlist";
1393
+ readonly inputs: readonly [{
1394
+ readonly name: "addresses";
1395
+ readonly type: "core::array::Array::<core::starknet::contract_address::ContractAddress>";
1396
+ }];
1397
+ readonly outputs: readonly [];
1398
+ readonly state_mutability: "external";
1399
+ }, {
1400
+ readonly type: "function";
1401
+ readonly name: "remove_from_allowlist";
1402
+ readonly inputs: readonly [{
1403
+ readonly name: "address";
1404
+ readonly type: "core::starknet::contract_address::ContractAddress";
1405
+ }];
1406
+ readonly outputs: readonly [];
1407
+ readonly state_mutability: "external";
1408
+ }, {
1409
+ readonly type: "function";
1410
+ readonly name: "set_token_uri";
1411
+ readonly inputs: readonly [{
1412
+ readonly name: "token_id";
1413
+ readonly type: "core::integer::u256";
1414
+ }, {
1415
+ readonly name: "uri";
1416
+ readonly type: "core::byte_array::ByteArray";
1417
+ }];
1418
+ readonly outputs: readonly [];
1419
+ readonly state_mutability: "external";
1420
+ }, {
1421
+ readonly type: "function";
1422
+ readonly name: "set_paused";
1423
+ readonly inputs: readonly [{
1424
+ readonly name: "paused";
1425
+ readonly type: "core::bool";
1426
+ }];
1427
+ readonly outputs: readonly [];
1428
+ readonly state_mutability: "external";
1429
+ }, {
1430
+ readonly type: "function";
1431
+ readonly name: "is_eligible";
1432
+ readonly inputs: readonly [{
1433
+ readonly name: "address";
1434
+ readonly type: "core::starknet::contract_address::ContractAddress";
1435
+ }];
1436
+ readonly outputs: readonly [{
1437
+ readonly type: "core::bool";
1438
+ }];
1439
+ readonly state_mutability: "view";
1440
+ }, {
1441
+ readonly type: "function";
1442
+ readonly name: "has_claimed";
1443
+ readonly inputs: readonly [{
1444
+ readonly name: "address";
1445
+ readonly type: "core::starknet::contract_address::ContractAddress";
1446
+ }];
1447
+ readonly outputs: readonly [{
1448
+ readonly type: "core::bool";
1449
+ }];
1450
+ readonly state_mutability: "view";
1451
+ }, {
1452
+ readonly type: "function";
1453
+ readonly name: "total_minted";
1454
+ readonly inputs: readonly [];
1455
+ readonly outputs: readonly [{
1456
+ readonly type: "core::integer::u256";
1457
+ }];
1458
+ readonly state_mutability: "view";
1459
+ }];
1460
+ declare const POPFactoryABI: readonly [{
1461
+ readonly type: "struct";
1462
+ readonly name: "core::byte_array::ByteArray";
1463
+ readonly members: readonly [{
1464
+ readonly name: "data";
1465
+ readonly type: "core::array::Array::<core::felt252>";
1466
+ }, {
1467
+ readonly name: "pending_word";
1468
+ readonly type: "core::felt252";
1469
+ }, {
1470
+ readonly name: "pending_word_len";
1471
+ readonly type: "core::integer::u32";
1472
+ }];
1473
+ }, {
1474
+ readonly type: "enum";
1475
+ readonly name: "pop_protocol::types::EventType";
1476
+ readonly variants: readonly [{
1477
+ readonly name: "Conference";
1478
+ readonly type: "()";
1479
+ }, {
1480
+ readonly name: "Bootcamp";
1481
+ readonly type: "()";
1482
+ }, {
1483
+ readonly name: "Workshop";
1484
+ readonly type: "()";
1485
+ }, {
1486
+ readonly name: "Hackathon";
1487
+ readonly type: "()";
1488
+ }, {
1489
+ readonly name: "Meetup";
1490
+ readonly type: "()";
1491
+ }, {
1492
+ readonly name: "Course";
1493
+ readonly type: "()";
1494
+ }, {
1495
+ readonly name: "Other";
1496
+ readonly type: "()";
1497
+ }];
1498
+ }, {
1499
+ readonly type: "function";
1500
+ readonly name: "create_collection";
1501
+ readonly inputs: readonly [{
1502
+ readonly name: "name";
1503
+ readonly type: "core::byte_array::ByteArray";
1504
+ }, {
1505
+ readonly name: "symbol";
1506
+ readonly type: "core::byte_array::ByteArray";
1507
+ }, {
1508
+ readonly name: "base_uri";
1509
+ readonly type: "core::byte_array::ByteArray";
1510
+ }, {
1511
+ readonly name: "claim_end_time";
1512
+ readonly type: "core::integer::u64";
1513
+ }, {
1514
+ readonly name: "event_type";
1515
+ readonly type: "pop_protocol::types::EventType";
1516
+ }];
1517
+ readonly outputs: readonly [{
1518
+ readonly type: "core::starknet::contract_address::ContractAddress";
1519
+ }];
1520
+ readonly state_mutability: "external";
1521
+ }, {
1522
+ readonly type: "function";
1523
+ readonly name: "register_provider";
1524
+ readonly inputs: readonly [{
1525
+ readonly name: "provider";
1526
+ readonly type: "core::starknet::contract_address::ContractAddress";
1527
+ }, {
1528
+ readonly name: "name";
1529
+ readonly type: "core::byte_array::ByteArray";
1530
+ }, {
1531
+ readonly name: "website_url";
1532
+ readonly type: "core::byte_array::ByteArray";
1533
+ }];
1534
+ readonly outputs: readonly [];
1535
+ readonly state_mutability: "external";
1536
+ }, {
1537
+ readonly type: "function";
1538
+ readonly name: "set_pop_collection_class_hash";
1539
+ readonly inputs: readonly [{
1540
+ readonly name: "new_class_hash";
1541
+ readonly type: "core::starknet::class_hash::ClassHash";
1542
+ }];
1543
+ readonly outputs: readonly [];
1544
+ readonly state_mutability: "external";
1545
+ }];
1282
1546
 
1283
1547
  /**
1284
1548
  * Normalize a Starknet address to a 0x-prefixed 64-character hex string.
@@ -1340,4 +1604,4 @@ declare function buildFulfillmentTypedData(message: Record<string, unknown>, cha
1340
1604
  */
1341
1605
  declare function buildCancellationTypedData(message: Record<string, unknown>, chainId: constants.StarknetChainId): TypedData;
1342
1606
 
1343
- export { type ActivityType, type ApiActivitiesQuery, type ApiActivity, type ApiActivityPrice, type ApiAdminCollectionClaim, ApiClient, type ApiCollection, type ApiCollectionClaim, type ApiCollectionProfile, 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 ApiTokenMetadata, type ApiUsageDay, type ApiUserWallet, type ApiWebhookCreated, type ApiWebhookEndpoint, type AutoRemixOfferParams, COLLECTION_CONTRACT_MAINNET, type CancelOrderIntentParams, type CancelOrderParams, type Cancelation, type CartItem, type CollectionSort, type ConfirmRemixOfferParams, type ConfirmSelfRemixParams, type ConsiderationItem, type CreateCollectionIntentParams, type CreateCollectionParams, type CreateCounterOfferIntentParams, type CreateListingIntentParams, type CreateListingParams, type CreateMintIntentParams, type CreateRemixOfferParams, type CreateWebhookParams, DEFAULT_RPC_URLS, type FulfillOrderIntentParams, type FulfillOrderParams, type Fulfillment, IPMarketplaceABI, type IPType, type IntentStatus, type IntentType, type IpAttribute, type IpNftMetadata, MARKETPLACE_CONTRACT_MAINNET, type MakeOfferIntentParams, type MakeOfferParams, MarketplaceModule, MedialaneApiError, MedialaneClient, type MedialaneConfig, MedialaneError, type MedialaneErrorCode, type MintParams, type Network, OPEN_LICENSES, type OfferItem, type OpenLicense, type Order, type OrderParameters, type OrderStatus, type RemixOfferStatus, type ResolvedConfig, type RetryOptions, SUPPORTED_NETWORKS, SUPPORTED_TOKENS, type SortOrder, type SupportedToken, type SupportedTokenSymbol, type TenantPlan, type TxResult, type WebhookEventType, type WebhookStatus, buildCancellationTypedData, buildFulfillmentTypedData, buildOrderTypedData, formatAmount, getListableTokens, getTokenByAddress, getTokenBySymbol, normalizeAddress, parseAmount, resolveConfig, shortenAddress, stringifyBigInts, u256ToBigInt };
1607
+ export { type ActivityType, type ApiActivitiesQuery, type ApiActivity, type ApiActivityPrice, type ApiAdminCollectionClaim, ApiClient, type ApiCollection, type ApiCollectionClaim, type ApiCollectionProfile, 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 ApiTokenMetadata, type ApiUsageDay, type ApiUserWallet, type ApiWebhookCreated, type ApiWebhookEndpoint, type AutoRemixOfferParams, COLLECTION_CONTRACT_MAINNET, type CancelOrderIntentParams, type CancelOrderParams, type Cancelation, type CartItem, type CollectionSort, type CollectionSource, type ConfirmRemixOfferParams, type ConfirmSelfRemixParams, type ConsiderationItem, type CreateCollectionIntentParams, type CreateCollectionParams, type CreateCounterOfferIntentParams, type CreateListingIntentParams, type CreateListingParams, type CreateMintIntentParams, type CreatePopCollectionParams, type CreateRemixOfferParams, type CreateWebhookParams, DEFAULT_RPC_URLS, type FulfillOrderIntentParams, type FulfillOrderParams, type Fulfillment, IPMarketplaceABI, type IPType, type IntentStatus, type IntentType, type IpAttribute, type IpNftMetadata, MARKETPLACE_CONTRACT_MAINNET, type MakeOfferIntentParams, type MakeOfferParams, MarketplaceModule, MedialaneApiError, MedialaneClient, type MedialaneConfig, MedialaneError, type MedialaneErrorCode, type MintParams, type Network, OPEN_LICENSES, type OfferItem, type OpenLicense, type Order, type OrderParameters, type OrderStatus, POPCollectionABI, POPFactoryABI, POP_COLLECTION_CLASS_HASH_MAINNET, POP_FACTORY_CONTRACT_MAINNET, type PopBatchEligibilityItem, type PopClaimStatus, type PopEventType, PopService, type RemixOfferStatus, type ResolvedConfig, type RetryOptions, SUPPORTED_NETWORKS, SUPPORTED_TOKENS, type SortOrder, type SupportedToken, type SupportedTokenSymbol, type TenantPlan, type TxResult, type WebhookEventType, type WebhookStatus, buildCancellationTypedData, buildFulfillmentTypedData, buildOrderTypedData, formatAmount, getListableTokens, getTokenByAddress, getTokenBySymbol, normalizeAddress, parseAmount, resolveConfig, shortenAddress, stringifyBigInts, u256ToBigInt };
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { z } from 'zod';
2
- import { TypedDataRevision, shortString, cairo, Contract, constants, RpcProvider, byteArray, num } from 'starknet';
2
+ import { TypedDataRevision, Contract, shortString, cairo, constants, RpcProvider, byteArray, num } from 'starknet';
3
3
 
4
4
  // src/config.ts
5
5
 
@@ -47,6 +47,8 @@ var DEFAULT_RPC_URLS = {
47
47
  mainnet: "https://rpc.starknet.lava.build",
48
48
  sepolia: "https://rpc.starknet-sepolia.lava.build"
49
49
  };
50
+ var POP_FACTORY_CONTRACT_MAINNET = "0x00b32c34b427d8f346b5843ada6a37bd3368d879fc752cd52b68a87287f60111";
51
+ var POP_COLLECTION_CLASS_HASH_MAINNET = "0x077c421686f10851872561953ea16898d933364b7f8937a5d7e2b1ba0a36263f";
50
52
 
51
53
  // src/abis.ts
52
54
  var IPMarketplaceABI = [
@@ -355,6 +357,148 @@ var IPMarketplaceABI = [
355
357
  ]
356
358
  }
357
359
  ];
360
+ var POPCollectionABI = [
361
+ {
362
+ type: "struct",
363
+ name: "core::byte_array::ByteArray",
364
+ members: [
365
+ { name: "data", type: "core::array::Array::<core::felt252>" },
366
+ { name: "pending_word", type: "core::felt252" },
367
+ { name: "pending_word_len", type: "core::integer::u32" }
368
+ ]
369
+ },
370
+ {
371
+ type: "function",
372
+ name: "claim",
373
+ inputs: [],
374
+ outputs: [],
375
+ state_mutability: "external"
376
+ },
377
+ {
378
+ type: "function",
379
+ name: "admin_mint",
380
+ inputs: [
381
+ { name: "recipient", type: "core::starknet::contract_address::ContractAddress" },
382
+ { name: "custom_uri", type: "core::byte_array::ByteArray" }
383
+ ],
384
+ outputs: [],
385
+ state_mutability: "external"
386
+ },
387
+ {
388
+ type: "function",
389
+ name: "add_to_allowlist",
390
+ inputs: [{ name: "address", type: "core::starknet::contract_address::ContractAddress" }],
391
+ outputs: [],
392
+ state_mutability: "external"
393
+ },
394
+ {
395
+ type: "function",
396
+ name: "batch_add_to_allowlist",
397
+ inputs: [{ name: "addresses", type: "core::array::Array::<core::starknet::contract_address::ContractAddress>" }],
398
+ outputs: [],
399
+ state_mutability: "external"
400
+ },
401
+ {
402
+ type: "function",
403
+ name: "remove_from_allowlist",
404
+ inputs: [{ name: "address", type: "core::starknet::contract_address::ContractAddress" }],
405
+ outputs: [],
406
+ state_mutability: "external"
407
+ },
408
+ {
409
+ type: "function",
410
+ name: "set_token_uri",
411
+ inputs: [
412
+ { name: "token_id", type: "core::integer::u256" },
413
+ { name: "uri", type: "core::byte_array::ByteArray" }
414
+ ],
415
+ outputs: [],
416
+ state_mutability: "external"
417
+ },
418
+ {
419
+ type: "function",
420
+ name: "set_paused",
421
+ inputs: [{ name: "paused", type: "core::bool" }],
422
+ outputs: [],
423
+ state_mutability: "external"
424
+ },
425
+ {
426
+ type: "function",
427
+ name: "is_eligible",
428
+ inputs: [{ name: "address", type: "core::starknet::contract_address::ContractAddress" }],
429
+ outputs: [{ type: "core::bool" }],
430
+ state_mutability: "view"
431
+ },
432
+ {
433
+ type: "function",
434
+ name: "has_claimed",
435
+ inputs: [{ name: "address", type: "core::starknet::contract_address::ContractAddress" }],
436
+ outputs: [{ type: "core::bool" }],
437
+ state_mutability: "view"
438
+ },
439
+ {
440
+ type: "function",
441
+ name: "total_minted",
442
+ inputs: [],
443
+ outputs: [{ type: "core::integer::u256" }],
444
+ state_mutability: "view"
445
+ }
446
+ ];
447
+ var POPFactoryABI = [
448
+ {
449
+ type: "struct",
450
+ name: "core::byte_array::ByteArray",
451
+ members: [
452
+ { name: "data", type: "core::array::Array::<core::felt252>" },
453
+ { name: "pending_word", type: "core::felt252" },
454
+ { name: "pending_word_len", type: "core::integer::u32" }
455
+ ]
456
+ },
457
+ {
458
+ type: "enum",
459
+ name: "pop_protocol::types::EventType",
460
+ variants: [
461
+ { name: "Conference", type: "()" },
462
+ { name: "Bootcamp", type: "()" },
463
+ { name: "Workshop", type: "()" },
464
+ { name: "Hackathon", type: "()" },
465
+ { name: "Meetup", type: "()" },
466
+ { name: "Course", type: "()" },
467
+ { name: "Other", type: "()" }
468
+ ]
469
+ },
470
+ {
471
+ type: "function",
472
+ name: "create_collection",
473
+ inputs: [
474
+ { name: "name", type: "core::byte_array::ByteArray" },
475
+ { name: "symbol", type: "core::byte_array::ByteArray" },
476
+ { name: "base_uri", type: "core::byte_array::ByteArray" },
477
+ { name: "claim_end_time", type: "core::integer::u64" },
478
+ { name: "event_type", type: "pop_protocol::types::EventType" }
479
+ ],
480
+ outputs: [{ type: "core::starknet::contract_address::ContractAddress" }],
481
+ state_mutability: "external"
482
+ },
483
+ {
484
+ type: "function",
485
+ name: "register_provider",
486
+ inputs: [
487
+ { name: "provider", type: "core::starknet::contract_address::ContractAddress" },
488
+ { name: "name", type: "core::byte_array::ByteArray" },
489
+ { name: "website_url", type: "core::byte_array::ByteArray" }
490
+ ],
491
+ outputs: [],
492
+ state_mutability: "external"
493
+ },
494
+ {
495
+ type: "function",
496
+ name: "set_pop_collection_class_hash",
497
+ inputs: [{ name: "new_class_hash", type: "core::starknet::class_hash::ClassHash" }],
498
+ outputs: [],
499
+ state_mutability: "external"
500
+ }
501
+ ];
358
502
 
359
503
  // src/utils/bigint.ts
360
504
  function stringifyBigInts(obj) {
@@ -1071,10 +1215,11 @@ var ApiClient = class {
1071
1215
  );
1072
1216
  }
1073
1217
  // ─── Collections ───────────────────────────────────────────────────────────
1074
- getCollections(page = 1, limit = 20, isKnown, sort) {
1218
+ getCollections(page = 1, limit = 20, isKnown, sort, source) {
1075
1219
  const params = new URLSearchParams({ page: String(page), limit: String(limit) });
1076
1220
  if (isKnown !== void 0) params.set("isKnown", String(isKnown));
1077
1221
  if (sort) params.set("sort", sort);
1222
+ if (source) params.set("source", source);
1078
1223
  return this.get(`/v1/collections?${params}`);
1079
1224
  }
1080
1225
  getCollectionsByOwner(owner, page = 1, limit = 50) {
@@ -1269,6 +1414,14 @@ var ApiClient = class {
1269
1414
  });
1270
1415
  return res.json();
1271
1416
  }
1417
+ async getGatedContent(contractAddress, clerkToken) {
1418
+ const url = `${this.baseUrl.replace(/\/$/, "")}/v1/collections/${normalizeAddress(contractAddress)}/gated-content`;
1419
+ const res = await fetch(url, {
1420
+ headers: { ...this.baseHeaders, "Authorization": `Bearer ${clerkToken}` }
1421
+ });
1422
+ if (res.status === 403 || res.status === 404) return null;
1423
+ return res.json();
1424
+ }
1272
1425
  // ─── Creator Profiles ───────────────────────────────────────────────────────
1273
1426
  /** List all creators with an approved username. */
1274
1427
  async getCreators(opts = {}) {
@@ -1438,6 +1591,92 @@ var ApiClient = class {
1438
1591
  headers: { "Authorization": `Bearer ${clerkToken}` }
1439
1592
  });
1440
1593
  }
1594
+ // ─── POP Protocol ──────────────────────────────────────────────────────────
1595
+ getPopCollections(opts = {}) {
1596
+ return this.getCollections(opts.page ?? 1, opts.limit ?? 20, void 0, opts.sort, "POP_PROTOCOL");
1597
+ }
1598
+ async getPopEligibility(collection, wallet) {
1599
+ const res = await this.get(
1600
+ `/v1/pop/eligibility/${normalizeAddress(collection)}/${normalizeAddress(wallet)}`
1601
+ );
1602
+ return res.data;
1603
+ }
1604
+ async getPopEligibilityBatch(collection, wallets) {
1605
+ const params = new URLSearchParams({ wallets: wallets.map(normalizeAddress).join(",") });
1606
+ const res = await this.get(
1607
+ `/v1/pop/eligibility/${normalizeAddress(collection)}?${params}`
1608
+ );
1609
+ return res.data;
1610
+ }
1611
+ };
1612
+ var POP_FACTORY_MAINNET = "0x00b32c34b427d8f346b5843ada6a37bd3368d879fc752cd52b68a87287f60111";
1613
+ var PopService = class {
1614
+ constructor(_config) {
1615
+ this.factoryAddress = POP_FACTORY_MAINNET;
1616
+ }
1617
+ async claim(account, collectionAddress) {
1618
+ const collection = new Contract(POPCollectionABI, normalizeAddress(collectionAddress), account);
1619
+ const call = collection.populate("claim", []);
1620
+ const res = await account.execute([call]);
1621
+ return { txHash: res.transaction_hash };
1622
+ }
1623
+ async adminMint(account, params) {
1624
+ const collection = new Contract(POPCollectionABI, normalizeAddress(params.collection), account);
1625
+ const call = collection.populate("admin_mint", [
1626
+ params.recipient,
1627
+ params.customUri ?? ""
1628
+ ]);
1629
+ const res = await account.execute([call]);
1630
+ return { txHash: res.transaction_hash };
1631
+ }
1632
+ async addToAllowlist(account, params) {
1633
+ const collection = new Contract(POPCollectionABI, normalizeAddress(params.collection), account);
1634
+ const call = collection.populate("add_to_allowlist", [params.address]);
1635
+ const res = await account.execute([call]);
1636
+ return { txHash: res.transaction_hash };
1637
+ }
1638
+ async batchAddToAllowlist(account, params) {
1639
+ const collection = new Contract(POPCollectionABI, normalizeAddress(params.collection), account);
1640
+ const CHUNK = 200;
1641
+ const calls = [];
1642
+ for (let i = 0; i < params.addresses.length; i += CHUNK) {
1643
+ const chunk = params.addresses.slice(i, i + CHUNK);
1644
+ calls.push(collection.populate("batch_add_to_allowlist", [chunk]));
1645
+ }
1646
+ const res = await account.execute(calls);
1647
+ return { txHash: res.transaction_hash };
1648
+ }
1649
+ async removeFromAllowlist(account, params) {
1650
+ const collection = new Contract(POPCollectionABI, normalizeAddress(params.collection), account);
1651
+ const call = collection.populate("remove_from_allowlist", [params.address]);
1652
+ const res = await account.execute([call]);
1653
+ return { txHash: res.transaction_hash };
1654
+ }
1655
+ async setTokenUri(account, params) {
1656
+ const collection = new Contract(POPCollectionABI, normalizeAddress(params.collection), account);
1657
+ const call = collection.populate("set_token_uri", [BigInt(params.tokenId), params.uri]);
1658
+ const res = await account.execute([call]);
1659
+ return { txHash: res.transaction_hash };
1660
+ }
1661
+ async setPaused(account, params) {
1662
+ const collection = new Contract(POPCollectionABI, normalizeAddress(params.collection), account);
1663
+ const call = collection.populate("set_paused", [params.paused]);
1664
+ const res = await account.execute([call]);
1665
+ return { txHash: res.transaction_hash };
1666
+ }
1667
+ async createCollection(account, params) {
1668
+ const factory = new Contract(POPFactoryABI, this.factoryAddress, account);
1669
+ const eventTypeVariant = { [params.eventType]: {} };
1670
+ const call = factory.populate("create_collection", [
1671
+ params.name,
1672
+ params.symbol,
1673
+ params.baseUri,
1674
+ params.claimEndTime,
1675
+ eventTypeVariant
1676
+ ]);
1677
+ const res = await account.execute([call]);
1678
+ return { txHash: res.transaction_hash };
1679
+ }
1441
1680
  };
1442
1681
 
1443
1682
  // src/client.ts
@@ -1445,6 +1684,9 @@ var MedialaneClient = class {
1445
1684
  constructor(rawConfig = {}) {
1446
1685
  this.config = resolveConfig(rawConfig);
1447
1686
  this.marketplace = new MarketplaceModule(this.config);
1687
+ this.services = {
1688
+ pop: new PopService(this.config)
1689
+ };
1448
1690
  if (!this.config.backendUrl) {
1449
1691
  this.api = new Proxy({}, {
1450
1692
  get(_target, prop) {
@@ -1473,6 +1715,6 @@ var MedialaneClient = class {
1473
1715
  // src/types/api.ts
1474
1716
  var OPEN_LICENSES = ["CC0", "CC BY", "CC BY-SA", "CC BY-NC"];
1475
1717
 
1476
- export { ApiClient, COLLECTION_CONTRACT_MAINNET, DEFAULT_RPC_URLS, IPMarketplaceABI, MARKETPLACE_CONTRACT_MAINNET, MarketplaceModule, MedialaneApiError, MedialaneClient, MedialaneError, OPEN_LICENSES, SUPPORTED_NETWORKS, SUPPORTED_TOKENS, buildCancellationTypedData, buildFulfillmentTypedData, buildOrderTypedData, formatAmount, getListableTokens, getTokenByAddress, getTokenBySymbol, normalizeAddress, parseAmount, resolveConfig, shortenAddress, stringifyBigInts, u256ToBigInt };
1718
+ export { ApiClient, COLLECTION_CONTRACT_MAINNET, DEFAULT_RPC_URLS, IPMarketplaceABI, MARKETPLACE_CONTRACT_MAINNET, MarketplaceModule, MedialaneApiError, MedialaneClient, MedialaneError, OPEN_LICENSES, POPCollectionABI, POPFactoryABI, POP_COLLECTION_CLASS_HASH_MAINNET, POP_FACTORY_CONTRACT_MAINNET, PopService, SUPPORTED_NETWORKS, SUPPORTED_TOKENS, buildCancellationTypedData, buildFulfillmentTypedData, buildOrderTypedData, formatAmount, getListableTokens, getTokenByAddress, getTokenBySymbol, normalizeAddress, parseAmount, resolveConfig, shortenAddress, stringifyBigInts, u256ToBigInt };
1477
1719
  //# sourceMappingURL=index.js.map
1478
1720
  //# sourceMappingURL=index.js.map