UNPKG

opensea-js

Version:

TypeScript SDK for the OpenSea marketplace helps developers build new experiences using NFTs and our marketplace data

311 lines (282 loc) 7.17 kB
import { ConsiderationItem } from "@opensea/seaport-js/lib/types"; import { OrderType, OrderV2, ProtocolData, QueryCursors, } from "../orders/types"; import { OpenSeaCollection } from "../types"; /** * Response from OpenSea API for building an offer. * @category API Response Types */ export type BuildOfferResponse = { /** A portion of the parameters needed to submit a criteria offer, i.e. collection offer. */ partialParameters: PartialParameters; }; type PartialParameters = { consideration: ConsiderationItem[]; zone: string; zoneHash: string; }; /** * Criteria for collection or trait offers. * @category API Response Types */ type Criteria = { /** The collection for the criteria */ collection: CollectionCriteria; /** The contract for the criteria */ contract: ContractCriteria; /** Represents a list of token ids which can be used to fulfill the criteria offer. */ encoded_token_ids?: string; /** The trait for the criteria */ trait?: TraitCriteria; }; /** * Criteria for trait offers. * @category API Response Types */ type TraitCriteria = { type: string; value: string; }; type CollectionCriteria = { slug: string; }; type ContractCriteria = { address: string; }; /** * Query args for Get Collections * @category API Query Args */ export interface GetCollectionsArgs { order_by?: string; limit?: number; next?: string; chain?: string; creator_username?: string; include_hidden?: boolean; } /** * Response from OpenSea API for fetching a single collection. * @category API Response Types */ export type GetCollectionResponse = { /** Collection object. See {@link OpenSeaCollection} */ collection: OpenSeaCollection; }; /** * Response from OpenSea API for fetching a list of collections. * @category API Response Types */ export type GetCollectionsResponse = QueryCursorsV2 & { /** List of collections. See {@link OpenSeaCollection} */ collections: OpenSeaCollection[]; }; export enum CollectionOrderByOption { CREATED_DATE = "created_date", ONE_DAY_CHANGE = "one_day_change", SEVEN_DAY_VOLUME = "seven_day_volume", SEVEN_DAY_CHANGE = "seven_day_change", NUM_OWNERS = "num_owners", MARKET_CAP = "market_cap", } /** * Base Order type shared between Listings and Offers. * @category API Models */ export type Order = { /** Offer Identifier */ order_hash: string; /** Chain the offer exists on */ chain: string; /** The protocol data for the order. Only 'seaport' is currently supported. */ protocol_data: ProtocolData; /** The contract address of the protocol. */ protocol_address: string; /** The price of the order. */ price: Price; }; /** * Offer type. * @category API Models */ export type Offer = Order & { /** The criteria for the offer if it is a collection or trait offer. */ criteria?: Criteria; }; /** * Collection Offer type. * @category API Models */ export type CollectionOffer = Required<Pick<Offer, "criteria">> & Offer; /** * Price response. * @category API Models */ export type Price = { currency: string; decimals: number; value: string; }; /** * Listing order type. * @category API Models */ export type Listing = Order & { /** The order type of the listing. */ type: OrderType; }; /** * Response from OpenSea API for fetching a list of collection offers. * @category API Response Types */ export type ListCollectionOffersResponse = { /** List of {@link Offer} */ offers: CollectionOffer[]; }; /** * Response from OpenSea API for fetching a list of NFTs. * @category API Response Types */ export type ListNFTsResponse = { /** List of {@link NFT} */ nfts: NFT[]; /** Cursor for next page of results. */ next: string; }; /** * Response from OpenSea API for fetching a single NFT. * @category API Response Types */ export type GetNFTResponse = { /** See {@link NFT} */ nft: NFT; }; /** * Response from OpenSea API for fetching Orders. * @category API Response Types */ export type GetOrdersResponse = QueryCursors & { /** List of {@link OrderV2} */ orders: OrderV2[]; }; /** * Base query cursors response from OpenSea API. * @category API Response Types */ export type QueryCursorsV2 = { next?: string; }; /** * Response from OpenSea API for fetching offers. * @category API Response Types */ export type GetOffersResponse = QueryCursorsV2 & { offers: Offer[]; }; /** * Response from OpenSea API for fetching listings. * @category API Response Types */ export type GetListingsResponse = QueryCursorsV2 & { listings: Listing[]; }; /** * Response from OpenSea API for fetching a best offer. * @category API Response Types */ export type GetBestOfferResponse = Offer | CollectionOffer; /** * Response from OpenSea API for fetching a best listing. * @category API Response Types */ export type GetBestListingResponse = Listing; /** * Response from OpenSea API for offchain canceling an order. * @category API Response Types */ export type CancelOrderResponse = { last_signature_issued_valid_until: string | null; }; /** * NFT type returned by OpenSea API. * @category API Models */ export type NFT = { /** NFT Identifier (also commonly referred to as tokenId) */ identifier: string; /** Slug identifier of collection */ collection: string; /** Address of contract */ contract: string; /** Token standard, i.e. ERC721, ERC1155, etc. */ token_standard: string; /** Name of NFT */ name: string; /** Description of NFT */ description: string; /** URL of image */ image_url: string; /** URL of metadata */ metadata_url: string; /** URL on OpenSea */ opensea_url: string; /** Date of latest NFT update */ updated_at: string; /** Whether NFT is disabled for trading on OpenSea */ is_disabled: boolean; /** Whether NFT is NSFW (Not Safe For Work) */ is_nsfw: boolean; /** Traits for the NFT, returns null if the NFT has than 50 traits */ traits: Trait[] | null; /** Creator of the NFT */ creator: string; /** Owners of the NFT */ owners: { address: string; quantity: number; }[]; /** Rarity of the NFT */ rarity: null | { strategy_id: string | null; strategy_version: string | null; rank: number | null; score: number | null; calculated_at: string; max_rank: number | null; tokens_scored: number | null; ranking_features: null | { unique_attribute_count: number; }; }; }; /** * Trait type returned by OpenSea API. * @category API Models */ export type Trait = { /** The name of the trait category (e.g. 'Background') */ trait_type: string; /** A field indicating how to display. None is used for string traits. */ display_type: TraitDisplayType; /** Ceiling for possible numeric trait values */ max_value: string; /** The value of the trait (e.g. 'Red') */ value: string | number | Date; }; /** * Trait display type returned by OpenSea API. * @category API Models */ export enum TraitDisplayType { NUMBER = "number", BOOST_PERCENTAGE = "boost_percentage", BOOST_NUMBER = "boost_number", AUTHOR = "author", DATE = "date", /** "None" is used for string traits */ NONE = "None", }