@georgeroman/wyvern-v2-sdk
Advanced tools
@@ -7,3 +7,4 @@ import { Signer } from "@ethersproject/abstract-signer"; | ||
constructor(exchange: string); | ||
sign(signer: Signer, order: Order): Promise<Order>; | ||
match(relayer: Signer, buyOrder: Order, sellOrder: Order): Promise<any>; | ||
} |
@@ -6,4 +6,6 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const bytes_1 = require("@ethersproject/bytes"); | ||
const constants_1 = require("@ethersproject/constants"); | ||
const contracts_1 = require("@ethersproject/contracts"); | ||
const solidity_1 = require("@ethersproject/solidity"); | ||
const types_1 = require("./types"); | ||
@@ -15,2 +17,63 @@ const Exchange_json_1 = __importDefault(require("./abis/Exchange.json")); | ||
} | ||
async sign(signer, order) { | ||
// Construct raw order including all fields needed by Wyvern | ||
const rawWyvernOrder = [ | ||
this.exchange.address, | ||
order.maker, | ||
order.taker, | ||
order.makerRelayerFee, | ||
order.takerRelayerFee, | ||
0, | ||
0, | ||
order.feeRecipient, | ||
1, | ||
order.side, | ||
order.saleKind, | ||
order.target, | ||
order.howToCall, | ||
order.calldata, | ||
order.replacementPattern, | ||
order.staticTarget, | ||
order.staticExtradata, | ||
order.paymentToken, | ||
order.basePrice, | ||
0, | ||
order.listingTime, | ||
order.expirationTime, | ||
order.salt, | ||
]; | ||
// Hash the order | ||
const rawWyvernOrderHash = (0, solidity_1.keccak256)([ | ||
"address", | ||
"address", | ||
"address", | ||
"uint", | ||
"uint", | ||
"uint", | ||
"uint", | ||
"address", | ||
"uint8", | ||
"uint8", | ||
"uint8", | ||
"address", | ||
"uint8", | ||
"bytes", | ||
"bytes", | ||
"address", | ||
"bytes", | ||
"address", | ||
"uint", | ||
"uint", | ||
"uint", | ||
"uint", | ||
"uint", | ||
], rawWyvernOrder); | ||
// Sign the order hash and populate the signature fields (which all default to 0) | ||
await signer | ||
.signMessage((0, bytes_1.arrayify)(rawWyvernOrderHash)) | ||
.then((signature) => { | ||
order = { ...order, ...(0, bytes_1.splitSignature)(signature) }; | ||
}); | ||
return order; | ||
} | ||
async match(relayer, buyOrder, sellOrder) { | ||
@@ -17,0 +80,0 @@ if (buyOrder.side !== types_1.Side.BUY) { |
{ | ||
"name": "@georgeroman/wyvern-v2-sdk", | ||
"version": "0.0.2", | ||
"version": "0.0.3", | ||
"description": "Wyvern V2 SDK", | ||
@@ -5,0 +5,0 @@ "keywords": [ |
Sorry, the diff of this file is not supported yet
75306
4.12%2489
2.64%