opensea-js 4.0.21 → 4.0.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/abi/CanonicalWETH.d.ts +2 -0
- package/lib/abi/CanonicalWETH.js +157 -0
- package/lib/abi/CanonicalWETH.js.map +1 -0
- package/lib/abi/ERC1155.d.ts +2 -0
- package/lib/abi/ERC1155.js +9 -0
- package/lib/abi/ERC1155.js.map +1 -0
- package/lib/abi/ERC1155Abi.json +2346 -0
- package/lib/abi/ERC20.d.ts +2 -0
- package/lib/abi/ERC20.js +141 -0
- package/lib/abi/ERC20.js.map +1 -0
- package/lib/abi/ERC721v3.d.ts +2 -0
- package/lib/abi/ERC721v3.js +9 -0
- package/lib/abi/ERC721v3.js.map +1 -0
- package/lib/abi/ERC721v3Abi.json +470 -0
- package/lib/abi/Proxy.d.ts +27 -0
- package/lib/abi/Proxy.js +30 -0
- package/lib/abi/Proxy.js.map +1 -0
- package/lib/abi/UniswapExchange.d.ts +2 -0
- package/lib/abi/UniswapExchange.js +9 -0
- package/lib/abi/UniswapExchange.js.map +1 -0
- package/lib/abi/UniswapExchangeAbi.json +451 -0
- package/lib/abi/UniswapFactory.d.ts +2 -0
- package/lib/abi/UniswapFactory.js +9 -0
- package/lib/abi/UniswapFactory.js.map +1 -0
- package/lib/abi/UniswapFactoryAbi.json +67 -0
- package/lib/abi/WrappedNFT.d.ts +2 -0
- package/lib/abi/WrappedNFT.js +9 -0
- package/lib/abi/WrappedNFT.js.map +1 -0
- package/lib/abi/WrappedNFTAbi.json +331 -0
- package/lib/abi/WrappedNFTFactory.d.ts +2 -0
- package/lib/abi/WrappedNFTFactory.js +9 -0
- package/lib/abi/WrappedNFTFactory.js.map +1 -0
- package/lib/abi/WrappedNFTFactoryAbi.json +250 -0
- package/lib/abi/WrappedNFTLiquidationProxy.d.ts +2 -0
- package/lib/abi/WrappedNFTLiquidationProxy.js +139 -0
- package/lib/abi/WrappedNFTLiquidationProxy.js.map +1 -0
- package/lib/api.d.ts +134 -0
- package/lib/api.js +509 -0
- package/lib/api.js.map +1 -0
- package/lib/constants.d.ts +56 -0
- package/lib/constants.js +89 -0
- package/lib/constants.js.map +1 -0
- package/lib/contracts.d.ts +12 -0
- package/lib/contracts.js +32 -0
- package/lib/contracts.js.map +1 -0
- package/lib/debugging.d.ts +22 -0
- package/lib/debugging.js +194 -0
- package/lib/debugging.js.map +1 -0
- package/lib/index.d.ts +17 -0
- package/lib/index.js +25 -0
- package/lib/index.js.map +1 -0
- package/lib/orders/privateListings.d.ts +4 -0
- package/lib/orders/privateListings.js +129 -0
- package/lib/orders/privateListings.js.map +1 -0
- package/lib/orders/schemas.d.ts +3 -0
- package/lib/orders/schemas.js +78 -0
- package/lib/orders/schemas.js.map +1 -0
- package/lib/orders/types.d.ts +99 -0
- package/lib/orders/types.js +3 -0
- package/lib/orders/types.js.map +1 -0
- package/lib/orders/utils.d.ts +23 -0
- package/lib/orders/utils.js +76 -0
- package/lib/orders/utils.js.map +1 -0
- package/lib/package.json +2 -1
- package/lib/schemas.d.ts +9 -0
- package/lib/schemas.js +50 -0
- package/lib/schemas.js.map +1 -0
- package/lib/sdk.d.ts +704 -0
- package/lib/sdk.js +3336 -0
- package/lib/sdk.js.map +1 -0
- package/lib/src/__integration_tests__/postOrder.d.ts +1 -0
- package/lib/src/__integration_tests__/postOrder.js +78 -0
- package/lib/src/__integration_tests__/postOrder.js.map +1 -0
- package/lib/src/__tests__/constants.d.ts +12 -0
- package/lib/src/__tests__/constants.js +22 -0
- package/lib/src/__tests__/constants.js.map +1 -0
- package/lib/src/api.d.ts +14 -2
- package/lib/src/api.js +74 -8
- package/lib/src/api.js.map +1 -1
- package/lib/src/constants.d.ts +1 -1
- package/lib/src/constants.js +1 -1
- package/lib/src/orders/types.d.ts +29 -1
- package/lib/src/orders/utils.d.ts +21 -1
- package/lib/src/orders/utils.js +34 -1
- package/lib/src/orders/utils.js.map +1 -1
- package/lib/src/sdk.d.ts +17 -3
- package/lib/src/sdk.js +86 -16
- package/lib/src/sdk.js.map +1 -1
- package/lib/src/types.d.ts +1 -1
- package/lib/typechain/contracts/ERC1155Abi.d.ts +436 -0
- package/lib/typechain/contracts/ERC1155Abi.js +6 -0
- package/lib/typechain/contracts/ERC1155Abi.js.map +1 -0
- package/lib/typechain/contracts/ERC721v3Abi.d.ts +76 -0
- package/lib/typechain/contracts/ERC721v3Abi.js +6 -0
- package/lib/typechain/contracts/ERC721v3Abi.js.map +1 -0
- package/lib/typechain/contracts/UniswapExchangeAbi.d.ts +132 -0
- package/lib/typechain/contracts/UniswapExchangeAbi.js +6 -0
- package/lib/typechain/contracts/UniswapExchangeAbi.js.map +1 -0
- package/lib/typechain/contracts/UniswapFactoryAbi.d.ts +37 -0
- package/lib/typechain/contracts/UniswapFactoryAbi.js +6 -0
- package/lib/typechain/contracts/UniswapFactoryAbi.js.map +1 -0
- package/lib/typechain/contracts/WrappedNFTAbi.d.ts +80 -0
- package/lib/typechain/contracts/WrappedNFTAbi.js +6 -0
- package/lib/typechain/contracts/WrappedNFTAbi.js.map +1 -0
- package/lib/typechain/contracts/WrappedNFTFactoryAbi.d.ts +57 -0
- package/lib/typechain/contracts/WrappedNFTFactoryAbi.js +6 -0
- package/lib/typechain/contracts/WrappedNFTFactoryAbi.js.map +1 -0
- package/lib/typechain/contracts/types.d.ts +54 -0
- package/lib/typechain/contracts/types.js +3 -0
- package/lib/typechain/contracts/types.js.map +1 -0
- package/lib/types.d.ts +516 -0
- package/lib/types.js +151 -0
- package/lib/types.js.map +1 -0
- package/lib/utils/index.d.ts +2 -0
- package/lib/utils/index.js +15 -0
- package/lib/utils/index.js.map +1 -0
- package/lib/utils/schema.d.ts +49 -0
- package/lib/utils/schema.js +238 -0
- package/lib/utils/schema.js.map +1 -0
- package/lib/utils/utils.d.ts +203 -0
- package/lib/utils/utils.js +1113 -0
- package/lib/utils/utils.js.map +1 -0
- package/package.json +2 -1
package/lib/constants.js
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a, _b, _c;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.DEFAULT_ZONE_BY_NETWORK = exports.WETH_ADDRESS_BY_NETWORK = exports.CONDUIT_KEYS_TO_CONDUIT = exports.CROSS_CHAIN_DEFAULT_CONDUIT_KEY = exports.MERKLE_VALIDATOR_RINKEBY = exports.MERKLE_VALIDATOR_MAINNET = exports.EIP_712_WYVERN_DOMAIN_VERSION = exports.EIP_712_WYVERN_DOMAIN_NAME = exports.EIP_712_ORDER_TYPES = exports.API_PATH = exports.ORDERBOOK_PATH = exports.MAINNET_PROVIDER_URL = exports.RPC_URL_PATH = exports.API_BASE_TESTNET = exports.API_BASE_MAINNET = exports.ORDER_MATCHING_LATENCY_SECONDS = exports.MAX_EXPIRATION_MONTHS = exports.MIN_EXPIRATION_MINUTES = exports.DEFAULT_WRAPPED_NFT_LIQUIDATION_UNISWAP_SLIPPAGE_IN_BASIS_POINTS = exports.UNISWAP_FACTORY_ADDRESS_RINKEBY = exports.UNISWAP_FACTORY_ADDRESS_MAINNET = exports.WRAPPED_NFT_LIQUIDATION_PROXY_ADDRESS_RINKEBY = exports.WRAPPED_NFT_LIQUIDATION_PROXY_ADDRESS_MAINNET = exports.WRAPPED_NFT_FACTORY_ADDRESS_RINKEBY = exports.WRAPPED_NFT_FACTORY_ADDRESS_MAINNET = exports.CK_ADDRESS = exports.ENJIN_ADDRESS = exports.MANA_ADDRESS = exports.ENJIN_COIN_ADDRESS = exports.SHARED_STORE_FRONT_ADDRESS_RINKEBY = exports.SHARED_STORE_FRONT_ADDRESS_MAINNET = exports.SHARED_STOREFRONT_LAZY_MINT_ADAPTER_ADDRESS = exports.INVERSE_BASIS_POINT = exports.OPENSEA_LEGACY_FEE_RECIPIENT = exports.NULL_BLOCK_HASH = exports.NULL_ADDRESS = exports.DEFAULT_GAS_INCREASE_FACTOR = void 0;
|
|
5
|
+
var wyvern_js_1 = require("wyvern-js");
|
|
6
|
+
var types_1 = require("./types");
|
|
7
|
+
exports.DEFAULT_GAS_INCREASE_FACTOR = 1.01;
|
|
8
|
+
exports.NULL_ADDRESS = wyvern_js_1.WyvernProtocol.NULL_ADDRESS;
|
|
9
|
+
exports.NULL_BLOCK_HASH = "0x0000000000000000000000000000000000000000000000000000000000000000";
|
|
10
|
+
exports.OPENSEA_LEGACY_FEE_RECIPIENT = "0x5b3256965e7c3cf26e11fcaf296dfc8807c01073";
|
|
11
|
+
exports.INVERSE_BASIS_POINT = 10000; // 100 basis points per 1%
|
|
12
|
+
exports.SHARED_STOREFRONT_LAZY_MINT_ADAPTER_ADDRESS = "0xa604060890923ff400e8c6f5290461a83aedacec"; // Same address on mainnet and Rinkeby
|
|
13
|
+
exports.SHARED_STORE_FRONT_ADDRESS_MAINNET = "0x495f947276749ce646f68ac8c248420045cb7b5e";
|
|
14
|
+
exports.SHARED_STORE_FRONT_ADDRESS_RINKEBY = "0x88b48f654c30e99bc2e4a1559b4dcf1ad93fa656";
|
|
15
|
+
exports.ENJIN_COIN_ADDRESS = "0xf629cbd94d3791c9250152bd8dfbdf380e2a3b9c";
|
|
16
|
+
exports.MANA_ADDRESS = "0x0f5d2fb29fb7d3cfee444a200298f468908cc942";
|
|
17
|
+
exports.ENJIN_ADDRESS = "0xfaaFDc07907ff5120a76b34b731b278c38d6043C";
|
|
18
|
+
exports.CK_ADDRESS = "0x06012c8cf97bead5deae237070f9587f8e7a266d";
|
|
19
|
+
exports.WRAPPED_NFT_FACTORY_ADDRESS_MAINNET = "0xf11b5815b143472b7f7c52af0bfa6c6a2c8f40e1";
|
|
20
|
+
exports.WRAPPED_NFT_FACTORY_ADDRESS_RINKEBY = "0x94c71c87244b862cfd64d36af468309e4804ec09";
|
|
21
|
+
exports.WRAPPED_NFT_LIQUIDATION_PROXY_ADDRESS_MAINNET = "0x995835145dd85c012f3e2d7d5561abd626658c04";
|
|
22
|
+
exports.WRAPPED_NFT_LIQUIDATION_PROXY_ADDRESS_RINKEBY = "0xaa775Eb452353aB17f7cf182915667c2598D43d3";
|
|
23
|
+
exports.UNISWAP_FACTORY_ADDRESS_MAINNET = "0xc0a47dFe034B400B47bDaD5FecDa2621de6c4d95";
|
|
24
|
+
exports.UNISWAP_FACTORY_ADDRESS_RINKEBY = "0xf5D915570BC477f9B8D6C0E980aA81757A3AaC36";
|
|
25
|
+
exports.DEFAULT_WRAPPED_NFT_LIQUIDATION_UNISWAP_SLIPPAGE_IN_BASIS_POINTS = 1000;
|
|
26
|
+
exports.MIN_EXPIRATION_MINUTES = 15;
|
|
27
|
+
exports.MAX_EXPIRATION_MONTHS = 3;
|
|
28
|
+
exports.ORDER_MATCHING_LATENCY_SECONDS = 60 * 60 * 24 * 7;
|
|
29
|
+
var ORDERBOOK_VERSION = 1;
|
|
30
|
+
exports.API_BASE_MAINNET = "https://api.opensea.io";
|
|
31
|
+
exports.API_BASE_TESTNET = "https://testnets-api.opensea.io";
|
|
32
|
+
exports.RPC_URL_PATH = "jsonrpc/v1/";
|
|
33
|
+
exports.MAINNET_PROVIDER_URL = "".concat(exports.API_BASE_MAINNET, "/").concat(exports.RPC_URL_PATH);
|
|
34
|
+
exports.ORDERBOOK_PATH = "/wyvern/v".concat(ORDERBOOK_VERSION);
|
|
35
|
+
exports.API_PATH = "/api/v".concat(ORDERBOOK_VERSION);
|
|
36
|
+
exports.EIP_712_ORDER_TYPES = {
|
|
37
|
+
EIP712Domain: [
|
|
38
|
+
{ name: "name", type: "string" },
|
|
39
|
+
{ name: "version", type: "string" },
|
|
40
|
+
{ name: "chainId", type: "uint256" },
|
|
41
|
+
{ name: "verifyingContract", type: "address" },
|
|
42
|
+
],
|
|
43
|
+
Order: [
|
|
44
|
+
{ name: "exchange", type: "address" },
|
|
45
|
+
{ name: "maker", type: "address" },
|
|
46
|
+
{ name: "taker", type: "address" },
|
|
47
|
+
{ name: "makerRelayerFee", type: "uint256" },
|
|
48
|
+
{ name: "takerRelayerFee", type: "uint256" },
|
|
49
|
+
{ name: "makerProtocolFee", type: "uint256" },
|
|
50
|
+
{ name: "takerProtocolFee", type: "uint256" },
|
|
51
|
+
{ name: "feeRecipient", type: "address" },
|
|
52
|
+
{ name: "feeMethod", type: "uint8" },
|
|
53
|
+
{ name: "side", type: "uint8" },
|
|
54
|
+
{ name: "saleKind", type: "uint8" },
|
|
55
|
+
{ name: "target", type: "address" },
|
|
56
|
+
{ name: "howToCall", type: "uint8" },
|
|
57
|
+
{ name: "calldata", type: "bytes" },
|
|
58
|
+
{ name: "replacementPattern", type: "bytes" },
|
|
59
|
+
{ name: "staticTarget", type: "address" },
|
|
60
|
+
{ name: "staticExtradata", type: "bytes" },
|
|
61
|
+
{ name: "paymentToken", type: "address" },
|
|
62
|
+
{ name: "basePrice", type: "uint256" },
|
|
63
|
+
{ name: "extra", type: "uint256" },
|
|
64
|
+
{ name: "listingTime", type: "uint256" },
|
|
65
|
+
{ name: "expirationTime", type: "uint256" },
|
|
66
|
+
{ name: "salt", type: "uint256" },
|
|
67
|
+
{ name: "nonce", type: "uint256" },
|
|
68
|
+
],
|
|
69
|
+
};
|
|
70
|
+
exports.EIP_712_WYVERN_DOMAIN_NAME = "Wyvern Exchange Contract";
|
|
71
|
+
exports.EIP_712_WYVERN_DOMAIN_VERSION = "2.3";
|
|
72
|
+
exports.MERKLE_VALIDATOR_MAINNET = "0xbaf2127b49fc93cbca6269fade0f7f31df4c88a7";
|
|
73
|
+
exports.MERKLE_VALIDATOR_RINKEBY = "0x45b594792a5cdc008d0de1c1d69faa3d16b3ddc1";
|
|
74
|
+
exports.CROSS_CHAIN_DEFAULT_CONDUIT_KEY = "0x0000007b02230091a7ed01230072f7006a004d60a8d4e71d599b8104250f0000";
|
|
75
|
+
var CROSS_CHAIN_DEFAULT_CONDUIT = "0x1e0049783f008a0085193e00003d00cd54003c71";
|
|
76
|
+
exports.CONDUIT_KEYS_TO_CONDUIT = (_a = {},
|
|
77
|
+
_a[exports.CROSS_CHAIN_DEFAULT_CONDUIT_KEY] = CROSS_CHAIN_DEFAULT_CONDUIT,
|
|
78
|
+
_a);
|
|
79
|
+
exports.WETH_ADDRESS_BY_NETWORK = (_b = {},
|
|
80
|
+
_b[types_1.Network.Main] = "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
|
|
81
|
+
_b[types_1.Network.Rinkeby] = "0xc778417e063141139fce010982780140aa0cd5ab",
|
|
82
|
+
_b[types_1.Network.Goerli] = "0xb4fbf271143f4fbf7b91a5ded31805e42b2208d6",
|
|
83
|
+
_b);
|
|
84
|
+
exports.DEFAULT_ZONE_BY_NETWORK = (_c = {},
|
|
85
|
+
_c[types_1.Network.Main] = "0x0000000000000000000000000000000000000000",
|
|
86
|
+
_c[types_1.Network.Rinkeby] = "0x0000000000000000000000000000000000000000",
|
|
87
|
+
_c[types_1.Network.Goerli] = "0x0000000000000000000000000000000000000000",
|
|
88
|
+
_c);
|
|
89
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { AnnotatedFunctionABI } from "wyvern-js/lib/types";
|
|
2
|
+
import type { PartialReadonlyContractAbi } from "./types";
|
|
3
|
+
export declare const getMethod: (abi: PartialReadonlyContractAbi, name: string) => AnnotatedFunctionABI;
|
|
4
|
+
export { ERC20 } from "./abi/ERC20";
|
|
5
|
+
export { ERC721 } from "./abi/ERC721v3";
|
|
6
|
+
export { ERC1155 } from "./abi/ERC1155";
|
|
7
|
+
export { CanonicalWETH } from "./abi/CanonicalWETH";
|
|
8
|
+
export { WrappedNFT } from "./abi/WrappedNFT";
|
|
9
|
+
export { WrappedNFTFactory } from "./abi/WrappedNFTFactory";
|
|
10
|
+
export { WrappedNFTLiquidationProxy } from "./abi/WrappedNFTLiquidationProxy";
|
|
11
|
+
export { UniswapFactory } from "./abi/UniswapFactory";
|
|
12
|
+
export { UniswapExchange } from "./abi/UniswapExchange";
|
package/lib/contracts.js
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UniswapExchange = exports.UniswapFactory = exports.WrappedNFTLiquidationProxy = exports.WrappedNFTFactory = exports.WrappedNFT = exports.CanonicalWETH = exports.ERC1155 = exports.ERC721 = exports.ERC20 = exports.getMethod = void 0;
|
|
4
|
+
var getMethod = function (abi, name) {
|
|
5
|
+
var methodAbi = abi.find(function (x) { return x.type == "function" && x.name == name; });
|
|
6
|
+
if (!methodAbi) {
|
|
7
|
+
throw new Error("ABI ".concat(name, " not found"));
|
|
8
|
+
}
|
|
9
|
+
// Have to cast since there's a bug in
|
|
10
|
+
// web3 types on the 'type' field
|
|
11
|
+
return methodAbi;
|
|
12
|
+
};
|
|
13
|
+
exports.getMethod = getMethod;
|
|
14
|
+
var ERC20_1 = require("./abi/ERC20");
|
|
15
|
+
Object.defineProperty(exports, "ERC20", { enumerable: true, get: function () { return ERC20_1.ERC20; } });
|
|
16
|
+
var ERC721v3_1 = require("./abi/ERC721v3");
|
|
17
|
+
Object.defineProperty(exports, "ERC721", { enumerable: true, get: function () { return ERC721v3_1.ERC721; } });
|
|
18
|
+
var ERC1155_1 = require("./abi/ERC1155");
|
|
19
|
+
Object.defineProperty(exports, "ERC1155", { enumerable: true, get: function () { return ERC1155_1.ERC1155; } });
|
|
20
|
+
var CanonicalWETH_1 = require("./abi/CanonicalWETH");
|
|
21
|
+
Object.defineProperty(exports, "CanonicalWETH", { enumerable: true, get: function () { return CanonicalWETH_1.CanonicalWETH; } });
|
|
22
|
+
var WrappedNFT_1 = require("./abi/WrappedNFT");
|
|
23
|
+
Object.defineProperty(exports, "WrappedNFT", { enumerable: true, get: function () { return WrappedNFT_1.WrappedNFT; } });
|
|
24
|
+
var WrappedNFTFactory_1 = require("./abi/WrappedNFTFactory");
|
|
25
|
+
Object.defineProperty(exports, "WrappedNFTFactory", { enumerable: true, get: function () { return WrappedNFTFactory_1.WrappedNFTFactory; } });
|
|
26
|
+
var WrappedNFTLiquidationProxy_1 = require("./abi/WrappedNFTLiquidationProxy");
|
|
27
|
+
Object.defineProperty(exports, "WrappedNFTLiquidationProxy", { enumerable: true, get: function () { return WrappedNFTLiquidationProxy_1.WrappedNFTLiquidationProxy; } });
|
|
28
|
+
var UniswapFactory_1 = require("./abi/UniswapFactory");
|
|
29
|
+
Object.defineProperty(exports, "UniswapFactory", { enumerable: true, get: function () { return UniswapFactory_1.UniswapFactory; } });
|
|
30
|
+
var UniswapExchange_1 = require("./abi/UniswapExchange");
|
|
31
|
+
Object.defineProperty(exports, "UniswapExchange", { enumerable: true, get: function () { return UniswapExchange_1.UniswapExchange; } });
|
|
32
|
+
//# sourceMappingURL=contracts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":";;;AAGO,IAAM,SAAS,GAAG,UACvB,GAA+B,EAC/B,IAAY;IAEZ,IAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,IAAI,UAAU,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,EAAtC,CAAsC,CAAC,CAAC;IAC1E,IAAI,CAAC,SAAS,EAAE;QACd,MAAM,IAAI,KAAK,CAAC,cAAO,IAAI,eAAY,CAAC,CAAC;KAC1C;IACD,sCAAsC;IACtC,iCAAiC;IACjC,OAAO,SAAiC,CAAC;AAC3C,CAAC,CAAC;AAXW,QAAA,SAAS,aAWpB;AAEF,qCAAoC;AAA3B,8FAAA,KAAK,OAAA;AACd,2CAAwC;AAA/B,kGAAA,MAAM,OAAA;AACf,yCAAwC;AAA/B,kGAAA,OAAO,OAAA;AAChB,qDAAoD;AAA3C,8GAAA,aAAa,OAAA;AACtB,+CAA8C;AAArC,wGAAA,UAAU,OAAA;AACnB,6DAA4D;AAAnD,sHAAA,iBAAiB,OAAA;AAC1B,+EAA8E;AAArE,wIAAA,0BAA0B,OAAA;AACnC,uDAAsD;AAA7C,gHAAA,cAAc,OAAA;AACvB,yDAAwD;AAA/C,kHAAA,eAAe,OAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { WyvernProtocol } from "wyvern-js";
|
|
2
|
+
import type { Order } from "./types";
|
|
3
|
+
export declare const MAX_ERROR_LENGTH = 120;
|
|
4
|
+
/**
|
|
5
|
+
* Debug the `ordersCanMatch` part of Wyvern
|
|
6
|
+
* @param buy Buy order for debugging
|
|
7
|
+
* @param sell Sell order for debugging
|
|
8
|
+
*/
|
|
9
|
+
export declare function requireOrdersCanMatch(client: WyvernProtocol, { buy, sell, accountAddress, }: {
|
|
10
|
+
buy: Order;
|
|
11
|
+
sell: Order;
|
|
12
|
+
accountAddress: string;
|
|
13
|
+
}): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Debug the `orderCalldataCanMatch` part of Wyvern
|
|
16
|
+
* @param buy Buy order for debugging
|
|
17
|
+
* @param sell Sell Order for debugging
|
|
18
|
+
*/
|
|
19
|
+
export declare function requireOrderCalldataCanMatch(client: WyvernProtocol, { buy, sell }: {
|
|
20
|
+
buy: Order;
|
|
21
|
+
sell: Order;
|
|
22
|
+
}): Promise<void>;
|
package/lib/debugging.js
ADDED
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (_) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.requireOrderCalldataCanMatch = exports.requireOrdersCanMatch = exports.MAX_ERROR_LENGTH = void 0;
|
|
40
|
+
var constants_1 = require("./constants");
|
|
41
|
+
exports.MAX_ERROR_LENGTH = 120;
|
|
42
|
+
/**
|
|
43
|
+
* This file reproduces Solidity methods to make debugging easier
|
|
44
|
+
*/
|
|
45
|
+
var Side;
|
|
46
|
+
(function (Side) {
|
|
47
|
+
Side[Side["Buy"] = 0] = "Buy";
|
|
48
|
+
Side[Side["Sell"] = 1] = "Sell";
|
|
49
|
+
})(Side || (Side = {}));
|
|
50
|
+
var SaleKind;
|
|
51
|
+
(function (SaleKind) {
|
|
52
|
+
SaleKind[SaleKind["FixedPrice"] = 0] = "FixedPrice";
|
|
53
|
+
SaleKind[SaleKind["DutchAuction"] = 1] = "DutchAuction";
|
|
54
|
+
})(SaleKind || (SaleKind = {}));
|
|
55
|
+
var SaleKindInterface = {
|
|
56
|
+
Side: Side,
|
|
57
|
+
SaleKind: SaleKind,
|
|
58
|
+
validateParameters: function (saleKind, expirationTime) {
|
|
59
|
+
return saleKind === SaleKind.FixedPrice || expirationTime > 0;
|
|
60
|
+
},
|
|
61
|
+
canSettleOrder: function (listingTime, expirationTime) {
|
|
62
|
+
var now = Math.round(Date.now() / 1000);
|
|
63
|
+
return listingTime < now && (expirationTime === 0 || now < expirationTime);
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Debug the `ordersCanMatch` part of Wyvern
|
|
68
|
+
* @param buy Buy order for debugging
|
|
69
|
+
* @param sell Sell order for debugging
|
|
70
|
+
*/
|
|
71
|
+
function requireOrdersCanMatch(client, _a) {
|
|
72
|
+
var buy = _a.buy, sell = _a.sell, accountAddress = _a.accountAddress;
|
|
73
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
74
|
+
var result;
|
|
75
|
+
return __generator(this, function (_b) {
|
|
76
|
+
switch (_b.label) {
|
|
77
|
+
case 0: return [4 /*yield*/, client.wyvernExchange
|
|
78
|
+
.ordersCanMatch_([
|
|
79
|
+
buy.exchange,
|
|
80
|
+
buy.maker,
|
|
81
|
+
buy.taker,
|
|
82
|
+
buy.feeRecipient,
|
|
83
|
+
buy.target,
|
|
84
|
+
buy.staticTarget,
|
|
85
|
+
buy.paymentToken,
|
|
86
|
+
sell.exchange,
|
|
87
|
+
sell.maker,
|
|
88
|
+
sell.taker,
|
|
89
|
+
sell.feeRecipient,
|
|
90
|
+
sell.target,
|
|
91
|
+
sell.staticTarget,
|
|
92
|
+
sell.paymentToken,
|
|
93
|
+
], [
|
|
94
|
+
buy.makerRelayerFee,
|
|
95
|
+
buy.takerRelayerFee,
|
|
96
|
+
buy.makerProtocolFee,
|
|
97
|
+
buy.takerProtocolFee,
|
|
98
|
+
buy.basePrice,
|
|
99
|
+
buy.extra,
|
|
100
|
+
buy.listingTime,
|
|
101
|
+
buy.expirationTime,
|
|
102
|
+
buy.salt,
|
|
103
|
+
sell.makerRelayerFee,
|
|
104
|
+
sell.takerRelayerFee,
|
|
105
|
+
sell.makerProtocolFee,
|
|
106
|
+
sell.takerProtocolFee,
|
|
107
|
+
sell.basePrice,
|
|
108
|
+
sell.extra,
|
|
109
|
+
sell.listingTime,
|
|
110
|
+
sell.expirationTime,
|
|
111
|
+
sell.salt,
|
|
112
|
+
], [
|
|
113
|
+
buy.feeMethod,
|
|
114
|
+
buy.side,
|
|
115
|
+
buy.saleKind,
|
|
116
|
+
buy.howToCall,
|
|
117
|
+
sell.feeMethod,
|
|
118
|
+
sell.side,
|
|
119
|
+
sell.saleKind,
|
|
120
|
+
sell.howToCall,
|
|
121
|
+
], buy.calldata, sell.calldata, buy.replacementPattern, sell.replacementPattern, buy.staticExtradata, sell.staticExtradata)
|
|
122
|
+
.callAsync({
|
|
123
|
+
from: accountAddress,
|
|
124
|
+
})];
|
|
125
|
+
case 1:
|
|
126
|
+
result = _b.sent();
|
|
127
|
+
if (result) {
|
|
128
|
+
return [2 /*return*/];
|
|
129
|
+
}
|
|
130
|
+
if (!(+buy.side == +SaleKindInterface.Side.Buy &&
|
|
131
|
+
+sell.side == +SaleKindInterface.Side.Sell)) {
|
|
132
|
+
throw new Error("Must be opposite-side");
|
|
133
|
+
}
|
|
134
|
+
if (!(buy.feeMethod == sell.feeMethod)) {
|
|
135
|
+
throw new Error("Must use same fee method");
|
|
136
|
+
}
|
|
137
|
+
if (!(buy.paymentToken == sell.paymentToken)) {
|
|
138
|
+
throw new Error("Must use same payment token");
|
|
139
|
+
}
|
|
140
|
+
if (!(sell.taker == constants_1.NULL_ADDRESS || sell.taker == buy.maker)) {
|
|
141
|
+
throw new Error("Sell taker must be null or matching buy maker");
|
|
142
|
+
}
|
|
143
|
+
if (!(buy.taker == constants_1.NULL_ADDRESS || buy.taker == sell.maker)) {
|
|
144
|
+
throw new Error("Buy taker must be null or matching sell maker");
|
|
145
|
+
}
|
|
146
|
+
if (!((sell.feeRecipient == constants_1.NULL_ADDRESS && buy.feeRecipient != constants_1.NULL_ADDRESS) ||
|
|
147
|
+
(sell.feeRecipient != constants_1.NULL_ADDRESS && buy.feeRecipient == constants_1.NULL_ADDRESS))) {
|
|
148
|
+
throw new Error("One order must be maker and the other must be taker");
|
|
149
|
+
}
|
|
150
|
+
if (!(buy.target == sell.target)) {
|
|
151
|
+
throw new Error("Must match target");
|
|
152
|
+
}
|
|
153
|
+
if (!(buy.howToCall == sell.howToCall)) {
|
|
154
|
+
throw new Error("Must match howToCall");
|
|
155
|
+
}
|
|
156
|
+
if (!SaleKindInterface.canSettleOrder(+buy.listingTime, +buy.expirationTime)) {
|
|
157
|
+
throw new Error("Buy-side order is set in the future or expired");
|
|
158
|
+
}
|
|
159
|
+
if (!SaleKindInterface.canSettleOrder(+sell.listingTime, +sell.expirationTime)) {
|
|
160
|
+
throw new Error("Sell-side order is set in the future or expired");
|
|
161
|
+
}
|
|
162
|
+
// Handle default, which is likely now() being diff than local time
|
|
163
|
+
throw new Error("Error creating your order. Check that your system clock is set to the current date and time before you try again.");
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
exports.requireOrdersCanMatch = requireOrdersCanMatch;
|
|
169
|
+
/**
|
|
170
|
+
* Debug the `orderCalldataCanMatch` part of Wyvern
|
|
171
|
+
* @param buy Buy order for debugging
|
|
172
|
+
* @param sell Sell Order for debugging
|
|
173
|
+
*/
|
|
174
|
+
function requireOrderCalldataCanMatch(client, _a) {
|
|
175
|
+
var buy = _a.buy, sell = _a.sell;
|
|
176
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
177
|
+
var result;
|
|
178
|
+
return __generator(this, function (_b) {
|
|
179
|
+
switch (_b.label) {
|
|
180
|
+
case 0: return [4 /*yield*/, client.wyvernExchange
|
|
181
|
+
.orderCalldataCanMatch(buy.calldata, buy.replacementPattern, sell.calldata, sell.replacementPattern)
|
|
182
|
+
.callAsync()];
|
|
183
|
+
case 1:
|
|
184
|
+
result = _b.sent();
|
|
185
|
+
if (result) {
|
|
186
|
+
return [2 /*return*/];
|
|
187
|
+
}
|
|
188
|
+
throw new Error("Unable to match offer data with auction data.");
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
exports.requireOrderCalldataCanMatch = requireOrderCalldataCanMatch;
|
|
194
|
+
//# sourceMappingURL=debugging.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debugging.js","sourceRoot":"","sources":["../src/debugging.ts"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { OpenSeaAPI } from "./api";
|
|
2
|
+
import { OpenSeaSDK } from "./sdk";
|
|
3
|
+
import { Network, EventData, EventType } from "./types";
|
|
4
|
+
export { orderToJSON, orderFromJSON, WyvernProtocol } from "./utils/utils";
|
|
5
|
+
export { encodeCall, encodeSell, encodeAtomicizedBuy, encodeAtomicizedSell, encodeDefaultCall, encodeReplacementPattern, AbiType, } from "./utils/schema";
|
|
6
|
+
/**
|
|
7
|
+
* Example setup:
|
|
8
|
+
*
|
|
9
|
+
* import * as Web3 from 'web3'
|
|
10
|
+
* import { OpenSeaPort, Network } from 'opensea-js'
|
|
11
|
+
* const provider = new Web3.providers.HttpProvider('https://mainnet.infura.io')
|
|
12
|
+
* const client = new OpenSeaPort(provider, {
|
|
13
|
+
* networkName: Network.Main
|
|
14
|
+
* })
|
|
15
|
+
*/
|
|
16
|
+
export { OpenSeaSDK, OpenSeaSDK as OpenSeaPort, OpenSeaAPI, EventType, Network, };
|
|
17
|
+
export type { EventData };
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Network = exports.EventType = exports.OpenSeaAPI = exports.OpenSeaPort = exports.OpenSeaSDK = exports.AbiType = exports.encodeReplacementPattern = exports.encodeDefaultCall = exports.encodeAtomicizedSell = exports.encodeAtomicizedBuy = exports.encodeSell = exports.encodeCall = exports.WyvernProtocol = exports.orderFromJSON = exports.orderToJSON = void 0;
|
|
4
|
+
/* eslint-disable import/no-unused-modules */
|
|
5
|
+
var api_1 = require("./api");
|
|
6
|
+
Object.defineProperty(exports, "OpenSeaAPI", { enumerable: true, get: function () { return api_1.OpenSeaAPI; } });
|
|
7
|
+
var sdk_1 = require("./sdk");
|
|
8
|
+
Object.defineProperty(exports, "OpenSeaSDK", { enumerable: true, get: function () { return sdk_1.OpenSeaSDK; } });
|
|
9
|
+
Object.defineProperty(exports, "OpenSeaPort", { enumerable: true, get: function () { return sdk_1.OpenSeaSDK; } });
|
|
10
|
+
var types_1 = require("./types");
|
|
11
|
+
Object.defineProperty(exports, "Network", { enumerable: true, get: function () { return types_1.Network; } });
|
|
12
|
+
Object.defineProperty(exports, "EventType", { enumerable: true, get: function () { return types_1.EventType; } });
|
|
13
|
+
var utils_1 = require("./utils/utils");
|
|
14
|
+
Object.defineProperty(exports, "orderToJSON", { enumerable: true, get: function () { return utils_1.orderToJSON; } });
|
|
15
|
+
Object.defineProperty(exports, "orderFromJSON", { enumerable: true, get: function () { return utils_1.orderFromJSON; } });
|
|
16
|
+
Object.defineProperty(exports, "WyvernProtocol", { enumerable: true, get: function () { return utils_1.WyvernProtocol; } });
|
|
17
|
+
var schema_1 = require("./utils/schema");
|
|
18
|
+
Object.defineProperty(exports, "encodeCall", { enumerable: true, get: function () { return schema_1.encodeCall; } });
|
|
19
|
+
Object.defineProperty(exports, "encodeSell", { enumerable: true, get: function () { return schema_1.encodeSell; } });
|
|
20
|
+
Object.defineProperty(exports, "encodeAtomicizedBuy", { enumerable: true, get: function () { return schema_1.encodeAtomicizedBuy; } });
|
|
21
|
+
Object.defineProperty(exports, "encodeAtomicizedSell", { enumerable: true, get: function () { return schema_1.encodeAtomicizedSell; } });
|
|
22
|
+
Object.defineProperty(exports, "encodeDefaultCall", { enumerable: true, get: function () { return schema_1.encodeDefaultCall; } });
|
|
23
|
+
Object.defineProperty(exports, "encodeReplacementPattern", { enumerable: true, get: function () { return schema_1.encodeReplacementPattern; } });
|
|
24
|
+
Object.defineProperty(exports, "AbiType", { enumerable: true, get: function () { return schema_1.AbiType; } });
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,6CAA6C;AAC7C,6BAAmC;AA+BjC,2FA/BO,gBAAU,OA+BP;AA9BZ,6BAAmC;AA0BjC,2FA1BO,gBAAU,OA0BP;AAEI,4FA5BP,gBAAU,OA4BQ;AA3B3B,iCAAwD;AAiCtD,wFAjCO,eAAO,OAiCP;AADP,0FAhC2B,iBAAS,OAgC3B;AA/BX,uCAA2E;AAAlE,oGAAA,WAAW,OAAA;AAAE,sGAAA,aAAa,OAAA;AAAE,uGAAA,cAAc,OAAA;AACnD,yCAQwB;AAPtB,oGAAA,UAAU,OAAA;AACV,oGAAA,UAAU,OAAA;AACV,6GAAA,mBAAmB,OAAA;AACnB,8GAAA,oBAAoB,OAAA;AACpB,2GAAA,iBAAiB,OAAA;AACjB,kHAAA,wBAAwB,OAAA;AACxB,iGAAA,OAAO,OAAA"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { ConsiderationInputItem, CreateInputItem, MatchOrdersFulfillment, Order, OrderWithCounter } from "@opensea/seaport-js/lib/types";
|
|
2
|
+
export declare const getPrivateListingConsiderations: (offer: CreateInputItem[], privateSaleRecipient: string) => ConsiderationInputItem[];
|
|
3
|
+
export declare const constructPrivateListingCounterOrder: (order: OrderWithCounter, privateSaleRecipient: string) => Order;
|
|
4
|
+
export declare const getPrivateListingFulfillments: (privateListingOrder: OrderWithCounter) => MatchOrdersFulfillment[];
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
14
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
15
|
+
if (ar || !(i in from)) {
|
|
16
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
17
|
+
ar[i] = from[i];
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
21
|
+
};
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
exports.getPrivateListingFulfillments = exports.constructPrivateListingCounterOrder = exports.getPrivateListingConsiderations = void 0;
|
|
24
|
+
var item_1 = require("@opensea/seaport-js/lib/utils/item");
|
|
25
|
+
var order_1 = require("@opensea/seaport-js/lib/utils/order");
|
|
26
|
+
var ethers_1 = require("ethers");
|
|
27
|
+
var getPrivateListingConsiderations = function (offer, privateSaleRecipient) {
|
|
28
|
+
return offer.map(function (item) {
|
|
29
|
+
return __assign(__assign({}, item), { recipient: privateSaleRecipient });
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
exports.getPrivateListingConsiderations = getPrivateListingConsiderations;
|
|
33
|
+
var constructPrivateListingCounterOrder = function (order, privateSaleRecipient) {
|
|
34
|
+
// Counter order offers up all the items in the private listing consideration
|
|
35
|
+
// besides the items that are going to the private listing recipient
|
|
36
|
+
var paymentItems = order.parameters.consideration.filter(function (item) {
|
|
37
|
+
return item.recipient.toLowerCase() !== privateSaleRecipient.toLowerCase();
|
|
38
|
+
});
|
|
39
|
+
if (!paymentItems.every(function (item) { return (0, item_1.isCurrencyItem)(item); })) {
|
|
40
|
+
throw new Error("The consideration for the private listing did not contain only currency items");
|
|
41
|
+
}
|
|
42
|
+
if (!paymentItems.every(function (item) { return item.itemType === paymentItems[0].itemType; })) {
|
|
43
|
+
throw new Error("Not all currency items were the same for private order");
|
|
44
|
+
}
|
|
45
|
+
var _a = paymentItems.reduce(function (_a, item) {
|
|
46
|
+
var aggregatedStartAmount = _a.aggregatedStartAmount, aggregatedEndAmount = _a.aggregatedEndAmount;
|
|
47
|
+
return ({
|
|
48
|
+
aggregatedStartAmount: aggregatedStartAmount.add(item.startAmount),
|
|
49
|
+
aggregatedEndAmount: aggregatedEndAmount.add(item.endAmount),
|
|
50
|
+
});
|
|
51
|
+
}, {
|
|
52
|
+
aggregatedStartAmount: ethers_1.BigNumber.from(0),
|
|
53
|
+
aggregatedEndAmount: ethers_1.BigNumber.from(0),
|
|
54
|
+
}), aggregatedStartAmount = _a.aggregatedStartAmount, aggregatedEndAmount = _a.aggregatedEndAmount;
|
|
55
|
+
var counterOrder = {
|
|
56
|
+
parameters: __assign(__assign({}, order.parameters), { offerer: privateSaleRecipient, offer: [
|
|
57
|
+
{
|
|
58
|
+
itemType: paymentItems[0].itemType,
|
|
59
|
+
token: paymentItems[0].token,
|
|
60
|
+
identifierOrCriteria: paymentItems[0].identifierOrCriteria,
|
|
61
|
+
startAmount: aggregatedStartAmount.toString(),
|
|
62
|
+
endAmount: aggregatedEndAmount.toString(),
|
|
63
|
+
},
|
|
64
|
+
],
|
|
65
|
+
// The consideration here is empty as the original private listing order supplies
|
|
66
|
+
// the taker address to receive the desired items.
|
|
67
|
+
consideration: [], salt: (0, order_1.generateRandomSalt)(), totalOriginalConsiderationItems: 0 }),
|
|
68
|
+
signature: "0x",
|
|
69
|
+
};
|
|
70
|
+
return counterOrder;
|
|
71
|
+
};
|
|
72
|
+
exports.constructPrivateListingCounterOrder = constructPrivateListingCounterOrder;
|
|
73
|
+
var getPrivateListingFulfillments = function (privateListingOrder) {
|
|
74
|
+
var nftRelatedFulfillments = [];
|
|
75
|
+
// For the original order, we need to match everything offered with every consideration item
|
|
76
|
+
// on the original order that's set to go to the private listing recipient
|
|
77
|
+
privateListingOrder.parameters.offer.forEach(function (offerItem, offerIndex) {
|
|
78
|
+
var considerationIndex = privateListingOrder.parameters.consideration.findIndex(function (considerationItem) {
|
|
79
|
+
return considerationItem.itemType === offerItem.itemType &&
|
|
80
|
+
considerationItem.token === offerItem.token &&
|
|
81
|
+
considerationItem.identifierOrCriteria ===
|
|
82
|
+
offerItem.identifierOrCriteria;
|
|
83
|
+
});
|
|
84
|
+
if (considerationIndex === -1) {
|
|
85
|
+
throw new Error("Could not find matching offer item in the consideration for private listing");
|
|
86
|
+
}
|
|
87
|
+
nftRelatedFulfillments.push({
|
|
88
|
+
offerComponents: [
|
|
89
|
+
{
|
|
90
|
+
orderIndex: 0,
|
|
91
|
+
itemIndex: offerIndex,
|
|
92
|
+
},
|
|
93
|
+
],
|
|
94
|
+
considerationComponents: [
|
|
95
|
+
{
|
|
96
|
+
orderIndex: 0,
|
|
97
|
+
itemIndex: considerationIndex,
|
|
98
|
+
},
|
|
99
|
+
],
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
var currencyRelatedFulfillments = [];
|
|
103
|
+
// For the original order, we need to match everything offered with every consideration item
|
|
104
|
+
// on the original order that's set to go to the private listing recipient
|
|
105
|
+
privateListingOrder.parameters.consideration.forEach(function (considerationItem, considerationIndex) {
|
|
106
|
+
if (!(0, item_1.isCurrencyItem)(considerationItem)) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
// We always match the offer item (index 0) of the counter order (index 1)
|
|
110
|
+
// with all of the payment items on the private listing
|
|
111
|
+
currencyRelatedFulfillments.push({
|
|
112
|
+
offerComponents: [
|
|
113
|
+
{
|
|
114
|
+
orderIndex: 1,
|
|
115
|
+
itemIndex: 0,
|
|
116
|
+
},
|
|
117
|
+
],
|
|
118
|
+
considerationComponents: [
|
|
119
|
+
{
|
|
120
|
+
orderIndex: 0,
|
|
121
|
+
itemIndex: considerationIndex,
|
|
122
|
+
},
|
|
123
|
+
],
|
|
124
|
+
});
|
|
125
|
+
});
|
|
126
|
+
return __spreadArray(__spreadArray([], nftRelatedFulfillments, true), currencyRelatedFulfillments, true);
|
|
127
|
+
};
|
|
128
|
+
exports.getPrivateListingFulfillments = getPrivateListingFulfillments;
|
|
129
|
+
//# sourceMappingURL=privateListings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privateListings.js","sourceRoot":"","sources":["../../src/orders/privateListings.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAOA,2DAAoE;AACpE,6DAAyE;AACzE,iCAAmC;AAE5B,IAAM,+BAA+B,GAAG,UAC7C,KAAwB,EACxB,oBAA4B;IAE5B,OAAO,KAAK,CAAC,GAAG,CAAC,UAAC,IAAI;QACpB,6BAAY,IAAI,KAAE,SAAS,EAAE,oBAAoB,IAAG;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAPW,QAAA,+BAA+B,mCAO1C;AAEK,IAAM,mCAAmC,GAAG,UACjD,KAAuB,EACvB,oBAA4B;IAE5B,6EAA6E;IAC7E,oEAAoE;IACpE,IAAM,YAAY,GAAG,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,CACxD,UAAC,IAAI;QACH,OAAA,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,oBAAoB,CAAC,WAAW,EAAE;IAAnE,CAAmE,CACtE,CAAC;IAEF,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAC,IAAI,IAAK,OAAA,IAAA,qBAAc,EAAC,IAAI,CAAC,EAApB,CAAoB,CAAC,EAAE;QACvD,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;KACH;IACD,IACE,CAAC,YAAY,CAAC,KAAK,CAAC,UAAC,IAAI,IAAK,OAAA,IAAI,CAAC,QAAQ,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,EAA1C,CAA0C,CAAC,EACzE;QACA,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;KAC3E;IAEK,IAAA,KAAiD,YAAY,CAAC,MAAM,CACxE,UAAC,EAA8C,EAAE,IAAI;YAAlD,qBAAqB,2BAAA,EAAE,mBAAmB,yBAAA;QAAa,OAAA,CAAC;YACzD,qBAAqB,EAAE,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;YAClE,mBAAmB,EAAE,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;SAC7D,CAAC;IAHwD,CAGxD,EACF;QACE,qBAAqB,EAAE,kBAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QACxC,mBAAmB,EAAE,kBAAS,CAAC,IAAI,CAAC,CAAC,CAAC;KACvC,CACF,EATO,qBAAqB,2BAAA,EAAE,mBAAmB,yBASjD,CAAC;IAEF,IAAM,YAAY,GAAU;QAC1B,UAAU,wBACL,KAAK,CAAC,UAAU,KACnB,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE;gBACL;oBACE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ;oBAClC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK;oBAC5B,oBAAoB,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,oBAAoB;oBAC1D,WAAW,EAAE,qBAAqB,CAAC,QAAQ,EAAE;oBAC7C,SAAS,EAAE,mBAAmB,CAAC,QAAQ,EAAE;iBAC1C;aACF;YACD,iFAAiF;YACjF,kDAAkD;YAClD,aAAa,EAAE,EAAE,EACjB,IAAI,EAAE,IAAA,0BAAkB,GAAE,EAC1B,+BAA+B,EAAE,CAAC,GACnC;QACD,SAAS,EAAE,IAAI;KAChB,CAAC;IAEF,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAxDW,QAAA,mCAAmC,uCAwD9C;AAEK,IAAM,6BAA6B,GAAG,UAC3C,mBAAqC;IAErC,IAAM,sBAAsB,GAA6B,EAAE,CAAC;IAE5D,4FAA4F;IAC5F,0EAA0E;IAC1E,mBAAmB,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,UAAC,SAAS,EAAE,UAAU;QACjE,IAAM,kBAAkB,GACtB,mBAAmB,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CACpD,UAAC,iBAAiB;YAChB,OAAA,iBAAiB,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ;gBACjD,iBAAiB,CAAC,KAAK,KAAK,SAAS,CAAC,KAAK;gBAC3C,iBAAiB,CAAC,oBAAoB;oBACpC,SAAS,CAAC,oBAAoB;QAHhC,CAGgC,CACnC,CAAC;QACJ,IAAI,kBAAkB,KAAK,CAAC,CAAC,EAAE;YAC7B,MAAM,IAAI,KAAK,CACb,6EAA6E,CAC9E,CAAC;SACH;QACD,sBAAsB,CAAC,IAAI,CAAC;YAC1B,eAAe,EAAE;gBACf;oBACE,UAAU,EAAE,CAAC;oBACb,SAAS,EAAE,UAAU;iBACtB;aACF;YACD,uBAAuB,EAAE;gBACvB;oBACE,UAAU,EAAE,CAAC;oBACb,SAAS,EAAE,kBAAkB;iBAC9B;aACF;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAM,2BAA2B,GAA6B,EAAE,CAAC;IAEjE,4FAA4F;IAC5F,0EAA0E;IAC1E,mBAAmB,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAClD,UAAC,iBAAiB,EAAE,kBAAkB;QACpC,IAAI,CAAC,IAAA,qBAAc,EAAC,iBAAiB,CAAC,EAAE;YACtC,OAAO;SACR;QACD,0EAA0E;QAC1E,uDAAuD;QACvD,2BAA2B,CAAC,IAAI,CAAC;YAC/B,eAAe,EAAE;gBACf;oBACE,UAAU,EAAE,CAAC;oBACb,SAAS,EAAE,CAAC;iBACb;aACF;YACD,uBAAuB,EAAE;gBACvB;oBACE,UAAU,EAAE,CAAC;oBACb,SAAS,EAAE,kBAAkB;iBAC9B;aACF;SACF,CAAC,CAAC;IACL,CAAC,CACF,CAAC;IAEF,uCAAW,sBAAsB,SAAK,2BAA2B,QAAE;AACrE,CAAC,CAAC;AAlEW,QAAA,6BAA6B,iCAkExC"}
|