@medialane/sdk 0.77.0 → 0.79.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,5 +1,5 @@
1
- import { S as ServiceDefinition, a as ServiceCapability } from './services-DgIaaJbX.cjs';
2
- export { A as ActivityType, b as ApiActivitiesQuery, c as ApiActivity, d as ApiActivityPrice, e as ApiAdminCollectionClaim, f as ApiAppSource, g as ApiBusinessProvisioning, h as ApiChain, i as ApiClient, j as ApiCoin, k as ApiCoinsQuery, l as ApiCollection, m as ApiCollectionClaim, n as ApiCollectionProfile, o as ApiCollectionSlugClaim, p as ApiCollectionsQuery, q as ApiComment, r as ApiCounterOffersQuery, s as ApiCreatorListResult, t as ApiCreatorProfile, u as ApiIntent, v as ApiIntentCreated, w as ApiKeyStatus, x as ApiMeta, y as ApiMetadataSignedUrl, z as ApiMetadataUpload, B as ApiOrder, C as ApiOrderConsideration, D as ApiOrderOffer, E as ApiOrderPrice, F as ApiOrderTokenMeta, G as ApiOrderTxHash, H as ApiOrdersQuery, I as ApiPointEvent, J as ApiPortalKey, K as ApiPortalKeyCreated, L as ApiPortalMe, M as ApiPublicRemix, N as ApiRemixOffer, O as ApiRemixOfferPrice, P as ApiRemixOffersQuery, Q as ApiResponse, R as ApiRewardsBadge, T as ApiRewardsBatchEntry, U as ApiRewardsConfig, V as ApiRewardsLeaderboardEntry, W as ApiRewardsLevel, X as ApiSearchCollectionResult, Y as ApiSearchCreatorResult, Z as ApiSearchResult, _ as ApiSearchTokenResult, $ as ApiToken, a0 as ApiTokenBalance, a1 as ApiTokenMetadata, a2 as ApiUsageDay, a3 as ApiUserRewards, a4 as ApiUserWallet, a5 as ApiWalletActivity, a6 as ApiWebhookCreated, a7 as ApiWebhookEndpoint, a8 as AutoRemixOfferParams, a9 as CancelOrderIntentParams, aa as ChainFilter, ab as ClaimConditions, ac as CollectionSort, ad as CollectionTokensSort, ae as ConfirmRemixOfferParams, af as ConfirmSelfRemixParams, ag as ConsiderationItem, ah as CreateCollectionIntentParams, ai as CreateCounterOfferIntentParams, aj as CreateDropParams, ak as CreateListingIntentParams, al as CreateMembershipParams, am as CreateMintIntentParams, an as CreatePopCollectionParams, ao as CreateRemixOfferParams, ap as CreateSponsorshipOfferParams, aq as CreateTicketParams, ar as CreateWebhookParams, as as DropMintStatus, at as EnforcementDeclaration, au as FeeConfig, av as FeeConfigSchema, aw as FulfillOrderIntentParams, ax as IPType, ay as IntentCall, az as IntentStatus, aA as IntentType, aB as IpAttribute, aC as IpNftMetadata, aD as MakeOfferIntentParams, aE as MedialaneApiError, aF as MedialaneConfig, aG as MedialaneErrorCode, aH as MintMembershipsParams, aI as MintTicketsParams, aJ as OPEN_LICENSES, aK as OfferItem, aL as OpenLicense, aM as Order, aN as OrderDetails, aO as OrderParameters, aP as OrderStatus, aQ as PopBatchEligibilityItem, aR as PopClaimStatus, aS as PopEventType, aT as ProposeSponsorshipParams, aU as RemixOfferStatus, aV as ResolvedConfig, aW as ResolvedFeeConfig, aX as RetryOptions, aY as ServiceEventDeclaration, aZ as SortOrder, a_ as TenantPlan, a$ as TxResult, b0 as WebhookEventType, b1 as WebhookStatus, b2 as resolveConfig, b3 as resolveFeeConfig } from './services-DgIaaJbX.cjs';
1
+ import { S as ServiceDefinition, a as ServiceCapability } from './services-gpLj6m2X.cjs';
2
+ export { A as ActivityType, b as ApiActivitiesQuery, c as ApiActivity, d as ApiActivityPrice, e as ApiAdminCollectionClaim, f as ApiAppSource, g as ApiBusinessProvisioning, h as ApiChain, i as ApiClient, j as ApiCoin, k as ApiCoinsQuery, l as ApiCollection, m as ApiCollectionClaim, n as ApiCollectionProfile, o as ApiCollectionSlugClaim, p as ApiCollectionsQuery, q as ApiComment, r as ApiCounterOffersQuery, s as ApiCreatorListResult, t as ApiCreatorProfile, u as ApiIntent, v as ApiIntentCreated, w as ApiKeyStatus, x as ApiMeta, y as ApiMetadataSignedUrl, z as ApiMetadataUpload, B as ApiOrder, C as ApiOrderConsideration, D as ApiOrderOffer, E as ApiOrderPrice, F as ApiOrderTokenMeta, G as ApiOrderTxHash, H as ApiOrdersQuery, I as ApiPointEvent, J as ApiPortalKey, K as ApiPortalKeyCreated, L as ApiPortalMe, M as ApiPublicRemix, N as ApiRemixOffer, O as ApiRemixOfferPrice, P as ApiRemixOffersQuery, Q as ApiResponse, R as ApiRewardsBadge, T as ApiRewardsBatchEntry, U as ApiRewardsConfig, V as ApiRewardsLeaderboardEntry, W as ApiRewardsLevel, X as ApiSearchCollectionResult, Y as ApiSearchCreatorResult, Z as ApiSearchResult, _ as ApiSearchTokenResult, $ as ApiToken, a0 as ApiTokenBalance, a1 as ApiTokenMetadata, a2 as ApiUsageDay, a3 as ApiUserRewards, a4 as ApiUserWallet, a5 as ApiWalletActivity, a6 as ApiWebhookCreated, a7 as ApiWebhookEndpoint, a8 as AutoRemixOfferParams, a9 as CancelOrderIntentParams, aa as ChainFilter, ab as ClaimConditions, ac as CollectionSort, ad as CollectionTokensSort, ae as ConfirmRemixOfferParams, af as ConfirmSelfRemixParams, ag as ConsiderationItem, ah as CreateCollectionIntentParams, ai as CreateCounterOfferIntentParams, aj as CreateDropParams, ak as CreateListingIntentParams, al as CreateMembershipParams, am as CreateMintIntentParams, an as CreatePopCollectionParams, ao as CreateRemixOfferParams, ap as CreateSponsorshipOfferParams, aq as CreateTicketParams, ar as CreateWebhookParams, as as DropMintStatus, at as EnforcementDeclaration, au as FeeConfig, av as FeeConfigSchema, aw as FulfillOrderIntentParams, ax as IPType, ay as IntentCall, az as IntentStatus, aA as IntentType, aB as IpAttribute, aC as IpNftMetadata, aD as MakeOfferIntentParams, aE as MedialaneApiError, aF as MedialaneConfig, aG as MedialaneErrorCode, aH as MintMembershipsParams, aI as MintTicketsParams, aJ as OPEN_LICENSES, aK as OfferItem, aL as OpenLicense, aM as Order, aN as OrderDetails, aO as OrderParameters, aP as OrderStatus, aQ as PopBatchEligibilityItem, aR as PopClaimStatus, aS as PopEventType, aT as ProposeSponsorshipParams, aU as RemixOfferStatus, aV as ResolvedConfig, aW as ResolvedFeeConfig, aX as RetryOptions, aY as ServiceEventDeclaration, aZ as SortOrder, a_ as TenantPlan, a$ as TxResult, b0 as WebhookEventType, b1 as WebhookStatus, b2 as resolveConfig, b3 as resolveFeeConfig } from './services-gpLj6m2X.cjs';
3
3
  import { C as Chain } from './types-sIc3OCpo.cjs';
4
4
  export { A as AdapterTxResult, a as AssetRef, b as CHAINS, c as ChainCoordinates, d as CoordinatesByChain, e as CreateCollectionInput, D as DEFAULT_CHAIN, E as EvmCoordinates, I as IssuanceAdapter, M as MintInput, O as OrderRef, R as RegisterOrderParams, S as SolanaCoordinates, f as StarknetCoordinates, g as StellarCoordinates, V as VenueAdapter, h as getCoordinates, i as getStarknetCoordinates } from './types-sIc3OCpo.cjs';
5
5
  import 'zod';
@@ -472,6 +472,8 @@ declare function stringifyBigInts(obj: unknown): unknown;
472
472
  * Convert a u256 represented as { low: string; high: string } to a single BigInt.
473
473
  */
474
474
  declare function u256ToBigInt(low: string, high: string): bigint;
475
+ /** Split a bigint into low/high felt252 halves for a Cairo u256 (inverse of `u256ToBigInt`). */
476
+ declare function encodeU256(n: bigint): [string, string];
475
477
 
476
478
  /**
477
479
  * Resilient Starknet RPC helpers — the single source of truth for "what counts
@@ -533,4 +535,47 @@ interface FailoverFetchOptions {
533
535
  */
534
536
  declare function createFailoverFetch(urls: string[], options?: FailoverFetchOptions): typeof fetch;
535
537
 
536
- export { Chain, DEFAULT_CURRENCY, type FailoverFetchOptions, PUBLIC_RPC_FALLBACKS, STARKNET_COLLECTION_1155_CLASS_HASH, STARKNET_COLLECTION_1155_CONTRACT, STARKNET_COLLECTION_1155_FACTORY_CLASS_HASH, STARKNET_COLLECTION_1155_START_BLOCK, STARKNET_COLLECTION_721_CONTRACT, STARKNET_COLLECTION_721_START_BLOCK, STARKNET_CREATOR_COIN_CLASS_HASH, STARKNET_CREATOR_COIN_EKUBO_LAUNCHER, STARKNET_CREATOR_COIN_FACTORY_CLASS_HASH, STARKNET_CREATOR_COIN_FACTORY_CONTRACT, STARKNET_CREATOR_COIN_START_BLOCK, STARKNET_DROP_COLLECTION_CLASS_HASH, STARKNET_DROP_FACTORY_CONTRACT, STARKNET_EKUBO_CORE, STARKNET_IPCOLLECTION_CLASS_HASH, STARKNET_IPNFT_CLASS_HASH, STARKNET_IP_CLUB_COLLECTION_CLASS_HASH, STARKNET_IP_CLUB_FACTORY_CONTRACT, STARKNET_IP_SPONSORSHIP_CLASS_HASH, STARKNET_IP_SPONSORSHIP_CONTRACT, STARKNET_IP_TICKETS_FACTORY_CONTRACT, STARKNET_IP_TICKET_COLLECTION_CLASS_HASH, STARKNET_MARKETPLACE_1155_CLASS_HASH, STARKNET_MARKETPLACE_1155_CONTRACT, STARKNET_MARKETPLACE_1155_START_BLOCK, STARKNET_MARKETPLACE_721_CLASS_HASH, STARKNET_MARKETPLACE_721_CONTRACT, STARKNET_MARKETPLACE_721_START_BLOCK, STARKNET_NFTCOMMENTS_CONTRACT, STARKNET_POP_COLLECTION_CLASS_HASH, STARKNET_POP_FACTORY_CONTRACT, SUPPORTED_TOKENS, SUPPORTED_URL_CHAINS, ServiceCapability, ServiceDefinition, type ServiceId, type SupportedToken, type SupportedTokenSymbol, assetHref, chainFromSlug, chainSlug, coinHref, collectionHref, createFailoverFetch, formatAmount, getListableTokens, getService, getServicesByCapability, getTokenByAddress, getTokenBySymbol, hasCapability, isServiceId, isTransientRpcError, listServices, normalizeAddress, normalizeHash, parseAmount, shortenAddress, stringifyBigInts, u256ToBigInt };
538
+ /**
539
+ * Shared OpenSea-ERC721 + Berne-Convention metadata builder.
540
+ *
541
+ * Single source of truth for how a Medialane asset's metadata JSON is shaped.
542
+ * Pure function — no network calls, no FormData. Server-safe and chain-neutral.
543
+ */
544
+ type AssetAttribute = {
545
+ trait_type: string;
546
+ value: string;
547
+ };
548
+ interface AssetMetadata {
549
+ name: string;
550
+ description: string;
551
+ image: string | null;
552
+ external_url: string;
553
+ attributes: AssetAttribute[];
554
+ }
555
+ interface BuildAssetMetadataInput {
556
+ name: string;
557
+ description?: string | null;
558
+ externalUrl?: string | null;
559
+ imageUri?: string | null;
560
+ creator?: string | null;
561
+ ipType?: string | null;
562
+ licenseType?: string | null;
563
+ commercialUse?: string | null;
564
+ derivatives?: string | null;
565
+ attribution?: string | null;
566
+ geographicScope?: string | null;
567
+ aiPolicy?: string | null;
568
+ royalty?: string | null;
569
+ edition?: string | null;
570
+ /** Already-extracted `tmpl_*` template/custom traits (reserved names are filtered here). */
571
+ templateTraits?: {
572
+ traitType: string;
573
+ value: string;
574
+ }[];
575
+ /** ISO date (YYYY-MM-DD) stamped as the Berne registration trait. Defaults to today. */
576
+ registrationDate?: string;
577
+ }
578
+ declare const RESERVED_TRAITS: Set<string>;
579
+ declare function buildAssetMetadata(input: BuildAssetMetadataInput): AssetMetadata;
580
+
581
+ export { type AssetAttribute, type AssetMetadata, type BuildAssetMetadataInput, Chain, DEFAULT_CURRENCY, type FailoverFetchOptions, PUBLIC_RPC_FALLBACKS, RESERVED_TRAITS, STARKNET_COLLECTION_1155_CLASS_HASH, STARKNET_COLLECTION_1155_CONTRACT, STARKNET_COLLECTION_1155_FACTORY_CLASS_HASH, STARKNET_COLLECTION_1155_START_BLOCK, STARKNET_COLLECTION_721_CONTRACT, STARKNET_COLLECTION_721_START_BLOCK, STARKNET_CREATOR_COIN_CLASS_HASH, STARKNET_CREATOR_COIN_EKUBO_LAUNCHER, STARKNET_CREATOR_COIN_FACTORY_CLASS_HASH, STARKNET_CREATOR_COIN_FACTORY_CONTRACT, STARKNET_CREATOR_COIN_START_BLOCK, STARKNET_DROP_COLLECTION_CLASS_HASH, STARKNET_DROP_FACTORY_CONTRACT, STARKNET_EKUBO_CORE, STARKNET_IPCOLLECTION_CLASS_HASH, STARKNET_IPNFT_CLASS_HASH, STARKNET_IP_CLUB_COLLECTION_CLASS_HASH, STARKNET_IP_CLUB_FACTORY_CONTRACT, STARKNET_IP_SPONSORSHIP_CLASS_HASH, STARKNET_IP_SPONSORSHIP_CONTRACT, STARKNET_IP_TICKETS_FACTORY_CONTRACT, STARKNET_IP_TICKET_COLLECTION_CLASS_HASH, STARKNET_MARKETPLACE_1155_CLASS_HASH, STARKNET_MARKETPLACE_1155_CONTRACT, STARKNET_MARKETPLACE_1155_START_BLOCK, STARKNET_MARKETPLACE_721_CLASS_HASH, STARKNET_MARKETPLACE_721_CONTRACT, STARKNET_MARKETPLACE_721_START_BLOCK, STARKNET_NFTCOMMENTS_CONTRACT, STARKNET_POP_COLLECTION_CLASS_HASH, STARKNET_POP_FACTORY_CONTRACT, SUPPORTED_TOKENS, SUPPORTED_URL_CHAINS, ServiceCapability, ServiceDefinition, type ServiceId, type SupportedToken, type SupportedTokenSymbol, assetHref, buildAssetMetadata, chainFromSlug, chainSlug, coinHref, collectionHref, createFailoverFetch, encodeU256, formatAmount, getListableTokens, getService, getServicesByCapability, getTokenByAddress, getTokenBySymbol, hasCapability, isServiceId, isTransientRpcError, listServices, normalizeAddress, normalizeHash, parseAmount, shortenAddress, stringifyBigInts, u256ToBigInt };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { S as ServiceDefinition, a as ServiceCapability } from './services-C5lxQjem.js';
2
- export { A as ActivityType, b as ApiActivitiesQuery, c as ApiActivity, d as ApiActivityPrice, e as ApiAdminCollectionClaim, f as ApiAppSource, g as ApiBusinessProvisioning, h as ApiChain, i as ApiClient, j as ApiCoin, k as ApiCoinsQuery, l as ApiCollection, m as ApiCollectionClaim, n as ApiCollectionProfile, o as ApiCollectionSlugClaim, p as ApiCollectionsQuery, q as ApiComment, r as ApiCounterOffersQuery, s as ApiCreatorListResult, t as ApiCreatorProfile, u as ApiIntent, v as ApiIntentCreated, w as ApiKeyStatus, x as ApiMeta, y as ApiMetadataSignedUrl, z as ApiMetadataUpload, B as ApiOrder, C as ApiOrderConsideration, D as ApiOrderOffer, E as ApiOrderPrice, F as ApiOrderTokenMeta, G as ApiOrderTxHash, H as ApiOrdersQuery, I as ApiPointEvent, J as ApiPortalKey, K as ApiPortalKeyCreated, L as ApiPortalMe, M as ApiPublicRemix, N as ApiRemixOffer, O as ApiRemixOfferPrice, P as ApiRemixOffersQuery, Q as ApiResponse, R as ApiRewardsBadge, T as ApiRewardsBatchEntry, U as ApiRewardsConfig, V as ApiRewardsLeaderboardEntry, W as ApiRewardsLevel, X as ApiSearchCollectionResult, Y as ApiSearchCreatorResult, Z as ApiSearchResult, _ as ApiSearchTokenResult, $ as ApiToken, a0 as ApiTokenBalance, a1 as ApiTokenMetadata, a2 as ApiUsageDay, a3 as ApiUserRewards, a4 as ApiUserWallet, a5 as ApiWalletActivity, a6 as ApiWebhookCreated, a7 as ApiWebhookEndpoint, a8 as AutoRemixOfferParams, a9 as CancelOrderIntentParams, aa as ChainFilter, ab as ClaimConditions, ac as CollectionSort, ad as CollectionTokensSort, ae as ConfirmRemixOfferParams, af as ConfirmSelfRemixParams, ag as ConsiderationItem, ah as CreateCollectionIntentParams, ai as CreateCounterOfferIntentParams, aj as CreateDropParams, ak as CreateListingIntentParams, al as CreateMembershipParams, am as CreateMintIntentParams, an as CreatePopCollectionParams, ao as CreateRemixOfferParams, ap as CreateSponsorshipOfferParams, aq as CreateTicketParams, ar as CreateWebhookParams, as as DropMintStatus, at as EnforcementDeclaration, au as FeeConfig, av as FeeConfigSchema, aw as FulfillOrderIntentParams, ax as IPType, ay as IntentCall, az as IntentStatus, aA as IntentType, aB as IpAttribute, aC as IpNftMetadata, aD as MakeOfferIntentParams, aE as MedialaneApiError, aF as MedialaneConfig, aG as MedialaneErrorCode, aH as MintMembershipsParams, aI as MintTicketsParams, aJ as OPEN_LICENSES, aK as OfferItem, aL as OpenLicense, aM as Order, aN as OrderDetails, aO as OrderParameters, aP as OrderStatus, aQ as PopBatchEligibilityItem, aR as PopClaimStatus, aS as PopEventType, aT as ProposeSponsorshipParams, aU as RemixOfferStatus, aV as ResolvedConfig, aW as ResolvedFeeConfig, aX as RetryOptions, aY as ServiceEventDeclaration, aZ as SortOrder, a_ as TenantPlan, a$ as TxResult, b0 as WebhookEventType, b1 as WebhookStatus, b2 as resolveConfig, b3 as resolveFeeConfig } from './services-C5lxQjem.js';
1
+ import { S as ServiceDefinition, a as ServiceCapability } from './services-L8rbm-gZ.js';
2
+ export { A as ActivityType, b as ApiActivitiesQuery, c as ApiActivity, d as ApiActivityPrice, e as ApiAdminCollectionClaim, f as ApiAppSource, g as ApiBusinessProvisioning, h as ApiChain, i as ApiClient, j as ApiCoin, k as ApiCoinsQuery, l as ApiCollection, m as ApiCollectionClaim, n as ApiCollectionProfile, o as ApiCollectionSlugClaim, p as ApiCollectionsQuery, q as ApiComment, r as ApiCounterOffersQuery, s as ApiCreatorListResult, t as ApiCreatorProfile, u as ApiIntent, v as ApiIntentCreated, w as ApiKeyStatus, x as ApiMeta, y as ApiMetadataSignedUrl, z as ApiMetadataUpload, B as ApiOrder, C as ApiOrderConsideration, D as ApiOrderOffer, E as ApiOrderPrice, F as ApiOrderTokenMeta, G as ApiOrderTxHash, H as ApiOrdersQuery, I as ApiPointEvent, J as ApiPortalKey, K as ApiPortalKeyCreated, L as ApiPortalMe, M as ApiPublicRemix, N as ApiRemixOffer, O as ApiRemixOfferPrice, P as ApiRemixOffersQuery, Q as ApiResponse, R as ApiRewardsBadge, T as ApiRewardsBatchEntry, U as ApiRewardsConfig, V as ApiRewardsLeaderboardEntry, W as ApiRewardsLevel, X as ApiSearchCollectionResult, Y as ApiSearchCreatorResult, Z as ApiSearchResult, _ as ApiSearchTokenResult, $ as ApiToken, a0 as ApiTokenBalance, a1 as ApiTokenMetadata, a2 as ApiUsageDay, a3 as ApiUserRewards, a4 as ApiUserWallet, a5 as ApiWalletActivity, a6 as ApiWebhookCreated, a7 as ApiWebhookEndpoint, a8 as AutoRemixOfferParams, a9 as CancelOrderIntentParams, aa as ChainFilter, ab as ClaimConditions, ac as CollectionSort, ad as CollectionTokensSort, ae as ConfirmRemixOfferParams, af as ConfirmSelfRemixParams, ag as ConsiderationItem, ah as CreateCollectionIntentParams, ai as CreateCounterOfferIntentParams, aj as CreateDropParams, ak as CreateListingIntentParams, al as CreateMembershipParams, am as CreateMintIntentParams, an as CreatePopCollectionParams, ao as CreateRemixOfferParams, ap as CreateSponsorshipOfferParams, aq as CreateTicketParams, ar as CreateWebhookParams, as as DropMintStatus, at as EnforcementDeclaration, au as FeeConfig, av as FeeConfigSchema, aw as FulfillOrderIntentParams, ax as IPType, ay as IntentCall, az as IntentStatus, aA as IntentType, aB as IpAttribute, aC as IpNftMetadata, aD as MakeOfferIntentParams, aE as MedialaneApiError, aF as MedialaneConfig, aG as MedialaneErrorCode, aH as MintMembershipsParams, aI as MintTicketsParams, aJ as OPEN_LICENSES, aK as OfferItem, aL as OpenLicense, aM as Order, aN as OrderDetails, aO as OrderParameters, aP as OrderStatus, aQ as PopBatchEligibilityItem, aR as PopClaimStatus, aS as PopEventType, aT as ProposeSponsorshipParams, aU as RemixOfferStatus, aV as ResolvedConfig, aW as ResolvedFeeConfig, aX as RetryOptions, aY as ServiceEventDeclaration, aZ as SortOrder, a_ as TenantPlan, a$ as TxResult, b0 as WebhookEventType, b1 as WebhookStatus, b2 as resolveConfig, b3 as resolveFeeConfig } from './services-L8rbm-gZ.js';
3
3
  import { C as Chain } from './types-sIc3OCpo.js';
4
4
  export { A as AdapterTxResult, a as AssetRef, b as CHAINS, c as ChainCoordinates, d as CoordinatesByChain, e as CreateCollectionInput, D as DEFAULT_CHAIN, E as EvmCoordinates, I as IssuanceAdapter, M as MintInput, O as OrderRef, R as RegisterOrderParams, S as SolanaCoordinates, f as StarknetCoordinates, g as StellarCoordinates, V as VenueAdapter, h as getCoordinates, i as getStarknetCoordinates } from './types-sIc3OCpo.js';
5
5
  import 'zod';
@@ -472,6 +472,8 @@ declare function stringifyBigInts(obj: unknown): unknown;
472
472
  * Convert a u256 represented as { low: string; high: string } to a single BigInt.
473
473
  */
474
474
  declare function u256ToBigInt(low: string, high: string): bigint;
475
+ /** Split a bigint into low/high felt252 halves for a Cairo u256 (inverse of `u256ToBigInt`). */
476
+ declare function encodeU256(n: bigint): [string, string];
475
477
 
476
478
  /**
477
479
  * Resilient Starknet RPC helpers — the single source of truth for "what counts
@@ -533,4 +535,47 @@ interface FailoverFetchOptions {
533
535
  */
534
536
  declare function createFailoverFetch(urls: string[], options?: FailoverFetchOptions): typeof fetch;
535
537
 
536
- export { Chain, DEFAULT_CURRENCY, type FailoverFetchOptions, PUBLIC_RPC_FALLBACKS, STARKNET_COLLECTION_1155_CLASS_HASH, STARKNET_COLLECTION_1155_CONTRACT, STARKNET_COLLECTION_1155_FACTORY_CLASS_HASH, STARKNET_COLLECTION_1155_START_BLOCK, STARKNET_COLLECTION_721_CONTRACT, STARKNET_COLLECTION_721_START_BLOCK, STARKNET_CREATOR_COIN_CLASS_HASH, STARKNET_CREATOR_COIN_EKUBO_LAUNCHER, STARKNET_CREATOR_COIN_FACTORY_CLASS_HASH, STARKNET_CREATOR_COIN_FACTORY_CONTRACT, STARKNET_CREATOR_COIN_START_BLOCK, STARKNET_DROP_COLLECTION_CLASS_HASH, STARKNET_DROP_FACTORY_CONTRACT, STARKNET_EKUBO_CORE, STARKNET_IPCOLLECTION_CLASS_HASH, STARKNET_IPNFT_CLASS_HASH, STARKNET_IP_CLUB_COLLECTION_CLASS_HASH, STARKNET_IP_CLUB_FACTORY_CONTRACT, STARKNET_IP_SPONSORSHIP_CLASS_HASH, STARKNET_IP_SPONSORSHIP_CONTRACT, STARKNET_IP_TICKETS_FACTORY_CONTRACT, STARKNET_IP_TICKET_COLLECTION_CLASS_HASH, STARKNET_MARKETPLACE_1155_CLASS_HASH, STARKNET_MARKETPLACE_1155_CONTRACT, STARKNET_MARKETPLACE_1155_START_BLOCK, STARKNET_MARKETPLACE_721_CLASS_HASH, STARKNET_MARKETPLACE_721_CONTRACT, STARKNET_MARKETPLACE_721_START_BLOCK, STARKNET_NFTCOMMENTS_CONTRACT, STARKNET_POP_COLLECTION_CLASS_HASH, STARKNET_POP_FACTORY_CONTRACT, SUPPORTED_TOKENS, SUPPORTED_URL_CHAINS, ServiceCapability, ServiceDefinition, type ServiceId, type SupportedToken, type SupportedTokenSymbol, assetHref, chainFromSlug, chainSlug, coinHref, collectionHref, createFailoverFetch, formatAmount, getListableTokens, getService, getServicesByCapability, getTokenByAddress, getTokenBySymbol, hasCapability, isServiceId, isTransientRpcError, listServices, normalizeAddress, normalizeHash, parseAmount, shortenAddress, stringifyBigInts, u256ToBigInt };
538
+ /**
539
+ * Shared OpenSea-ERC721 + Berne-Convention metadata builder.
540
+ *
541
+ * Single source of truth for how a Medialane asset's metadata JSON is shaped.
542
+ * Pure function — no network calls, no FormData. Server-safe and chain-neutral.
543
+ */
544
+ type AssetAttribute = {
545
+ trait_type: string;
546
+ value: string;
547
+ };
548
+ interface AssetMetadata {
549
+ name: string;
550
+ description: string;
551
+ image: string | null;
552
+ external_url: string;
553
+ attributes: AssetAttribute[];
554
+ }
555
+ interface BuildAssetMetadataInput {
556
+ name: string;
557
+ description?: string | null;
558
+ externalUrl?: string | null;
559
+ imageUri?: string | null;
560
+ creator?: string | null;
561
+ ipType?: string | null;
562
+ licenseType?: string | null;
563
+ commercialUse?: string | null;
564
+ derivatives?: string | null;
565
+ attribution?: string | null;
566
+ geographicScope?: string | null;
567
+ aiPolicy?: string | null;
568
+ royalty?: string | null;
569
+ edition?: string | null;
570
+ /** Already-extracted `tmpl_*` template/custom traits (reserved names are filtered here). */
571
+ templateTraits?: {
572
+ traitType: string;
573
+ value: string;
574
+ }[];
575
+ /** ISO date (YYYY-MM-DD) stamped as the Berne registration trait. Defaults to today. */
576
+ registrationDate?: string;
577
+ }
578
+ declare const RESERVED_TRAITS: Set<string>;
579
+ declare function buildAssetMetadata(input: BuildAssetMetadataInput): AssetMetadata;
580
+
581
+ export { type AssetAttribute, type AssetMetadata, type BuildAssetMetadataInput, Chain, DEFAULT_CURRENCY, type FailoverFetchOptions, PUBLIC_RPC_FALLBACKS, RESERVED_TRAITS, STARKNET_COLLECTION_1155_CLASS_HASH, STARKNET_COLLECTION_1155_CONTRACT, STARKNET_COLLECTION_1155_FACTORY_CLASS_HASH, STARKNET_COLLECTION_1155_START_BLOCK, STARKNET_COLLECTION_721_CONTRACT, STARKNET_COLLECTION_721_START_BLOCK, STARKNET_CREATOR_COIN_CLASS_HASH, STARKNET_CREATOR_COIN_EKUBO_LAUNCHER, STARKNET_CREATOR_COIN_FACTORY_CLASS_HASH, STARKNET_CREATOR_COIN_FACTORY_CONTRACT, STARKNET_CREATOR_COIN_START_BLOCK, STARKNET_DROP_COLLECTION_CLASS_HASH, STARKNET_DROP_FACTORY_CONTRACT, STARKNET_EKUBO_CORE, STARKNET_IPCOLLECTION_CLASS_HASH, STARKNET_IPNFT_CLASS_HASH, STARKNET_IP_CLUB_COLLECTION_CLASS_HASH, STARKNET_IP_CLUB_FACTORY_CONTRACT, STARKNET_IP_SPONSORSHIP_CLASS_HASH, STARKNET_IP_SPONSORSHIP_CONTRACT, STARKNET_IP_TICKETS_FACTORY_CONTRACT, STARKNET_IP_TICKET_COLLECTION_CLASS_HASH, STARKNET_MARKETPLACE_1155_CLASS_HASH, STARKNET_MARKETPLACE_1155_CONTRACT, STARKNET_MARKETPLACE_1155_START_BLOCK, STARKNET_MARKETPLACE_721_CLASS_HASH, STARKNET_MARKETPLACE_721_CONTRACT, STARKNET_MARKETPLACE_721_START_BLOCK, STARKNET_NFTCOMMENTS_CONTRACT, STARKNET_POP_COLLECTION_CLASS_HASH, STARKNET_POP_FACTORY_CONTRACT, SUPPORTED_TOKENS, SUPPORTED_URL_CHAINS, ServiceCapability, ServiceDefinition, type ServiceId, type SupportedToken, type SupportedTokenSymbol, assetHref, buildAssetMetadata, chainFromSlug, chainSlug, coinHref, collectionHref, createFailoverFetch, encodeU256, formatAmount, getListableTokens, getService, getServicesByCapability, getTokenByAddress, getTokenBySymbol, hasCapability, isServiceId, isTransientRpcError, listServices, normalizeAddress, normalizeHash, parseAmount, shortenAddress, stringifyBigInts, u256ToBigInt };
package/dist/index.js CHANGED
@@ -574,10 +574,10 @@ var ApiClient = class {
574
574
  { method: "PATCH", body: JSON.stringify(data), headers: this.bearer(clerkToken) }
575
575
  );
576
576
  }
577
- getWalletActivity(address, siwsToken, chain = "STARKNET") {
578
- return this.request(
579
- `/v1/wallet-activity?address=${this.addr(address)}&chain=${chain}`,
580
- { method: "GET", headers: this.bearer(siwsToken) }
577
+ /** No signature required — wallet activity is public on-chain data, read like any other /v1 GET. */
578
+ getWalletActivity(address, chain = "STARKNET") {
579
+ return this.get(
580
+ `/v1/wallet-activity?address=${this.addr(address)}&chain=${chain}`
581
581
  );
582
582
  }
583
583
  getGatedContent(contractAddress, clerkToken) {
@@ -1303,6 +1303,12 @@ function stringifyBigInts(obj) {
1303
1303
  function u256ToBigInt(low, high) {
1304
1304
  return BigInt(low) + (BigInt(high) << 128n);
1305
1305
  }
1306
+ function encodeU256(n) {
1307
+ return [
1308
+ (n & 0xffffffffffffffffffffffffffffffffn).toString(),
1309
+ (n >> 128n).toString()
1310
+ ];
1311
+ }
1306
1312
 
1307
1313
  // src/utils/rpc.ts
1308
1314
  var PUBLIC_RPC_FALLBACKS = [
@@ -1357,6 +1363,60 @@ function createFailoverFetch(urls, options = {}) {
1357
1363
  return failover;
1358
1364
  }
1359
1365
 
1360
- export { ApiClient, CHAINS, DEFAULT_CHAIN, DEFAULT_CURRENCY, FeeConfigSchema, MedialaneApiError, OPEN_LICENSES, PUBLIC_RPC_FALLBACKS, STARKNET_COLLECTION_1155_CLASS_HASH, STARKNET_COLLECTION_1155_CONTRACT, STARKNET_COLLECTION_1155_FACTORY_CLASS_HASH, STARKNET_COLLECTION_1155_START_BLOCK, STARKNET_COLLECTION_721_CONTRACT, STARKNET_COLLECTION_721_START_BLOCK, STARKNET_CREATOR_COIN_CLASS_HASH, STARKNET_CREATOR_COIN_EKUBO_LAUNCHER, STARKNET_CREATOR_COIN_FACTORY_CLASS_HASH, STARKNET_CREATOR_COIN_FACTORY_CONTRACT, STARKNET_CREATOR_COIN_START_BLOCK, STARKNET_DROP_COLLECTION_CLASS_HASH, STARKNET_DROP_FACTORY_CONTRACT, STARKNET_EKUBO_CORE, STARKNET_IPCOLLECTION_CLASS_HASH, STARKNET_IPNFT_CLASS_HASH, STARKNET_IP_CLUB_COLLECTION_CLASS_HASH, STARKNET_IP_CLUB_FACTORY_CONTRACT, STARKNET_IP_SPONSORSHIP_CLASS_HASH, STARKNET_IP_SPONSORSHIP_CONTRACT, STARKNET_IP_TICKETS_FACTORY_CONTRACT, STARKNET_IP_TICKET_COLLECTION_CLASS_HASH, STARKNET_MARKETPLACE_1155_CLASS_HASH, STARKNET_MARKETPLACE_1155_CONTRACT, STARKNET_MARKETPLACE_1155_START_BLOCK, STARKNET_MARKETPLACE_721_CLASS_HASH, STARKNET_MARKETPLACE_721_CONTRACT, STARKNET_MARKETPLACE_721_START_BLOCK, STARKNET_NFTCOMMENTS_CONTRACT, STARKNET_POP_COLLECTION_CLASS_HASH, STARKNET_POP_FACTORY_CONTRACT, SUPPORTED_TOKENS, SUPPORTED_URL_CHAINS, assetHref, chainFromSlug, chainSlug, coinHref, collectionHref, createFailoverFetch, formatAmount, getCoordinates, getListableTokens, getService, getServicesByCapability, getStarknetCoordinates, getTokenByAddress, getTokenBySymbol, hasCapability, isServiceId, isTransientRpcError, listServices, normalizeAddress, normalizeHash, parseAmount, resolveConfig, resolveFeeConfig, shortenAddress, stringifyBigInts, u256ToBigInt };
1366
+ // src/metadata.ts
1367
+ var RESERVED_TRAITS = /* @__PURE__ */ new Set([
1368
+ "Creator",
1369
+ "IP Type",
1370
+ "License",
1371
+ "Commercial Use",
1372
+ "Derivatives",
1373
+ "Attribution",
1374
+ "Territory",
1375
+ "AI Policy",
1376
+ "Royalty",
1377
+ "Edition",
1378
+ "Standard",
1379
+ "Registration"
1380
+ ]);
1381
+ var RESERVED_TRAITS_NORMALIZED = new Set([...RESERVED_TRAITS].map((t) => t.toLowerCase()));
1382
+ function buildAssetMetadata(input) {
1383
+ const attributes = [];
1384
+ if (input.creator) attributes.push({ trait_type: "Creator", value: input.creator });
1385
+ if (input.ipType) attributes.push({ trait_type: "IP Type", value: input.ipType });
1386
+ if (input.licenseType) attributes.push({ trait_type: "License", value: input.licenseType });
1387
+ if (input.commercialUse) attributes.push({ trait_type: "Commercial Use", value: input.commercialUse });
1388
+ if (input.derivatives) attributes.push({ trait_type: "Derivatives", value: input.derivatives });
1389
+ if (input.attribution) attributes.push({ trait_type: "Attribution", value: input.attribution });
1390
+ if (input.geographicScope) attributes.push({ trait_type: "Territory", value: input.geographicScope });
1391
+ if (input.aiPolicy) attributes.push({ trait_type: "AI Policy", value: input.aiPolicy });
1392
+ if (input.royalty) {
1393
+ const num = parseFloat(String(input.royalty).replace("%", ""));
1394
+ if (!isNaN(num) && num > 0) attributes.push({ trait_type: "Royalty", value: `${num}%` });
1395
+ }
1396
+ if (input.edition) attributes.push({ trait_type: "Edition", value: input.edition });
1397
+ for (const t of input.templateTraits ?? []) {
1398
+ const traitType = t.traitType?.trim() ?? "";
1399
+ const traitValue = String(t.value ?? "").trim();
1400
+ if (!traitType || !traitValue || RESERVED_TRAITS_NORMALIZED.has(traitType.toLowerCase())) continue;
1401
+ if (traitType.length > 64 || traitValue.length > 512) continue;
1402
+ attributes.push({ trait_type: traitType, value: traitValue });
1403
+ }
1404
+ if (input.licenseType) {
1405
+ attributes.push({ trait_type: "Standard", value: "Berne Convention" });
1406
+ attributes.push({
1407
+ trait_type: "Registration",
1408
+ value: input.registrationDate ?? (/* @__PURE__ */ new Date()).toISOString().split("T")[0]
1409
+ });
1410
+ }
1411
+ return {
1412
+ name: input.name,
1413
+ description: input.description ?? "",
1414
+ image: input.imageUri ?? null,
1415
+ external_url: input.externalUrl || "https://medialane.io",
1416
+ attributes
1417
+ };
1418
+ }
1419
+
1420
+ export { ApiClient, CHAINS, DEFAULT_CHAIN, DEFAULT_CURRENCY, FeeConfigSchema, MedialaneApiError, OPEN_LICENSES, PUBLIC_RPC_FALLBACKS, RESERVED_TRAITS, STARKNET_COLLECTION_1155_CLASS_HASH, STARKNET_COLLECTION_1155_CONTRACT, STARKNET_COLLECTION_1155_FACTORY_CLASS_HASH, STARKNET_COLLECTION_1155_START_BLOCK, STARKNET_COLLECTION_721_CONTRACT, STARKNET_COLLECTION_721_START_BLOCK, STARKNET_CREATOR_COIN_CLASS_HASH, STARKNET_CREATOR_COIN_EKUBO_LAUNCHER, STARKNET_CREATOR_COIN_FACTORY_CLASS_HASH, STARKNET_CREATOR_COIN_FACTORY_CONTRACT, STARKNET_CREATOR_COIN_START_BLOCK, STARKNET_DROP_COLLECTION_CLASS_HASH, STARKNET_DROP_FACTORY_CONTRACT, STARKNET_EKUBO_CORE, STARKNET_IPCOLLECTION_CLASS_HASH, STARKNET_IPNFT_CLASS_HASH, STARKNET_IP_CLUB_COLLECTION_CLASS_HASH, STARKNET_IP_CLUB_FACTORY_CONTRACT, STARKNET_IP_SPONSORSHIP_CLASS_HASH, STARKNET_IP_SPONSORSHIP_CONTRACT, STARKNET_IP_TICKETS_FACTORY_CONTRACT, STARKNET_IP_TICKET_COLLECTION_CLASS_HASH, STARKNET_MARKETPLACE_1155_CLASS_HASH, STARKNET_MARKETPLACE_1155_CONTRACT, STARKNET_MARKETPLACE_1155_START_BLOCK, STARKNET_MARKETPLACE_721_CLASS_HASH, STARKNET_MARKETPLACE_721_CONTRACT, STARKNET_MARKETPLACE_721_START_BLOCK, STARKNET_NFTCOMMENTS_CONTRACT, STARKNET_POP_COLLECTION_CLASS_HASH, STARKNET_POP_FACTORY_CONTRACT, SUPPORTED_TOKENS, SUPPORTED_URL_CHAINS, assetHref, buildAssetMetadata, chainFromSlug, chainSlug, coinHref, collectionHref, createFailoverFetch, encodeU256, formatAmount, getCoordinates, getListableTokens, getService, getServicesByCapability, getStarknetCoordinates, getTokenByAddress, getTokenBySymbol, hasCapability, isServiceId, isTransientRpcError, listServices, normalizeAddress, normalizeHash, parseAmount, resolveConfig, resolveFeeConfig, shortenAddress, stringifyBigInts, u256ToBigInt };
1361
1421
  //# sourceMappingURL=index.js.map
1362
1422
  //# sourceMappingURL=index.js.map