@medialane/sdk 0.109.0 → 0.111.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,7 +1,7 @@
1
- import { R as ResolvedFeeConfig, S as ServiceDefinition, a as ServiceCapability } from './services-EPrTjAA4.cjs';
2
- export { A as AcceptSponsorshipBidIntentParams, b as AcceptSponsorshipProposalIntentParams, c as ActivityType, d as ApiActivitiesQuery, e as ApiActivity, f as ApiActivityPrice, g as ApiAdminCollectionClaim, h as ApiAppSource, i as ApiBusinessProvisioning, j as ApiChain, k as ApiCheckoutIntentResult, l as ApiClient, m as ApiCoin, n as ApiCoinClaimResult, o as ApiCoinPrice, p as ApiCoinPrices, q as ApiCoinsQuery, r as ApiCollection, s as ApiCollectionClaim, t as ApiCollectionProfile, u as ApiCollectionSlugClaim, v as ApiCollectionsQuery, w as ApiComment, x as ApiCounterOffersQuery, y as ApiCreatorListResult, z as ApiCreatorProfile, B as ApiIntent, C as ApiIntentCreated, D as ApiKeyStatus, E as ApiMeta, F as ApiMetadataSignedUrl, G as ApiMetadataUpload, H as ApiOrder, I as ApiOrderConsideration, J as ApiOrderOffer, K as ApiOrderPrice, L as ApiOrderTokenMeta, M as ApiOrderTxHash, N as ApiOrdersQuery, O as ApiPointEvent, P as ApiPortalKey, Q as ApiPortalKeyCreated, T as ApiPortalMe, U as ApiPublicRemix, V as ApiRemixOffer, W as ApiRemixOfferPrice, X as ApiRemixOffersQuery, Y as ApiResponse, Z as ApiRewardsBadge, _ as ApiRewardsBatchEntry, $ as ApiRewardsConfig, a0 as ApiRewardsLeaderboardEntry, a1 as ApiRewardsLevel, a2 as ApiSearchCollectionResult, a3 as ApiSearchCreatorResult, a4 as ApiSearchResult, a5 as ApiSearchTokenResult, a6 as ApiToken, a7 as ApiTokenBalance, a8 as ApiTokenMetadata, a9 as ApiUsageDay, aa as ApiUserRewards, ab as ApiUserWallet, ac as ApiWalletActivity, ad as ApiWebhookCreated, ae as ApiWebhookEndpoint, af as AutoRemixOfferParams, ag as CancelOrderIntentParams, ah as ChainFilter, ai as CheckoutIntentItem, aj as ClaimConditions, ak as CollectionServiceId, al as CollectionSort, am as CollectionTokensSort, an as ConfirmRemixOfferParams, ao as ConfirmSelfRemixParams, ap as ConsiderationItem, aq as CreateCheckoutIntentParams, ar as CreateCoinIntentParams, as as CreateCollectionIntentParams, at as CreateCounterOfferIntentParams, au as CreateDropParams, av as CreateListingIntentParams, aw as CreateMembershipParams, ax as CreateMintIntentParams, ay as CreatePopCollectionParams, az as CreateRemixOfferParams, aA as CreateSponsorshipOfferIntentParams, aB as CreateSponsorshipOfferParams, aC as CreateSponsorshipProposalIntentParams, aD as CreateTicketParams, aE as CreateTierIntentParams, aF as CreateWebhookParams, aG as DropMintStatus, aH as EnforcementDeclaration, aI as FactoryFamilyServiceId, aJ as FeeConfig, aK as FeeConfigSchema, aL as FulfillOrderIntentParams, aM as IPType, aN as IntentCall, aO as IntentStatus, aP as IntentType, aQ as IpAttribute, aR as IpNftMetadata, aS as LaunchCoinIntentParams, aT as MakeOfferIntentParams, aU as MedialaneApiError, aV as MedialaneConfig, aW as MedialaneErrorCode, aX as MintMembershipsParams, aY as MintTicketsParams, aZ as OPEN_LICENSES, a_ as OfferItem, a$ as OpenLicense, b0 as Order, b1 as OrderDetails, b2 as OrderParameters, b3 as OrderStatus, b4 as PlaceSponsorshipBidIntentParams, b5 as PopBatchEligibilityItem, b6 as PopClaimStatus, b7 as PopEventType, b8 as ProposeSponsorshipParams, b9 as RejectSponsorshipProposalIntentParams, ba as RemixOfferStatus, bb as ResolvedConfig, bc as RetractSponsorshipBidIntentParams, bd as RetryOptions, be as ServiceEventDeclaration, bf as SetSponsorshipOfferOpenIntentParams, bg as SortOrder, bh as TenantPlan, bi as TierServiceId, bj as TxResult, bk as UpdateCollectionProfileInput, bl as WebhookEventType, bm as WebhookStatus, bn as WithdrawSponsorshipProposalIntentParams, bo as resolveConfig, bp as resolveFeeConfig } from './services-EPrTjAA4.cjs';
3
- import { C as Chain } from './types-BzLfeLF9.cjs';
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-BzLfeLF9.cjs';
1
+ import { R as ResolvedFeeConfig, S as ServiceDefinition, a as ServiceCapability } from './services-BcsFAZzQ.cjs';
2
+ export { A as AcceptSponsorshipBidIntentParams, b as AcceptSponsorshipProposalIntentParams, c as ActivityType, d as ApiActivitiesQuery, e as ApiActivity, f as ApiActivityPrice, g as ApiAdminCollectionClaim, h as ApiAppSource, i as ApiBusinessProvisioning, j as ApiChain, k as ApiCheckoutIntentResult, l as ApiClient, m as ApiCoin, n as ApiCoinClaimResult, o as ApiCoinPrice, p as ApiCoinPrices, q as ApiCoinsQuery, r as ApiCollection, s as ApiCollectionClaim, t as ApiCollectionProfile, u as ApiCollectionSlugClaim, v as ApiCollectionsQuery, w as ApiComment, x as ApiCounterOffersQuery, y as ApiCreatorListResult, z as ApiCreatorProfile, B as ApiIntent, C as ApiIntentCreated, D as ApiKeyStatus, E as ApiMeta, F as ApiMetadataSignedUrl, G as ApiMetadataUpload, H as ApiOrder, I as ApiOrderConsideration, J as ApiOrderOffer, K as ApiOrderPrice, L as ApiOrderTokenMeta, M as ApiOrderTxHash, N as ApiOrdersQuery, O as ApiPointEvent, P as ApiPortalKey, Q as ApiPortalKeyCreated, T as ApiPortalMe, U as ApiPublicRemix, V as ApiRemixOffer, W as ApiRemixOfferPrice, X as ApiRemixOffersQuery, Y as ApiResponse, Z as ApiRewardsBadge, _ as ApiRewardsBatchEntry, $ as ApiRewardsConfig, a0 as ApiRewardsLeaderboardEntry, a1 as ApiRewardsLevel, a2 as ApiSearchCollectionResult, a3 as ApiSearchCreatorResult, a4 as ApiSearchResult, a5 as ApiSearchTokenResult, a6 as ApiToken, a7 as ApiTokenBalance, a8 as ApiTokenMetadata, a9 as ApiUsageDay, aa as ApiUserRewards, ab as ApiUserWallet, ac as ApiWalletActivity, ad as ApiWebhookCreated, ae as ApiWebhookEndpoint, af as AutoRemixOfferParams, ag as CancelOrderIntentParams, ah as ChainFilter, ai as CheckoutIntentItem, aj as ClaimConditions, ak as CollectionServiceId, al as CollectionSort, am as CollectionTokensSort, an as ConfirmRemixOfferParams, ao as ConfirmSelfRemixParams, ap as ConsiderationItem, aq as CreateCheckoutIntentParams, ar as CreateCoinIntentParams, as as CreateCollectionIntentParams, at as CreateCounterOfferIntentParams, au as CreateDropParams, av as CreateListingIntentParams, aw as CreateMembershipParams, ax as CreateMintIntentParams, ay as CreatePopCollectionParams, az as CreateRemixOfferParams, aA as CreateSponsorshipOfferIntentParams, aB as CreateSponsorshipOfferParams, aC as CreateSponsorshipProposalIntentParams, aD as CreateTicketParams, aE as CreateTierIntentParams, aF as CreateWebhookParams, aG as DropMintStatus, aH as EnforcementDeclaration, aI as FactoryFamilyServiceId, aJ as FeeConfig, aK as FeeConfigSchema, aL as FulfillOrderIntentParams, aM as IPType, aN as IntentCall, aO as IntentStatus, aP as IntentType, aQ as IpAttribute, aR as IpNftMetadata, aS as LaunchCoinIntentParams, aT as MakeOfferIntentParams, aU as MedialaneApiError, aV as MedialaneConfig, aW as MedialaneErrorCode, aX as MintMembershipsParams, aY as MintTicketsParams, aZ as OPEN_LICENSES, a_ as OfferItem, a$ as OpenLicense, b0 as Order, b1 as OrderDetails, b2 as OrderParameters, b3 as OrderStatus, b4 as PlaceSponsorshipBidIntentParams, b5 as PopBatchEligibilityItem, b6 as PopClaimStatus, b7 as PopEventType, b8 as ProposeSponsorshipParams, b9 as RejectSponsorshipProposalIntentParams, ba as RemixOfferStatus, bb as ResolvedConfig, bc as RetractSponsorshipBidIntentParams, bd as RetryOptions, be as ServiceEventDeclaration, bf as SetSponsorshipOfferOpenIntentParams, bg as SortOrder, bh as TenantPlan, bi as TierServiceId, bj as TxResult, bk as UpdateCollectionProfileInput, bl as WebhookEventType, bm as WebhookStatus, bn as WithdrawSponsorshipProposalIntentParams, bo as resolveConfig, bp as resolveFeeConfig } from './services-BcsFAZzQ.cjs';
3
+ import { C as Chain } from './types-CuSlc_YE.cjs';
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-CuSlc_YE.cjs';
5
5
  import 'zod';
6
6
 
7
7
  interface FeeEnv {
@@ -19,6 +19,7 @@ declare const STARKNET_MARKETPLACE_1155_CONTRACT: `0x${string}`;
19
19
  declare const STARKNET_MARKETPLACE_1155_CLASS_HASH: `0x${string}`;
20
20
  declare const STARKNET_MARKETPLACE_1155_START_BLOCK: number;
21
21
  declare const STARKNET_COLLECTION_721_CONTRACT: `0x${string}`;
22
+ declare const STARKNET_DATA_TOKENIZATION_721_CONTRACT: `0x${string}`;
22
23
  declare const STARKNET_COLLECTION_721_START_BLOCK: number;
23
24
  declare const STARKNET_IPNFT_CLASS_HASH: `0x${string}`;
24
25
  declare const STARKNET_IPCOLLECTION_CLASS_HASH: `0x${string}`;
@@ -108,8 +109,8 @@ declare const SERVICES: {
108
109
  };
109
110
  readonly "ip-erc721": {
110
111
  readonly id: "ip-erc721";
111
- readonly displayName: "Programmable IP (genesis)";
112
- readonly description: "One shared ERC-721 contract; many wallets mint genesis pieces.";
112
+ readonly displayName: "Programmable IP";
113
+ readonly description: "One shared ERC-721 contract any wallet can mint into.";
113
114
  readonly standard: "ERC721";
114
115
  readonly provenance: "MEDIALANE";
115
116
  readonly uiVariant: "standard";
@@ -118,6 +119,28 @@ declare const SERVICES: {
118
119
  readonly licenseDefault: "CC BY-SA";
119
120
  };
120
121
  };
122
+ readonly "data-tokenization-erc721": {
123
+ readonly id: "data-tokenization-erc721";
124
+ readonly displayName: "Data Tokenization";
125
+ readonly description: "Establish verifiable ownership of your data, with licensing terms that hold up wherever it travels.";
126
+ readonly standard: "ERC721";
127
+ readonly provenance: "MEDIALANE";
128
+ readonly onchain: {
129
+ readonly STARKNET: {
130
+ readonly factoryAddress: `0x${string}`;
131
+ readonly startBlock: number;
132
+ };
133
+ };
134
+ readonly uiVariant: "standard";
135
+ readonly capabilities: ["list", "buy", "make_offer", "cancel", "transfer", "mint", "remix", "license"];
136
+ readonly events: [{
137
+ readonly name: "CollectionCreated";
138
+ readonly emittedBy: "factory";
139
+ }];
140
+ readonly metadataSchema: {
141
+ readonly licenseDefault: "CC BY-SA";
142
+ };
143
+ };
121
144
  readonly "mip-erc1155": {
122
145
  readonly id: "mip-erc1155";
123
146
  readonly displayName: "NFT Editions";
@@ -393,18 +416,6 @@ declare function hasCapability(id: string | null | undefined, cap: ServiceCapabi
393
416
 
394
417
  declare function normalizeAddress(chain: Chain, address: string): string;
395
418
  declare const canonicalHashBrand: unique symbol;
396
- /**
397
- * A felt hash in exactly one spelling: lowercase, zero-padded to 64 hex digits.
398
- *
399
- * Felts have many equal spellings — `0x0ab`, `0xAB` and `0xab` are the same
400
- * value on chain but three different strings. Anything that uses a hash as an
401
- * identity or uniqueness key must therefore compare canonical form, or the
402
- * same on-chain fact can be presented as several distinct records.
403
- *
404
- * Only `normalizeHash` can produce this type, so a function that demands a
405
- * `CanonicalHash` cannot be handed a raw caller-supplied string. It remains
406
- * assignable to `string`, so existing readers are unaffected.
407
- */
408
419
  type CanonicalHash = string & {
409
420
  readonly [canonicalHashBrand]: true;
410
421
  };
@@ -423,18 +434,6 @@ declare function u256ToBigInt(low: string, high: string): bigint;
423
434
  declare function encodeU256(n: bigint): [string, string];
424
435
 
425
436
  declare const PUBLIC_RPC_FALLBACKS: readonly string[];
426
- /**
427
- * Codes our own proxies emit to *refuse* a call on policy grounds: no API key,
428
- * insufficient credits, rate limited, wrong origin.
429
- *
430
- * These must never be treated as transient. They sit inside the JSON-RPC
431
- * reserved server-error range and carry messages like "Too many requests", so
432
- * every generic transient heuristic below would otherwise match them — and a
433
- * caller with a fallback list would quietly retry the same call against a
434
- * different upstream. That turns a refusal into a redirect: the harder the
435
- * meter says no, the faster traffic routes around it. A policy refusal is an
436
- * answer, not a failure; retrying it elsewhere is always wrong.
437
- */
438
437
  declare const POLICY_REFUSAL_CODES: readonly number[];
439
438
  declare function isPolicyRefusal(input: {
440
439
  body?: unknown;
@@ -452,18 +451,6 @@ interface FailoverFetchOptions {
452
451
  }) => void;
453
452
  }
454
453
  declare function createFailoverFetch(urls: string[], options?: FailoverFetchOptions): typeof fetch;
455
- /**
456
- * Hostnames and env-var names that reach a paid upstream directly.
457
- *
458
- * An app must never name one of these. Everything paid goes through the
459
- * backend, the only place a call can be authenticated, scoped, rate limited
460
- * and billed. An app that knows a node's address has a route around all four —
461
- * and since the address ships in the client bundle, so does every visitor.
462
- *
463
- * The list lives here, not in each app, because it is the part that drifts:
464
- * adding an upstream must protect every consumer at once. Each app keeps its
465
- * own small test that scans its source for these with its own file APIs.
466
- */
467
454
  declare const PAID_UPSTREAM_MARKERS: readonly string[];
468
455
 
469
456
  interface RpcProxyConfig {
@@ -480,12 +467,6 @@ interface BackendProxyConfig {
480
467
  apiKey: string | undefined;
481
468
  checkRateLimit: (ip: string) => boolean;
482
469
  fetchImpl?: typeof fetch;
483
- /**
484
- * Forwards a cookie the app already sets (e.g. its own account-session
485
- * cookie) as a header, so the backend can attribute cost to the calling
486
- * end-user instead of only the app's shared API key. Purely additive —
487
- * omitted when the cookie isn't present, never blocks the request.
488
- */
489
470
  forwardCookie?: {
490
471
  name: string;
491
472
  header: string;
@@ -497,12 +478,6 @@ declare const ALLOWED_IMAGE_CONTENT_TYPES: Set<string>;
497
478
  declare const MAX_IMAGE_REDIRECTS = 5;
498
479
  declare const MAX_IMAGE_PROXY_BYTES: number;
499
480
  declare function isPrivateHost(hostname: string): boolean;
500
- /**
501
- * Validates a URL before it is fetched server-side. `requireHttps` is on by
502
- * default; callers that legitimately accept plain http (a metadata URI already
503
- * committed on chain, say) opt out explicitly rather than the guard being
504
- * lenient for everyone.
505
- */
506
481
  declare function validateUrl(raw: string, options?: {
507
482
  requireHttps?: boolean;
508
483
  }): {
@@ -511,33 +486,10 @@ declare function validateUrl(raw: string, options?: {
511
486
  error: string;
512
487
  status: number;
513
488
  };
514
- /** Convenience for callers that only need a yes/no, mirroring the backend's prior helper. */
515
489
  declare function isPrivateOrInsecureUrl(raw: string, requireHttps?: boolean): boolean;
516
490
 
517
- /**
518
- * Proxies a remote image, which means fetching a URL an untrusted caller chose
519
- * — the classic SSRF shape. Guarded in four places, each of which has to hold:
520
- *
521
- * 1. the URL is https, credential-free and not a private host
522
- * 2. the hostname's *resolved* addresses are re-checked, since a public name
523
- * can resolve to a private address
524
- * 3. redirects are followed manually, re-validating each hop, because a
525
- * permitted host can redirect into the private range
526
- * 4. the response must be an allowed image type and is read under a byte cap
527
- *
528
- * This existed as a byte-identical copy in each app, so a fix to one would not
529
- * have reached the other. DNS resolution is injected rather than imported: it
530
- * is runtime-specific, and this package stays isomorphic.
531
- *
532
- * Note the remaining exposure: between resolving a hostname and fetching it,
533
- * the name could resolve differently (DNS rebinding). Closing that needs the
534
- * fetch pinned to the address already checked, which the platform fetch does
535
- * not expose. The content-type allowlist and byte cap bound what an attacker
536
- * gets if they win that race.
537
- */
538
491
  interface ImageProxyConfig {
539
492
  checkRateLimit: (ip: string) => boolean;
540
- /** Returns every address a hostname resolves to. Injected; see above. */
541
493
  resolveHostname: (hostname: string) => Promise<string[]>;
542
494
  fetchImpl?: typeof fetch;
543
495
  userAgent?: string;
@@ -548,7 +500,6 @@ interface CappedBody {
548
500
  error?: string;
549
501
  status?: number;
550
502
  }
551
- /** Reads a response body, refusing anything past `maxBytes` rather than buffering it. */
552
503
  declare function readBodyWithCap(res: Response, maxBytes: number): Promise<CappedBody>;
553
504
  declare function createImageProxyHandler(config: ImageProxyConfig): (req: Request) => Promise<Response>;
554
505
 
@@ -576,17 +527,6 @@ declare function createRateLimiter(windowMs: number, max: number): (key: string)
576
527
  declare const TRUSTED_APP_IP_HEADER = "x-medialane-client-ip";
577
528
  declare function requestIp(req: Request): string;
578
529
 
579
- /**
580
- * Same-origin guard for server routes. A missing `Origin` header is allowed,
581
- * because same-origin navigations and server-to-server calls do not send one;
582
- * a present `Origin` must match `Host`.
583
- *
584
- * Read that carefully before relying on it: this blocks cross-site *browser*
585
- * abuse, and nothing else. A non-browser client simply omits `Origin` and
586
- * passes. It is not a substitute for authentication, and on a route that
587
- * spends money or credits it must be paired with a rate limit and, where the
588
- * route touches a paid resource, real auth.
589
- */
590
530
  declare function isSameOrigin(req: Request): boolean;
591
531
 
592
532
  declare const IDENTITY_TTL_SECONDS = 86400;
@@ -656,4 +596,4 @@ declare const IPFS_SAFE_CONTENT_TYPE_PREFIXES: readonly ["image/jpeg", "image/pn
656
596
  declare function resolveSafeImageContentType(contentType: string): string;
657
597
  declare const MAX_IPFS_GATEWAY_RESPONSE_BYTES: number;
658
598
 
659
- export { ACCOUNT_SESSION_TTL_SECONDS, ALLOWED_IMAGE_CONTENT_TYPES, type AssetAttribute, type AssetMetadata, type BackendMetadataConfig, type BackendProxyConfig, type BackendUploadResult, type BuildAssetMetadataInput, type CanonicalHash, type CappedBody, Chain, DEFAULT_CURRENCY, type FailoverFetchOptions, type FeeEnv, IDENTITY_TTL_SECONDS, IPFS_SAFE_CONTENT_TYPE_PREFIXES, type ImageProxyConfig, MAX_IMAGE_PROXY_BYTES, MAX_IMAGE_REDIRECTS, MAX_IPFS_GATEWAY_RESPONSE_BYTES, PAID_UPSTREAM_MARKERS, POLICY_REFUSAL_CODES, PUBLIC_RPC_FALLBACKS, RESERVED_TRAITS, type RemixPolicy, type RemixPolicyInput, ResolvedFeeConfig, type RpcProxyConfig, 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_GENESIS_MINT_BR_CONTRACT, STARKNET_GENESIS_MINT_GLOBAL_CONTRACT, STARKNET_GENESIS_MINT_LAUNCH_CONTRACT, 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 SiwsIdentity, type SupportedToken, type SupportedTokenSymbol, TRUSTED_APP_IP_HEADER, assetHref, buildAssetMetadata, chainFromSlug, chainSlug, coinHref, collectionHref, createBackendProxyHandler, createFailoverFetch, createImageProxyHandler, createRateLimiter, createRpcProxyHandler, encodeU256, formatAmount, getBackendSignedUrl, getDerivativesTerm, getListableTokens, getService, getServicesByCapability, getTokenByAddress, getTokenBySymbol, hasCapability, isPolicyRefusal, isPrivateHost, isPrivateOrInsecureUrl, isSameOrigin, isServiceId, isTransientRpcError, isValidIpfsCidPath, issueAccountSessionToken, issueSiwsToken, listServices, normalizeAddress, normalizeHash, parseAmount, readBodyWithCap, requestIp, resolveAppFeeConfig, resolveRemixPolicy, resolveSafeImageContentType, shortenAddress, stringifyBigInts, u256ToBigInt, uploadDirectoryToBackend, uploadFileToBackend, uploadJsonToBackend, validateUrl, verifyAccountSessionToken, verifySiwsToken };
599
+ export { ACCOUNT_SESSION_TTL_SECONDS, ALLOWED_IMAGE_CONTENT_TYPES, type AssetAttribute, type AssetMetadata, type BackendMetadataConfig, type BackendProxyConfig, type BackendUploadResult, type BuildAssetMetadataInput, type CanonicalHash, type CappedBody, Chain, DEFAULT_CURRENCY, type FailoverFetchOptions, type FeeEnv, IDENTITY_TTL_SECONDS, IPFS_SAFE_CONTENT_TYPE_PREFIXES, type ImageProxyConfig, MAX_IMAGE_PROXY_BYTES, MAX_IMAGE_REDIRECTS, MAX_IPFS_GATEWAY_RESPONSE_BYTES, PAID_UPSTREAM_MARKERS, POLICY_REFUSAL_CODES, PUBLIC_RPC_FALLBACKS, RESERVED_TRAITS, type RemixPolicy, type RemixPolicyInput, ResolvedFeeConfig, type RpcProxyConfig, 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_DATA_TOKENIZATION_721_CONTRACT, STARKNET_DROP_COLLECTION_CLASS_HASH, STARKNET_DROP_FACTORY_CONTRACT, STARKNET_EKUBO_CORE, STARKNET_GENESIS_MINT_BR_CONTRACT, STARKNET_GENESIS_MINT_GLOBAL_CONTRACT, STARKNET_GENESIS_MINT_LAUNCH_CONTRACT, 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 SiwsIdentity, type SupportedToken, type SupportedTokenSymbol, TRUSTED_APP_IP_HEADER, assetHref, buildAssetMetadata, chainFromSlug, chainSlug, coinHref, collectionHref, createBackendProxyHandler, createFailoverFetch, createImageProxyHandler, createRateLimiter, createRpcProxyHandler, encodeU256, formatAmount, getBackendSignedUrl, getDerivativesTerm, getListableTokens, getService, getServicesByCapability, getTokenByAddress, getTokenBySymbol, hasCapability, isPolicyRefusal, isPrivateHost, isPrivateOrInsecureUrl, isSameOrigin, isServiceId, isTransientRpcError, isValidIpfsCidPath, issueAccountSessionToken, issueSiwsToken, listServices, normalizeAddress, normalizeHash, parseAmount, readBodyWithCap, requestIp, resolveAppFeeConfig, resolveRemixPolicy, resolveSafeImageContentType, shortenAddress, stringifyBigInts, u256ToBigInt, uploadDirectoryToBackend, uploadFileToBackend, uploadJsonToBackend, validateUrl, verifyAccountSessionToken, verifySiwsToken };
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { R as ResolvedFeeConfig, S as ServiceDefinition, a as ServiceCapability } from './services-Dt23Y7HU.js';
2
- export { A as AcceptSponsorshipBidIntentParams, b as AcceptSponsorshipProposalIntentParams, c as ActivityType, d as ApiActivitiesQuery, e as ApiActivity, f as ApiActivityPrice, g as ApiAdminCollectionClaim, h as ApiAppSource, i as ApiBusinessProvisioning, j as ApiChain, k as ApiCheckoutIntentResult, l as ApiClient, m as ApiCoin, n as ApiCoinClaimResult, o as ApiCoinPrice, p as ApiCoinPrices, q as ApiCoinsQuery, r as ApiCollection, s as ApiCollectionClaim, t as ApiCollectionProfile, u as ApiCollectionSlugClaim, v as ApiCollectionsQuery, w as ApiComment, x as ApiCounterOffersQuery, y as ApiCreatorListResult, z as ApiCreatorProfile, B as ApiIntent, C as ApiIntentCreated, D as ApiKeyStatus, E as ApiMeta, F as ApiMetadataSignedUrl, G as ApiMetadataUpload, H as ApiOrder, I as ApiOrderConsideration, J as ApiOrderOffer, K as ApiOrderPrice, L as ApiOrderTokenMeta, M as ApiOrderTxHash, N as ApiOrdersQuery, O as ApiPointEvent, P as ApiPortalKey, Q as ApiPortalKeyCreated, T as ApiPortalMe, U as ApiPublicRemix, V as ApiRemixOffer, W as ApiRemixOfferPrice, X as ApiRemixOffersQuery, Y as ApiResponse, Z as ApiRewardsBadge, _ as ApiRewardsBatchEntry, $ as ApiRewardsConfig, a0 as ApiRewardsLeaderboardEntry, a1 as ApiRewardsLevel, a2 as ApiSearchCollectionResult, a3 as ApiSearchCreatorResult, a4 as ApiSearchResult, a5 as ApiSearchTokenResult, a6 as ApiToken, a7 as ApiTokenBalance, a8 as ApiTokenMetadata, a9 as ApiUsageDay, aa as ApiUserRewards, ab as ApiUserWallet, ac as ApiWalletActivity, ad as ApiWebhookCreated, ae as ApiWebhookEndpoint, af as AutoRemixOfferParams, ag as CancelOrderIntentParams, ah as ChainFilter, ai as CheckoutIntentItem, aj as ClaimConditions, ak as CollectionServiceId, al as CollectionSort, am as CollectionTokensSort, an as ConfirmRemixOfferParams, ao as ConfirmSelfRemixParams, ap as ConsiderationItem, aq as CreateCheckoutIntentParams, ar as CreateCoinIntentParams, as as CreateCollectionIntentParams, at as CreateCounterOfferIntentParams, au as CreateDropParams, av as CreateListingIntentParams, aw as CreateMembershipParams, ax as CreateMintIntentParams, ay as CreatePopCollectionParams, az as CreateRemixOfferParams, aA as CreateSponsorshipOfferIntentParams, aB as CreateSponsorshipOfferParams, aC as CreateSponsorshipProposalIntentParams, aD as CreateTicketParams, aE as CreateTierIntentParams, aF as CreateWebhookParams, aG as DropMintStatus, aH as EnforcementDeclaration, aI as FactoryFamilyServiceId, aJ as FeeConfig, aK as FeeConfigSchema, aL as FulfillOrderIntentParams, aM as IPType, aN as IntentCall, aO as IntentStatus, aP as IntentType, aQ as IpAttribute, aR as IpNftMetadata, aS as LaunchCoinIntentParams, aT as MakeOfferIntentParams, aU as MedialaneApiError, aV as MedialaneConfig, aW as MedialaneErrorCode, aX as MintMembershipsParams, aY as MintTicketsParams, aZ as OPEN_LICENSES, a_ as OfferItem, a$ as OpenLicense, b0 as Order, b1 as OrderDetails, b2 as OrderParameters, b3 as OrderStatus, b4 as PlaceSponsorshipBidIntentParams, b5 as PopBatchEligibilityItem, b6 as PopClaimStatus, b7 as PopEventType, b8 as ProposeSponsorshipParams, b9 as RejectSponsorshipProposalIntentParams, ba as RemixOfferStatus, bb as ResolvedConfig, bc as RetractSponsorshipBidIntentParams, bd as RetryOptions, be as ServiceEventDeclaration, bf as SetSponsorshipOfferOpenIntentParams, bg as SortOrder, bh as TenantPlan, bi as TierServiceId, bj as TxResult, bk as UpdateCollectionProfileInput, bl as WebhookEventType, bm as WebhookStatus, bn as WithdrawSponsorshipProposalIntentParams, bo as resolveConfig, bp as resolveFeeConfig } from './services-Dt23Y7HU.js';
3
- import { C as Chain } from './types-BzLfeLF9.js';
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-BzLfeLF9.js';
1
+ import { R as ResolvedFeeConfig, S as ServiceDefinition, a as ServiceCapability } from './services-BBXTfVDt.js';
2
+ export { A as AcceptSponsorshipBidIntentParams, b as AcceptSponsorshipProposalIntentParams, c as ActivityType, d as ApiActivitiesQuery, e as ApiActivity, f as ApiActivityPrice, g as ApiAdminCollectionClaim, h as ApiAppSource, i as ApiBusinessProvisioning, j as ApiChain, k as ApiCheckoutIntentResult, l as ApiClient, m as ApiCoin, n as ApiCoinClaimResult, o as ApiCoinPrice, p as ApiCoinPrices, q as ApiCoinsQuery, r as ApiCollection, s as ApiCollectionClaim, t as ApiCollectionProfile, u as ApiCollectionSlugClaim, v as ApiCollectionsQuery, w as ApiComment, x as ApiCounterOffersQuery, y as ApiCreatorListResult, z as ApiCreatorProfile, B as ApiIntent, C as ApiIntentCreated, D as ApiKeyStatus, E as ApiMeta, F as ApiMetadataSignedUrl, G as ApiMetadataUpload, H as ApiOrder, I as ApiOrderConsideration, J as ApiOrderOffer, K as ApiOrderPrice, L as ApiOrderTokenMeta, M as ApiOrderTxHash, N as ApiOrdersQuery, O as ApiPointEvent, P as ApiPortalKey, Q as ApiPortalKeyCreated, T as ApiPortalMe, U as ApiPublicRemix, V as ApiRemixOffer, W as ApiRemixOfferPrice, X as ApiRemixOffersQuery, Y as ApiResponse, Z as ApiRewardsBadge, _ as ApiRewardsBatchEntry, $ as ApiRewardsConfig, a0 as ApiRewardsLeaderboardEntry, a1 as ApiRewardsLevel, a2 as ApiSearchCollectionResult, a3 as ApiSearchCreatorResult, a4 as ApiSearchResult, a5 as ApiSearchTokenResult, a6 as ApiToken, a7 as ApiTokenBalance, a8 as ApiTokenMetadata, a9 as ApiUsageDay, aa as ApiUserRewards, ab as ApiUserWallet, ac as ApiWalletActivity, ad as ApiWebhookCreated, ae as ApiWebhookEndpoint, af as AutoRemixOfferParams, ag as CancelOrderIntentParams, ah as ChainFilter, ai as CheckoutIntentItem, aj as ClaimConditions, ak as CollectionServiceId, al as CollectionSort, am as CollectionTokensSort, an as ConfirmRemixOfferParams, ao as ConfirmSelfRemixParams, ap as ConsiderationItem, aq as CreateCheckoutIntentParams, ar as CreateCoinIntentParams, as as CreateCollectionIntentParams, at as CreateCounterOfferIntentParams, au as CreateDropParams, av as CreateListingIntentParams, aw as CreateMembershipParams, ax as CreateMintIntentParams, ay as CreatePopCollectionParams, az as CreateRemixOfferParams, aA as CreateSponsorshipOfferIntentParams, aB as CreateSponsorshipOfferParams, aC as CreateSponsorshipProposalIntentParams, aD as CreateTicketParams, aE as CreateTierIntentParams, aF as CreateWebhookParams, aG as DropMintStatus, aH as EnforcementDeclaration, aI as FactoryFamilyServiceId, aJ as FeeConfig, aK as FeeConfigSchema, aL as FulfillOrderIntentParams, aM as IPType, aN as IntentCall, aO as IntentStatus, aP as IntentType, aQ as IpAttribute, aR as IpNftMetadata, aS as LaunchCoinIntentParams, aT as MakeOfferIntentParams, aU as MedialaneApiError, aV as MedialaneConfig, aW as MedialaneErrorCode, aX as MintMembershipsParams, aY as MintTicketsParams, aZ as OPEN_LICENSES, a_ as OfferItem, a$ as OpenLicense, b0 as Order, b1 as OrderDetails, b2 as OrderParameters, b3 as OrderStatus, b4 as PlaceSponsorshipBidIntentParams, b5 as PopBatchEligibilityItem, b6 as PopClaimStatus, b7 as PopEventType, b8 as ProposeSponsorshipParams, b9 as RejectSponsorshipProposalIntentParams, ba as RemixOfferStatus, bb as ResolvedConfig, bc as RetractSponsorshipBidIntentParams, bd as RetryOptions, be as ServiceEventDeclaration, bf as SetSponsorshipOfferOpenIntentParams, bg as SortOrder, bh as TenantPlan, bi as TierServiceId, bj as TxResult, bk as UpdateCollectionProfileInput, bl as WebhookEventType, bm as WebhookStatus, bn as WithdrawSponsorshipProposalIntentParams, bo as resolveConfig, bp as resolveFeeConfig } from './services-BBXTfVDt.js';
3
+ import { C as Chain } from './types-CuSlc_YE.js';
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-CuSlc_YE.js';
5
5
  import 'zod';
6
6
 
7
7
  interface FeeEnv {
@@ -19,6 +19,7 @@ declare const STARKNET_MARKETPLACE_1155_CONTRACT: `0x${string}`;
19
19
  declare const STARKNET_MARKETPLACE_1155_CLASS_HASH: `0x${string}`;
20
20
  declare const STARKNET_MARKETPLACE_1155_START_BLOCK: number;
21
21
  declare const STARKNET_COLLECTION_721_CONTRACT: `0x${string}`;
22
+ declare const STARKNET_DATA_TOKENIZATION_721_CONTRACT: `0x${string}`;
22
23
  declare const STARKNET_COLLECTION_721_START_BLOCK: number;
23
24
  declare const STARKNET_IPNFT_CLASS_HASH: `0x${string}`;
24
25
  declare const STARKNET_IPCOLLECTION_CLASS_HASH: `0x${string}`;
@@ -108,8 +109,8 @@ declare const SERVICES: {
108
109
  };
109
110
  readonly "ip-erc721": {
110
111
  readonly id: "ip-erc721";
111
- readonly displayName: "Programmable IP (genesis)";
112
- readonly description: "One shared ERC-721 contract; many wallets mint genesis pieces.";
112
+ readonly displayName: "Programmable IP";
113
+ readonly description: "One shared ERC-721 contract any wallet can mint into.";
113
114
  readonly standard: "ERC721";
114
115
  readonly provenance: "MEDIALANE";
115
116
  readonly uiVariant: "standard";
@@ -118,6 +119,28 @@ declare const SERVICES: {
118
119
  readonly licenseDefault: "CC BY-SA";
119
120
  };
120
121
  };
122
+ readonly "data-tokenization-erc721": {
123
+ readonly id: "data-tokenization-erc721";
124
+ readonly displayName: "Data Tokenization";
125
+ readonly description: "Establish verifiable ownership of your data, with licensing terms that hold up wherever it travels.";
126
+ readonly standard: "ERC721";
127
+ readonly provenance: "MEDIALANE";
128
+ readonly onchain: {
129
+ readonly STARKNET: {
130
+ readonly factoryAddress: `0x${string}`;
131
+ readonly startBlock: number;
132
+ };
133
+ };
134
+ readonly uiVariant: "standard";
135
+ readonly capabilities: ["list", "buy", "make_offer", "cancel", "transfer", "mint", "remix", "license"];
136
+ readonly events: [{
137
+ readonly name: "CollectionCreated";
138
+ readonly emittedBy: "factory";
139
+ }];
140
+ readonly metadataSchema: {
141
+ readonly licenseDefault: "CC BY-SA";
142
+ };
143
+ };
121
144
  readonly "mip-erc1155": {
122
145
  readonly id: "mip-erc1155";
123
146
  readonly displayName: "NFT Editions";
@@ -393,18 +416,6 @@ declare function hasCapability(id: string | null | undefined, cap: ServiceCapabi
393
416
 
394
417
  declare function normalizeAddress(chain: Chain, address: string): string;
395
418
  declare const canonicalHashBrand: unique symbol;
396
- /**
397
- * A felt hash in exactly one spelling: lowercase, zero-padded to 64 hex digits.
398
- *
399
- * Felts have many equal spellings — `0x0ab`, `0xAB` and `0xab` are the same
400
- * value on chain but three different strings. Anything that uses a hash as an
401
- * identity or uniqueness key must therefore compare canonical form, or the
402
- * same on-chain fact can be presented as several distinct records.
403
- *
404
- * Only `normalizeHash` can produce this type, so a function that demands a
405
- * `CanonicalHash` cannot be handed a raw caller-supplied string. It remains
406
- * assignable to `string`, so existing readers are unaffected.
407
- */
408
419
  type CanonicalHash = string & {
409
420
  readonly [canonicalHashBrand]: true;
410
421
  };
@@ -423,18 +434,6 @@ declare function u256ToBigInt(low: string, high: string): bigint;
423
434
  declare function encodeU256(n: bigint): [string, string];
424
435
 
425
436
  declare const PUBLIC_RPC_FALLBACKS: readonly string[];
426
- /**
427
- * Codes our own proxies emit to *refuse* a call on policy grounds: no API key,
428
- * insufficient credits, rate limited, wrong origin.
429
- *
430
- * These must never be treated as transient. They sit inside the JSON-RPC
431
- * reserved server-error range and carry messages like "Too many requests", so
432
- * every generic transient heuristic below would otherwise match them — and a
433
- * caller with a fallback list would quietly retry the same call against a
434
- * different upstream. That turns a refusal into a redirect: the harder the
435
- * meter says no, the faster traffic routes around it. A policy refusal is an
436
- * answer, not a failure; retrying it elsewhere is always wrong.
437
- */
438
437
  declare const POLICY_REFUSAL_CODES: readonly number[];
439
438
  declare function isPolicyRefusal(input: {
440
439
  body?: unknown;
@@ -452,18 +451,6 @@ interface FailoverFetchOptions {
452
451
  }) => void;
453
452
  }
454
453
  declare function createFailoverFetch(urls: string[], options?: FailoverFetchOptions): typeof fetch;
455
- /**
456
- * Hostnames and env-var names that reach a paid upstream directly.
457
- *
458
- * An app must never name one of these. Everything paid goes through the
459
- * backend, the only place a call can be authenticated, scoped, rate limited
460
- * and billed. An app that knows a node's address has a route around all four —
461
- * and since the address ships in the client bundle, so does every visitor.
462
- *
463
- * The list lives here, not in each app, because it is the part that drifts:
464
- * adding an upstream must protect every consumer at once. Each app keeps its
465
- * own small test that scans its source for these with its own file APIs.
466
- */
467
454
  declare const PAID_UPSTREAM_MARKERS: readonly string[];
468
455
 
469
456
  interface RpcProxyConfig {
@@ -480,12 +467,6 @@ interface BackendProxyConfig {
480
467
  apiKey: string | undefined;
481
468
  checkRateLimit: (ip: string) => boolean;
482
469
  fetchImpl?: typeof fetch;
483
- /**
484
- * Forwards a cookie the app already sets (e.g. its own account-session
485
- * cookie) as a header, so the backend can attribute cost to the calling
486
- * end-user instead of only the app's shared API key. Purely additive —
487
- * omitted when the cookie isn't present, never blocks the request.
488
- */
489
470
  forwardCookie?: {
490
471
  name: string;
491
472
  header: string;
@@ -497,12 +478,6 @@ declare const ALLOWED_IMAGE_CONTENT_TYPES: Set<string>;
497
478
  declare const MAX_IMAGE_REDIRECTS = 5;
498
479
  declare const MAX_IMAGE_PROXY_BYTES: number;
499
480
  declare function isPrivateHost(hostname: string): boolean;
500
- /**
501
- * Validates a URL before it is fetched server-side. `requireHttps` is on by
502
- * default; callers that legitimately accept plain http (a metadata URI already
503
- * committed on chain, say) opt out explicitly rather than the guard being
504
- * lenient for everyone.
505
- */
506
481
  declare function validateUrl(raw: string, options?: {
507
482
  requireHttps?: boolean;
508
483
  }): {
@@ -511,33 +486,10 @@ declare function validateUrl(raw: string, options?: {
511
486
  error: string;
512
487
  status: number;
513
488
  };
514
- /** Convenience for callers that only need a yes/no, mirroring the backend's prior helper. */
515
489
  declare function isPrivateOrInsecureUrl(raw: string, requireHttps?: boolean): boolean;
516
490
 
517
- /**
518
- * Proxies a remote image, which means fetching a URL an untrusted caller chose
519
- * — the classic SSRF shape. Guarded in four places, each of which has to hold:
520
- *
521
- * 1. the URL is https, credential-free and not a private host
522
- * 2. the hostname's *resolved* addresses are re-checked, since a public name
523
- * can resolve to a private address
524
- * 3. redirects are followed manually, re-validating each hop, because a
525
- * permitted host can redirect into the private range
526
- * 4. the response must be an allowed image type and is read under a byte cap
527
- *
528
- * This existed as a byte-identical copy in each app, so a fix to one would not
529
- * have reached the other. DNS resolution is injected rather than imported: it
530
- * is runtime-specific, and this package stays isomorphic.
531
- *
532
- * Note the remaining exposure: between resolving a hostname and fetching it,
533
- * the name could resolve differently (DNS rebinding). Closing that needs the
534
- * fetch pinned to the address already checked, which the platform fetch does
535
- * not expose. The content-type allowlist and byte cap bound what an attacker
536
- * gets if they win that race.
537
- */
538
491
  interface ImageProxyConfig {
539
492
  checkRateLimit: (ip: string) => boolean;
540
- /** Returns every address a hostname resolves to. Injected; see above. */
541
493
  resolveHostname: (hostname: string) => Promise<string[]>;
542
494
  fetchImpl?: typeof fetch;
543
495
  userAgent?: string;
@@ -548,7 +500,6 @@ interface CappedBody {
548
500
  error?: string;
549
501
  status?: number;
550
502
  }
551
- /** Reads a response body, refusing anything past `maxBytes` rather than buffering it. */
552
503
  declare function readBodyWithCap(res: Response, maxBytes: number): Promise<CappedBody>;
553
504
  declare function createImageProxyHandler(config: ImageProxyConfig): (req: Request) => Promise<Response>;
554
505
 
@@ -576,17 +527,6 @@ declare function createRateLimiter(windowMs: number, max: number): (key: string)
576
527
  declare const TRUSTED_APP_IP_HEADER = "x-medialane-client-ip";
577
528
  declare function requestIp(req: Request): string;
578
529
 
579
- /**
580
- * Same-origin guard for server routes. A missing `Origin` header is allowed,
581
- * because same-origin navigations and server-to-server calls do not send one;
582
- * a present `Origin` must match `Host`.
583
- *
584
- * Read that carefully before relying on it: this blocks cross-site *browser*
585
- * abuse, and nothing else. A non-browser client simply omits `Origin` and
586
- * passes. It is not a substitute for authentication, and on a route that
587
- * spends money or credits it must be paired with a rate limit and, where the
588
- * route touches a paid resource, real auth.
589
- */
590
530
  declare function isSameOrigin(req: Request): boolean;
591
531
 
592
532
  declare const IDENTITY_TTL_SECONDS = 86400;
@@ -656,4 +596,4 @@ declare const IPFS_SAFE_CONTENT_TYPE_PREFIXES: readonly ["image/jpeg", "image/pn
656
596
  declare function resolveSafeImageContentType(contentType: string): string;
657
597
  declare const MAX_IPFS_GATEWAY_RESPONSE_BYTES: number;
658
598
 
659
- export { ACCOUNT_SESSION_TTL_SECONDS, ALLOWED_IMAGE_CONTENT_TYPES, type AssetAttribute, type AssetMetadata, type BackendMetadataConfig, type BackendProxyConfig, type BackendUploadResult, type BuildAssetMetadataInput, type CanonicalHash, type CappedBody, Chain, DEFAULT_CURRENCY, type FailoverFetchOptions, type FeeEnv, IDENTITY_TTL_SECONDS, IPFS_SAFE_CONTENT_TYPE_PREFIXES, type ImageProxyConfig, MAX_IMAGE_PROXY_BYTES, MAX_IMAGE_REDIRECTS, MAX_IPFS_GATEWAY_RESPONSE_BYTES, PAID_UPSTREAM_MARKERS, POLICY_REFUSAL_CODES, PUBLIC_RPC_FALLBACKS, RESERVED_TRAITS, type RemixPolicy, type RemixPolicyInput, ResolvedFeeConfig, type RpcProxyConfig, 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_GENESIS_MINT_BR_CONTRACT, STARKNET_GENESIS_MINT_GLOBAL_CONTRACT, STARKNET_GENESIS_MINT_LAUNCH_CONTRACT, 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 SiwsIdentity, type SupportedToken, type SupportedTokenSymbol, TRUSTED_APP_IP_HEADER, assetHref, buildAssetMetadata, chainFromSlug, chainSlug, coinHref, collectionHref, createBackendProxyHandler, createFailoverFetch, createImageProxyHandler, createRateLimiter, createRpcProxyHandler, encodeU256, formatAmount, getBackendSignedUrl, getDerivativesTerm, getListableTokens, getService, getServicesByCapability, getTokenByAddress, getTokenBySymbol, hasCapability, isPolicyRefusal, isPrivateHost, isPrivateOrInsecureUrl, isSameOrigin, isServiceId, isTransientRpcError, isValidIpfsCidPath, issueAccountSessionToken, issueSiwsToken, listServices, normalizeAddress, normalizeHash, parseAmount, readBodyWithCap, requestIp, resolveAppFeeConfig, resolveRemixPolicy, resolveSafeImageContentType, shortenAddress, stringifyBigInts, u256ToBigInt, uploadDirectoryToBackend, uploadFileToBackend, uploadJsonToBackend, validateUrl, verifyAccountSessionToken, verifySiwsToken };
599
+ export { ACCOUNT_SESSION_TTL_SECONDS, ALLOWED_IMAGE_CONTENT_TYPES, type AssetAttribute, type AssetMetadata, type BackendMetadataConfig, type BackendProxyConfig, type BackendUploadResult, type BuildAssetMetadataInput, type CanonicalHash, type CappedBody, Chain, DEFAULT_CURRENCY, type FailoverFetchOptions, type FeeEnv, IDENTITY_TTL_SECONDS, IPFS_SAFE_CONTENT_TYPE_PREFIXES, type ImageProxyConfig, MAX_IMAGE_PROXY_BYTES, MAX_IMAGE_REDIRECTS, MAX_IPFS_GATEWAY_RESPONSE_BYTES, PAID_UPSTREAM_MARKERS, POLICY_REFUSAL_CODES, PUBLIC_RPC_FALLBACKS, RESERVED_TRAITS, type RemixPolicy, type RemixPolicyInput, ResolvedFeeConfig, type RpcProxyConfig, 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_DATA_TOKENIZATION_721_CONTRACT, STARKNET_DROP_COLLECTION_CLASS_HASH, STARKNET_DROP_FACTORY_CONTRACT, STARKNET_EKUBO_CORE, STARKNET_GENESIS_MINT_BR_CONTRACT, STARKNET_GENESIS_MINT_GLOBAL_CONTRACT, STARKNET_GENESIS_MINT_LAUNCH_CONTRACT, 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 SiwsIdentity, type SupportedToken, type SupportedTokenSymbol, TRUSTED_APP_IP_HEADER, assetHref, buildAssetMetadata, chainFromSlug, chainSlug, coinHref, collectionHref, createBackendProxyHandler, createFailoverFetch, createImageProxyHandler, createRateLimiter, createRpcProxyHandler, encodeU256, formatAmount, getBackendSignedUrl, getDerivativesTerm, getListableTokens, getService, getServicesByCapability, getTokenByAddress, getTokenBySymbol, hasCapability, isPolicyRefusal, isPrivateHost, isPrivateOrInsecureUrl, isSameOrigin, isServiceId, isTransientRpcError, isValidIpfsCidPath, issueAccountSessionToken, issueSiwsToken, listServices, normalizeAddress, normalizeHash, parseAmount, readBodyWithCap, requestIp, resolveAppFeeConfig, resolveRemixPolicy, resolveSafeImageContentType, shortenAddress, stringifyBigInts, u256ToBigInt, uploadDirectoryToBackend, uploadFileToBackend, uploadJsonToBackend, validateUrl, verifyAccountSessionToken, verifySiwsToken };
package/dist/index.js CHANGED
@@ -19,6 +19,8 @@ var COORDINATES = {
19
19
  marketplace1155StartBlock: 11198267,
20
20
  collection721: "0x0225c3ae09506b8d97adc39649ca740dad5aac195b7f5f0441cc1852947acaea",
21
21
  collection721StartBlock: 11198496,
22
+ dataTokenization721: "0x07421b4442f7f2052c65408fb3561484154cf8175a0bbb41e3cd38d9087af6d2",
23
+ dataTokenization721StartBlock: 14670294,
22
24
  ipNftClassHash: "0x012d3ae40ba35c7e2be0946532dac60e48932447912fdf96b674da67c029b9cc",
23
25
  ipCollectionClassHash: "0x022155a1a130a40e57aac4b89c07fab3f616bc351b1270fc40f756b963afe8b4",
24
26
  collection1155: "0x015368976d46fae5bfa1c58600f641d5aa5dbbf53ebc6b78aa3922194aad3551",
@@ -855,6 +857,7 @@ var STARKNET_MARKETPLACE_1155_CONTRACT = SN.marketplace1155;
855
857
  var STARKNET_MARKETPLACE_1155_CLASS_HASH = SN.marketplace1155ClassHash;
856
858
  var STARKNET_MARKETPLACE_1155_START_BLOCK = SN.marketplace1155StartBlock;
857
859
  var STARKNET_COLLECTION_721_CONTRACT = SN.collection721;
860
+ var STARKNET_DATA_TOKENIZATION_721_CONTRACT = SN.dataTokenization721;
858
861
  var STARKNET_COLLECTION_721_START_BLOCK = SN.collection721StartBlock;
859
862
  var STARKNET_IPNFT_CLASS_HASH = SN.ipNftClassHash;
860
863
  var STARKNET_IPCOLLECTION_CLASS_HASH = SN.ipCollectionClassHash;
@@ -961,14 +964,33 @@ var SERVICES = {
961
964
  },
962
965
  "ip-erc721": {
963
966
  id: "ip-erc721",
964
- displayName: "Programmable IP (genesis)",
965
- description: "One shared ERC-721 contract; many wallets mint genesis pieces.",
967
+ displayName: "Programmable IP",
968
+ description: "One shared ERC-721 contract any wallet can mint into.",
966
969
  standard: "ERC721",
967
970
  provenance: "MEDIALANE",
968
971
  uiVariant: "standard",
969
972
  capabilities: ["list", "buy", "make_offer", "cancel", "transfer", "mint", "remix", "license"],
970
973
  metadataSchema: { licenseDefault: "CC BY-SA" }
971
974
  },
975
+ "data-tokenization-erc721": {
976
+ id: "data-tokenization-erc721",
977
+ displayName: "Data Tokenization",
978
+ description: "Establish verifiable ownership of your data, with licensing terms that hold up wherever it travels.",
979
+ standard: "ERC721",
980
+ provenance: "MEDIALANE",
981
+ onchain: {
982
+ STARKNET: {
983
+ factoryAddress: SN2.dataTokenization721,
984
+ startBlock: SN2.dataTokenization721StartBlock
985
+ }
986
+ },
987
+ uiVariant: "standard",
988
+ capabilities: ["list", "buy", "make_offer", "cancel", "transfer", "mint", "remix", "license"],
989
+ events: [
990
+ { name: "CollectionCreated", emittedBy: "factory" }
991
+ ],
992
+ metadataSchema: { licenseDefault: "CC BY-SA" }
993
+ },
972
994
  "mip-erc1155": {
973
995
  id: "mip-erc1155",
974
996
  displayName: "NFT Editions",
@@ -1936,6 +1958,6 @@ function resolveSafeImageContentType(contentType) {
1936
1958
  }
1937
1959
  var MAX_IPFS_GATEWAY_RESPONSE_BYTES = 25 * 1024 * 1024;
1938
1960
 
1939
- export { ACCOUNT_SESSION_TTL_SECONDS, ALLOWED_IMAGE_CONTENT_TYPES, ApiClient, CHAINS, DEFAULT_CHAIN, DEFAULT_CURRENCY, FeeConfigSchema, IDENTITY_TTL_SECONDS, IPFS_SAFE_CONTENT_TYPE_PREFIXES, MAX_IMAGE_PROXY_BYTES, MAX_IMAGE_REDIRECTS, MAX_IPFS_GATEWAY_RESPONSE_BYTES, MedialaneApiError, OPEN_LICENSES, PAID_UPSTREAM_MARKERS, POLICY_REFUSAL_CODES, 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_GENESIS_MINT_BR_CONTRACT, STARKNET_GENESIS_MINT_GLOBAL_CONTRACT, STARKNET_GENESIS_MINT_LAUNCH_CONTRACT, 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, TRUSTED_APP_IP_HEADER, assetHref, buildAssetMetadata, chainFromSlug, chainSlug, coinHref, collectionHref, createBackendProxyHandler, createFailoverFetch, createImageProxyHandler, createRateLimiter, createRpcProxyHandler, encodeU256, formatAmount, getBackendSignedUrl, getCoordinates, getDerivativesTerm, getListableTokens, getService, getServicesByCapability, getStarknetCoordinates, getTokenByAddress, getTokenBySymbol, hasCapability, isPolicyRefusal, isPrivateHost, isPrivateOrInsecureUrl, isSameOrigin, isServiceId, isTransientRpcError, isValidIpfsCidPath, issueAccountSessionToken, issueSiwsToken, listServices, normalizeAddress, normalizeHash, parseAmount, readBodyWithCap, requestIp, resolveAppFeeConfig, resolveConfig, resolveFeeConfig, resolveRemixPolicy, resolveSafeImageContentType, shortenAddress, stringifyBigInts, u256ToBigInt, uploadDirectoryToBackend, uploadFileToBackend, uploadJsonToBackend, validateUrl, verifyAccountSessionToken, verifySiwsToken };
1961
+ export { ACCOUNT_SESSION_TTL_SECONDS, ALLOWED_IMAGE_CONTENT_TYPES, ApiClient, CHAINS, DEFAULT_CHAIN, DEFAULT_CURRENCY, FeeConfigSchema, IDENTITY_TTL_SECONDS, IPFS_SAFE_CONTENT_TYPE_PREFIXES, MAX_IMAGE_PROXY_BYTES, MAX_IMAGE_REDIRECTS, MAX_IPFS_GATEWAY_RESPONSE_BYTES, MedialaneApiError, OPEN_LICENSES, PAID_UPSTREAM_MARKERS, POLICY_REFUSAL_CODES, 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_DATA_TOKENIZATION_721_CONTRACT, STARKNET_DROP_COLLECTION_CLASS_HASH, STARKNET_DROP_FACTORY_CONTRACT, STARKNET_EKUBO_CORE, STARKNET_GENESIS_MINT_BR_CONTRACT, STARKNET_GENESIS_MINT_GLOBAL_CONTRACT, STARKNET_GENESIS_MINT_LAUNCH_CONTRACT, 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, TRUSTED_APP_IP_HEADER, assetHref, buildAssetMetadata, chainFromSlug, chainSlug, coinHref, collectionHref, createBackendProxyHandler, createFailoverFetch, createImageProxyHandler, createRateLimiter, createRpcProxyHandler, encodeU256, formatAmount, getBackendSignedUrl, getCoordinates, getDerivativesTerm, getListableTokens, getService, getServicesByCapability, getStarknetCoordinates, getTokenByAddress, getTokenBySymbol, hasCapability, isPolicyRefusal, isPrivateHost, isPrivateOrInsecureUrl, isSameOrigin, isServiceId, isTransientRpcError, isValidIpfsCidPath, issueAccountSessionToken, issueSiwsToken, listServices, normalizeAddress, normalizeHash, parseAmount, readBodyWithCap, requestIp, resolveAppFeeConfig, resolveConfig, resolveFeeConfig, resolveRemixPolicy, resolveSafeImageContentType, shortenAddress, stringifyBigInts, u256ToBigInt, uploadDirectoryToBackend, uploadFileToBackend, uploadJsonToBackend, validateUrl, verifyAccountSessionToken, verifySiwsToken };
1940
1962
  //# sourceMappingURL=index.js.map
1941
1963
  //# sourceMappingURL=index.js.map