@polymarket/clob-client 5.3.0 → 5.7.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/README.md +25 -6
- package/dist/client.d.ts +6 -8
- package/dist/client.js +33 -28
- package/dist/client.js.map +1 -1
- package/dist/endpoints.js.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/headers/index.d.ts +4 -5
- package/dist/headers/index.js +3 -2
- package/dist/headers/index.js.map +1 -1
- package/dist/http-helpers/index.js +8 -9
- package/dist/http-helpers/index.js.map +1 -1
- package/dist/index.d.ts +5 -4
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/order-builder/builder.d.ts +6 -7
- package/dist/order-builder/builder.js +2 -2
- package/dist/order-builder/builder.js.map +1 -1
- package/dist/order-builder/helpers.d.ts +8 -9
- package/dist/order-builder/helpers.js +34 -37
- package/dist/order-builder/helpers.js.map +1 -1
- package/dist/order-utils/exchange.order.builder.d.ts +2 -3
- package/dist/order-utils/exchange.order.builder.js +19 -8
- package/dist/order-utils/exchange.order.builder.js.map +1 -1
- package/dist/order-utils/model/order-side.model.js.map +1 -1
- package/dist/order-utils/model/signature-types.model.js.map +1 -1
- package/dist/rfq-client.d.ts +1 -1
- package/dist/rfq-client.js +29 -23
- package/dist/rfq-client.js.map +1 -1
- package/dist/rfq-deps.d.ts +4 -5
- package/dist/signer.d.ts +22 -0
- package/dist/signer.js +50 -0
- package/dist/signer.js.map +1 -0
- package/dist/signing/eip712.d.ts +2 -3
- package/dist/signing/eip712.js +9 -3
- package/dist/signing/eip712.js.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utilities.d.ts +1 -1
- package/dist/utilities.js +4 -4
- package/dist/utilities.js.map +1 -1
- package/package.json +16 -32
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
export * from "./client.ts";
|
|
2
|
-
export * from "./types.ts";
|
|
3
|
-
export * from "./order-builder/index.ts";
|
|
4
2
|
export * from "./config.ts";
|
|
5
3
|
export * from "./errors.ts";
|
|
6
4
|
export * from "./headers/index.ts";
|
|
5
|
+
export * from "./order-builder/index.ts";
|
|
6
|
+
export type { EIP712Object, EIP712ObjectValue, EIP712Parameter, EIP712TypedData, EIP712Types, Order, OrderData, OrderHash, OrderSignature, SignedOrder, } from "./order-utils/index.ts";
|
|
7
|
+
export { ExchangeOrderBuilder, Side as OrderSide, SignatureType } from "./order-utils/index.ts";
|
|
7
8
|
export * from "./rfq-client.ts";
|
|
8
9
|
export * from "./rfq-deps.ts";
|
|
9
|
-
export {
|
|
10
|
-
export
|
|
10
|
+
export type { ClobSigner } from "./signer.ts";
|
|
11
|
+
export * from "./types.ts";
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export * from "./client.js";
|
|
2
|
-
export * from "./types.js";
|
|
3
|
-
export * from "./order-builder/index.js";
|
|
4
2
|
export * from "./config.js";
|
|
5
3
|
export * from "./errors.js";
|
|
6
4
|
export * from "./headers/index.js";
|
|
5
|
+
export * from "./order-builder/index.js";
|
|
6
|
+
export { ExchangeOrderBuilder, Side as OrderSide, SignatureType } from "./order-utils/index.js";
|
|
7
7
|
export * from "./rfq-client.js";
|
|
8
8
|
export * from "./rfq-deps.js";
|
|
9
|
-
export
|
|
9
|
+
export * from "./types.js";
|
|
10
10
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AAazC,OAAO,EAAE,oBAAoB,EAAE,IAAI,IAAI,SAAS,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAChG,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAE9B,cAAc,YAAY,CAAC"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import type { Wallet } from "@ethersproject/wallet";
|
|
2
|
-
import type { JsonRpcSigner } from "@ethersproject/providers";
|
|
3
|
-
import { SignatureType } from "../order-utils/index.ts";
|
|
4
1
|
import type { SignedOrder } from "../order-utils/index.ts";
|
|
2
|
+
import { SignatureType } from "../order-utils/index.ts";
|
|
3
|
+
import type { ClobSigner } from "../signer.ts";
|
|
5
4
|
import type { Chain, CreateOrderOptions, UserMarketOrder, UserOrder } from "../types.ts";
|
|
6
5
|
export declare class OrderBuilder {
|
|
7
|
-
readonly signer:
|
|
6
|
+
readonly signer: ClobSigner;
|
|
8
7
|
readonly chainId: Chain;
|
|
9
8
|
readonly signatureType: SignatureType;
|
|
10
9
|
readonly funderAddress?: string;
|
|
@@ -12,13 +11,13 @@ export declare class OrderBuilder {
|
|
|
12
11
|
* Optional function to dynamically resolve the signer.
|
|
13
12
|
* If provided, this function will be called to obtain a fresh signer instance
|
|
14
13
|
* (e.g., for smart contract wallets or when the signer may change).
|
|
15
|
-
* Should return
|
|
14
|
+
* Should return an ethers-compatible signer or WalletClient, or a Promise resolving to one.
|
|
16
15
|
* If not provided, the static `signer` property is used.
|
|
17
16
|
*/
|
|
18
17
|
private getSigner?;
|
|
19
|
-
constructor(signer:
|
|
18
|
+
constructor(signer: ClobSigner, chainId: Chain, signatureType?: SignatureType, funderAddress?: string, getSigner?: () => Promise<ClobSigner> | ClobSigner);
|
|
20
19
|
/**
|
|
21
|
-
* Generate and sign
|
|
20
|
+
* Generate and sign an order
|
|
22
21
|
*/
|
|
23
22
|
buildOrder(userOrder: UserOrder, options: CreateOrderOptions): Promise<SignedOrder>;
|
|
24
23
|
/**
|
|
@@ -13,7 +13,7 @@ export class OrderBuilder {
|
|
|
13
13
|
* Optional function to dynamically resolve the signer.
|
|
14
14
|
* If provided, this function will be called to obtain a fresh signer instance
|
|
15
15
|
* (e.g., for smart contract wallets or when the signer may change).
|
|
16
|
-
* Should return
|
|
16
|
+
* Should return an ethers-compatible signer or WalletClient, or a Promise resolving to one.
|
|
17
17
|
* If not provided, the static `signer` property is used.
|
|
18
18
|
*/
|
|
19
19
|
getSigner;
|
|
@@ -25,7 +25,7 @@ export class OrderBuilder {
|
|
|
25
25
|
this.getSigner = getSigner;
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
|
-
* Generate and sign
|
|
28
|
+
* Generate and sign an order
|
|
29
29
|
*/
|
|
30
30
|
async buildOrder(userOrder, options) {
|
|
31
31
|
const signer = await this.resolveSigner();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/order-builder/builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/order-builder/builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGxD,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE9D,MAAM,OAAO,YAAY;IACZ,MAAM,CAAa;IAEnB,OAAO,CAAQ;IAExB,wDAAwD;IAC/C,aAAa,CAAgB;IAEtC,wCAAwC;IACxC,qEAAqE;IACrE,uDAAuD;IAC9C,aAAa,CAAU;IAEhC;;;;;;OAMG;IACK,SAAS,CAA0C;IAE3D,YACI,MAAkB,EAClB,OAAc,EACd,aAA6B,EAC7B,aAAsB,EACtB,SAAkD;QAElD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC;QACrF,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,UAAU,CACnB,SAAoB,EACpB,OAA2B;QAE3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1C,OAAO,WAAW,CACd,MAAM,EACN,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,aAAa,EAClB,SAAS,EACT,OAAO,CACV,CAAC;IACN,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,gBAAgB,CACzB,eAAgC,EAChC,OAA2B;QAE3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC1C,OAAO,iBAAiB,CACpB,MAAM,EACN,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,aAAa,EAClB,eAAe,EACf,OAAO,CACV,CAAC;IACN,CAAC;IAED,oDAAoD;IAC5C,KAAK,CAAC,aAAa;QACvB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YAC3E,OAAO,CAAC,CAAC;QACb,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;CACJ"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
import type { JsonRpcSigner } from "@ethersproject/providers";
|
|
2
|
-
import type { Wallet } from "@ethersproject/wallet";
|
|
3
|
-
import { SignatureType, Side as UtilsSide } from "../order-utils/index.ts";
|
|
4
1
|
import type { OrderData, SignedOrder } from "../order-utils/index.ts";
|
|
5
|
-
import {
|
|
6
|
-
import type {
|
|
2
|
+
import { type SignatureType, Side as UtilsSide } from "../order-utils/index.ts";
|
|
3
|
+
import type { ClobSigner } from "../signer.ts";
|
|
4
|
+
import type { Chain, CreateOrderOptions, OrderSummary, RoundConfig, TickSize, UserMarketOrder, UserOrder } from "../types.ts";
|
|
5
|
+
import { OrderType, Side } from "../types.ts";
|
|
7
6
|
export declare const ROUNDING_CONFIG: Record<TickSize, RoundConfig>;
|
|
8
7
|
/**
|
|
9
|
-
* Generate and sign
|
|
8
|
+
* Generate and sign an order
|
|
10
9
|
*
|
|
11
10
|
* @param signer
|
|
12
11
|
* @param exchangeAddress ctf exchange contract address
|
|
@@ -14,7 +13,7 @@ export declare const ROUNDING_CONFIG: Record<TickSize, RoundConfig>;
|
|
|
14
13
|
* @param OrderData
|
|
15
14
|
* @returns SignedOrder
|
|
16
15
|
*/
|
|
17
|
-
export declare const buildOrder: (signer:
|
|
16
|
+
export declare const buildOrder: (signer: ClobSigner, exchangeAddress: string, chainId: number, orderData: OrderData) => Promise<SignedOrder>;
|
|
18
17
|
export declare const getOrderRawAmounts: (side: Side, size: number, price: number, roundConfig: RoundConfig) => {
|
|
19
18
|
side: UtilsSide;
|
|
20
19
|
rawMakerAmt: number;
|
|
@@ -24,7 +23,7 @@ export declare const getOrderRawAmounts: (side: Side, size: number, price: numbe
|
|
|
24
23
|
* Translate simple user order to args used to generate Orders
|
|
25
24
|
*/
|
|
26
25
|
export declare const buildOrderCreationArgs: (signer: string, maker: string, signatureType: SignatureType, userOrder: UserOrder, roundConfig: RoundConfig) => Promise<OrderData>;
|
|
27
|
-
export declare const createOrder: (eoaSigner:
|
|
26
|
+
export declare const createOrder: (eoaSigner: ClobSigner, chainId: Chain, signatureType: SignatureType, funderAddress: string | undefined, userOrder: UserOrder, options: CreateOrderOptions) => Promise<SignedOrder>;
|
|
28
27
|
export declare const getMarketOrderRawAmounts: (side: Side, amount: number, price: number, roundConfig: RoundConfig) => {
|
|
29
28
|
side: UtilsSide;
|
|
30
29
|
rawMakerAmt: number;
|
|
@@ -34,7 +33,7 @@ export declare const getMarketOrderRawAmounts: (side: Side, amount: number, pric
|
|
|
34
33
|
* Translate simple user market order to args used to generate Orders
|
|
35
34
|
*/
|
|
36
35
|
export declare const buildMarketOrderCreationArgs: (signer: string, maker: string, signatureType: SignatureType, userMarketOrder: UserMarketOrder, roundConfig: RoundConfig) => Promise<OrderData>;
|
|
37
|
-
export declare const createMarketOrder: (eoaSigner:
|
|
36
|
+
export declare const createMarketOrder: (eoaSigner: ClobSigner, chainId: Chain, signatureType: SignatureType, funderAddress: string | undefined, userMarketOrder: UserMarketOrder, options: CreateOrderOptions) => Promise<SignedOrder>;
|
|
38
37
|
/**
|
|
39
38
|
* calculateBuyMarketPrice calculates the market price to buy a $$ amount
|
|
40
39
|
* @param positions
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { parseUnits } from "
|
|
2
|
-
import { ExchangeOrderBuilder, SignatureType, Side as UtilsSide, } from "../order-utils/index.js";
|
|
3
|
-
import { Side, OrderType } from "../types.js";
|
|
4
|
-
import { decimalPlaces, roundDown, roundNormal, roundUp } from "../utilities.js";
|
|
1
|
+
import { parseUnits } from "viem";
|
|
5
2
|
import { COLLATERAL_TOKEN_DECIMALS, getContractConfig } from "../config.js";
|
|
3
|
+
import { ExchangeOrderBuilder, Side as UtilsSide, } from "../order-utils/index.js";
|
|
4
|
+
import { getSignerAddress } from "../signer.js";
|
|
5
|
+
import { OrderType, Side } from "../types.js";
|
|
6
|
+
import { decimalPlaces, roundDown, roundNormal, roundUp } from "../utilities.js";
|
|
6
7
|
export const ROUNDING_CONFIG = {
|
|
7
8
|
"0.1": {
|
|
8
9
|
price: 1,
|
|
@@ -26,7 +27,7 @@ export const ROUNDING_CONFIG = {
|
|
|
26
27
|
},
|
|
27
28
|
};
|
|
28
29
|
/**
|
|
29
|
-
* Generate and sign
|
|
30
|
+
* Generate and sign an order
|
|
30
31
|
*
|
|
31
32
|
* @param signer
|
|
32
33
|
* @param exchangeAddress ctf exchange contract address
|
|
@@ -56,21 +57,19 @@ export const getOrderRawAmounts = (side, size, price, roundConfig) => {
|
|
|
56
57
|
rawTakerAmt,
|
|
57
58
|
};
|
|
58
59
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
const rawMakerAmt = roundDown(size, roundConfig.size);
|
|
61
|
+
let rawTakerAmt = rawMakerAmt * rawPrice;
|
|
62
|
+
if (decimalPlaces(rawTakerAmt) > roundConfig.amount) {
|
|
63
|
+
rawTakerAmt = roundUp(rawTakerAmt, roundConfig.amount + 4);
|
|
62
64
|
if (decimalPlaces(rawTakerAmt) > roundConfig.amount) {
|
|
63
|
-
rawTakerAmt =
|
|
64
|
-
if (decimalPlaces(rawTakerAmt) > roundConfig.amount) {
|
|
65
|
-
rawTakerAmt = roundDown(rawTakerAmt, roundConfig.amount);
|
|
66
|
-
}
|
|
65
|
+
rawTakerAmt = roundDown(rawTakerAmt, roundConfig.amount);
|
|
67
66
|
}
|
|
68
|
-
return {
|
|
69
|
-
side: UtilsSide.SELL,
|
|
70
|
-
rawMakerAmt,
|
|
71
|
-
rawTakerAmt,
|
|
72
|
-
};
|
|
73
67
|
}
|
|
68
|
+
return {
|
|
69
|
+
side: UtilsSide.SELL,
|
|
70
|
+
rawMakerAmt,
|
|
71
|
+
rawTakerAmt,
|
|
72
|
+
};
|
|
74
73
|
};
|
|
75
74
|
/**
|
|
76
75
|
* Translate simple user order to args used to generate Orders
|
|
@@ -115,7 +114,7 @@ export const buildOrderCreationArgs = async (signer, maker, signatureType, userO
|
|
|
115
114
|
};
|
|
116
115
|
};
|
|
117
116
|
export const createOrder = async (eoaSigner, chainId, signatureType, funderAddress, userOrder, options) => {
|
|
118
|
-
const eoaSignerAddress = await eoaSigner
|
|
117
|
+
const eoaSignerAddress = await getSignerAddress(eoaSigner);
|
|
119
118
|
// If funder address is not given, use the signer address
|
|
120
119
|
const maker = funderAddress === undefined ? eoaSignerAddress : funderAddress;
|
|
121
120
|
const contractConfig = getContractConfig(chainId);
|
|
@@ -143,21 +142,19 @@ export const getMarketOrderRawAmounts = (side, amount, price, roundConfig) => {
|
|
|
143
142
|
rawTakerAmt,
|
|
144
143
|
};
|
|
145
144
|
}
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
145
|
+
const rawMakerAmt = roundDown(amount, roundConfig.size);
|
|
146
|
+
let rawTakerAmt = rawMakerAmt * rawPrice;
|
|
147
|
+
if (decimalPlaces(rawTakerAmt) > roundConfig.amount) {
|
|
148
|
+
rawTakerAmt = roundUp(rawTakerAmt, roundConfig.amount + 4);
|
|
149
149
|
if (decimalPlaces(rawTakerAmt) > roundConfig.amount) {
|
|
150
|
-
rawTakerAmt =
|
|
151
|
-
if (decimalPlaces(rawTakerAmt) > roundConfig.amount) {
|
|
152
|
-
rawTakerAmt = roundDown(rawTakerAmt, roundConfig.amount);
|
|
153
|
-
}
|
|
150
|
+
rawTakerAmt = roundDown(rawTakerAmt, roundConfig.amount);
|
|
154
151
|
}
|
|
155
|
-
return {
|
|
156
|
-
side: UtilsSide.SELL,
|
|
157
|
-
rawMakerAmt,
|
|
158
|
-
rawTakerAmt,
|
|
159
|
-
};
|
|
160
152
|
}
|
|
153
|
+
return {
|
|
154
|
+
side: UtilsSide.SELL,
|
|
155
|
+
rawMakerAmt,
|
|
156
|
+
rawTakerAmt,
|
|
157
|
+
};
|
|
161
158
|
};
|
|
162
159
|
/**
|
|
163
160
|
* Translate simple user market order to args used to generate Orders
|
|
@@ -202,7 +199,7 @@ export const buildMarketOrderCreationArgs = async (signer, maker, signatureType,
|
|
|
202
199
|
};
|
|
203
200
|
};
|
|
204
201
|
export const createMarketOrder = async (eoaSigner, chainId, signatureType, funderAddress, userMarketOrder, options) => {
|
|
205
|
-
const eoaSignerAddress = await eoaSigner
|
|
202
|
+
const eoaSignerAddress = await getSignerAddress(eoaSigner);
|
|
206
203
|
// If funder address is not given, use the signer address
|
|
207
204
|
const maker = funderAddress === undefined ? eoaSignerAddress : funderAddress;
|
|
208
205
|
const contractConfig = getContractConfig(chainId);
|
|
@@ -234,15 +231,15 @@ export const calculateBuyMarketPrice = (positions, amountToMatch, orderType) =>
|
|
|
234
231
|
*/
|
|
235
232
|
for (let i = positions.length - 1; i >= 0; i--) {
|
|
236
233
|
const p = positions[i];
|
|
237
|
-
sum += parseFloat(p.size) * parseFloat(p.price);
|
|
234
|
+
sum += Number.parseFloat(p.size) * Number.parseFloat(p.price);
|
|
238
235
|
if (sum >= amountToMatch) {
|
|
239
|
-
return parseFloat(p.price);
|
|
236
|
+
return Number.parseFloat(p.price);
|
|
240
237
|
}
|
|
241
238
|
}
|
|
242
239
|
if (orderType === OrderType.FOK) {
|
|
243
240
|
throw new Error("no match");
|
|
244
241
|
}
|
|
245
|
-
return parseFloat(positions[0].price);
|
|
242
|
+
return Number.parseFloat(positions[0].price);
|
|
246
243
|
};
|
|
247
244
|
/**
|
|
248
245
|
* calculateSellMarketPrice calculates the market price to sell a shares
|
|
@@ -266,14 +263,14 @@ export const calculateSellMarketPrice = (positions, amountToMatch, orderType) =>
|
|
|
266
263
|
*/
|
|
267
264
|
for (let i = positions.length - 1; i >= 0; i--) {
|
|
268
265
|
const p = positions[i];
|
|
269
|
-
sum += parseFloat(p.size);
|
|
266
|
+
sum += Number.parseFloat(p.size);
|
|
270
267
|
if (sum >= amountToMatch) {
|
|
271
|
-
return parseFloat(p.price);
|
|
268
|
+
return Number.parseFloat(p.price);
|
|
272
269
|
}
|
|
273
270
|
}
|
|
274
271
|
if (orderType === OrderType.FOK) {
|
|
275
272
|
throw new Error("no match");
|
|
276
273
|
}
|
|
277
|
-
return parseFloat(positions[0].price);
|
|
274
|
+
return Number.parseFloat(positions[0].price);
|
|
278
275
|
};
|
|
279
276
|
//# sourceMappingURL=helpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/order-builder/helpers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/order-builder/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { Wallet } from "@ethersproject/wallet";
|
|
1
|
+
import type { ClobSigner } from "../signer.ts";
|
|
3
2
|
import type { EIP712TypedData } from "./model/eip712.model.ts";
|
|
4
3
|
import type { Order, OrderData, OrderHash, OrderSignature, SignedOrder } from "./model/order.model.ts";
|
|
5
4
|
import { generateOrderSalt } from "./utils.ts";
|
|
@@ -8,7 +7,7 @@ export declare class ExchangeOrderBuilder {
|
|
|
8
7
|
private readonly chainId;
|
|
9
8
|
private readonly signer;
|
|
10
9
|
private readonly generateSalt;
|
|
11
|
-
constructor(contractAddress: string, chainId: number, signer:
|
|
10
|
+
constructor(contractAddress: string, chainId: number, signer: ClobSigner, generateSalt?: typeof generateOrderSalt);
|
|
12
11
|
/**
|
|
13
12
|
* Build an order object including the signature.
|
|
14
13
|
*/
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { hashTypedData } from "viem";
|
|
2
|
+
import { getSignerAddress, signTypedDataWithSigner } from "../signer.js";
|
|
2
3
|
import { EIP712_DOMAIN, ORDER_STRUCTURE, PROTOCOL_NAME, PROTOCOL_VERSION, } from "./exchange.order.const.js";
|
|
3
4
|
import { SignatureType } from "./model/signature-types.model.js";
|
|
4
5
|
import { generateOrderSalt } from "./utils.js";
|
|
@@ -32,7 +33,7 @@ export class ExchangeOrderBuilder {
|
|
|
32
33
|
if (typeof signer === "undefined" || !signer) {
|
|
33
34
|
signer = maker;
|
|
34
35
|
}
|
|
35
|
-
const signerAddress = await this.signer
|
|
36
|
+
const signerAddress = await getSignerAddress(this.signer);
|
|
36
37
|
if (signer !== signerAddress) {
|
|
37
38
|
throw new Error("signer does not match");
|
|
38
39
|
}
|
|
@@ -93,17 +94,27 @@ export class ExchangeOrderBuilder {
|
|
|
93
94
|
/**
|
|
94
95
|
* Generates order signature from EIP712 typed data.
|
|
95
96
|
*/
|
|
96
|
-
buildOrderSignature(typedData) {
|
|
97
|
-
|
|
98
|
-
return
|
|
97
|
+
async buildOrderSignature(typedData) {
|
|
98
|
+
const { EIP712Domain: _, ...orderTypes } = typedData.types;
|
|
99
|
+
return signTypedDataWithSigner({
|
|
100
|
+
signer: this.signer,
|
|
101
|
+
domain: typedData.domain,
|
|
102
|
+
types: orderTypes,
|
|
103
|
+
value: typedData.message,
|
|
104
|
+
primaryType: typedData.primaryType,
|
|
105
|
+
});
|
|
99
106
|
}
|
|
100
107
|
/**
|
|
101
108
|
* Generates the hash of the order from EIP712 typed data.
|
|
102
109
|
*/
|
|
103
110
|
buildOrderHash(orderTypedData) {
|
|
104
|
-
const orderTypes =
|
|
105
|
-
|
|
106
|
-
|
|
111
|
+
const { EIP712Domain: _, ...orderTypes } = orderTypedData.types;
|
|
112
|
+
return hashTypedData({
|
|
113
|
+
domain: orderTypedData.domain,
|
|
114
|
+
types: orderTypes,
|
|
115
|
+
primaryType: orderTypedData.primaryType,
|
|
116
|
+
message: orderTypedData.message,
|
|
117
|
+
});
|
|
107
118
|
}
|
|
108
119
|
}
|
|
109
120
|
//# sourceMappingURL=exchange.order.builder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exchange.order.builder.js","sourceRoot":"","sources":["../../src/order-utils/exchange.order.builder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"exchange.order.builder.js","sourceRoot":"","sources":["../../src/order-utils/exchange.order.builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAErC,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EACH,aAAa,EACb,eAAe,EACf,aAAa,EACb,gBAAgB,GACnB,MAAM,2BAA2B,CAAC;AASnC,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,OAAO,oBAAoB;IAER;IACA;IACA;IACA;IAJrB,YACqB,eAAuB,EACvB,OAAe,EACf,MAAkB,EAClB,eAAe,iBAAiB;QAHhC,oBAAe,GAAf,eAAe,CAAQ;QACvB,YAAO,GAAP,OAAO,CAAQ;QACf,WAAM,GAAN,MAAM,CAAY;QAClB,iBAAY,GAAZ,YAAY,CAAoB;IAClD,CAAC;IAEJ;;OAEG;IACH,KAAK,CAAC,gBAAgB,CAAC,SAAoB;QACvC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC/C,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACvD,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC;QAEtE,OAAO;YACH,GAAG,KAAK;YACR,SAAS,EAAE,cAAc;SACb,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,EACb,KAAK,EACL,KAAK,EACL,OAAO,EACP,WAAW,EACX,WAAW,EACX,IAAI,EACJ,UAAU,EACV,KAAK,EACL,MAAM,EACN,UAAU,EACV,aAAa,GACL;QACR,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC;YAC3C,MAAM,GAAG,KAAK,CAAC;QACnB,CAAC;QAED,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAI,MAAM,KAAK,aAAa,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,OAAO,UAAU,KAAK,WAAW,IAAI,CAAC,UAAU,EAAE,CAAC;YACnD,UAAU,GAAG,GAAG,CAAC;QACrB,CAAC;QAED,IAAI,OAAO,aAAa,KAAK,WAAW,IAAI,CAAC,aAAa,EAAE,CAAC;YACzD,8BAA8B;YAC9B,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC;QACtC,CAAC;QAED,OAAO;YACH,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE;YACzB,KAAK;YACL,MAAM;YACN,KAAK;YACL,OAAO;YACP,WAAW;YACX,WAAW;YACX,UAAU;YACV,KAAK;YACL,UAAU;YACV,IAAI;YACJ,aAAa;SAChB,CAAC;IACN,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,KAAY;QAC5B,OAAO;YACH,WAAW,EAAE,OAAO;YACpB,KAAK,EAAE;gBACH,YAAY,EAAE,aAAa;gBAC3B,KAAK,EAAE,eAAe;aACzB;YACD,MAAM,EAAE;gBACJ,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,gBAAgB;gBACzB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,iBAAiB,EAAE,IAAI,CAAC,eAAe;aAC1C;YACD,OAAO,EAAE;gBACL,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,aAAa,EAAE,KAAK,CAAC,aAAa;aACrC;SACJ,CAAC;IACN,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,mBAAmB,CAAC,SAA0B;QAChD,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,GAAG,UAAU,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC;QAE3D,OAAO,uBAAuB,CAAC;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,KAAK,EAAE,UAAU;YACjB,KAAK,EAAE,SAAS,CAAC,OAAO;YACxB,WAAW,EAAE,SAAS,CAAC,WAAW;SACrC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,cAA+B;QAC1C,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,GAAG,UAAU,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC;QAEhE,OAAO,aAAa,CAAC;YACjB,MAAM,EAAE,cAAc,CAAC,MAAM;YAC7B,KAAK,EAAE,UAAU;YACjB,WAAW,EAAE,cAAc,CAAC,WAAW;YACvC,OAAO,EAAE,cAAc,CAAC,OAAO;SAClC,CAAC,CAAC;IACP,CAAC;CACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"order-side.model.js","sourceRoot":"","sources":["../../../src/order-utils/model/order-side.model.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,IAIX;AAJD,WAAY,IAAI;IACZ,
|
|
1
|
+
{"version":3,"file":"order-side.model.js","sourceRoot":"","sources":["../../../src/order-utils/model/order-side.model.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,IAIX;AAJD,WAAY,IAAI;IACZ,6BAAO,CAAA;IAEP,+BAAQ,CAAA;AACZ,CAAC,EAJW,IAAI,KAAJ,IAAI,QAIf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signature-types.model.js","sourceRoot":"","sources":["../../../src/order-utils/model/signature-types.model.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,aAeX;AAfD,WAAY,aAAa;IACrB;;OAEG;IACH,+
|
|
1
|
+
{"version":3,"file":"signature-types.model.js","sourceRoot":"","sources":["../../../src/order-utils/model/signature-types.model.ts"],"names":[],"mappings":"AAAA,MAAM,CAAN,IAAY,aAeX;AAfD,WAAY,aAAa;IACrB;;OAEG;IACH,+CAAO,CAAA;IAEP;;OAEG;IACH,6DAAc,CAAA;IAEd;;OAEG;IACH,yEAAoB,CAAA;AACxB,CAAC,EAfW,aAAa,KAAb,aAAa,QAexB"}
|
package/dist/rfq-client.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { CreateOrderOptions, RfqUserOrder, RfqUserQuote, CancelRfqQuoteParams, GetRfqQuotesParams, GetRfqBestQuoteParams, CancelRfqRequestParams, AcceptQuoteParams, ApproveOrderParams, GetRfqRequestsParams, RfqRequestsResponse, RfqQuotesResponse, RfqRequestResponse, RfqQuoteResponse, RfqQuote } from "./types.ts";
|
|
2
1
|
import type { IRfqClient, RfqDeps } from "./rfq-deps.ts";
|
|
2
|
+
import type { AcceptQuoteParams, ApproveOrderParams, CancelRfqQuoteParams, CancelRfqRequestParams, CreateOrderOptions, GetRfqBestQuoteParams, GetRfqQuotesParams, GetRfqRequestsParams, RfqQuote, RfqQuoteResponse, RfqQuotesResponse, RfqRequestResponse, RfqRequestsResponse, RfqUserOrder, RfqUserQuote } from "./types.ts";
|
|
3
3
|
/**
|
|
4
4
|
* RfqClient provides RFQ (Request for Quote) functionality on top of a CLOB client.
|
|
5
5
|
*/
|
package/dist/rfq-client.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { parseUnits } from "viem";
|
|
2
|
+
import { COLLATERAL_TOKEN_DECIMALS } from "./config.js";
|
|
3
|
+
import { CANCEL_RFQ_QUOTE, CANCEL_RFQ_REQUEST, CREATE_RFQ_QUOTE, CREATE_RFQ_REQUEST, GET_RFQ_BEST_QUOTE, GET_RFQ_QUOTER_QUOTES, GET_RFQ_REQUESTER_QUOTES, GET_RFQ_REQUESTS, RFQ_CONFIG, RFQ_QUOTE_APPROVE, RFQ_REQUESTS_ACCEPT, } from "./endpoints.js";
|
|
4
|
+
import { L1_AUTH_UNAVAILABLE_ERROR, L2_AUTH_NOT_AVAILABLE } from "./errors.js";
|
|
2
5
|
import { createL2Headers } from "./headers/index.js";
|
|
3
6
|
import { DELETE, GET, POST } from "./http-helpers/index.js";
|
|
4
|
-
import { CANCEL_RFQ_REQUEST, CREATE_RFQ_QUOTE, GET_RFQ_REQUESTER_QUOTES, GET_RFQ_QUOTER_QUOTES, GET_RFQ_BEST_QUOTE, CANCEL_RFQ_QUOTE, CREATE_RFQ_REQUEST, RFQ_CONFIG, GET_RFQ_REQUESTS, RFQ_REQUESTS_ACCEPT, RFQ_QUOTE_APPROVE, } from "./endpoints.js";
|
|
5
7
|
import { ROUNDING_CONFIG } from "./order-builder/helpers.js";
|
|
8
|
+
import { RfqMatchType, Side } from "./types.js";
|
|
6
9
|
import { roundDown, roundNormal } from "./utilities.js";
|
|
7
|
-
import { parseUnits } from "@ethersproject/units";
|
|
8
|
-
import { COLLATERAL_TOKEN_DECIMALS } from "./config.js";
|
|
9
|
-
import { L1_AUTH_UNAVAILABLE_ERROR, L2_AUTH_NOT_AVAILABLE } from "./errors.js";
|
|
10
10
|
// RFQ list params need to be repeated e.g. quoteIds=..."eIds=...
|
|
11
11
|
const buildRepeatedQuery = (params) => {
|
|
12
12
|
const sp = new URLSearchParams();
|
|
@@ -17,7 +17,8 @@ const buildRepeatedQuery = (params) => {
|
|
|
17
17
|
return;
|
|
18
18
|
}
|
|
19
19
|
if (Array.isArray(value)) {
|
|
20
|
-
|
|
20
|
+
for (const v of value)
|
|
21
|
+
sp.append(key, String(v));
|
|
21
22
|
}
|
|
22
23
|
else {
|
|
23
24
|
sp.append(key, String(value));
|
|
@@ -45,8 +46,8 @@ export class RfqClient {
|
|
|
45
46
|
const roundedPrice = roundNormal(price, roundConfig.price).toFixed(roundConfig.price);
|
|
46
47
|
const roundedSize = roundDown(size, roundConfig.size).toFixed(roundConfig.size);
|
|
47
48
|
// Calculate amounts based on side
|
|
48
|
-
const sizeNum = parseFloat(roundedSize);
|
|
49
|
-
const priceNum = parseFloat(roundedPrice);
|
|
49
|
+
const sizeNum = Number.parseFloat(roundedSize);
|
|
50
|
+
const priceNum = Number.parseFloat(roundedPrice);
|
|
50
51
|
let amountIn;
|
|
51
52
|
let amountOut;
|
|
52
53
|
let assetIn;
|
|
@@ -107,7 +108,9 @@ export class RfqClient {
|
|
|
107
108
|
};
|
|
108
109
|
const headers = await createL2Headers(this.deps.signer, this.deps.creds, l2HeaderArgs, this.deps.useServerTime ? await this.deps.getServerTime() : undefined);
|
|
109
110
|
const query = buildRepeatedQuery(params);
|
|
110
|
-
const url = query
|
|
111
|
+
const url = query
|
|
112
|
+
? `${this.deps.host}${endpoint}?${query}`
|
|
113
|
+
: `${this.deps.host}${endpoint}`;
|
|
111
114
|
return this.deps.get(url, { headers });
|
|
112
115
|
}
|
|
113
116
|
/**
|
|
@@ -122,8 +125,8 @@ export class RfqClient {
|
|
|
122
125
|
const roundedPrice = roundNormal(price, roundConfig.price).toFixed(roundConfig.price);
|
|
123
126
|
const roundedSize = roundDown(size, roundConfig.size).toFixed(roundConfig.size);
|
|
124
127
|
// Calculate amounts based on side
|
|
125
|
-
const sizeNum = parseFloat(roundedSize);
|
|
126
|
-
const priceNum = parseFloat(roundedPrice);
|
|
128
|
+
const sizeNum = Number.parseFloat(roundedSize);
|
|
129
|
+
const priceNum = Number.parseFloat(roundedPrice);
|
|
127
130
|
let amountIn;
|
|
128
131
|
let amountOut;
|
|
129
132
|
let assetIn;
|
|
@@ -176,7 +179,9 @@ export class RfqClient {
|
|
|
176
179
|
};
|
|
177
180
|
const headers = await createL2Headers(this.deps.signer, this.deps.creds, l2HeaderArgs, this.deps.useServerTime ? await this.deps.getServerTime() : undefined);
|
|
178
181
|
const query = buildRepeatedQuery(params);
|
|
179
|
-
const url = query
|
|
182
|
+
const url = query
|
|
183
|
+
? `${this.deps.host}${endpoint}?${query}`
|
|
184
|
+
: `${this.deps.host}${endpoint}`;
|
|
180
185
|
return this.deps.get(url, { headers });
|
|
181
186
|
}
|
|
182
187
|
/**
|
|
@@ -192,7 +197,9 @@ export class RfqClient {
|
|
|
192
197
|
};
|
|
193
198
|
const headers = await createL2Headers(this.deps.signer, this.deps.creds, l2HeaderArgs, this.deps.useServerTime ? await this.deps.getServerTime() : undefined);
|
|
194
199
|
const query = buildRepeatedQuery(params);
|
|
195
|
-
const url = query
|
|
200
|
+
const url = query
|
|
201
|
+
? `${this.deps.host}${endpoint}?${query}`
|
|
202
|
+
: `${this.deps.host}${endpoint}`;
|
|
196
203
|
return this.deps.get(url, { headers });
|
|
197
204
|
}
|
|
198
205
|
/**
|
|
@@ -263,7 +270,7 @@ export class RfqClient {
|
|
|
263
270
|
const order = await this.deps.createOrder({
|
|
264
271
|
tokenID: token,
|
|
265
272
|
price: orderPayload.price,
|
|
266
|
-
size: parseFloat(size),
|
|
273
|
+
size: Number.parseFloat(size),
|
|
267
274
|
side: orderSide,
|
|
268
275
|
expiration: payload.expiration,
|
|
269
276
|
});
|
|
@@ -275,9 +282,9 @@ export class RfqClient {
|
|
|
275
282
|
quoteId: payload.quoteId,
|
|
276
283
|
owner: this.deps.creds.key,
|
|
277
284
|
...order,
|
|
278
|
-
expiration: parseInt(order.expiration),
|
|
285
|
+
expiration: Number.parseInt(order.expiration, 10),
|
|
279
286
|
side: orderSide,
|
|
280
|
-
salt: parseInt(order.salt.toString())
|
|
287
|
+
salt: Number.parseInt(order.salt.toString(), 10),
|
|
281
288
|
};
|
|
282
289
|
const endpoint = RFQ_REQUESTS_ACCEPT;
|
|
283
290
|
const l2HeaderArgs = {
|
|
@@ -310,12 +317,11 @@ export class RfqClient {
|
|
|
310
317
|
const rfqQuote = rfqQuotes.data[0];
|
|
311
318
|
// Create an order based on the quote details
|
|
312
319
|
const side = rfqQuote.side === "BUY" ? Side.BUY : Side.SELL;
|
|
313
|
-
const size = rfqQuote.side === "BUY" ?
|
|
314
|
-
rfqQuote.sizeIn : rfqQuote.sizeOut;
|
|
320
|
+
const size = rfqQuote.side === "BUY" ? rfqQuote.sizeIn : rfqQuote.sizeOut;
|
|
315
321
|
const order = await this.deps.createOrder({
|
|
316
322
|
tokenID: rfqQuote.token,
|
|
317
323
|
price: rfqQuote.price,
|
|
318
|
-
size: parseFloat(size),
|
|
324
|
+
size: Number.parseFloat(size),
|
|
319
325
|
side: side,
|
|
320
326
|
expiration: payload.expiration,
|
|
321
327
|
});
|
|
@@ -327,9 +333,9 @@ export class RfqClient {
|
|
|
327
333
|
quoteId: payload.quoteId,
|
|
328
334
|
owner: this.deps.creds.key,
|
|
329
335
|
...order,
|
|
330
|
-
expiration: parseInt(order.expiration),
|
|
336
|
+
expiration: Number.parseInt(order.expiration, 10),
|
|
331
337
|
side: side,
|
|
332
|
-
salt: parseInt(order.salt.toString())
|
|
338
|
+
salt: Number.parseInt(order.salt.toString(), 10),
|
|
333
339
|
};
|
|
334
340
|
const endpoint = RFQ_QUOTE_APPROVE;
|
|
335
341
|
const l2HeaderArgs = {
|
|
@@ -364,7 +370,7 @@ export class RfqClient {
|
|
|
364
370
|
// the order side is opposite the quote side
|
|
365
371
|
side = quoteSide === "BUY" ? Side.SELL : Side.BUY;
|
|
366
372
|
token = quote.token;
|
|
367
|
-
size = side
|
|
373
|
+
size = side === Side.BUY ? quote.sizeOut : quote.sizeIn;
|
|
368
374
|
price = quote.price;
|
|
369
375
|
return {
|
|
370
376
|
token,
|
|
@@ -378,7 +384,7 @@ export class RfqClient {
|
|
|
378
384
|
// the order side is the same as the quote side
|
|
379
385
|
side = quoteSide === "BUY" ? Side.BUY : Side.SELL;
|
|
380
386
|
token = quote.complement;
|
|
381
|
-
size = side
|
|
387
|
+
size = side === Side.BUY ? quote.sizeIn : quote.sizeOut;
|
|
382
388
|
// For a MINT or a MERGE, the requester price is the inverse of the quote price
|
|
383
389
|
// 95c Quote to BUY NO, implies that the Requester is buying YES at 5c
|
|
384
390
|
// 45c Quote to SELL NO, implies the Requester is selling YES at 55c
|