Offer
This page instructs you how to create, cancel and accept offer from a logged-in users Passport wallet.
Pre-requisites
- The user must be logged into your application via Passport
1. Making an offer
The system currently only supports creating a offer on a listed asset i.e an asset that is already listed for sale and has an active sell order associated with it.
To making an offer, the following properties must be specified:
- buy: The amount of tokens that will be bought for this order
- sell: The amount of tokens that will be sold for this order
- expiration_timestamp: (Optional) ExpirationTimestamp in Unix time. Note: will be rounded down to the nearest hour
- fees: (Optional) Inclusion of either maker or taker fees
For example:
const offerRequest: UnsignedOrderRequest = {
buy: {
type: "ERC721",
data: {
token_id: "2",
token_address: "0x5f0d12c93ec0a95ea01dcafbf11110bbd6d71c51"
},
amount: "1"
},
sell: {
type: "ETH",
data: {
decimals: 18
},
amount: "11000000000000"
},
expiration_timestamp: 0,
};
Performing the creating offer:
using the order
function on the IMXProvider
instance that is returned from the connectImx
function:
const offerResponst = await provider.createOrder(offerRequest);
2. Cancelling the offer
Once a user has made an offer, they can later cancel that offer.
To cancel an offer, the following properties must be specified:
- order_id: ID of the offer to be cancelled
For example:
const cancelOfferRequest: GetSignableCancelOrderRequest = {
order_id: '12345',
};
Performing the cancelling the offer:
using the cancelOrder
function on the IMXProvider
instance that is returned from the connectImx
function:
const cancelOfferResponse = await provider.cancelOrder(cancelOfferRequest);
3. Accept the offer
Seller can accept an offer and sell my NFT asset for fungible tokens / ETH.
To accepting an offer, the following properties must be specified:
- expiration_timestamp: (Optional) ExpirationTimestamp in Unix
- fees: Inclusion of either maker or taker fees
- order_id: The ID of the offer
- user: Ethereum address of the submitting user
For example:
const acceptOfferRequest: GetSignableTradeRequest = {
order_id: '12345',
expiration_timestamp: 0
user: "0x1234"
};
Performing the accepting the offer:
using the createTrade
function on the IMXProvider
instance that is returned from the connectImx
function:
const acceptOfferResponse = await provider.createTrade(acceptOfferRequest);