New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@georgeroman/wyvern-v2-sdk

Package Overview
Dependencies
Maintainers
1
Versions
31
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@georgeroman/wyvern-v2-sdk - npm Package Compare versions

Comparing version 0.0.11 to 0.0.12

dist/order-helper.d.ts

2

dist/builders/erc721/single-item.d.ts

@@ -17,2 +17,4 @@ import { BigNumberish } from "@ethersproject/bignumber";

export default class SingleItemERC721OrderBuilder {
static isSell(order: Order, tokenId: string): boolean;
static isBuy(order: Order, tokenId: string): boolean;
static sell(params: RequiredOrderParams): Order;

@@ -19,0 +21,0 @@ static buy(params: RequiredOrderParams): Order;

@@ -15,2 +15,24 @@ "use strict";

class SingleItemERC721OrderBuilder {
static isSell(order, tokenId) {
// Build a mock order that is for sure well-formatted
const built = this.sell({
...order,
tokenId,
fee: 0,
});
// Make sure the built order's fields match the given order
return (order.calldata === built.calldata &&
order.replacementPattern === built.replacementPattern);
}
static isBuy(order, tokenId) {
// Build a mock order that is for sure well-formatted
const built = this.buy({
...order,
tokenId,
fee: 0,
});
// Make sure the built order's fields match the given order
return (order.calldata === built.calldata &&
order.replacementPattern === built.replacementPattern);
}
static sell(params) {

@@ -17,0 +39,0 @@ return {

3

dist/index.d.ts
import Approver from "./approver";
import OrderHelper from "./order-helper";
import Wyvern from "./wyvern";

@@ -10,3 +11,3 @@ import { Order } from "./types";

};
export { Approver, Builders, Order, Wyvern };
export { Approver, Builders, Order, OrderHelper, Wyvern };
//# sourceMappingURL=index.d.ts.map

@@ -6,5 +6,7 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
exports.Wyvern = exports.Builders = exports.Approver = void 0;
exports.Wyvern = exports.OrderHelper = exports.Builders = exports.Approver = void 0;
const approver_1 = __importDefault(require("./approver"));
exports.Approver = approver_1.default;
const order_helper_1 = __importDefault(require("./order-helper"));
exports.OrderHelper = order_helper_1.default;
const wyvern_1 = __importDefault(require("./wyvern"));

@@ -11,0 +13,0 @@ exports.Wyvern = wyvern_1.default;

import { Signer } from "@ethersproject/abstract-signer";
import { Order } from "./types";
export default class Wyvern {
normalizeOrder(order: Order): Order;
encodeOrder(order: Order): string;
decodeOrder(order: string): Order;
verifyOrderSignature(order: Order): boolean;
signOrder(signer: Signer, order: Order): Promise<Order>;
matchOrders(relayer: Signer, buyOrder: Order, sellOrder: Order): Promise<any>;
private toRawWyvernOrder;
static match(relayer: Signer, buyOrder: Order, sellOrder: Order): Promise<any>;
}
//# sourceMappingURL=wyvern.d.ts.map

@@ -6,136 +6,9 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
const abi_1 = require("@ethersproject/abi");
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 wallet_1 = require("@ethersproject/wallet");
const types_1 = require("./types");
const Exchange_json_1 = __importDefault(require("./abis/Exchange.json"));
const WYVERN_ORDER_FIELDS = [
"address",
"address",
"address",
"uint",
"uint",
"uint",
"uint",
"address",
"uint8",
"uint8",
"uint8",
"address",
"uint8",
"bytes",
"bytes",
"address",
"bytes",
"address",
"uint",
"uint",
"uint",
"uint",
"uint", // salt
];
const SIGNATURE_FIELDS = [
"uint8",
"bytes32",
"bytes32", // s
];
class Wyvern {
// --------------- Public ---------------
normalizeOrder(order) {
// Convert all strings to lowercase and all bignumbers to strings
return {
exchange: order.exchange.toLowerCase(),
maker: order.maker.toLowerCase(),
taker: order.taker.toLowerCase(),
makerRelayerFee: order.makerRelayerFee.toString(),
takerRelayerFee: order.takerRelayerFee.toString(),
feeRecipient: order.feeRecipient.toLowerCase(),
side: order.side,
saleKind: order.saleKind,
target: order.target.toLowerCase(),
howToCall: order.howToCall,
calldata: order.calldata,
replacementPattern: order.replacementPattern,
staticTarget: order.staticTarget.toLowerCase(),
staticExtradata: order.staticExtradata,
paymentToken: order.paymentToken.toLowerCase(),
basePrice: order.basePrice.toString(),
extra: order.extra.toString(),
listingTime: order.listingTime.toString(),
expirationTime: order.expirationTime.toString(),
salt: order.salt.toString(),
v: order.v,
r: order.r,
s: order.s,
};
}
encodeOrder(order) {
return abi_1.defaultAbiCoder.encode([
// Skip `makerProtocolFee`, `takerProtocolFee` and `feeMethod`
...WYVERN_ORDER_FIELDS.filter((_, index) => ![5, 6, 8].includes(index)),
...SIGNATURE_FIELDS,
], [
// Skip `makerProtocolFee`, `takerProtocolFee` and `feeMethod`
...this.toRawWyvernOrder(order).filter((_, index) => ![5, 6, 8].includes(index)),
order.v,
order.r,
order.s,
]);
}
decodeOrder(order) {
const result = abi_1.defaultAbiCoder.decode([
// Remove `makerProtocolFee`, `takerProtocolFee` and `feeMethod`
...WYVERN_ORDER_FIELDS.filter((_, index) => ![5, 6, 8].includes(index)),
...SIGNATURE_FIELDS,
], order);
return {
exchange: result[0],
maker: result[1],
taker: result[2],
makerRelayerFee: result[3],
takerRelayerFee: result[4],
feeRecipient: result[5],
side: result[6],
saleKind: result[7],
target: result[8],
howToCall: result[9],
calldata: result[10],
replacementPattern: result[11],
staticTarget: result[12],
staticExtradata: result[13],
paymentToken: result[14],
basePrice: result[15],
extra: result[16],
listingTime: result[17],
expirationTime: result[18],
salt: result[19],
v: result[20],
r: result[21],
s: result[22],
};
}
verifyOrderSignature(order) {
const rawWyvernOrderHash = (0, solidity_1.keccak256)(WYVERN_ORDER_FIELDS, this.toRawWyvernOrder(order));
const signerAddress = (0, wallet_1.verifyMessage)((0, bytes_1.arrayify)(rawWyvernOrderHash), {
v: order.v,
r: order.r,
s: order.s,
});
return signerAddress.toLowerCase() === order.maker.toLowerCase();
}
async signOrder(signer, order) {
const rawWyvernOrderHash = (0, solidity_1.keccak256)(WYVERN_ORDER_FIELDS, this.toRawWyvernOrder(order));
// Sign the order hash and populate the signature fields
await signer
.signMessage((0, bytes_1.arrayify)(rawWyvernOrderHash))
.then(bytes_1.splitSignature)
.then(({ v, r, s }) => {
order = { ...order, v, r, s };
});
return order;
}
async matchOrders(relayer, buyOrder, sellOrder) {
static async match(relayer, buyOrder, sellOrder) {
if (buyOrder.side !== types_1.Side.BUY) {

@@ -208,33 +81,4 @@ throw new Error("Invalid buy order side");

}
// --------------- Private ---------------
toRawWyvernOrder(order) {
// Construct raw order including all fields needed by Wyvern
return [
order.exchange,
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,
order.extra,
order.listingTime,
order.expirationTime,
order.salt,
];
}
}
exports.default = Wyvern;
//# sourceMappingURL=wyvern.js.map
{
"name": "@georgeroman/wyvern-v2-sdk",
"version": "0.0.11",
"version": "0.0.12",
"description": "Wyvern V2 SDK",

@@ -5,0 +5,0 @@ "keywords": [

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc