未処理のオファーがある場合、ユーザーは「オファーを受け入れる」ことで、コレクティブルをオファーしたユーザーに販売できます。

ListCollectibleOffersWithHighestPricedOfferFirstを使って、未処理のオファーを取得できます:

IMarketplaceReader reader = new MarketplaceReader(chain);
ListCollectibleListingsReturn collectiblesResponse = await reader.ListCollectibleOffersWithHighestPricedOfferFirst(collectibleContractAddress, optionalCollectiblesFilter);

または、ユーザーが売却可能なすべてのオファーを取得したい場合は、ListAllSellableOffersヘルパーメソッド(または下記のCollectiblesFilterを指定)を利用できます:

IMarketplaceReader reader = new MarketplaceReader(chain);
CollectibleOrder[] sellableOffers = await reader.ListAllSellableOffers(userAddress, collectionContractAddress, optionalCollectiblesFilter);

このメソッドは、ユーザーのアドレス(売り手のアドレス)をCollectiblesFilterオブジェクトのinAccountsordersNotCreatedByフィルターに追加します。また、ページネーションも自動で処理され、ページがなくなるまでリクエストを続けます。大量のオファーが予想される場合は注意してご利用ください。大量のオファーがある場合は、ListCollectibleOffersWithHighestPricedOfferFirstを使い、上記のCollectiblesFilterを指定してください。

ユーザーが受け入れたいオファーと売却したいコレクティブルの数を選択したら、オファーを成立させてコレクティブルを販売できます:

ICheckout checkout = new Checkout(_wallet, _chain);
Step[] steps = await checkout.GenerateSellTransaction(selectedOrders, amount);
TransactionReturn result = await steps.SubmitAsTransactions(_wallet, _chain);
if (result is SuccessfulTransactionReturn successTransaction) {
    // Handle success case
}else {
    // Handle fail case
}

Boilerplate Factoryを使って、このプロセスをすぐに始めることもできます

            BoilerplateFactory.OpenSellOfferPanel(Transform parent, ICheckout checkout, CollectibleOrder item, Action onClose = null)