UNPKG

@xoxno/sdk-js

Version:

The SDK to interact with the XOXNO Protocol!

856 lines 26.6 kB
import type { IEventDoc } from './event'; import type { CollectionInfo, Media, NftData, NFTMetadata, Owner, SaleInfo } from './nft'; import type { NftActivityType } from './trading'; import type { CreatorProfile, IUserProfileSearch, OfferBody } from './user'; export interface ISocials { twitter: string; instagram: string; website: string; telegram: string; discord: string; facebook: string; youtube: string; } export interface IMintInfo { dataType: string; collection: string; contractAddress: string; collectionTag: string; cid: string; mediaType: string; baseNftName: string; hasAttributes: boolean; ownerTransferred: boolean; collectionSize: number; totalNftMinted: number; globalWalletLimit: number; royalties: number; oldVersion: boolean; nameShuffle: boolean; nftTransferLimited: boolean; allowsPublicBurn: boolean; kycRequired: boolean; allowsRefund: boolean; hasBotProtection: boolean; hasReveal: boolean; tags: string[]; id: string; _ts: number; } export interface IMintInfoExtended extends IMintInfo { collectionInfo: CollectionInfo; } export interface CollectionCreatorInfo extends CreatorProfile { listing: IMintInfoExtended[]; } export interface EventCreatorInfo extends CreatorProfile { events: IEventDoc[]; } export interface CreatorInfo extends CollectionCreatorInfo, EventCreatorInfo { } export interface CollectionStatisticsProfile { tradeData: TradeData; mintData: MintStatistics; other: OtherStatistics; } export interface ICollectionProfile { dataType: 'collectionProfile'; collection: string; name: string; description: string; isVisible: boolean; isVerified: boolean; profile: string; banner: string; statistics: CollectionStatisticsProfile; owner: string; creator: string; isMintable: boolean; hasStaking: boolean; id: string; socials: ISocials; type: string; lastVerifiedTimestamp: number; lastVerifiedBy: string; customConfig?: { collection: string; reversedCutFees: boolean; reversedRoyalties: boolean; customRoyalties: boolean; minRoyalties: number; maxRoyalties: number; extraFees: { amount: number; address: string; }; }; _ts: number; } export interface AttributeData { attributeOccurrence: number; floorPrice: number; onSaleCount: number; usdValue: number; } export interface MetadataAttribute { trait_type: string; value: string; } export interface TraitValues { [traitValue: string]: AttributeData; } export interface ICollectionAttributes { [traitType: string]: TraitValues; } export declare enum Marketplace { XO = "xoxno", FM = "frameit", DR = "deadrare", KG = "krogan" } export interface GlobalOffer { attributes: MetadataAttribute[]; collection: string; isActive: boolean; marketplace: string; offer_id: number; owner: string; ownerProfile?: string; ownerUsername?: string; payment_nonce: number; payment_token: string; price: string; quantity: number; short_price: number; timestamp: number; } export declare enum FieldsToSelect { Rank = "metadata.rarity.rank", Attributes = "metadata.attributes", Description = "metadata.description", Name = "name", OnSale = "onSale", SaleInfo = "saleInfo", Royalties = "royalties", Identifier = "identifier", Collection = "collection", OriginalURL = "url", Nonce = "nonce", ContentType = "originalMedia.contentType", WasProcessed = "wasProcessed", AvifURL = "avifUrl", WebpURL = "webpUrl", Type = "type" } export declare enum SearchOrderBy { PriceHighToLow = "saleInfo.minBidShort desc", PriceLowToHigh = "saleInfo.minBidShort asc", MaxPriceHighToLow = "saleInfo.maxBidShort desc", MaxPriceLowToHigh = "saleInfo.maxBidShort asc", BidPriceHighToLow = "saleInfo.currentBidShort desc", BidPriceLowToHigh = "saleInfo.currentBidShort asc", RarityHighToLow = "metadata.rarity.rank desc", RarityLowToHigh = "metadata.rarity.rank asc", NonceHighToLow = "nonce desc", NonceLowToHigh = "nonce asc", RecentListed = "saleInfo.timestamp desc", OldestListed = "saleInfo.timestamp asc", EndingLate = "saleInfo.deadline desc", EndingSoon = "saleInfo.deadline asc" } export declare enum DropsOderBy { EndingLate = "startTime desc", EndingSoon = "startTime asc" } export declare enum SuggestOrderBy { TotalVolumeHighToLow = "statistics/tradeData/totalEgldVolume desc", FollowersHighToLow = "statistics/other/followCount desc", IsVerifiedTrueToFalse = "isVerified desc", HasImageTrueToFalse = "profile desc", HasBannerTrueToFalse = "banner desc" } export declare enum CollectionsOrderBy { WeekVolumeHighToLow = "statistics.tradeData.weekEgldVolume desc", WeekVolumeLowToHigh = "statistics.tradeData.weekEgldVolume asc", DailyVolumeHighToLow = "statistics.tradeData.dayEgldVolume desc", DailyVolumeLowToHigh = "statistics.tradeData.dayEgldVolume asc", TotalVolumeHighToLow = "statistics.tradeData.totalEgldVolume desc", TotalVolumeLowToHigh = "statistics.tradeData.totalEgldVolume asc", AvgVolumePriceHighToLow = "statistics.tradeData.averageEgldPrice desc", AvgVolumePriceLowToHigh = "statistics.tradeData.averageEgldPrice asc", ATHHighToLow = "statistics.tradeData.athEgldPrice desc", ATHLowToHigh = "statistics.tradeData.athEgldPrice asc", TotalTradesHighToLow = "statistics.tradeData.totalTrades desc", TotalTradesLowToHigh = "statistics.tradeData.totalTrades asc", SupplyHighToLow = "statistics.other.nftCount desc", SupplyLowToHigh = "statistics.other.nftCount asc", FollowersHighToLow = "statistics.other.followCount desc", FollowersLowToHigh = "statistics.other.followCount asc" } export declare enum GlobalOfferOrderBy { PriceHighToLow = "priceShort desc", PriceLowToHigh = "priceShort asc", OfferIdHighToLow = "offerIddesc", OfferIdLowToHigh = "offerId asc", RecentListed = "timestamp desc", OldestListed = "timestamp asc" } export declare enum CollectionsFieldsToSelect { Profile = "profile", Description = "description", Creator = "creator", Owner = "owner", Socials = "socials", Type = "type", HasStaking = "hasStaking", Name = "name", Banner = "banner", IsVerified = "isVerified", IsMintable = "isMintable", Statistics = "statistics", Collection = "collection" } export declare enum GlobalOfferFieldsToSelect { Attributes = "attributes", Collection = "collection", Marketplace = "marketplace", PaymentToken = "paymentToken", LongPrice = "price", ShortPrice = "priceShort" } export interface Filter { dataType?: string[]; identifier?: string[]; collection?: string[]; mintToken?: string[]; type?: string[]; nonce?: number[]; onSale?: boolean; owner?: string[]; currentOwner?: string[]; saleInfo?: { seller?: string[]; paymentToken?: string[]; marketplace?: string[]; auctionType?: string[]; }; range?: RangeFilter[]; metadata?: { attributes?: NftMetadataAttributes[]; }; wasProcessed?: boolean; cp_staked?: boolean; activeAuction?: boolean; customFilter?: string; verifiedOnly?: boolean; } export interface NftMetadataAttributes { trait_type: string; value: string; } export interface SearchNFTs { name?: string; filters: Filter; applyNftExtraDetails?: boolean; select?: string[]; strictSelect?: boolean; orderBy?: string[]; top?: number; skip?: number; includeCount?: boolean; } export declare enum AuctionTypes { FixedPrice = "FixedPrice", Auctions = "Auctions", All = "All", AllListed = "AllListed" } export interface GetNFTsArgs { /** Listed by different users */ listedBy?: string[]; /** Owned by different users */ ownedBy?: string[]; identifiers?: string[]; auctionType: AuctionTypes; /** If set, will return only NFTs from the specified collections */ collections?: string[]; /** If set, will return only NFTs from verified collections */ onlyVerified?: boolean; /** If true, will return only NFTs that are on sale */ onlyOnSale?: boolean; /** If true, will return only NFTs that are active, deadline not expired */ activeAuctions?: boolean; /** If true the extra details of an NFT will be appended to each NFT, such as collection size and owners name */ applyNftExtraDetails?: boolean; /** If set, will return only NFTs with a price in the specified range */ priceRange?: { min: number; max: number; }; /** If set, will return only NFTs listed in the specified tokens */ listedInToken?: string[]; /** If set, will return only NFTs with a rank in the specified range */ rankRange?: { min: number; max: number; }; /** If set, will return only NFTs with a cantina level in the specified range */ cantinaLevelRange?: { min: number; max: number; }; /** If set, will return the total count of the NFTs, recommended to be set true only for the first call, then false for the next pages */ includeCount?: boolean; /** If set, will apply the extra manual filters on top of the main payload */ extraSearch?: string[]; /** If set, will return only NFTs with a name that contains the specified string */ searchName?: string; /** The number of results to return */ top?: number; /** The order by to use */ skip?: number; /** Document type */ dataType?: string[]; /** The nonces of the NFTs */ nonces?: number[]; /** If set, will return only NFTs that are staked */ isStaked?: boolean; /** The order of the results based on a field */ orderBy?: SearchOrderBy[]; /** If set, will return only the specified fields */ onlySelectFields?: FieldsToSelect[]; /** If set, will return only NFTs listed in the specified marketplaces */ listedOnlyOn?: Marketplace[]; /** If set, will return only NFTs with the specified attributes */ attributes?: MetadataAttribute[]; /** If set, will return only the selected fields */ strictSelect?: boolean; name?: string; } export interface GETDropsArgs { name?: string; /** If set, will return only NFTs from the specified collections */ collections?: string[]; /** If set, will return only NFTs from verified collections */ onlyVerified?: boolean; /** If set, will return only NFTs listed in the specified tokens */ listedInToken?: string[]; /** If set, will return only NFTs with a cantina level in the specified range */ timeRange?: { min: number; max: number; }; /** If set, will return the total count of the NFTs, recommended to be set true only for the first call, then false for the next pages */ includeCount?: boolean; /** The number of results to return */ top?: number; /** The order by to use */ skip?: number; /** The order of the results based on a field */ orderBy?: DropsOderBy[]; /** If set, will return only the specified fields */ onlySelectFields?: FieldsToSelect[]; } export interface SuggestNFTsArgs { /** If set, will return only collections or users with a name that contains the specified string */ name: string; /** The number of results to return */ top?: number; /** The order by to use */ skip?: number; /** The order of the results based on a field */ orderBy?: SuggestOrderBy[]; } export interface SearchNFTsResponse { /** The total count of the results for the specific query */ count?: number; /** The results for the current page */ resources: NftData[]; /** The payload to use to get the next page */ getNextPagePayload: GetNFTsArgs; /** If there are more results to fetch */ hasMoreResults: boolean; } export interface GetDropsResponse { /** The total count of the results for the specific query */ count?: number; /** The results for the current page */ resources: GetCollectionMintInfo[]; /** The payload to use to get the next page */ getNextPagePayload: GETDropsArgs; /** If there are more results to fetch */ hasMoreResults: boolean; } export interface OfferFilters { isActive?: boolean[]; identifier?: string[]; collection?: string[]; owner?: string[]; nftOwner?: string[]; marketplace?: Marketplace[]; range?: { min: number; max: number; field: string; }[]; } export interface GetOffersArgs { select?: string[]; strictSelect?: boolean; orderBy?: string[]; top?: number; skip?: number; includeCount?: boolean; filters?: OfferFilters; } export interface GetOffersResponse { count?: number; resources: OfferBody[]; hasMoreResults: boolean; } export type ActivityData = { collection: string; identifier: string; price: number; paymentToken: string; scId: number; usdValue: number; egldValue: number; nftInfo: Pick<NftData, 'identifier' | 'collection' | 'name' | 'metadata' | 'url' | 'wasProcessed' | 'media'>; collectionInfo: ShortCollectionInfo; }; export type ShortCollectionInfo = Pick<ICollectionProfile, 'name' | 'isVerified' | 'isVisible' | 'profile' | 'description'> & { collectionSize: number; holderCount: number; followCount: number; }; export type TradingActivity = { txHash: string; eventIdentifier: string; timestamp: number; activityType: NftActivityType; source: string; from: Owner; to: Owner; activityData: ActivityData; }; export interface GetCollectionsArgs { /** The collections to fetch the profile */ collections?: string[]; /** If true, will return only NFTs that are mintable */ onlyMintable?: boolean; /** The number of results to return */ top?: number; /** The order by to use */ skip?: number; /** The order of the results based on a field */ orderBy?: CollectionsOrderBy; /** If set, will return only the specified fields */ onlySelectFields?: CollectionsFieldsToSelect[]; } export interface GetGlobalOffersArgs { /** The collections to fetch the profile */ collections?: string[]; /** The number of results to return */ top?: number; /** The order by to use */ skip?: number; /** The order of the results based on a field */ orderBy?: GlobalOfferOrderBy[]; /** If set, will return only the offers with required attributes */ withAttributes?: boolean; /** If set, will return only the specified fields */ onlySelectFields?: GlobalOfferFieldsToSelect[]; onlyActive?: boolean; offerIds?: number[]; ownedBy?: string[]; listedOnlyOn?: Marketplace[]; priceRange?: RangeFilter; attributes?: MetadataAttribute[]; } export interface CollectionsNFTsResponse { /** The results count for the current page */ resultsCount: number; /** The results for the current page */ results: ICollectionProfile[]; /** If the results are empty */ empty: boolean; /** The payload to use to get the next page */ getNextPagePayload: GetCollectionsArgs; /** If there are more results to fetch */ hasMoreResults: boolean; } export interface SuggestResults { count: number; hasMoreResults: boolean; resources: ResultsBody; } export interface ResultsBody { collections: (ICollectionProfile & { floorPrice: number; })[]; users: IUserProfileSearch[]; nft: NftData[]; } export interface OtherStatistics { nftCount: number; followCount: number; holdersCount?: number; } export interface TradeData { dayEgldVolume: number; weekEgldVolume: number; totalEgldVolume: number; averageEgldPrice: number; athEgldPrice: number; athTxHash: string; totalTrades: number; } export interface MintStatistics { totalMintEgldVolume: number; weekMintEgldVolume: number; dayMintEgldVolume: number; } export interface CollectionVolume { Day: string; DR_Trades: number; DR_Volume: number; DR_VolumeUSD: number; DR_Buyers: number; DR_Sellers: number; DR_FeesPaid: number; DR_FeesPaidUSD: number; DR_RoyaltiesPaid: number; DR_RoyaltiesPaidUSD: number; FM_Trades: number; FM_Volume: number; FM_VolumeUSD: number; FM_Buyers: number; FM_Sellers: number; FM_FeesPaid: number; FM_FeesPaidUSD: number; FM_RoyaltiesPaid: number; FM_RoyaltiesPaidUSD: number; KG_Trades: number; KG_Volume: number; KG_VolumeUSD: number; KG_Buyers: number; KG_Sellers: number; KG_FeesPaid: number; KG_FeesPaidUSD: number; KG_RoyaltiesPaid: number; KG_RoyaltiesPaidUSD: number; Total_Trades: number; Total_Volume: number; Total_VolumeUSD: number; Total_Buyers: number; Total_Sellers: number; Total_FeesPaid: number; Total_FeesPaidUSD: number; Total_RoyaltiesPaid: number; Total_RoyaltiesPaidUSD: number; XO_Trades: number; XO_Volume: number; XO_VolumeUSD: number; XO_Buyers: number; XO_Sellers: number; XO_FeesPaid: number; XO_FeesPaidUSD: number; XO_RoyaltiesPaid: number; XO_RoyaltiesPaidUSD: number; } export interface FloorPriceHistory { Day: string; FloorPrice: number; AveragePrice: number; } export type FungibleAssets = { id?: string; identifier: string; collection?: string; dataType?: string; decimals: number; name: string; type: string; category: string[]; svgUrl: string; pngUrl: string; ticker: string; usdPrice?: number; isAshSupported: boolean; _ts?: number; }; export type FungibleAssetsMap = { [key: string]: FungibleAssets; }; export declare enum AssetCategory { ALL = "all", Trade = "trade", P2P = "p2p", Staking = "staking", Minting = "minting" } export type ISingleHolder = { address: string; username?: string; count: number; weight: number; }; export type IOwners = { totalSupply: number; onMarket: HoldedDetails; staked: HoldedDetails; otherSCs: HoldedDetails; burnWallet: HoldedDetails; uniqueHolders: HoldedDetails; holded: AvgHolder; walletDetails: ISingleHolder[]; }; export type HoldedDetails = { count: number; weight: number; }; export interface AvgHolder extends HoldedDetails { avgPerHodler: number; } export type CollectionsSummary = { data: CollectionsSummaryItem[]; count: number; }; export type CollectionsSummaryItem = { Collection: string; TotalVolume: number; TotalTrades: number; DailyVolume: number | null; Last2DaysVolume: number | null; DailyTrades: number | null; Last2DaysTrades: number | null; WeekTrades: number; LastWeekTrades: number | null; WeekVolume: number; LastWeekVolume: number | null; WeeklyTradesMargin: number | null; DailyTradesMargin: number | null; WeeklyVolumeMargin: number | null; DailyVolumeEgldMargin: number | null; CollectionAthTrade: number; CollectionAthTxHash: string; Name: string; AthHash: string; Profile: string; Banner: string; isVerified: boolean; FloorPrice: number; }; export declare enum CollectionsSummaryFilter { TotalVolume = "TotalVolume", TotalTrades = "TotalTrades", DailyVolume = "DailyVolume", Last2DaysVolume = "Last2DaysVolume", DailyTrades = "DailyTrades", Last2DaysTrades = "Last2DaysTrades", WeekTrades = "WeekTrades", LastWeekTrades = "LastWeekTrades", WeekVolume = "WeekVolume", LastWeekVolume = "LastWeekVolume", WeeklyTradesMargin = "WeeklyTradesMargin", DailyTradesMargin = "DailyTradesMargin", WeeklyVolumeMargin = "WeeklyVolumeMargin", DailyVolumeEgldMargin = "DailyVolumeEgldMargin", CollectionAthTrade = "CollectionAthTrade" } export type GlobalOffersResult = { resources: GlobalOffers[]; hasMoreResults: boolean; lastSkip: number; getNextPagePayload?: GetGlobalOffersArgs; }; export type GlobalOffers = { offerId: number; collection: string; quantity: number; paymentToken: string; price: string; priceShort: number; owner: Owner; usdValue: string; marketplace: string; timestamp: number; attributes: MetadataAttribute[]; collectionInfo?: CollectionInfo; isActive: boolean; floorPrice: number; floorPriceMargin: number | null; }; export type GlobalOfferOwner = { address: string; userName: string; profile: string; }; export type CollectionRanksExport = Partial<Pick<NftData, 'identifier' | 'name'>> & { rank: number; }; export type GetCollectionMintInfo = { collection: string; contractAddress: string; collectionTag: string; startTime: number; prices?: StagePrice[]; nftTransferLimited: boolean; hasBotProtection: boolean; kycRequired: boolean; totalNftMinted: number; collectionSize: number; globalWalletLimit: number; cid: string; hasMetadata: boolean; mediaType: string; mintStages: MintStage[]; collectionInfo: CollectionInfo; creatorInfo: CreatorProfile; isExcludedFromMint: boolean; }; export type MintStage = { name: string; startTime: number; endTime: number; mintCount: number; mintLimit: number; mintEnabled: boolean; isWhitelist: boolean; walletLimit: number; maxBuyable?: number; walletLimitReached?: boolean; userMintsPerStage?: number; prices?: StagePrice[]; isSoldOut: boolean; }; export type StagePrice = { tokenIdentifier: string; tokenNonce: string; amount: string; amountShort: number; usdValue: number; decimals: number; }; export type CollectionStatsResults = { resources: CollectionStatsDoc[]; hasMoreResults: boolean; getNextPagePayload?: GetCollectionStatsArgs; }; export type GetCollectionStatsArgs = { filters?: { collection?: string[]; verifiedOnly?: boolean; range?: RangeFilter[]; }; orderBy?: CollectionStatsOrderBy[]; select?: CollectionStatsSelectFields[]; top: number; skip: number; }; export declare enum CollectionStatsSelectFields { TradingStats = "tradingStats" } export interface RangeFilter { min?: number; max?: number; field?: string; } export declare enum CollectionStatsOrderBy { ListedCountDesc = "tradingStats.listedCount DESC", ListedCountAsc = "tradingStats.listedCount ASC", FloorPriceDesc = "tradingStats.floorPrice DESC", FloorPriceAsc = "tradingStats.floorPrice ASC", TotalVolumeDesc = "tradingStats.totalVolume DESC", TotalVolumeAsc = "tradingStats.totalVolume ASC", TotalTradesDesc = "tradingStats.totalTrades DESC", TotalTradesAsc = "tradingStats.totalTrades ASC", AllTimeHighDesc = "tradingStats.allTimeHigh.price DESC", AllTimeHighAsc = "tradingStats.allTimeHigh.price ASC", DayVolumeDesc = "tradingStats.day.volume DESC", DayVolumeAsc = "tradingStats.day.volume ASC", DayVolumeMarginDesc = "tradingStats.day.volumeMargin DESC", DayVolumeMarginAsc = "tradingStats.day.volumeMargin ASC", DayTradesDesc = "tradingStats.day.trades DESC", DayTradesAsc = "tradingStats.day.trades ASC", DayTradesMarginDesc = "tradingStats.day.tradesMargin DESC", DayTradesMarginAsc = "tradingStats.day.tradesMargin ASC", WeekVolumeDesc = "tradingStats.week.volume DESC", WeekVolumeAsc = "tradingStats.week.volume ASC", WeekVolumeMarginDesc = "tradingStats.week.volumeMargin DESC", WeekVolumeMarginAsc = "tradingStats.week.volumeMargin ASC", WeekTradesDesc = "tradingStats.week.trades DESC", WeekTradesAsc = "tradingStats.week.trades ASC", WeekTradesMarginDesc = "tradingStats.week.tradesMargin DESC", WeekTradesMarginAsc = "tradingStats.week.tradesMargin ASC", MonthVolumeDesc = "tradingStats.month.volume DESC", MonthVolumeAsc = "tradingStats.month.volume ASC", MonthVolumeMarginDesc = "tradingStats.month.volumeMargin DESC", MonthVolumeMarginAsc = "tradingStats.month.volumeMargin ASC", MonthTradesDesc = "tradingStats.month.trades DESC", MonthTradesAsc = "tradingStats.month.trades ASC", MonthTradesMarginDesc = "tradingStats.month.tradesMargin DESC", MonthTradesMarginAsc = "tradingStats.month.tradesMargin ASC", YearVolumeDesc = "tradingStats.year.volume DESC", YearVolumeAsc = "tradingStats.year.volume ASC", YearVolumeMarginDesc = "tradingStats.year.volumeMargin DESC", YearVolumeMarginAsc = "tradingStats.year.volumeMargin ASC", YearTradesDesc = "tradingStats.year.trades DESC", YearTradesAsc = "tradingStats.year.trades ASC", YearTradesMarginDesc = "tradingStats.year.tradesMargin DESC", YearTradesMarginAsc = "tradingStats.year.tradesMargin ASC" } export type CollectionStatsDoc = { collection: string; listedCount: number; floorPrice: number; tradingStats: { totalVolume: number; totalTrades: number; allTimeHigh: { price: number; timestamp: number; txHash: string; identifier: string; }; day: TradingDataSummary; week: TradingDataSummary; month: TradingDataSummary; quarter: TradingDataSummary; halfYear: TradingDataSummary; year: TradingDataSummary; }; collectionInfo: CollectionInfo; id: string; }; export type TradingDataSummary = { volume: number; volumeMargin: number; trades: number; tradesMargin: number; minPrice?: number; maxPrice?: number; averagePrice?: number; }; export interface CollectionListings { density: Density[]; listings: Pick<NftData, 'name' | 'collection' | 'metadata' | 'saleInfo' | 'wasProcessed' | 'media' | 'url' | 'identifier' | 'id'>[]; } export interface Density { key: string; intervalName: string; intervalCount: number; totalCount: number; } export interface Listing { identifier: string; name: string; collection: string; metadata: Pick<NFTMetadata, 'rarity'>; url: string; media: Media; wasProcessed: boolean; saleInfo: Pick<SaleInfo, 'minBidShort'>; } //# sourceMappingURL=collection.d.ts.map