@polymarket/clob-client-v2 0.0.1
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/LICENSE +21 -0
- package/README.md +1 -0
- package/dist/client.d.ts +125 -0
- package/dist/client.js +999 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +14 -0
- package/dist/config.js +37 -0
- package/dist/config.js.map +1 -0
- package/dist/constants.d.ts +6 -0
- package/dist/constants.js +13 -0
- package/dist/constants.js.map +1 -0
- package/dist/endpoints.d.ts +52 -0
- package/dist/endpoints.js +68 -0
- package/dist/endpoints.js.map +1 -0
- package/dist/errors.d.ts +2 -0
- package/dist/errors.js +6 -0
- package/dist/errors.js.map +1 -0
- package/dist/headers/index.d.ts +5 -0
- package/dist/headers/index.js +43 -0
- package/dist/headers/index.js.map +1 -0
- package/dist/http-helpers/index.d.ts +18 -0
- package/dist/http-helpers/index.js +112 -0
- package/dist/http-helpers/index.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/order-builder/helpers/buildMarketOrderCreationArgs.d.ts +6 -0
- package/dist/order-builder/helpers/buildMarketOrderCreationArgs.js +32 -0
- package/dist/order-builder/helpers/buildMarketOrderCreationArgs.js.map +1 -0
- package/dist/order-builder/helpers/buildOrder.d.ts +15 -0
- package/dist/order-builder/helpers/buildOrder.js +36 -0
- package/dist/order-builder/helpers/buildOrder.js.map +1 -0
- package/dist/order-builder/helpers/buildOrderCreationArgs.d.ts +6 -0
- package/dist/order-builder/helpers/buildOrderCreationArgs.js +32 -0
- package/dist/order-builder/helpers/buildOrderCreationArgs.js.map +1 -0
- package/dist/order-builder/helpers/calculateBuyMarketPrice.d.ts +8 -0
- package/dist/order-builder/helpers/calculateBuyMarketPrice.js +38 -0
- package/dist/order-builder/helpers/calculateBuyMarketPrice.js.map +1 -0
- package/dist/order-builder/helpers/calculateSellMarketPrice.d.ts +8 -0
- package/dist/order-builder/helpers/calculateSellMarketPrice.js +38 -0
- package/dist/order-builder/helpers/calculateSellMarketPrice.js.map +1 -0
- package/dist/order-builder/helpers/createMarketOrder.d.ts +6 -0
- package/dist/order-builder/helpers/createMarketOrder.js +40 -0
- package/dist/order-builder/helpers/createMarketOrder.js.map +1 -0
- package/dist/order-builder/helpers/createOrder.d.ts +6 -0
- package/dist/order-builder/helpers/createOrder.js +40 -0
- package/dist/order-builder/helpers/createOrder.js.map +1 -0
- package/dist/order-builder/helpers/getMarketOrderRawAmounts.d.ts +6 -0
- package/dist/order-builder/helpers/getMarketOrderRawAmounts.js +41 -0
- package/dist/order-builder/helpers/getMarketOrderRawAmounts.js.map +1 -0
- package/dist/order-builder/helpers/getOrderRawAmounts.d.ts +6 -0
- package/dist/order-builder/helpers/getOrderRawAmounts.js +41 -0
- package/dist/order-builder/helpers/getOrderRawAmounts.js.map +1 -0
- package/dist/order-builder/helpers/index.d.ts +10 -0
- package/dist/order-builder/helpers/index.js +24 -0
- package/dist/order-builder/helpers/index.js.map +1 -0
- package/dist/order-builder/helpers/roundingConfig.d.ts +2 -0
- package/dist/order-builder/helpers/roundingConfig.js +26 -0
- package/dist/order-builder/helpers/roundingConfig.js.map +1 -0
- package/dist/order-builder/index.d.ts +1 -0
- package/dist/order-builder/index.js +5 -0
- package/dist/order-builder/index.js.map +1 -0
- package/dist/order-builder/orderBuilder.d.ts +29 -0
- package/dist/order-builder/orderBuilder.js +47 -0
- package/dist/order-builder/orderBuilder.js.map +1 -0
- package/dist/order-utils/abi/ExchangeV1.d.ts +1444 -0
- package/dist/order-utils/abi/ExchangeV1.js +1856 -0
- package/dist/order-utils/abi/ExchangeV1.js.map +1 -0
- package/dist/order-utils/abi/ExchangeV2.d.ts +1116 -0
- package/dist/order-utils/abi/ExchangeV2.js +1433 -0
- package/dist/order-utils/abi/ExchangeV2.js.map +1 -0
- package/dist/order-utils/exchangeOrderBuilderV1.d.ts +43 -0
- package/dist/order-utils/exchangeOrderBuilderV1.js +143 -0
- package/dist/order-utils/exchangeOrderBuilderV1.js.map +1 -0
- package/dist/order-utils/exchangeOrderBuilderV2.d.ts +43 -0
- package/dist/order-utils/exchangeOrderBuilderV2.js +114 -0
- package/dist/order-utils/exchangeOrderBuilderV2.js.map +1 -0
- package/dist/order-utils/index.d.ts +8 -0
- package/dist/order-utils/index.js +13 -0
- package/dist/order-utils/index.js.map +1 -0
- package/dist/order-utils/model/abi.d.ts +21 -0
- package/dist/order-utils/model/abi.js +3 -0
- package/dist/order-utils/model/abi.js.map +1 -0
- package/dist/order-utils/model/ctfExchangeV1TypedData.d.ts +6 -0
- package/dist/order-utils/model/ctfExchangeV1TypedData.js +20 -0
- package/dist/order-utils/model/ctfExchangeV1TypedData.js.map +1 -0
- package/dist/order-utils/model/ctfExchangeV2TypedData.d.ts +6 -0
- package/dist/order-utils/model/ctfExchangeV2TypedData.js +19 -0
- package/dist/order-utils/model/ctfExchangeV2TypedData.js.map +1 -0
- package/dist/order-utils/model/eip712.d.ts +29 -0
- package/dist/order-utils/model/eip712.js +10 -0
- package/dist/order-utils/model/eip712.js.map +1 -0
- package/dist/order-utils/model/order.d.ts +2 -0
- package/dist/order-utils/model/order.js +3 -0
- package/dist/order-utils/model/order.js.map +1 -0
- package/dist/order-utils/model/orderDataV1.d.ts +111 -0
- package/dist/order-utils/model/orderDataV1.js +3 -0
- package/dist/order-utils/model/orderDataV1.js.map +1 -0
- package/dist/order-utils/model/orderDataV2.d.ts +111 -0
- package/dist/order-utils/model/orderDataV2.js +3 -0
- package/dist/order-utils/model/orderDataV2.js.map +1 -0
- package/dist/order-utils/model/side.d.ts +8 -0
- package/dist/order-utils/model/side.js +14 -0
- package/dist/order-utils/model/side.js.map +1 -0
- package/dist/order-utils/model/signatureTypeV1.d.ts +14 -0
- package/dist/order-utils/model/signatureTypeV1.js +19 -0
- package/dist/order-utils/model/signatureTypeV1.js.map +1 -0
- package/dist/order-utils/model/signatureTypeV2.d.ts +18 -0
- package/dist/order-utils/model/signatureTypeV2.js +23 -0
- package/dist/order-utils/model/signatureTypeV2.js.map +1 -0
- package/dist/order-utils/utils.d.ts +1 -0
- package/dist/order-utils/utils.js +7 -0
- package/dist/order-utils/utils.js.map +1 -0
- package/dist/signing/constants.d.ts +14 -0
- package/dist/signing/constants.js +19 -0
- package/dist/signing/constants.js.map +1 -0
- package/dist/signing/eip712.d.ts +10 -0
- package/dist/signing/eip712.js +39 -0
- package/dist/signing/eip712.js.map +1 -0
- package/dist/signing/hmac.d.ts +9 -0
- package/dist/signing/hmac.js +32 -0
- package/dist/signing/hmac.js.map +1 -0
- package/dist/signing/index.d.ts +2 -0
- package/dist/signing/index.js +6 -0
- package/dist/signing/index.js.map +1 -0
- package/dist/types/clob.d.ts +377 -0
- package/dist/types/clob.js +31 -0
- package/dist/types/clob.js.map +1 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/ordersV1.d.ts +106 -0
- package/dist/types/ordersV1.js +3 -0
- package/dist/types/ordersV1.js.map +1 -0
- package/dist/types/ordersV2.d.ts +89 -0
- package/dist/types/ordersV2.js +3 -0
- package/dist/types/ordersV2.js.map +1 -0
- package/dist/types/unifiedOrder.d.ts +34 -0
- package/dist/types/unifiedOrder.js +12 -0
- package/dist/types/unifiedOrder.js.map +1 -0
- package/dist/utilities.d.ts +17 -0
- package/dist/utilities.js +120 -0
- package/dist/utilities.js.map +1 -0
- package/package.json +43 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildOrderV2 = exports.buildOrderV1 = exports.buildOrder = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const order_utils_1 = require("../../order-utils");
|
|
6
|
+
/**
|
|
7
|
+
* Generate and sign a order
|
|
8
|
+
*
|
|
9
|
+
* @param signer
|
|
10
|
+
* @param exchangeAddress ctf exchange contract address
|
|
11
|
+
* @param chainId
|
|
12
|
+
* @param OrderData
|
|
13
|
+
* @returns SignedOrder
|
|
14
|
+
*/
|
|
15
|
+
const buildOrder = (signer_1, exchangeAddress_1, chainId_1, orderData_1, ...args_1) => tslib_1.__awaiter(void 0, [signer_1, exchangeAddress_1, chainId_1, orderData_1, ...args_1], void 0, function* (signer, exchangeAddress, chainId, orderData, version = 2) {
|
|
16
|
+
switch (version) {
|
|
17
|
+
case 1:
|
|
18
|
+
return (0, exports.buildOrderV1)(signer, exchangeAddress, chainId, orderData);
|
|
19
|
+
case 2:
|
|
20
|
+
return (0, exports.buildOrderV2)(signer, exchangeAddress, chainId, orderData);
|
|
21
|
+
default:
|
|
22
|
+
throw new Error(`unsupported order version ${version}`);
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
exports.buildOrder = buildOrder;
|
|
26
|
+
const buildOrderV1 = (signer, exchangeAddress, chainId, orderData) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
27
|
+
const ctfExchangeOrderBuilder = new order_utils_1.ExchangeOrderBuilderV1(exchangeAddress, chainId, signer);
|
|
28
|
+
return ctfExchangeOrderBuilder.buildSignedOrder(orderData);
|
|
29
|
+
});
|
|
30
|
+
exports.buildOrderV1 = buildOrderV1;
|
|
31
|
+
const buildOrderV2 = (signer, exchangeAddress, chainId, orderData) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
32
|
+
const ctfExchangeOrderBuilder = new order_utils_1.ExchangeOrderBuilderV2(exchangeAddress, chainId, signer);
|
|
33
|
+
return ctfExchangeOrderBuilder.buildSignedOrder(orderData);
|
|
34
|
+
});
|
|
35
|
+
exports.buildOrderV2 = buildOrderV2;
|
|
36
|
+
//# sourceMappingURL=buildOrder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildOrder.js","sourceRoot":"","sources":["../../../src/order-builder/helpers/buildOrder.ts"],"names":[],"mappings":";;;;AAGA,mDAO2B;AAE3B;;;;;;;;GAQG;AACI,MAAM,UAAU,GAAG,iEAMgB,EAAE,gHAL3C,MAA8B,EAC9B,eAAuB,EACvB,OAAe,EACf,SAAoC,EACpC,UAAkB,CAAC;IAEnB,QAAQ,OAAO,EAAE,CAAC;QACjB,KAAK,CAAC;YACL,OAAO,IAAA,oBAAY,EAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,SAAwB,CAAC,CAAC;QACjF,KAAK,CAAC;YACL,OAAO,IAAA,oBAAY,EAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,SAAwB,CAAC,CAAC;QACjF;YACC,MAAM,IAAI,KAAK,CAAC,6BAA6B,OAAO,EAAE,CAAC,CAAC;IAC1D,CAAC;AACF,CAAC,CAAA,CAAC;AAfW,QAAA,UAAU,cAerB;AAEK,MAAM,YAAY,GAAG,CAC3B,MAA8B,EAC9B,eAAuB,EACvB,OAAe,EACf,SAAsB,EACG,EAAE;IAC3B,MAAM,uBAAuB,GAAG,IAAI,oCAAsB,CAAC,eAAe,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7F,OAAO,uBAAuB,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAC5D,CAAC,CAAA,CAAC;AARW,QAAA,YAAY,gBAQvB;AAEK,MAAM,YAAY,GAAG,CAC3B,MAA8B,EAC9B,eAAuB,EACvB,OAAe,EACf,SAAsB,EACG,EAAE;IAC3B,MAAM,uBAAuB,GAAG,IAAI,oCAAsB,CAAC,eAAe,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7F,OAAO,uBAAuB,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;AAC5D,CAAC,CAAA,CAAC;AARW,QAAA,YAAY,gBAQvB"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { OrderDataV2, SignatureTypeV2 } from "../../order-utils";
|
|
2
|
+
import type { RoundConfig, UserOrderV2 } from "../../types";
|
|
3
|
+
/**
|
|
4
|
+
* Translate simple user order to args used to generate Orders
|
|
5
|
+
*/
|
|
6
|
+
export declare const buildOrderCreationArgs: (signer: string, maker: string, signatureType: SignatureTypeV2, userOrder: UserOrderV2, roundConfig: RoundConfig) => Promise<OrderDataV2>;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildOrderCreationArgs = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const viem_1 = require("viem");
|
|
6
|
+
const config_1 = require("../../config");
|
|
7
|
+
const constants_1 = require("../../constants");
|
|
8
|
+
const getOrderRawAmounts_1 = require("./getOrderRawAmounts");
|
|
9
|
+
/**
|
|
10
|
+
* Translate simple user order to args used to generate Orders
|
|
11
|
+
*/
|
|
12
|
+
const buildOrderCreationArgs = (signer, maker, signatureType, userOrder, roundConfig) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
13
|
+
var _a;
|
|
14
|
+
const { side, rawMakerAmt, rawTakerAmt } = (0, getOrderRawAmounts_1.getOrderRawAmounts)(userOrder.side, userOrder.size, userOrder.price, roundConfig);
|
|
15
|
+
const makerAmount = (0, viem_1.parseUnits)(rawMakerAmt.toString(), config_1.COLLATERAL_TOKEN_DECIMALS).toString();
|
|
16
|
+
const takerAmount = (0, viem_1.parseUnits)(rawTakerAmt.toString(), config_1.COLLATERAL_TOKEN_DECIMALS).toString();
|
|
17
|
+
return {
|
|
18
|
+
maker,
|
|
19
|
+
tokenId: userOrder.tokenID,
|
|
20
|
+
makerAmount,
|
|
21
|
+
takerAmount,
|
|
22
|
+
side,
|
|
23
|
+
signer,
|
|
24
|
+
expiration: userOrder.expiration ? userOrder.expiration.toString() : "0",
|
|
25
|
+
signatureType,
|
|
26
|
+
timestamp: Math.floor(Date.now() / 1000).toString(),
|
|
27
|
+
metadata: constants_1.bytes32Zero,
|
|
28
|
+
builder: (_a = userOrder.builderCode) !== null && _a !== void 0 ? _a : constants_1.bytes32Zero,
|
|
29
|
+
};
|
|
30
|
+
});
|
|
31
|
+
exports.buildOrderCreationArgs = buildOrderCreationArgs;
|
|
32
|
+
//# sourceMappingURL=buildOrderCreationArgs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buildOrderCreationArgs.js","sourceRoot":"","sources":["../../../src/order-builder/helpers/buildOrderCreationArgs.ts"],"names":[],"mappings":";;;;AAAA,+BAAkC;AAElC,yCAAyD;AACzD,+CAA8C;AAI9C,6DAA0D;AAE1D;;GAEG;AACI,MAAM,sBAAsB,GAAG,CACrC,MAAc,EACd,KAAa,EACb,aAA8B,EAC9B,SAAsB,EACtB,WAAwB,EACD,EAAE;;IACzB,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,IAAA,uCAAkB,EAC5D,SAAS,CAAC,IAAI,EACd,SAAS,CAAC,IAAI,EACd,SAAS,CAAC,KAAK,EACf,WAAW,CACX,CAAC;IAEF,MAAM,WAAW,GAAG,IAAA,iBAAU,EAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,kCAAyB,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC7F,MAAM,WAAW,GAAG,IAAA,iBAAU,EAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,kCAAyB,CAAC,CAAC,QAAQ,EAAE,CAAC;IAE7F,OAAO;QACN,KAAK;QACL,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,WAAW;QACX,WAAW;QACX,IAAI;QACJ,MAAM;QACN,UAAU,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG;QACxE,aAAa;QACb,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,QAAQ,EAAE;QACnD,QAAQ,EAAE,uBAAW;QACrB,OAAO,EAAE,MAAA,SAAS,CAAC,WAAW,mCAAI,uBAAW;KAC7C,CAAC;AACH,CAAC,CAAA,CAAC;AA9BW,QAAA,sBAAsB,0BA8BjC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type OrderSummary, OrderType } from "../../types";
|
|
2
|
+
/**
|
|
3
|
+
* calculateBuyMarketPrice calculates the market price to buy a $$ amount
|
|
4
|
+
* @param positions
|
|
5
|
+
* @param amountToMatch worth to buy
|
|
6
|
+
* @returns
|
|
7
|
+
*/
|
|
8
|
+
export declare const calculateBuyMarketPrice: (positions: OrderSummary[], amountToMatch: number, orderType: OrderType) => number;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.calculateBuyMarketPrice = void 0;
|
|
4
|
+
const types_1 = require("../../types");
|
|
5
|
+
/**
|
|
6
|
+
* calculateBuyMarketPrice calculates the market price to buy a $$ amount
|
|
7
|
+
* @param positions
|
|
8
|
+
* @param amountToMatch worth to buy
|
|
9
|
+
* @returns
|
|
10
|
+
*/
|
|
11
|
+
const calculateBuyMarketPrice = (positions, amountToMatch, orderType) => {
|
|
12
|
+
if (!positions.length) {
|
|
13
|
+
throw new Error("no match");
|
|
14
|
+
}
|
|
15
|
+
let sum = 0;
|
|
16
|
+
/*
|
|
17
|
+
Asks:
|
|
18
|
+
[
|
|
19
|
+
{ price: '0.6', size: '100' },
|
|
20
|
+
{ price: '0.55', size: '100' },
|
|
21
|
+
{ price: '0.5', size: '100' }
|
|
22
|
+
]
|
|
23
|
+
So, if the amount to match is $150 that will be reached at first position so price will be 0.6
|
|
24
|
+
*/
|
|
25
|
+
for (let i = positions.length - 1; i >= 0; i--) {
|
|
26
|
+
const p = positions[i];
|
|
27
|
+
sum += parseFloat(p.size) * parseFloat(p.price);
|
|
28
|
+
if (sum >= amountToMatch) {
|
|
29
|
+
return parseFloat(p.price);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (orderType === types_1.OrderType.FOK) {
|
|
33
|
+
throw new Error("no match");
|
|
34
|
+
}
|
|
35
|
+
return parseFloat(positions[0].price);
|
|
36
|
+
};
|
|
37
|
+
exports.calculateBuyMarketPrice = calculateBuyMarketPrice;
|
|
38
|
+
//# sourceMappingURL=calculateBuyMarketPrice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calculateBuyMarketPrice.js","sourceRoot":"","sources":["../../../src/order-builder/helpers/calculateBuyMarketPrice.ts"],"names":[],"mappings":";;;AAAA,uCAA2D;AAE3D;;;;;GAKG;AACI,MAAM,uBAAuB,GAAG,CACtC,SAAyB,EACzB,aAAqB,EACrB,SAAoB,EACnB,EAAE;IACH,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ;;;;;;;;MAQK;IACL,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAChD,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACvB,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,GAAG,IAAI,aAAa,EAAE,CAAC;YAC1B,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACF,CAAC;IACD,IAAI,SAAS,KAAK,iBAAS,CAAC,GAAG,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC,CAAC;AA7BW,QAAA,uBAAuB,2BA6BlC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type OrderSummary, OrderType } from "../../types";
|
|
2
|
+
/**
|
|
3
|
+
* calculateSellMarketPrice calculates the market price to sell a shares
|
|
4
|
+
* @param positions
|
|
5
|
+
* @param amountToMatch sells to share
|
|
6
|
+
* @returns
|
|
7
|
+
*/
|
|
8
|
+
export declare const calculateSellMarketPrice: (positions: OrderSummary[], amountToMatch: number, orderType: OrderType) => number;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.calculateSellMarketPrice = void 0;
|
|
4
|
+
const types_1 = require("../../types");
|
|
5
|
+
/**
|
|
6
|
+
* calculateSellMarketPrice calculates the market price to sell a shares
|
|
7
|
+
* @param positions
|
|
8
|
+
* @param amountToMatch sells to share
|
|
9
|
+
* @returns
|
|
10
|
+
*/
|
|
11
|
+
const calculateSellMarketPrice = (positions, amountToMatch, orderType) => {
|
|
12
|
+
if (!positions.length) {
|
|
13
|
+
throw new Error("no match");
|
|
14
|
+
}
|
|
15
|
+
let sum = 0;
|
|
16
|
+
/*
|
|
17
|
+
Bids:
|
|
18
|
+
[
|
|
19
|
+
{ price: '0.4', size: '100' },
|
|
20
|
+
{ price: '0.45', size: '100' },
|
|
21
|
+
{ price: '0.5', size: '100' }
|
|
22
|
+
]
|
|
23
|
+
So, if the amount to match is 300 that will be reached at the first position so price will be 0.4
|
|
24
|
+
*/
|
|
25
|
+
for (let i = positions.length - 1; i >= 0; i--) {
|
|
26
|
+
const p = positions[i];
|
|
27
|
+
sum += parseFloat(p.size);
|
|
28
|
+
if (sum >= amountToMatch) {
|
|
29
|
+
return parseFloat(p.price);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (orderType === types_1.OrderType.FOK) {
|
|
33
|
+
throw new Error("no match");
|
|
34
|
+
}
|
|
35
|
+
return parseFloat(positions[0].price);
|
|
36
|
+
};
|
|
37
|
+
exports.calculateSellMarketPrice = calculateSellMarketPrice;
|
|
38
|
+
//# sourceMappingURL=calculateSellMarketPrice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calculateSellMarketPrice.js","sourceRoot":"","sources":["../../../src/order-builder/helpers/calculateSellMarketPrice.ts"],"names":[],"mappings":";;;AAAA,uCAA2D;AAE3D;;;;;GAKG;AACI,MAAM,wBAAwB,GAAG,CACvC,SAAyB,EACzB,aAAqB,EACrB,SAAoB,EACnB,EAAE;IACH,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ;;;;;;;;MAQK;IACL,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAChD,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACvB,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,GAAG,IAAI,aAAa,EAAE,CAAC;YAC1B,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACF,CAAC;IACD,IAAI,SAAS,KAAK,iBAAS,CAAC,GAAG,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC,CAAC;AA7BW,QAAA,wBAAwB,4BA6BnC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { JsonRpcSigner } from "@ethersproject/providers";
|
|
2
|
+
import type { Wallet } from "@ethersproject/wallet";
|
|
3
|
+
import type { SignedOrderV1, SignedOrderV2 } from "../../order-utils";
|
|
4
|
+
import { SignatureTypeV2 } from "../../order-utils";
|
|
5
|
+
import type { Chain, CreateOrderOptions, UserMarketOrderV2 } from "../../types";
|
|
6
|
+
export declare const createMarketOrder: (eoaSigner: Wallet | JsonRpcSigner, chainId: Chain, signatureType: SignatureTypeV2, funderAddress: string | undefined, userMarketOrder: UserMarketOrderV2, options: CreateOrderOptions, version: number) => Promise<SignedOrderV1 | SignedOrderV2>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createMarketOrder = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const viem_1 = require("viem");
|
|
6
|
+
const config_1 = require("../../config");
|
|
7
|
+
const order_utils_1 = require("../../order-utils");
|
|
8
|
+
const buildMarketOrderCreationArgs_1 = require("./buildMarketOrderCreationArgs");
|
|
9
|
+
const buildOrder_1 = require("./buildOrder");
|
|
10
|
+
const roundingConfig_1 = require("./roundingConfig");
|
|
11
|
+
const createMarketOrder = (eoaSigner, chainId, signatureType, funderAddress, userMarketOrder, options, version) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
12
|
+
const eoaSignerAddress = yield eoaSigner.getAddress();
|
|
13
|
+
// If funder address is not given, use the signer address
|
|
14
|
+
const maker = funderAddress === undefined ? eoaSignerAddress : funderAddress;
|
|
15
|
+
const contractConfig = (0, config_1.getContractConfig)(chainId);
|
|
16
|
+
const orderData = yield (0, buildMarketOrderCreationArgs_1.buildMarketOrderCreationArgs)(eoaSignerAddress, maker, signatureType, userMarketOrder, roundingConfig_1.ROUNDING_CONFIG[options.tickSize]);
|
|
17
|
+
let exchangeContract;
|
|
18
|
+
switch (version) {
|
|
19
|
+
case 1:
|
|
20
|
+
if (signatureType === order_utils_1.SignatureTypeV2.POLY_1271) {
|
|
21
|
+
throw new Error(`signature type POLY_1271 is not supported for v1 orders`);
|
|
22
|
+
}
|
|
23
|
+
exchangeContract = options.negRisk
|
|
24
|
+
? contractConfig.negRiskExchange
|
|
25
|
+
: contractConfig.exchange;
|
|
26
|
+
// Add taker field for V1 orders (V1 requires it, V2 does not)
|
|
27
|
+
orderData.taker = viem_1.zeroAddress;
|
|
28
|
+
break;
|
|
29
|
+
case 2:
|
|
30
|
+
exchangeContract = options.negRisk
|
|
31
|
+
? contractConfig.negRiskExchangeV2
|
|
32
|
+
: contractConfig.exchangeV2;
|
|
33
|
+
break;
|
|
34
|
+
default:
|
|
35
|
+
throw new Error(`unsupported order version ${version}`);
|
|
36
|
+
}
|
|
37
|
+
return (0, buildOrder_1.buildOrder)(eoaSigner, exchangeContract, chainId, orderData, version);
|
|
38
|
+
});
|
|
39
|
+
exports.createMarketOrder = createMarketOrder;
|
|
40
|
+
//# sourceMappingURL=createMarketOrder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createMarketOrder.js","sourceRoot":"","sources":["../../../src/order-builder/helpers/createMarketOrder.ts"],"names":[],"mappings":";;;;AAEA,+BAAmC;AACnC,yCAAiD;AAEjD,mDAAoD;AAEpD,iFAA8E;AAC9E,6CAA0C;AAC1C,qDAAmD;AAE5C,MAAM,iBAAiB,GAAG,CAChC,SAAiC,EACjC,OAAc,EACd,aAA8B,EAC9B,aAAiC,EACjC,eAAkC,EAClC,OAA2B,EAC3B,OAAe,EAC0B,EAAE;IAC3C,MAAM,gBAAgB,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;IAEtD,yDAAyD;IACzD,MAAM,KAAK,GAAG,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC;IAC7E,MAAM,cAAc,GAAG,IAAA,0BAAiB,EAAC,OAAO,CAAC,CAAC;IAElD,MAAM,SAAS,GAAG,MAAM,IAAA,2DAA4B,EACnD,gBAAgB,EAChB,KAAK,EACL,aAAa,EACb,eAAe,EACf,gCAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CACjC,CAAC;IAEF,IAAI,gBAAwB,CAAC;IAC7B,QAAQ,OAAO,EAAE,CAAC;QACjB,KAAK,CAAC;YACL,IAAI,aAAa,KAAK,6BAAe,CAAC,SAAS,EAAE,CAAC;gBACjD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;YAC5E,CAAC;YACD,gBAAgB,GAAG,OAAO,CAAC,OAAO;gBACjC,CAAC,CAAC,cAAc,CAAC,eAAe;gBAChC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC;YAC3B,8DAA8D;YAC7D,SAAyB,CAAC,KAAK,GAAG,kBAAW,CAAC;YAC/C,MAAM;QACP,KAAK,CAAC;YACL,gBAAgB,GAAG,OAAO,CAAC,OAAO;gBACjC,CAAC,CAAC,cAAc,CAAC,iBAAiB;gBAClC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC;YAC7B,MAAM;QACP;YACC,MAAM,IAAI,KAAK,CAAC,6BAA6B,OAAO,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,IAAA,uBAAU,EAAC,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAC7E,CAAC,CAAA,CAAC;AA7CW,QAAA,iBAAiB,qBA6C5B"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { JsonRpcSigner } from "@ethersproject/providers";
|
|
2
|
+
import type { Wallet } from "@ethersproject/wallet";
|
|
3
|
+
import type { SignedOrderV1, SignedOrderV2 } from "../../order-utils";
|
|
4
|
+
import { SignatureTypeV2 } from "../../order-utils";
|
|
5
|
+
import type { Chain, CreateOrderOptions, UserOrderV2 } from "../../types";
|
|
6
|
+
export declare const createOrder: (eoaSigner: Wallet | JsonRpcSigner, chainId: Chain, signatureType: SignatureTypeV2, funderAddress: string | undefined, userOrder: UserOrderV2, options: CreateOrderOptions, version: number) => Promise<SignedOrderV1 | SignedOrderV2>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createOrder = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const viem_1 = require("viem");
|
|
6
|
+
const config_1 = require("../../config");
|
|
7
|
+
const order_utils_1 = require("../../order-utils");
|
|
8
|
+
const buildOrder_1 = require("./buildOrder");
|
|
9
|
+
const buildOrderCreationArgs_1 = require("./buildOrderCreationArgs");
|
|
10
|
+
const roundingConfig_1 = require("./roundingConfig");
|
|
11
|
+
const createOrder = (eoaSigner, chainId, signatureType, funderAddress, userOrder, options, version) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
12
|
+
const eoaSignerAddress = yield eoaSigner.getAddress();
|
|
13
|
+
// If funder address is not given, use the signer address
|
|
14
|
+
const maker = funderAddress === undefined ? eoaSignerAddress : funderAddress;
|
|
15
|
+
const contractConfig = (0, config_1.getContractConfig)(chainId);
|
|
16
|
+
const orderData = yield (0, buildOrderCreationArgs_1.buildOrderCreationArgs)(eoaSignerAddress, maker, signatureType, userOrder, roundingConfig_1.ROUNDING_CONFIG[options.tickSize]);
|
|
17
|
+
let exchangeContract;
|
|
18
|
+
switch (version) {
|
|
19
|
+
case 1:
|
|
20
|
+
if (signatureType === order_utils_1.SignatureTypeV2.POLY_1271) {
|
|
21
|
+
throw new Error(`signature type POLY_1271 is not supported for v1 orders`);
|
|
22
|
+
}
|
|
23
|
+
exchangeContract = options.negRisk
|
|
24
|
+
? contractConfig.negRiskExchange
|
|
25
|
+
: contractConfig.exchange;
|
|
26
|
+
// Add taker field for V1 orders (V1 requires it, V2 does not)
|
|
27
|
+
orderData.taker = viem_1.zeroAddress;
|
|
28
|
+
break;
|
|
29
|
+
case 2:
|
|
30
|
+
exchangeContract = options.negRisk
|
|
31
|
+
? contractConfig.negRiskExchangeV2
|
|
32
|
+
: contractConfig.exchangeV2;
|
|
33
|
+
break;
|
|
34
|
+
default:
|
|
35
|
+
throw new Error(`unsupported order version ${version}`);
|
|
36
|
+
}
|
|
37
|
+
return (0, buildOrder_1.buildOrder)(eoaSigner, exchangeContract, chainId, orderData, version);
|
|
38
|
+
});
|
|
39
|
+
exports.createOrder = createOrder;
|
|
40
|
+
//# sourceMappingURL=createOrder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createOrder.js","sourceRoot":"","sources":["../../../src/order-builder/helpers/createOrder.ts"],"names":[],"mappings":";;;;AAEA,+BAAmC;AACnC,yCAAiD;AAEjD,mDAAoD;AAEpD,6CAA0C;AAC1C,qEAAkE;AAClE,qDAAmD;AAE5C,MAAM,WAAW,GAAG,CAC1B,SAAiC,EACjC,OAAc,EACd,aAA8B,EAC9B,aAAiC,EACjC,SAAsB,EACtB,OAA2B,EAC3B,OAAe,EAC0B,EAAE;IAC3C,MAAM,gBAAgB,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE,CAAC;IAEtD,yDAAyD;IACzD,MAAM,KAAK,GAAG,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC;IAC7E,MAAM,cAAc,GAAG,IAAA,0BAAiB,EAAC,OAAO,CAAC,CAAC;IAElD,MAAM,SAAS,GAAG,MAAM,IAAA,+CAAsB,EAC7C,gBAAgB,EAChB,KAAK,EACL,aAAa,EACb,SAAS,EACT,gCAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,CACjC,CAAC;IACF,IAAI,gBAAwB,CAAC;IAC7B,QAAQ,OAAO,EAAE,CAAC;QACjB,KAAK,CAAC;YACL,IAAI,aAAa,KAAK,6BAAe,CAAC,SAAS,EAAE,CAAC;gBACjD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;YAC5E,CAAC;YACD,gBAAgB,GAAG,OAAO,CAAC,OAAO;gBACjC,CAAC,CAAC,cAAc,CAAC,eAAe;gBAChC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC;YAC3B,8DAA8D;YAC7D,SAAyB,CAAC,KAAK,GAAG,kBAAW,CAAC;YAC/C,MAAM;QACP,KAAK,CAAC;YACL,gBAAgB,GAAG,OAAO,CAAC,OAAO;gBACjC,CAAC,CAAC,cAAc,CAAC,iBAAiB;gBAClC,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC;YAC7B,MAAM;QACP;YACC,MAAM,IAAI,KAAK,CAAC,6BAA6B,OAAO,EAAE,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,IAAA,uBAAU,EAAC,SAAS,EAAE,gBAAgB,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;AAC7E,CAAC,CAAA,CAAC;AA3CW,QAAA,WAAW,eA2CtB"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getMarketOrderRawAmounts = void 0;
|
|
4
|
+
const types_1 = require("../../types");
|
|
5
|
+
const utilities_1 = require("../../utilities");
|
|
6
|
+
const getMarketOrderRawAmounts = (side, amount, price, roundConfig) => {
|
|
7
|
+
// force 2 decimals places
|
|
8
|
+
const rawPrice = (0, utilities_1.roundDown)(price, roundConfig.price);
|
|
9
|
+
if (side === types_1.Side.BUY) {
|
|
10
|
+
const rawMakerAmt = (0, utilities_1.roundDown)(amount, roundConfig.size);
|
|
11
|
+
let rawTakerAmt = rawMakerAmt / rawPrice;
|
|
12
|
+
if ((0, utilities_1.decimalPlaces)(rawTakerAmt) > roundConfig.amount) {
|
|
13
|
+
rawTakerAmt = (0, utilities_1.roundUp)(rawTakerAmt, roundConfig.amount + 4);
|
|
14
|
+
if ((0, utilities_1.decimalPlaces)(rawTakerAmt) > roundConfig.amount) {
|
|
15
|
+
rawTakerAmt = (0, utilities_1.roundDown)(rawTakerAmt, roundConfig.amount);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
side: types_1.Side.BUY,
|
|
20
|
+
rawMakerAmt,
|
|
21
|
+
rawTakerAmt,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
const rawMakerAmt = (0, utilities_1.roundDown)(amount, roundConfig.size);
|
|
26
|
+
let rawTakerAmt = rawMakerAmt * rawPrice;
|
|
27
|
+
if ((0, utilities_1.decimalPlaces)(rawTakerAmt) > roundConfig.amount) {
|
|
28
|
+
rawTakerAmt = (0, utilities_1.roundUp)(rawTakerAmt, roundConfig.amount + 4);
|
|
29
|
+
if ((0, utilities_1.decimalPlaces)(rawTakerAmt) > roundConfig.amount) {
|
|
30
|
+
rawTakerAmt = (0, utilities_1.roundDown)(rawTakerAmt, roundConfig.amount);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
side: types_1.Side.SELL,
|
|
35
|
+
rawMakerAmt,
|
|
36
|
+
rawTakerAmt,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
exports.getMarketOrderRawAmounts = getMarketOrderRawAmounts;
|
|
41
|
+
//# sourceMappingURL=getMarketOrderRawAmounts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getMarketOrderRawAmounts.js","sourceRoot":"","sources":["../../../src/order-builder/helpers/getMarketOrderRawAmounts.ts"],"names":[],"mappings":";;;AAAA,uCAAqD;AACrD,+CAAoE;AAE7D,MAAM,wBAAwB,GAAG,CACvC,IAAU,EACV,MAAc,EACd,KAAa,EACb,WAAwB,EACmC,EAAE;IAC7D,0BAA0B;IAC1B,MAAM,QAAQ,GAAG,IAAA,qBAAS,EAAC,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;IAErD,IAAI,IAAI,KAAK,YAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,IAAA,qBAAS,EAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;QACzC,IAAI,IAAA,yBAAa,EAAC,WAAW,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;YACrD,WAAW,GAAG,IAAA,mBAAO,EAAC,WAAW,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC3D,IAAI,IAAA,yBAAa,EAAC,WAAW,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;gBACrD,WAAW,GAAG,IAAA,qBAAS,EAAC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;YAC1D,CAAC;QACF,CAAC;QACD,OAAO;YACN,IAAI,EAAE,YAAI,CAAC,GAAG;YACd,WAAW;YACX,WAAW;SACX,CAAC;IACH,CAAC;SAAM,CAAC;QACP,MAAM,WAAW,GAAG,IAAA,qBAAS,EAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;QACzC,IAAI,IAAA,yBAAa,EAAC,WAAW,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;YACrD,WAAW,GAAG,IAAA,mBAAO,EAAC,WAAW,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC3D,IAAI,IAAA,yBAAa,EAAC,WAAW,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;gBACrD,WAAW,GAAG,IAAA,qBAAS,EAAC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;YAC1D,CAAC;QACF,CAAC;QAED,OAAO;YACN,IAAI,EAAE,YAAI,CAAC,IAAI;YACf,WAAW;YACX,WAAW;SACX,CAAC;IACH,CAAC;AACF,CAAC,CAAC;AAvCW,QAAA,wBAAwB,4BAuCnC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getOrderRawAmounts = void 0;
|
|
4
|
+
const types_1 = require("../../types");
|
|
5
|
+
const utilities_1 = require("../../utilities");
|
|
6
|
+
const getOrderRawAmounts = (side, size, price, roundConfig) => {
|
|
7
|
+
const rawPrice = (0, utilities_1.roundNormal)(price, roundConfig.price);
|
|
8
|
+
if (side === types_1.Side.BUY) {
|
|
9
|
+
// force 2 decimals places
|
|
10
|
+
const rawTakerAmt = (0, utilities_1.roundDown)(size, roundConfig.size);
|
|
11
|
+
let rawMakerAmt = rawTakerAmt * rawPrice;
|
|
12
|
+
if ((0, utilities_1.decimalPlaces)(rawMakerAmt) > roundConfig.amount) {
|
|
13
|
+
rawMakerAmt = (0, utilities_1.roundUp)(rawMakerAmt, roundConfig.amount + 4);
|
|
14
|
+
if ((0, utilities_1.decimalPlaces)(rawMakerAmt) > roundConfig.amount) {
|
|
15
|
+
rawMakerAmt = (0, utilities_1.roundDown)(rawMakerAmt, roundConfig.amount);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
side: types_1.Side.BUY,
|
|
20
|
+
rawMakerAmt,
|
|
21
|
+
rawTakerAmt,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
else {
|
|
25
|
+
const rawMakerAmt = (0, utilities_1.roundDown)(size, roundConfig.size);
|
|
26
|
+
let rawTakerAmt = rawMakerAmt * rawPrice;
|
|
27
|
+
if ((0, utilities_1.decimalPlaces)(rawTakerAmt) > roundConfig.amount) {
|
|
28
|
+
rawTakerAmt = (0, utilities_1.roundUp)(rawTakerAmt, roundConfig.amount + 4);
|
|
29
|
+
if ((0, utilities_1.decimalPlaces)(rawTakerAmt) > roundConfig.amount) {
|
|
30
|
+
rawTakerAmt = (0, utilities_1.roundDown)(rawTakerAmt, roundConfig.amount);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
side: types_1.Side.SELL,
|
|
35
|
+
rawMakerAmt,
|
|
36
|
+
rawTakerAmt,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
exports.getOrderRawAmounts = getOrderRawAmounts;
|
|
41
|
+
//# sourceMappingURL=getOrderRawAmounts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getOrderRawAmounts.js","sourceRoot":"","sources":["../../../src/order-builder/helpers/getOrderRawAmounts.ts"],"names":[],"mappings":";;;AAAA,uCAAqD;AACrD,+CAAiF;AAE1E,MAAM,kBAAkB,GAAG,CACjC,IAAU,EACV,IAAY,EACZ,KAAa,EACb,WAAwB,EACmC,EAAE;IAC7D,MAAM,QAAQ,GAAG,IAAA,uBAAW,EAAC,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;IAEvD,IAAI,IAAI,KAAK,YAAI,CAAC,GAAG,EAAE,CAAC;QACvB,0BAA0B;QAC1B,MAAM,WAAW,GAAG,IAAA,qBAAS,EAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QAEtD,IAAI,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;QACzC,IAAI,IAAA,yBAAa,EAAC,WAAW,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;YACrD,WAAW,GAAG,IAAA,mBAAO,EAAC,WAAW,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC3D,IAAI,IAAA,yBAAa,EAAC,WAAW,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;gBACrD,WAAW,GAAG,IAAA,qBAAS,EAAC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;YAC1D,CAAC;QACF,CAAC;QAED,OAAO;YACN,IAAI,EAAE,YAAI,CAAC,GAAG;YACd,WAAW;YACX,WAAW;SACX,CAAC;IACH,CAAC;SAAM,CAAC;QACP,MAAM,WAAW,GAAG,IAAA,qBAAS,EAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;QAEtD,IAAI,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;QACzC,IAAI,IAAA,yBAAa,EAAC,WAAW,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;YACrD,WAAW,GAAG,IAAA,mBAAO,EAAC,WAAW,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC3D,IAAI,IAAA,yBAAa,EAAC,WAAW,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;gBACrD,WAAW,GAAG,IAAA,qBAAS,EAAC,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;YAC1D,CAAC;QACF,CAAC;QAED,OAAO;YACN,IAAI,EAAE,YAAI,CAAC,IAAI;YACf,WAAW;YACX,WAAW;SACX,CAAC;IACH,CAAC;AACF,CAAC,CAAC;AA1CW,QAAA,kBAAkB,sBA0C7B"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { buildMarketOrderCreationArgs } from "./buildMarketOrderCreationArgs";
|
|
2
|
+
export { buildOrder } from "./buildOrder";
|
|
3
|
+
export { buildOrderCreationArgs } from "./buildOrderCreationArgs";
|
|
4
|
+
export { calculateBuyMarketPrice } from "./calculateBuyMarketPrice";
|
|
5
|
+
export { calculateSellMarketPrice } from "./calculateSellMarketPrice";
|
|
6
|
+
export { createMarketOrder } from "./createMarketOrder";
|
|
7
|
+
export { createOrder } from "./createOrder";
|
|
8
|
+
export { getMarketOrderRawAmounts } from "./getMarketOrderRawAmounts";
|
|
9
|
+
export { getOrderRawAmounts } from "./getOrderRawAmounts";
|
|
10
|
+
export { ROUNDING_CONFIG } from "./roundingConfig";
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ROUNDING_CONFIG = exports.getOrderRawAmounts = exports.getMarketOrderRawAmounts = exports.createOrder = exports.createMarketOrder = exports.calculateSellMarketPrice = exports.calculateBuyMarketPrice = exports.buildOrderCreationArgs = exports.buildOrder = exports.buildMarketOrderCreationArgs = void 0;
|
|
4
|
+
var buildMarketOrderCreationArgs_1 = require("./buildMarketOrderCreationArgs");
|
|
5
|
+
Object.defineProperty(exports, "buildMarketOrderCreationArgs", { enumerable: true, get: function () { return buildMarketOrderCreationArgs_1.buildMarketOrderCreationArgs; } });
|
|
6
|
+
var buildOrder_1 = require("./buildOrder");
|
|
7
|
+
Object.defineProperty(exports, "buildOrder", { enumerable: true, get: function () { return buildOrder_1.buildOrder; } });
|
|
8
|
+
var buildOrderCreationArgs_1 = require("./buildOrderCreationArgs");
|
|
9
|
+
Object.defineProperty(exports, "buildOrderCreationArgs", { enumerable: true, get: function () { return buildOrderCreationArgs_1.buildOrderCreationArgs; } });
|
|
10
|
+
var calculateBuyMarketPrice_1 = require("./calculateBuyMarketPrice");
|
|
11
|
+
Object.defineProperty(exports, "calculateBuyMarketPrice", { enumerable: true, get: function () { return calculateBuyMarketPrice_1.calculateBuyMarketPrice; } });
|
|
12
|
+
var calculateSellMarketPrice_1 = require("./calculateSellMarketPrice");
|
|
13
|
+
Object.defineProperty(exports, "calculateSellMarketPrice", { enumerable: true, get: function () { return calculateSellMarketPrice_1.calculateSellMarketPrice; } });
|
|
14
|
+
var createMarketOrder_1 = require("./createMarketOrder");
|
|
15
|
+
Object.defineProperty(exports, "createMarketOrder", { enumerable: true, get: function () { return createMarketOrder_1.createMarketOrder; } });
|
|
16
|
+
var createOrder_1 = require("./createOrder");
|
|
17
|
+
Object.defineProperty(exports, "createOrder", { enumerable: true, get: function () { return createOrder_1.createOrder; } });
|
|
18
|
+
var getMarketOrderRawAmounts_1 = require("./getMarketOrderRawAmounts");
|
|
19
|
+
Object.defineProperty(exports, "getMarketOrderRawAmounts", { enumerable: true, get: function () { return getMarketOrderRawAmounts_1.getMarketOrderRawAmounts; } });
|
|
20
|
+
var getOrderRawAmounts_1 = require("./getOrderRawAmounts");
|
|
21
|
+
Object.defineProperty(exports, "getOrderRawAmounts", { enumerable: true, get: function () { return getOrderRawAmounts_1.getOrderRawAmounts; } });
|
|
22
|
+
var roundingConfig_1 = require("./roundingConfig");
|
|
23
|
+
Object.defineProperty(exports, "ROUNDING_CONFIG", { enumerable: true, get: function () { return roundingConfig_1.ROUNDING_CONFIG; } });
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/order-builder/helpers/index.ts"],"names":[],"mappings":";;;AAAA,+EAA8E;AAArE,4IAAA,4BAA4B,OAAA;AACrC,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AACnB,mEAAkE;AAAzD,gIAAA,sBAAsB,OAAA;AAC/B,qEAAoE;AAA3D,kIAAA,uBAAuB,OAAA;AAChC,uEAAsE;AAA7D,oIAAA,wBAAwB,OAAA;AACjC,yDAAwD;AAA/C,sHAAA,iBAAiB,OAAA;AAC1B,6CAA4C;AAAnC,0GAAA,WAAW,OAAA;AACpB,uEAAsE;AAA7D,oIAAA,wBAAwB,OAAA;AACjC,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA;AAC3B,mDAAmD;AAA1C,iHAAA,eAAe,OAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ROUNDING_CONFIG = void 0;
|
|
4
|
+
exports.ROUNDING_CONFIG = {
|
|
5
|
+
"0.1": {
|
|
6
|
+
price: 1,
|
|
7
|
+
size: 2,
|
|
8
|
+
amount: 3,
|
|
9
|
+
},
|
|
10
|
+
"0.01": {
|
|
11
|
+
price: 2,
|
|
12
|
+
size: 2,
|
|
13
|
+
amount: 4,
|
|
14
|
+
},
|
|
15
|
+
"0.001": {
|
|
16
|
+
price: 3,
|
|
17
|
+
size: 2,
|
|
18
|
+
amount: 5,
|
|
19
|
+
},
|
|
20
|
+
"0.0001": {
|
|
21
|
+
price: 4,
|
|
22
|
+
size: 2,
|
|
23
|
+
amount: 6,
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=roundingConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roundingConfig.js","sourceRoot":"","sources":["../../../src/order-builder/helpers/roundingConfig.ts"],"names":[],"mappings":";;;AAEa,QAAA,eAAe,GAAkC;IAC7D,KAAK,EAAE;QACN,KAAK,EAAE,CAAC;QACR,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,CAAC;KACT;IACD,MAAM,EAAE;QACP,KAAK,EAAE,CAAC;QACR,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,CAAC;KACT;IACD,OAAO,EAAE;QACR,KAAK,EAAE,CAAC;QACR,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,CAAC;KACT;IACD,QAAQ,EAAE;QACT,KAAK,EAAE,CAAC;QACR,IAAI,EAAE,CAAC;QACP,MAAM,EAAE,CAAC;KACT;CACD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./orderBuilder";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/order-builder/index.ts"],"names":[],"mappings":";;;AAAA,yDAA+B"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { JsonRpcSigner } from "@ethersproject/providers";
|
|
2
|
+
import type { Wallet } from "@ethersproject/wallet";
|
|
3
|
+
import { SignatureTypeV2, type SignedOrderV1, type SignedOrderV2 } from "../order-utils";
|
|
4
|
+
import type { Chain, CreateOrderOptions, UserMarketOrderV1, UserMarketOrderV2, UserOrderV1, UserOrderV2 } from "../types";
|
|
5
|
+
export declare class OrderBuilder {
|
|
6
|
+
readonly signer: Wallet | JsonRpcSigner;
|
|
7
|
+
readonly chainId: Chain;
|
|
8
|
+
readonly signatureType: SignatureTypeV2;
|
|
9
|
+
readonly funderAddress?: string;
|
|
10
|
+
/**
|
|
11
|
+
* Optional function to dynamically resolve the signer.
|
|
12
|
+
* If provided, this function will be called to obtain a fresh signer instance
|
|
13
|
+
* (e.g., for smart contract wallets or when the signer may change).
|
|
14
|
+
* Should return a Wallet or JsonRpcSigner, or a Promise resolving to one.
|
|
15
|
+
* If not provided, the static `signer` property is used.
|
|
16
|
+
*/
|
|
17
|
+
private getSigner?;
|
|
18
|
+
constructor(signer: Wallet | JsonRpcSigner, chainId: Chain, signatureType?: SignatureTypeV2, funderAddress?: string, getSigner?: () => Promise<Wallet | JsonRpcSigner> | (Wallet | JsonRpcSigner));
|
|
19
|
+
/**
|
|
20
|
+
* Generate and sign a order
|
|
21
|
+
*/
|
|
22
|
+
buildOrder(userOrder: UserOrderV1 | UserOrderV2, options: CreateOrderOptions, version: number): Promise<SignedOrderV1 | SignedOrderV2>;
|
|
23
|
+
/**
|
|
24
|
+
* Generate and sign a market order
|
|
25
|
+
*/
|
|
26
|
+
buildMarketOrder(userMarketOrder: UserMarketOrderV1 | UserMarketOrderV2, options: CreateOrderOptions, version: number): Promise<SignedOrderV1 | SignedOrderV2>;
|
|
27
|
+
/** Unified getter: use fresh signer if available */
|
|
28
|
+
private resolveSigner;
|
|
29
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OrderBuilder = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const order_utils_1 = require("../order-utils");
|
|
6
|
+
const helpers_1 = require("./helpers");
|
|
7
|
+
class OrderBuilder {
|
|
8
|
+
constructor(signer, chainId, signatureType, funderAddress, getSigner) {
|
|
9
|
+
this.signer = signer;
|
|
10
|
+
this.chainId = chainId;
|
|
11
|
+
this.signatureType = signatureType === undefined ? order_utils_1.SignatureTypeV2.EOA : signatureType;
|
|
12
|
+
this.funderAddress = funderAddress;
|
|
13
|
+
this.getSigner = getSigner;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Generate and sign a order
|
|
17
|
+
*/
|
|
18
|
+
buildOrder(userOrder, options, version) {
|
|
19
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
20
|
+
const signer = yield this.resolveSigner();
|
|
21
|
+
return (0, helpers_1.createOrder)(signer, this.chainId, this.signatureType, this.funderAddress, userOrder, options, version);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Generate and sign a market order
|
|
26
|
+
*/
|
|
27
|
+
buildMarketOrder(userMarketOrder, options, version) {
|
|
28
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
const signer = yield this.resolveSigner();
|
|
30
|
+
return (0, helpers_1.createMarketOrder)(signer, this.chainId, this.signatureType, this.funderAddress, userMarketOrder, options, version);
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
/** Unified getter: use fresh signer if available */
|
|
34
|
+
resolveSigner() {
|
|
35
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
36
|
+
if (this.getSigner) {
|
|
37
|
+
const s = yield this.getSigner();
|
|
38
|
+
if (!s)
|
|
39
|
+
throw new Error("getSigner() function returned undefined or null");
|
|
40
|
+
return s;
|
|
41
|
+
}
|
|
42
|
+
return this.signer;
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
exports.OrderBuilder = OrderBuilder;
|
|
47
|
+
//# sourceMappingURL=orderBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orderBuilder.js","sourceRoot":"","sources":["../../src/order-builder/orderBuilder.ts"],"names":[],"mappings":";;;;AAGA,gDAAyF;AAUzF,uCAA2D;AAE3D,MAAa,YAAY;IAsBxB,YACC,MAA8B,EAC9B,OAAc,EACd,aAA+B,EAC/B,aAAsB,EACtB,SAA4E;QAE5E,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,6BAAe,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC;QACvF,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED;;OAEG;IACU,UAAU,CACtB,SAAoC,EACpC,OAA2B,EAC3B,OAAe;;YAEf,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAC1C,OAAO,IAAA,qBAAW,EACjB,MAAM,EACN,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,aAAa,EAClB,SAAS,EACT,OAAO,EACP,OAAO,CACP,CAAC;QACH,CAAC;KAAA;IAED;;OAEG;IACU,gBAAgB,CAC5B,eAAsD,EACtD,OAA2B,EAC3B,OAAe;;YAEf,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAC1C,OAAO,IAAA,2BAAiB,EACvB,MAAM,EACN,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,aAAa,EAClB,eAAe,EACf,OAAO,EACP,OAAO,CACP,CAAC;QACH,CAAC;KAAA;IAED,oDAAoD;IACtC,aAAa;;YAC1B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACpB,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjC,IAAI,CAAC,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;gBAC3E,OAAO,CAAC,CAAC;YACV,CAAC;YACD,OAAO,IAAI,CAAC,MAAM,CAAC;QACpB,CAAC;KAAA;CACD;AArFD,oCAqFC"}
|