@polymarket/clob-client-v2 0.0.3 → 0.2.0
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/dist/client.d.ts +15 -29
- package/dist/client.js +723 -862
- package/dist/client.js.map +1 -1
- package/dist/config.js +5 -10
- package/dist/config.js.map +1 -1
- package/dist/constants.js +6 -9
- package/dist/constants.js.map +1 -1
- package/dist/endpoints.d.ts +1 -0
- package/dist/endpoints.js +54 -56
- package/dist/endpoints.js.map +1 -1
- package/dist/errors.js +2 -5
- package/dist/errors.js.map +1 -1
- package/dist/headers/index.d.ts +4 -5
- package/dist/headers/index.js +10 -15
- package/dist/headers/index.js.map +1 -1
- package/dist/http-helpers/index.d.ts +1 -1
- package/dist/http-helpers/index.js +41 -53
- package/dist/http-helpers/index.js.map +1 -1
- package/dist/index.d.ts +7 -7
- package/dist/index.js +7 -10
- package/dist/index.js.map +1 -1
- package/dist/order-builder/helpers/buildMarketOrderCreationArgs.d.ts +2 -2
- package/dist/order-builder/helpers/buildMarketOrderCreationArgs.js +12 -19
- package/dist/order-builder/helpers/buildMarketOrderCreationArgs.js.map +1 -1
- package/dist/order-builder/helpers/buildOrder.d.ts +5 -6
- package/dist/order-builder/helpers/buildOrder.js +11 -18
- package/dist/order-builder/helpers/buildOrder.js.map +1 -1
- package/dist/order-builder/helpers/buildOrderCreationArgs.d.ts +2 -2
- package/dist/order-builder/helpers/buildOrderCreationArgs.js +13 -19
- package/dist/order-builder/helpers/buildOrderCreationArgs.js.map +1 -1
- package/dist/order-builder/helpers/calculateBuyMarketPrice.d.ts +1 -1
- package/dist/order-builder/helpers/calculateBuyMarketPrice.js +3 -7
- package/dist/order-builder/helpers/calculateBuyMarketPrice.js.map +1 -1
- package/dist/order-builder/helpers/calculateSellMarketPrice.d.ts +1 -1
- package/dist/order-builder/helpers/calculateSellMarketPrice.js +3 -7
- package/dist/order-builder/helpers/calculateSellMarketPrice.js.map +1 -1
- package/dist/order-builder/helpers/createMarketOrder.d.ts +5 -6
- package/dist/order-builder/helpers/createMarketOrder.js +15 -19
- package/dist/order-builder/helpers/createMarketOrder.js.map +1 -1
- package/dist/order-builder/helpers/createOrder.d.ts +5 -6
- package/dist/order-builder/helpers/createOrder.js +15 -19
- package/dist/order-builder/helpers/createOrder.js.map +1 -1
- package/dist/order-builder/helpers/getMarketOrderRawAmounts.d.ts +1 -1
- package/dist/order-builder/helpers/getMarketOrderRawAmounts.js +17 -21
- package/dist/order-builder/helpers/getMarketOrderRawAmounts.js.map +1 -1
- package/dist/order-builder/helpers/getOrderRawAmounts.d.ts +1 -1
- package/dist/order-builder/helpers/getOrderRawAmounts.js +17 -21
- package/dist/order-builder/helpers/getOrderRawAmounts.js.map +1 -1
- package/dist/order-builder/helpers/index.d.ts +10 -10
- package/dist/order-builder/helpers/index.js +10 -23
- package/dist/order-builder/helpers/index.js.map +1 -1
- package/dist/order-builder/helpers/roundingConfig.d.ts +1 -1
- package/dist/order-builder/helpers/roundingConfig.js +1 -4
- package/dist/order-builder/helpers/roundingConfig.js.map +1 -1
- package/dist/order-builder/index.d.ts +1 -1
- package/dist/order-builder/index.js +1 -4
- package/dist/order-builder/index.js.map +1 -1
- package/dist/order-builder/orderBuilder.d.ts +5 -6
- package/dist/order-builder/orderBuilder.js +34 -29
- package/dist/order-builder/orderBuilder.js.map +1 -1
- package/dist/order-utils/abi/ExchangeV1.js +1 -4
- package/dist/order-utils/abi/ExchangeV1.js.map +1 -1
- package/dist/order-utils/abi/ExchangeV2.d.ts +186 -43
- package/dist/order-utils/abi/ExchangeV2.js +234 -53
- package/dist/order-utils/abi/ExchangeV2.js.map +1 -1
- package/dist/order-utils/exchangeOrderBuilderV1.d.ts +5 -6
- package/dist/order-utils/exchangeOrderBuilderV1.js +82 -77
- package/dist/order-utils/exchangeOrderBuilderV1.js.map +1 -1
- package/dist/order-utils/exchangeOrderBuilderV2.d.ts +6 -7
- package/dist/order-utils/exchangeOrderBuilderV2.js +55 -50
- package/dist/order-utils/exchangeOrderBuilderV2.js.map +1 -1
- package/dist/order-utils/index.d.ts +2703 -0
- package/dist/order-utils/index.js +11 -11
- package/dist/order-utils/index.js.map +1 -1
- package/dist/order-utils/model/abi.js +1 -2
- package/dist/order-utils/model/ctfExchangeV1TypedData.js +3 -6
- package/dist/order-utils/model/ctfExchangeV1TypedData.js.map +1 -1
- package/dist/order-utils/model/ctfExchangeV2TypedData.js +3 -6
- package/dist/order-utils/model/ctfExchangeV2TypedData.js.map +1 -1
- package/dist/order-utils/model/eip712.js +1 -4
- package/dist/order-utils/model/eip712.js.map +1 -1
- package/dist/order-utils/model/order.js +1 -2
- package/dist/order-utils/model/orderDataV1.d.ts +4 -4
- package/dist/order-utils/model/orderDataV1.js +1 -2
- package/dist/order-utils/model/orderDataV2.d.ts +12 -13
- package/dist/order-utils/model/orderDataV2.js +1 -2
- package/dist/order-utils/model/side.js +2 -5
- package/dist/order-utils/model/side.js.map +1 -1
- package/dist/order-utils/model/signatureTypeV1.js +2 -5
- package/dist/order-utils/model/signatureTypeV1.js.map +1 -1
- package/dist/order-utils/model/signatureTypeV2.js +2 -5
- package/dist/order-utils/model/signatureTypeV2.js.map +1 -1
- package/dist/order-utils/utils.js +1 -4
- package/dist/order-utils/utils.js.map +1 -1
- package/dist/signing/constants.js +7 -10
- package/dist/signing/constants.js.map +1 -1
- package/dist/signing/eip712.d.ts +3 -4
- package/dist/signing/eip712.js +13 -12
- package/dist/signing/eip712.js.map +1 -1
- package/dist/signing/hmac.js +3 -8
- package/dist/signing/hmac.js.map +1 -1
- package/dist/signing/index.d.ts +3 -2
- package/dist/signing/index.js +3 -5
- package/dist/signing/index.js.map +1 -1
- package/dist/signing/signer.d.ts +22 -0
- package/dist/signing/signer.js +50 -0
- package/dist/signing/signer.js.map +1 -0
- package/dist/types/clob.d.ts +19 -6
- package/dist/types/clob.js +10 -13
- package/dist/types/clob.js.map +1 -1
- package/dist/types/index.d.ts +4 -4
- package/dist/types/index.js +4 -7
- package/dist/types/index.js.map +1 -1
- package/dist/types/ordersV1.d.ts +3 -2
- package/dist/types/ordersV1.js +22 -2
- package/dist/types/ordersV1.js.map +1 -1
- package/dist/types/ordersV2.d.ts +14 -5
- package/dist/types/ordersV2.js +23 -2
- package/dist/types/ordersV2.js.map +1 -1
- package/dist/types/unifiedOrder.d.ts +4 -4
- package/dist/types/unifiedOrder.js +1 -4
- package/dist/types/unifiedOrder.js.map +1 -1
- package/dist/utilities.d.ts +1 -5
- package/dist/utilities.js +15 -72
- package/dist/utilities.js.map +1 -1
- package/package.json +24 -18
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const eip712_1 = require("./model/eip712");
|
|
8
|
-
const signatureTypeV1_js_1 = require("./model/signatureTypeV1.js");
|
|
9
|
-
const utils_1 = require("./utils");
|
|
1
|
+
import { hashTypedData } from "viem";
|
|
2
|
+
import { getSignerAddress, signTypedDataWithSigner } from "../signing/signer.js";
|
|
3
|
+
import { CTF_EXCHANGE_V1_DOMAIN_NAME, CTF_EXCHANGE_V1_DOMAIN_VERSION, CTF_EXCHANGE_V1_ORDER_STRUCT, } from "./model/ctfExchangeV1TypedData.js";
|
|
4
|
+
import { EIP712_DOMAIN } from "./model/eip712.js";
|
|
5
|
+
import { SignatureTypeV1 } from "./model/signatureTypeV1.js";
|
|
6
|
+
import { generateOrderSalt } from "./utils.js";
|
|
10
7
|
const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
|
|
11
|
-
class ExchangeOrderBuilderV1 {
|
|
12
|
-
|
|
8
|
+
export class ExchangeOrderBuilderV1 {
|
|
9
|
+
contractAddress;
|
|
10
|
+
chainId;
|
|
11
|
+
signer;
|
|
12
|
+
generateSalt;
|
|
13
|
+
constructor(contractAddress, chainId, signer, generateSalt = generateOrderSalt) {
|
|
13
14
|
this.contractAddress = contractAddress;
|
|
14
15
|
this.chainId = chainId;
|
|
15
16
|
this.signer = signer;
|
|
@@ -20,71 +21,70 @@ class ExchangeOrderBuilderV1 {
|
|
|
20
21
|
* @param orderData
|
|
21
22
|
* @returns a SignedOrder object (order + signature)
|
|
22
23
|
*/
|
|
23
|
-
buildSignedOrder(orderData) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
async buildSignedOrder(orderData) {
|
|
25
|
+
const order = await this.buildOrder(orderData);
|
|
26
|
+
const orderTypedData = this.buildOrderTypedData(order);
|
|
27
|
+
const orderSignature = await this.buildOrderSignature(orderTypedData);
|
|
28
|
+
return {
|
|
29
|
+
...order,
|
|
30
|
+
signature: orderSignature,
|
|
31
|
+
};
|
|
30
32
|
}
|
|
31
33
|
/**
|
|
32
34
|
* Creates an Order object from order data.
|
|
33
35
|
* @param OrderData
|
|
34
36
|
* @returns a Order object (not signed)
|
|
35
37
|
*/
|
|
36
|
-
buildOrder(
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
};
|
|
87
|
-
});
|
|
38
|
+
async buildOrder({ maker, taker, tokenId, makerAmount, takerAmount, side, feeRateBps, nonce, signer, expiration, signatureType, }) {
|
|
39
|
+
if (!signer) {
|
|
40
|
+
signer = maker;
|
|
41
|
+
}
|
|
42
|
+
const signerAddress = await getSignerAddress(this.signer);
|
|
43
|
+
if (signer !== signerAddress) {
|
|
44
|
+
throw new Error("signer does not match");
|
|
45
|
+
}
|
|
46
|
+
if (!expiration) {
|
|
47
|
+
expiration = "0";
|
|
48
|
+
}
|
|
49
|
+
if (!signatureType) {
|
|
50
|
+
// Default to EOA 712 sig type
|
|
51
|
+
signatureType = SignatureTypeV1.EOA;
|
|
52
|
+
}
|
|
53
|
+
let takerAddress;
|
|
54
|
+
if (typeof taker !== "undefined" && taker) {
|
|
55
|
+
takerAddress = taker;
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
takerAddress = ZERO_ADDRESS;
|
|
59
|
+
}
|
|
60
|
+
let feeRateBpsResolved;
|
|
61
|
+
if (typeof feeRateBps !== "undefined" && feeRateBps) {
|
|
62
|
+
feeRateBpsResolved = feeRateBps.toString();
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
feeRateBpsResolved = "0";
|
|
66
|
+
}
|
|
67
|
+
let nonceResolved;
|
|
68
|
+
if (typeof nonce !== "undefined" && nonce) {
|
|
69
|
+
nonceResolved = nonce.toString();
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
nonceResolved = "0";
|
|
73
|
+
}
|
|
74
|
+
return {
|
|
75
|
+
salt: this.generateSalt(),
|
|
76
|
+
maker,
|
|
77
|
+
signer,
|
|
78
|
+
taker: takerAddress,
|
|
79
|
+
tokenId,
|
|
80
|
+
makerAmount,
|
|
81
|
+
takerAmount,
|
|
82
|
+
expiration,
|
|
83
|
+
nonce: nonceResolved,
|
|
84
|
+
feeRateBps: feeRateBpsResolved,
|
|
85
|
+
side,
|
|
86
|
+
signatureType,
|
|
87
|
+
};
|
|
88
88
|
}
|
|
89
89
|
/**
|
|
90
90
|
* Parses an Order object to EIP712 typed data
|
|
@@ -95,12 +95,12 @@ class ExchangeOrderBuilderV1 {
|
|
|
95
95
|
return {
|
|
96
96
|
primaryType: "Order",
|
|
97
97
|
types: {
|
|
98
|
-
EIP712Domain:
|
|
99
|
-
Order:
|
|
98
|
+
EIP712Domain: EIP712_DOMAIN,
|
|
99
|
+
Order: CTF_EXCHANGE_V1_ORDER_STRUCT,
|
|
100
100
|
},
|
|
101
101
|
domain: {
|
|
102
|
-
name:
|
|
103
|
-
version:
|
|
102
|
+
name: CTF_EXCHANGE_V1_DOMAIN_NAME,
|
|
103
|
+
version: CTF_EXCHANGE_V1_DOMAIN_VERSION,
|
|
104
104
|
chainId: this.chainId,
|
|
105
105
|
verifyingContract: this.contractAddress,
|
|
106
106
|
},
|
|
@@ -127,7 +127,13 @@ class ExchangeOrderBuilderV1 {
|
|
|
127
127
|
*/
|
|
128
128
|
buildOrderSignature(typedData) {
|
|
129
129
|
delete typedData.types.EIP712Domain;
|
|
130
|
-
return
|
|
130
|
+
return signTypedDataWithSigner({
|
|
131
|
+
signer: this.signer,
|
|
132
|
+
domain: typedData.domain,
|
|
133
|
+
types: typedData.types,
|
|
134
|
+
value: typedData.message,
|
|
135
|
+
primaryType: typedData.primaryType,
|
|
136
|
+
});
|
|
131
137
|
}
|
|
132
138
|
/**
|
|
133
139
|
* Generates the hash of the order from a EIP712TypedData object.
|
|
@@ -135,9 +141,8 @@ class ExchangeOrderBuilderV1 {
|
|
|
135
141
|
* @returns a OrderHash that is an string
|
|
136
142
|
*/
|
|
137
143
|
buildOrderHash(orderTypedData) {
|
|
138
|
-
const digest =
|
|
144
|
+
const digest = hashTypedData(orderTypedData);
|
|
139
145
|
return digest;
|
|
140
146
|
}
|
|
141
147
|
}
|
|
142
|
-
exports.ExchangeOrderBuilderV1 = ExchangeOrderBuilderV1;
|
|
143
148
|
//# sourceMappingURL=exchangeOrderBuilderV1.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exchangeOrderBuilderV1.js","sourceRoot":"","sources":["../../src/order-utils/exchangeOrderBuilderV1.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"exchangeOrderBuilderV1.js","sourceRoot":"","sources":["../../src/order-utils/exchangeOrderBuilderV1.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type
|
|
3
|
-
import {
|
|
4
|
-
import type { OrderHash, OrderSignature } from "./model/order";
|
|
1
|
+
import { type ClobSigner } from "../signing/signer.js";
|
|
2
|
+
import { type EIP712TypedData } from "./model/eip712.js";
|
|
3
|
+
import type { OrderHash, OrderSignature } from "./model/order.js";
|
|
5
4
|
import type { OrderDataV2, OrderV2, SignedOrderV2 } from "./model/orderDataV2.js";
|
|
6
|
-
import { generateOrderSalt } from "./utils";
|
|
5
|
+
import { generateOrderSalt } from "./utils.js";
|
|
7
6
|
export declare class ExchangeOrderBuilderV2 {
|
|
8
7
|
private readonly contractAddress;
|
|
9
8
|
private readonly chainId;
|
|
10
9
|
private readonly signer;
|
|
11
10
|
private readonly generateSalt;
|
|
12
|
-
constructor(contractAddress: string, chainId: number, signer:
|
|
11
|
+
constructor(contractAddress: string, chainId: number, signer: ClobSigner, generateSalt?: typeof generateOrderSalt);
|
|
13
12
|
/**
|
|
14
13
|
* build an order object including the signature.
|
|
15
14
|
* @param orderData
|
|
@@ -21,7 +20,7 @@ export declare class ExchangeOrderBuilderV2 {
|
|
|
21
20
|
* @param OrderData
|
|
22
21
|
* @returns a Order object (not signed)
|
|
23
22
|
*/
|
|
24
|
-
buildOrder({ maker, tokenId, makerAmount, takerAmount, side, signer,
|
|
23
|
+
buildOrder({ maker, tokenId, makerAmount, takerAmount, side, signer, signatureType, timestamp, metadata, builder, expiration, }: OrderDataV2): Promise<OrderV2>;
|
|
25
24
|
/**
|
|
26
25
|
* Parses an Order object to EIP712 typed data
|
|
27
26
|
* @param order
|
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
import { hashTypedData } from "viem";
|
|
2
|
+
import { bytes32Zero } from "../constants.js";
|
|
3
|
+
import { getSignerAddress, signTypedDataWithSigner } from "../signing/signer.js";
|
|
4
|
+
import { CTF_EXCHANGE_V2_DOMAIN_NAME, CTF_EXCHANGE_V2_DOMAIN_VERSION, CTF_EXCHANGE_V2_ORDER_STRUCT, } from "./model/ctfExchangeV2TypedData.js";
|
|
5
|
+
import { EIP712_DOMAIN } from "./model/eip712.js";
|
|
6
|
+
import { SignatureTypeV2 } from "./model/signatureTypeV2.js";
|
|
7
|
+
import { generateOrderSalt } from "./utils.js";
|
|
8
|
+
export class ExchangeOrderBuilderV2 {
|
|
9
|
+
contractAddress;
|
|
10
|
+
chainId;
|
|
11
|
+
signer;
|
|
12
|
+
generateSalt;
|
|
13
|
+
constructor(contractAddress, chainId, signer, generateSalt = generateOrderSalt) {
|
|
13
14
|
this.contractAddress = contractAddress;
|
|
14
15
|
this.chainId = chainId;
|
|
15
16
|
this.signer = signer;
|
|
@@ -20,43 +21,42 @@ class ExchangeOrderBuilderV2 {
|
|
|
20
21
|
* @param orderData
|
|
21
22
|
* @returns a SignedOrder object (order + signature)
|
|
22
23
|
*/
|
|
23
|
-
buildSignedOrder(orderData) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
async buildSignedOrder(orderData) {
|
|
25
|
+
const order = await this.buildOrder(orderData);
|
|
26
|
+
const orderTypedData = this.buildOrderTypedData(order);
|
|
27
|
+
const orderSignature = await this.buildOrderSignature(orderTypedData);
|
|
28
|
+
return {
|
|
29
|
+
...order,
|
|
30
|
+
signature: orderSignature,
|
|
31
|
+
};
|
|
30
32
|
}
|
|
31
33
|
/**
|
|
32
34
|
* Creates an Order object from order data.
|
|
33
35
|
* @param OrderData
|
|
34
36
|
* @returns a Order object (not signed)
|
|
35
37
|
*/
|
|
36
|
-
buildOrder(
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
};
|
|
59
|
-
});
|
|
38
|
+
async buildOrder({ maker, tokenId, makerAmount, takerAmount, side, signer, signatureType, timestamp, metadata, builder, expiration, }) {
|
|
39
|
+
if (!signer) {
|
|
40
|
+
signer = maker;
|
|
41
|
+
}
|
|
42
|
+
const signerAddress = await getSignerAddress(this.signer);
|
|
43
|
+
if (signer !== signerAddress) {
|
|
44
|
+
throw new Error("signer does not match");
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
salt: this.generateSalt(),
|
|
48
|
+
maker,
|
|
49
|
+
signer,
|
|
50
|
+
tokenId,
|
|
51
|
+
makerAmount,
|
|
52
|
+
takerAmount,
|
|
53
|
+
side,
|
|
54
|
+
signatureType: signatureType ?? SignatureTypeV2.EOA,
|
|
55
|
+
metadata: metadata ?? bytes32Zero,
|
|
56
|
+
builder: builder ?? bytes32Zero,
|
|
57
|
+
timestamp: timestamp ?? Date.now().toString(),
|
|
58
|
+
expiration: expiration ?? "0",
|
|
59
|
+
};
|
|
60
60
|
}
|
|
61
61
|
/**
|
|
62
62
|
* Parses an Order object to EIP712 typed data
|
|
@@ -67,12 +67,12 @@ class ExchangeOrderBuilderV2 {
|
|
|
67
67
|
return {
|
|
68
68
|
primaryType: "Order",
|
|
69
69
|
types: {
|
|
70
|
-
EIP712Domain:
|
|
71
|
-
Order:
|
|
70
|
+
EIP712Domain: EIP712_DOMAIN,
|
|
71
|
+
Order: CTF_EXCHANGE_V2_ORDER_STRUCT,
|
|
72
72
|
},
|
|
73
73
|
domain: {
|
|
74
|
-
name:
|
|
75
|
-
version:
|
|
74
|
+
name: CTF_EXCHANGE_V2_DOMAIN_NAME,
|
|
75
|
+
version: CTF_EXCHANGE_V2_DOMAIN_VERSION,
|
|
76
76
|
chainId: this.chainId,
|
|
77
77
|
verifyingContract: this.contractAddress,
|
|
78
78
|
},
|
|
@@ -98,7 +98,13 @@ class ExchangeOrderBuilderV2 {
|
|
|
98
98
|
*/
|
|
99
99
|
buildOrderSignature(typedData) {
|
|
100
100
|
delete typedData.types.EIP712Domain;
|
|
101
|
-
return
|
|
101
|
+
return signTypedDataWithSigner({
|
|
102
|
+
signer: this.signer,
|
|
103
|
+
domain: typedData.domain,
|
|
104
|
+
types: typedData.types,
|
|
105
|
+
value: typedData.message,
|
|
106
|
+
primaryType: typedData.primaryType,
|
|
107
|
+
});
|
|
102
108
|
}
|
|
103
109
|
/**
|
|
104
110
|
* Generates the hash of the order from a EIP712TypedData object.
|
|
@@ -106,9 +112,8 @@ class ExchangeOrderBuilderV2 {
|
|
|
106
112
|
* @returns a OrderHash that is an string
|
|
107
113
|
*/
|
|
108
114
|
buildOrderHash(orderTypedData) {
|
|
109
|
-
const digest =
|
|
115
|
+
const digest = hashTypedData(orderTypedData);
|
|
110
116
|
return digest;
|
|
111
117
|
}
|
|
112
118
|
}
|
|
113
|
-
exports.ExchangeOrderBuilderV2 = ExchangeOrderBuilderV2;
|
|
114
119
|
//# sourceMappingURL=exchangeOrderBuilderV2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exchangeOrderBuilderV2.js","sourceRoot":"","sources":["../../src/order-utils/exchangeOrderBuilderV2.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"exchangeOrderBuilderV2.js","sourceRoot":"","sources":["../../src/order-utils/exchangeOrderBuilderV2.ts"],"names":[],"mappings":"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"}
|