# Reservoir Wyvern V2 SDK

This repository contains an SDK for interacting with instances of Wyvern V2 contracts (including OpenSea).

### Build and test

This package doesn't have tests on its own, but it relies on the `core` package for testing (which makes intensive use of this SDK for easily interacting with Wyvern V2 instances during tests).

### Usage

```typescript
import { Builders, Helpers, Order } from "@georgeroman/wyvern-v2-sdk";

// Create an unsigned sell order
let sellOrder: Order = Builders.Erc721.SingleItem.sell({
  exchange: exchange.address,
  maker: seller.address,
  target: erc721.address,
  tokenId: "0",
  paymentToken: AddressZero,
  basePrice: parseEther("1").toString(),
  fee: "250",
  feeRecipient: feeRecipient.address,
  listingTime: (Math.floor(Date.now() / 1000) - 300).toString(),
  expirationTime: "0",
  salt: "0",
});
// Sign the sell order
sellOrder = await Helpers.Order.sign(seller, sellOrder);

// Create a matching buy order for the sell order
const buyOrder: Order = Builders.Erc721.SingleItem.matchingBuy(
  buyer.address,
  sellOrder
);

// Trigger settlement
await Helpers.Wyvern.match(buyer, buyOrder, sellOrder);
```
