UNPKG

@georgeroman/wyvern-v2-sdk

Version:

Wyvern V2 SDK

112 lines 4.11 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const constants_1 = require("@ethersproject/constants"); const contracts_1 = require("@ethersproject/contracts"); const types_1 = require("../types"); const Exchange_json_1 = __importDefault(require("../abis/Exchange.json")); class WyvernHelper { static async match(relayer, buyOrder, sellOrder) { if (buyOrder.side !== types_1.Side.BUY) { throw new Error("Invalid buy order side"); } if (sellOrder.side !== types_1.Side.SELL) { throw new Error("Invalid sell order side"); } if (buyOrder.exchange.toLowerCase() !== sellOrder.exchange.toLowerCase()) { throw new Error("Mismatching exchange"); } const addrs = [ buyOrder.exchange, buyOrder.maker, buyOrder.taker, buyOrder.feeRecipient, buyOrder.target, buyOrder.staticTarget, buyOrder.paymentToken, sellOrder.exchange, sellOrder.maker, sellOrder.taker, sellOrder.feeRecipient, sellOrder.target, sellOrder.staticTarget, sellOrder.paymentToken, ]; const uints = [ buyOrder.makerRelayerFee, buyOrder.takerRelayerFee, 0, 0, buyOrder.basePrice, buyOrder.extra, buyOrder.listingTime, buyOrder.expirationTime, buyOrder.salt, sellOrder.makerRelayerFee, sellOrder.takerRelayerFee, 0, 0, sellOrder.basePrice, sellOrder.extra, sellOrder.listingTime, sellOrder.expirationTime, sellOrder.salt, ]; const feeMethodsSidesKindsHowToCalls = [ 1, buyOrder.side, buyOrder.saleKind, buyOrder.howToCall, 1, sellOrder.side, sellOrder.saleKind, sellOrder.howToCall, ]; return new contracts_1.Contract(buyOrder.exchange, Exchange_json_1.default) .connect(relayer) .atomicMatch_(addrs, uints, feeMethodsSidesKindsHowToCalls, buyOrder.calldata, sellOrder.calldata, buyOrder.replacementPattern, sellOrder.replacementPattern, buyOrder.staticExtradata, sellOrder.staticExtradata, [buyOrder.v, sellOrder.v], [ buyOrder.r, buyOrder.s, sellOrder.r, sellOrder.s, "0x0000000000000000000000009bf09d9a82f7343222712105893183617051B976", ], { value: sellOrder.paymentToken === constants_1.AddressZero ? buyOrder.basePrice : 0, }); } static async cancel(relayer, order) { const makerAddress = order.maker; const relayerAddress = await relayer.getAddress(); if (makerAddress.toLowerCase() !== relayerAddress.toLowerCase()) { throw new Error("Relayer must match maker"); } const addrs = [ order.exchange, order.maker, order.taker, order.feeRecipient, order.target, order.staticTarget, order.paymentToken, ]; const uints = [ order.makerRelayerFee, order.takerRelayerFee, 0, 0, order.basePrice, order.extra, order.listingTime, order.expirationTime, order.salt, ]; return new contracts_1.Contract(order.exchange, Exchange_json_1.default) .connect(relayer) .cancelOrder_(addrs, uints, 1, // feeMethod is always 1 (SplitFee) order.side, order.saleKind, order.howToCall, order.calldata, order.replacementPattern, order.staticExtradata, order.v, order.r, order.s); } } exports.default = WyvernHelper; //# sourceMappingURL=wyvern.js.map