opensea-js
Version:
TypeScript SDK for the OpenSea marketplace helps developers build new experiences using NFTs and our marketplace data
140 lines (139 loc) • 4.29 kB
TypeScript
import { BasicOrderParametersStruct } from "@opensea/seaport-js/lib/typechain-types/seaport/contracts/Seaport";
import { AdvancedOrder, OrderWithCounter } from "@opensea/seaport-js/lib/types";
import { OpenSeaAccount, OrderSide } from "../types";
type OrderProtocolToProtocolData = {
seaport: OrderWithCounter;
};
export type OrderProtocol = keyof OrderProtocolToProtocolData;
export type ProtocolData = OrderProtocolToProtocolData[keyof OrderProtocolToProtocolData];
export declare enum OrderType {
BASIC = "basic",
ENGLISH = "english",
CRITERIA = "criteria"
}
type OrderFee = {
account: OpenSeaAccount;
basisPoints: string;
};
/**
* The latest OpenSea Order schema.
*/
export type OrderV2 = {
/** The date the order was created. */
createdDate: string;
/** The date the order was closed. */
closingDate: string | null;
/** The date the order was listed. Order can be created before the listing time. */
listingTime: number;
/** The date the order expires. */
expirationTime: number;
/** The hash of the order. */
orderHash: string | null;
/** The account that created the order. */
maker: OpenSeaAccount;
/** The account that filled the order. */
taker: OpenSeaAccount | null;
/** The protocol data for the order. Only 'seaport' is currently supported. */
protocolData: ProtocolData;
/** The contract address of the protocol. */
protocolAddress: string;
/** The current price of the order. */
currentPrice: bigint;
/** The maker fees for the order. */
makerFees: OrderFee[];
/** The taker fees for the order. */
takerFees: OrderFee[];
/** The side of the order. Listing/Offer */
side: OrderSide;
/** The type of the order. Basic/English/Criteria */
orderType: OrderType;
/** Whether or not the maker has cancelled the order. */
cancelled: boolean;
/** Whether or not the order is finalized. */
finalized: boolean;
/** Whether or not the order is marked invalid and therefore not fillable. */
markedInvalid: boolean;
/** The signature the order is signed with. */
clientSignature: string | null;
/** Amount of items left in the order which can be taken. */
remainingQuantity: number;
};
export type FulfillmentDataResponse = {
protocol: string;
fulfillment_data: FulfillmentData;
};
type FulfillmentData = {
transaction: Transaction;
orders: ProtocolData[];
};
type Transaction = {
function: string;
chain: number;
to: string;
value: number;
input_data: {
orders: OrderWithCounter[] | AdvancedOrder[] | BasicOrderParametersStruct[];
};
};
type OpenOrderOrderingOption = "created_date" | "eth_price";
type OrderByDirection = "asc" | "desc";
export type OrderAPIOptions = {
protocol?: OrderProtocol;
protocolAddress?: string;
side: OrderSide;
};
export type OrdersQueryOptions = OrderAPIOptions & {
limit?: number;
cursor?: string;
next?: string;
paymentTokenAddress?: string;
maker?: string;
taker?: string;
owner?: string;
listedAfter?: number | string;
listedBefore?: number | string;
tokenId?: string;
tokenIds?: string[];
assetContractAddress?: string;
orderBy?: OpenOrderOrderingOption;
orderDirection?: OrderByDirection;
onlyEnglish?: boolean;
};
export type SerializedOrderV2 = {
created_date: string;
closing_date: string | null;
listing_time: number;
expiration_time: number;
order_hash: string | null;
maker: unknown;
taker: unknown | null;
protocol_data: ProtocolData;
protocol_address: string;
current_price: string;
maker_fees: {
account: unknown;
basis_points: string;
}[];
taker_fees: {
account: unknown;
basis_points: string;
}[];
side: OrderSide;
order_type: OrderType;
cancelled: boolean;
finalized: boolean;
marked_invalid: boolean;
client_signature: string | null;
remaining_quantity: number;
};
export type QueryCursors = {
next: string | null;
previous: string | null;
};
export type OrdersQueryResponse = QueryCursors & {
orders: SerializedOrderV2[];
};
export type OrdersPostQueryResponse = {
order: SerializedOrderV2;
};
export {};