@polymarket/clob-client 1.0.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 +49 -0
- package/dist/client.d.ts +12 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +23 -0
- package/dist/client.js.map +1 -0
- package/dist/examples/createApiKey.d.ts +2 -0
- package/dist/examples/createApiKey.d.ts.map +1 -0
- package/dist/examples/createApiKey.js +19 -0
- package/dist/examples/createApiKey.js.map +1 -0
- package/dist/examples/createOrder.d.ts +2 -0
- package/dist/examples/createOrder.d.ts.map +1 -0
- package/dist/examples/createOrder.js +34 -0
- package/dist/examples/createOrder.js.map +1 -0
- package/dist/examples/getApiKeys.d.ts +2 -0
- package/dist/examples/getApiKeys.d.ts.map +1 -0
- package/dist/examples/getApiKeys.js +23 -0
- package/dist/examples/getApiKeys.js.map +1 -0
- package/dist/examples/getOpenOrders.d.ts +2 -0
- package/dist/examples/getOpenOrders.d.ts.map +1 -0
- package/dist/examples/getOpenOrders.js +23 -0
- package/dist/examples/getOpenOrders.js.map +1 -0
- package/dist/examples/getServerTime.d.ts +2 -0
- package/dist/examples/getServerTime.d.ts.map +1 -0
- package/dist/examples/getServerTime.js +11 -0
- package/dist/examples/getServerTime.js.map +1 -0
- package/dist/examples/getTradeHistory.d.ts +2 -0
- package/dist/examples/getTradeHistory.d.ts.map +1 -0
- package/dist/examples/getTradeHistory.js +23 -0
- package/dist/examples/getTradeHistory.js.map +1 -0
- package/dist/examples/marketOrder.d.ts +2 -0
- package/dist/examples/marketOrder.d.ts.map +1 -0
- package/dist/examples/marketOrder.js +42 -0
- package/dist/examples/marketOrder.js.map +1 -0
- package/dist/examples/testMarketBuy.d.ts +2 -0
- package/dist/examples/testMarketBuy.d.ts.map +1 -0
- package/dist/examples/testMarketBuy.js +50 -0
- package/dist/examples/testMarketBuy.js.map +1 -0
- package/dist/examples/testMarketSell.d.ts +2 -0
- package/dist/examples/testMarketSell.d.ts.map +1 -0
- package/dist/examples/testMarketSell.js +50 -0
- package/dist/examples/testMarketSell.js.map +1 -0
- package/dist/examples/testMultiSigMarketBuy.d.ts +2 -0
- package/dist/examples/testMultiSigMarketBuy.d.ts.map +1 -0
- package/dist/examples/testMultiSigMarketBuy.js +52 -0
- package/dist/examples/testMultiSigMarketBuy.js.map +1 -0
- package/dist/examples/testPolyProxyMarketBuy.d.ts +2 -0
- package/dist/examples/testPolyProxyMarketBuy.d.ts.map +1 -0
- package/dist/examples/testPolyProxyMarketBuy.js +52 -0
- package/dist/examples/testPolyProxyMarketBuy.js.map +1 -0
- package/dist/examples/testPolyProxyMarketSell.d.ts +2 -0
- package/dist/examples/testPolyProxyMarketSell.d.ts.map +1 -0
- package/dist/examples/testPolyProxyMarketSell.js +52 -0
- package/dist/examples/testPolyProxyMarketSell.js.map +1 -0
- package/dist/helpers/index.d.ts +5 -0
- package/dist/helpers/index.d.ts.map +1 -0
- package/dist/helpers/index.js +16 -0
- package/dist/helpers/index.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/keys.ts/index.d.ts +4 -0
- package/dist/keys.ts/index.d.ts.map +1 -0
- package/dist/keys.ts/index.js +14 -0
- package/dist/keys.ts/index.js.map +1 -0
- package/dist/signing/constants.d.ts +15 -0
- package/dist/signing/constants.d.ts.map +1 -0
- package/dist/signing/constants.js +16 -0
- package/dist/signing/constants.js.map +1 -0
- package/dist/signing/eip712.d.ts +10 -0
- package/dist/signing/eip712.d.ts.map +1 -0
- package/dist/signing/eip712.js +32 -0
- package/dist/signing/eip712.js.map +1 -0
- package/dist/signing/hmac.d.ts +10 -0
- package/dist/signing/hmac.d.ts.map +1 -0
- package/dist/signing/hmac.js +25 -0
- package/dist/signing/hmac.js.map +1 -0
- package/dist/signing/index.d.ts +3 -0
- package/dist/signing/index.d.ts.map +1 -0
- package/dist/signing/index.js +3 -0
- package/dist/signing/index.js.map +1 -0
- package/dist/src/client.d.ts +26 -0
- package/dist/src/client.d.ts.map +1 -0
- package/dist/src/client.js +134 -0
- package/dist/src/client.js.map +1 -0
- package/dist/src/constants.d.ts +2 -0
- package/dist/src/constants.d.ts.map +1 -0
- package/dist/src/constants.js +5 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/contracts/index.d.ts +9 -0
- package/dist/src/contracts/index.d.ts.map +1 -0
- package/dist/src/contracts/index.js +21 -0
- package/dist/src/contracts/index.js.map +1 -0
- package/dist/src/endpoints.d.ts +9 -0
- package/dist/src/endpoints.d.ts.map +1 -0
- package/dist/src/endpoints.js +9 -0
- package/dist/src/endpoints.js.map +1 -0
- package/dist/src/errors.d.ts +3 -0
- package/dist/src/errors.d.ts.map +1 -0
- package/dist/src/errors.js +3 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/headers/index.d.ts +6 -0
- package/dist/src/headers/index.d.ts.map +1 -0
- package/dist/src/headers/index.js +26 -0
- package/dist/src/headers/index.js.map +1 -0
- package/dist/src/http_helpers/index.d.ts +5 -0
- package/dist/src/http_helpers/index.d.ts.map +1 -0
- package/dist/src/http_helpers/index.js +27 -0
- package/dist/src/http_helpers/index.js.map +1 -0
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +3 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/order-builder/builder.d.ts +19 -0
- package/dist/src/order-builder/builder.d.ts.map +1 -0
- package/dist/src/order-builder/builder.js +22 -0
- package/dist/src/order-builder/builder.js.map +1 -0
- package/dist/src/order-builder/constants.d.ts +3 -0
- package/dist/src/order-builder/constants.d.ts.map +1 -0
- package/dist/src/order-builder/constants.js +3 -0
- package/dist/src/order-builder/constants.js.map +1 -0
- package/dist/src/order-builder/helpers.d.ts +15 -0
- package/dist/src/order-builder/helpers.d.ts.map +1 -0
- package/dist/src/order-builder/helpers.js +221 -0
- package/dist/src/order-builder/helpers.js.map +1 -0
- package/dist/src/order-builder/index.d.ts +3 -0
- package/dist/src/order-builder/index.d.ts.map +1 -0
- package/dist/src/order-builder/index.js +3 -0
- package/dist/src/order-builder/index.js.map +1 -0
- package/dist/src/order-builder/utils.d.ts +5 -0
- package/dist/src/order-builder/utils.d.ts.map +1 -0
- package/dist/src/order-builder/utils.js +21 -0
- package/dist/src/order-builder/utils.js.map +1 -0
- package/dist/src/signing/constants.d.ts +15 -0
- package/dist/src/signing/constants.d.ts.map +1 -0
- package/dist/src/signing/constants.js +16 -0
- package/dist/src/signing/constants.js.map +1 -0
- package/dist/src/signing/eip712.d.ts +10 -0
- package/dist/src/signing/eip712.d.ts.map +1 -0
- package/dist/src/signing/eip712.js +32 -0
- package/dist/src/signing/eip712.js.map +1 -0
- package/dist/src/signing/hmac.d.ts +10 -0
- package/dist/src/signing/hmac.d.ts.map +1 -0
- package/dist/src/signing/hmac.js +25 -0
- package/dist/src/signing/hmac.js.map +1 -0
- package/dist/src/signing/index.d.ts +3 -0
- package/dist/src/signing/index.d.ts.map +1 -0
- package/dist/src/signing/index.js +3 -0
- package/dist/src/signing/index.js.map +1 -0
- package/dist/src/types.d.ts +71 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +7 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/utilities.d.ts +4 -0
- package/dist/src/utilities.d.ts.map +1 -0
- package/dist/src/utilities.js +37 -0
- package/dist/src/utilities.js.map +1 -0
- package/dist/types.d.ts +18 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -0
- package/package.json +59 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { buildClobEip712Signature, buildPolyHmacSignature } from "../signing";
|
|
2
|
+
export const createL1Headers = async (signer) => {
|
|
3
|
+
const now = Math.floor(Date.now() / 1000);
|
|
4
|
+
const sig = await buildClobEip712Signature(signer, now);
|
|
5
|
+
const address = await signer.getAddress();
|
|
6
|
+
const headers = {
|
|
7
|
+
POLY_ADDRESS: address,
|
|
8
|
+
POLY_SIGNATURE: sig,
|
|
9
|
+
POLY_TIMESTAMP: `${now}`,
|
|
10
|
+
};
|
|
11
|
+
return headers;
|
|
12
|
+
};
|
|
13
|
+
export const createL2Headers = async (signer, creds, l2HeaderArgs) => {
|
|
14
|
+
const address = await signer.getAddress();
|
|
15
|
+
const ts = Math.floor(Date.now() / 1000);
|
|
16
|
+
const sig = await buildPolyHmacSignature(creds.secret, ts, l2HeaderArgs.method, l2HeaderArgs.requestPath, l2HeaderArgs.body);
|
|
17
|
+
const headers = {
|
|
18
|
+
POLY_ADDRESS: address,
|
|
19
|
+
POLY_SIGNATURE: sig,
|
|
20
|
+
POLY_TIMESTAMP: `${ts}`,
|
|
21
|
+
POLY_API_KEY: creds.key,
|
|
22
|
+
POLY_PASSPHRASE: creds.passphrase,
|
|
23
|
+
};
|
|
24
|
+
return headers;
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/headers/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAG9E,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,MAA8B,EAAyB,EAAE;IAC3F,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,MAAM,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAE1C,MAAM,OAAO,GAAG;QACZ,YAAY,EAAE,OAAO;QACrB,cAAc,EAAE,GAAG;QACnB,cAAc,EAAE,GAAG,GAAG,EAAE;KAC3B,CAAC;IACF,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAChC,MAA8B,EAC9B,KAAkB,EAClB,YAA0B,EACL,EAAE;IACvB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAC1C,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAEzC,MAAM,GAAG,GAAG,MAAM,sBAAsB,CACpC,KAAK,CAAC,MAAM,EACZ,EAAE,EACF,YAAY,CAAC,MAAM,EACnB,YAAY,CAAC,WAAW,EACxB,YAAY,CAAC,IAAI,CACpB,CAAC;IAEF,MAAM,OAAO,GAAG;QACZ,YAAY,EAAE,OAAO;QACrB,cAAc,EAAE,GAAG;QACnB,cAAc,EAAE,GAAG,EAAE,EAAE;QACvB,YAAY,EAAE,KAAK,CAAC,GAAG;QACvB,eAAe,EAAE,KAAK,CAAC,UAAU;KACpC,CAAC;IAEF,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Method } from "axios";
|
|
2
|
+
export declare const request: (endpoint: string, method: Method, headers?: any, data?: any) => Promise<any>;
|
|
3
|
+
export declare const post: (endpoint: string, headers: any, data?: any) => Promise<any>;
|
|
4
|
+
export declare const get: (endpoint: string, headers?: any, data?: any) => Promise<any>;
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/http_helpers/index.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAEtC,eAAO,MAAM,OAAO,aAAoB,MAAM,UAAU,MAAM,YAAY,GAAG,SAAS,GAAG,KAAG,OAAO,CAAC,GAAG,CActG,CAAC;AAEF,eAAO,MAAM,IAAI,aAAoB,MAAM,WAAW,GAAG,SAAS,GAAG,KAAG,OAAO,CAAC,GAAG,CAGlF,CAAC;AAEF,eAAO,MAAM,GAAG,aAAoB,MAAM,YAAY,GAAG,SAAS,GAAG,KAAG,OAAO,CAAC,GAAG,CAGlF,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import axios from "axios";
|
|
2
|
+
export const request = async (endpoint, method, headers, data) => {
|
|
3
|
+
try {
|
|
4
|
+
const response = await axios({ method, url: endpoint, headers, data });
|
|
5
|
+
return response;
|
|
6
|
+
}
|
|
7
|
+
catch (err) {
|
|
8
|
+
if (axios.isAxiosError(err)) {
|
|
9
|
+
console.error(err.response?.status);
|
|
10
|
+
console.error(err.response?.statusText);
|
|
11
|
+
console.error(err.response?.data);
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
console.error(err);
|
|
15
|
+
}
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
export const post = async (endpoint, headers, data) => {
|
|
20
|
+
const resp = await request(endpoint, "POST", headers, data);
|
|
21
|
+
return resp !== null ? resp.data : null;
|
|
22
|
+
};
|
|
23
|
+
export const get = async (endpoint, headers, data) => {
|
|
24
|
+
const resp = await request(endpoint, "GET", headers, data);
|
|
25
|
+
return resp !== null ? resp.data : null;
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/http_helpers/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAiB,MAAM,OAAO,CAAC;AAEtC,MAAM,CAAC,MAAM,OAAO,GAAG,KAAK,EAAE,QAAgB,EAAE,MAAc,EAAE,OAAa,EAAE,IAAU,EAAgB,EAAE;IACvG,IAAI;QACA,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACvE,OAAO,QAAQ,CAAC;KACnB;IAAC,OAAO,GAAG,EAAE;QACV,IAAI,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE;YACzB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YACxC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SACrC;aAAM;YACH,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SACtB;QACD,OAAO,IAAI,CAAC;KACf;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,EAAE,QAAgB,EAAE,OAAY,EAAE,IAAU,EAAgB,EAAE;IACnF,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC5D,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,EAAE,QAAgB,EAAE,OAAa,EAAE,IAAU,EAAgB,EAAE;IACnF,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC3D,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5C,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Wallet } from "@ethersproject/wallet";
|
|
2
|
+
import { JsonRpcSigner } from "@ethersproject/providers";
|
|
3
|
+
import { LimitOrderAndSignature, MarketOrderAndSignature, SignatureType } from "@polymarket/order-utils";
|
|
4
|
+
import { UserLimitOrder, UserMarketOrder } from "../types";
|
|
5
|
+
export declare class OrderBuilder {
|
|
6
|
+
readonly signer: Wallet | JsonRpcSigner;
|
|
7
|
+
readonly signatureType: SignatureType;
|
|
8
|
+
readonly funderAddress?: string;
|
|
9
|
+
constructor(signer: Wallet | JsonRpcSigner, signatureType?: SignatureType, funderAddress?: string);
|
|
10
|
+
/**
|
|
11
|
+
* Generate and sign a limit order
|
|
12
|
+
*/
|
|
13
|
+
buildLimitOrder(userOrder: UserLimitOrder): Promise<LimitOrderAndSignature>;
|
|
14
|
+
/**
|
|
15
|
+
*
|
|
16
|
+
*/
|
|
17
|
+
buildMarketOrder(userOrder: UserMarketOrder): Promise<MarketOrderAndSignature>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=builder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../../src/order-builder/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAEzG,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3D,qBAAa,YAAY;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC;IAGxC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAKtC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;gBAEpB,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE,aAAa,CAAC,EAAE,aAAa,EAAE,aAAa,CAAC,EAAE,MAAM;IAMjG;;OAEG;IACU,eAAe,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAIxF;;OAEG;IACU,gBAAgB,CAAC,SAAS,EAAE,eAAe,GAAG,OAAO,CAAC,uBAAuB,CAAC;CAG9F"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { SignatureType } from "@polymarket/order-utils";
|
|
2
|
+
import { createLimitOrder, createMarketOrder } from "./helpers";
|
|
3
|
+
export class OrderBuilder {
|
|
4
|
+
constructor(signer, signatureType, funderAddress) {
|
|
5
|
+
this.signer = signer;
|
|
6
|
+
this.signatureType = signatureType === undefined ? SignatureType.EOA : signatureType;
|
|
7
|
+
this.funderAddress = funderAddress;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Generate and sign a limit order
|
|
11
|
+
*/
|
|
12
|
+
async buildLimitOrder(userOrder) {
|
|
13
|
+
return createLimitOrder(this.signer, this.signatureType, this.funderAddress, userOrder);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
*
|
|
17
|
+
*/
|
|
18
|
+
async buildMarketOrder(userOrder) {
|
|
19
|
+
return createMarketOrder(this.signer, this.signatureType, this.funderAddress, userOrder);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=builder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../../src/order-builder/builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmD,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACzG,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAGhE,MAAM,OAAO,YAAY;IAWrB,YAAY,MAA8B,EAAE,aAA6B,EAAE,aAAsB;QAC7F,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,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;IACvC,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,eAAe,CAAC,SAAyB;QAClD,OAAO,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAC5F,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,gBAAgB,CAAC,SAA0B;QACpD,OAAO,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAC7F,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/order-builder/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAC3C,eAAO,MAAM,0BAA0B,KAAK,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/order-builder/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AAC3C,MAAM,CAAC,MAAM,0BAA0B,GAAG,EAAE,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { JsonRpcSigner } from "@ethersproject/providers";
|
|
2
|
+
import { Wallet } from "@ethersproject/wallet";
|
|
3
|
+
import { SignatureType } from "@polymarket/order-utils";
|
|
4
|
+
import { OrderCreationArgs, UserMarketOrder, UserLimitOrder, MarketOrderCreationArgs } from "../types";
|
|
5
|
+
/**
|
|
6
|
+
* Translate simple user order to args used to generate LimitOrders
|
|
7
|
+
*/
|
|
8
|
+
export declare const buildLimitOrderCreationArgs: (signer: string, maker: string, chainID: number, exchange: string, collateral: string, signatureType: SignatureType, userOrder: UserLimitOrder) => Promise<OrderCreationArgs>;
|
|
9
|
+
/**
|
|
10
|
+
* Translate simple user order to args used to generate MarketOrders
|
|
11
|
+
*/
|
|
12
|
+
export declare const buildMarketOrderCreationArgs: (signer: string, maker: string, chainID: number, exchange: string, collateral: string, signatureType: SignatureType, userOrder: UserMarketOrder) => Promise<MarketOrderCreationArgs>;
|
|
13
|
+
export declare const createLimitOrder: (eoaSigner: Wallet | JsonRpcSigner, signatureType: SignatureType, funderAddress: string | undefined, userOrder: UserLimitOrder) => Promise<any>;
|
|
14
|
+
export declare const createMarketOrder: (eoaSigner: Wallet | JsonRpcSigner, signatureType: SignatureType, funderAddress: string | undefined, userMarketOrder: UserMarketOrder) => Promise<any>;
|
|
15
|
+
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/order-builder/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAUH,aAAa,EAChB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,cAAc,EAAE,uBAAuB,EAAQ,MAAM,UAAU,CAAC;AAI7G;;GAEG;AACH,eAAO,MAAM,2BAA2B,WAC5B,MAAM,SACP,MAAM,WACJ,MAAM,YACL,MAAM,cACJ,MAAM,iBACH,aAAa,aACjB,cAAc,KAC1B,OAAO,CAAC,iBAAiB,CA8C3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,4BAA4B,WAC7B,MAAM,SACP,MAAM,WACJ,MAAM,YACL,MAAM,cACJ,MAAM,iBACH,aAAa,aACjB,eAAe,KAC3B,OAAO,CAAC,uBAAuB,CAuCjC,CAAC;AAsHF,eAAO,MAAM,gBAAgB,cACd,MAAM,GAAG,aAAa,iBAClB,aAAa,iBACb,MAAM,GAAG,SAAS,aACtB,cAAc,KAC1B,OAAO,CAAC,GAAG,CAwBb,CAAC;AAEF,eAAO,MAAM,iBAAiB,cACf,MAAM,GAAG,aAAa,iBAClB,aAAa,iBACb,MAAM,GAAG,SAAS,mBAChB,eAAe,KACjC,OAAO,CAAC,GAAG,CAyBb,CAAC"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import { EthersProviderConnector, getContracts, LimitOrderBuilder, MarketOrderBuilder, SignatureType, } from "@polymarket/order-utils";
|
|
2
|
+
import { ethers } from "ethers";
|
|
3
|
+
import { Side } from "../types";
|
|
4
|
+
import { COLLATERAL_TOKEN_DECIMALS } from "./constants";
|
|
5
|
+
import { getJsonRpcSigner, getTokenID } from "./utils";
|
|
6
|
+
/**
|
|
7
|
+
* Translate simple user order to args used to generate LimitOrders
|
|
8
|
+
*/
|
|
9
|
+
export const buildLimitOrderCreationArgs = async (signer, maker, chainID, exchange, collateral, signatureType, userOrder) => {
|
|
10
|
+
let makerAsset;
|
|
11
|
+
let takerAsset;
|
|
12
|
+
let makerAssetID;
|
|
13
|
+
let takerAssetID;
|
|
14
|
+
let makerAmount;
|
|
15
|
+
let takerAmount;
|
|
16
|
+
const price = userOrder.price;
|
|
17
|
+
if (userOrder.side === Side.BUY) {
|
|
18
|
+
makerAsset = collateral;
|
|
19
|
+
takerAsset = userOrder.asset.address;
|
|
20
|
+
makerAssetID = undefined;
|
|
21
|
+
takerAssetID = getTokenID(userOrder.asset.condition);
|
|
22
|
+
// force 2 decimals places
|
|
23
|
+
const rawMakerAmt = parseFloat((price * userOrder.size).toFixed(2));
|
|
24
|
+
makerAmount = ethers.utils.parseUnits(rawMakerAmt.toString(), COLLATERAL_TOKEN_DECIMALS).toString();
|
|
25
|
+
const rawTakerAmt = parseFloat(userOrder.size.toFixed(2));
|
|
26
|
+
takerAmount = ethers.utils.parseEther(rawTakerAmt.toString()).toString();
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
makerAsset = userOrder.asset.address;
|
|
30
|
+
takerAsset = collateral;
|
|
31
|
+
makerAssetID = getTokenID(userOrder.asset.condition);
|
|
32
|
+
takerAssetID = undefined;
|
|
33
|
+
const rawMakerAmt = parseFloat(userOrder.size.toFixed(2));
|
|
34
|
+
makerAmount = ethers.utils.parseEther(rawMakerAmt.toString()).toString();
|
|
35
|
+
const rawTakerAmt = parseFloat((price * userOrder.size).toFixed(2));
|
|
36
|
+
takerAmount = ethers.utils.parseUnits(rawTakerAmt.toString(), COLLATERAL_TOKEN_DECIMALS).toString();
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
chainID,
|
|
40
|
+
exchange,
|
|
41
|
+
signer,
|
|
42
|
+
maker,
|
|
43
|
+
makerAsset,
|
|
44
|
+
makerAmount,
|
|
45
|
+
makerAssetID,
|
|
46
|
+
takerAsset,
|
|
47
|
+
takerAmount,
|
|
48
|
+
takerAssetID,
|
|
49
|
+
signatureType,
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Translate simple user order to args used to generate MarketOrders
|
|
54
|
+
*/
|
|
55
|
+
export const buildMarketOrderCreationArgs = async (signer, maker, chainID, exchange, collateral, signatureType, userOrder) => {
|
|
56
|
+
let makerAsset;
|
|
57
|
+
let takerAsset;
|
|
58
|
+
let makerAssetID;
|
|
59
|
+
let takerAssetID;
|
|
60
|
+
let makerAmount;
|
|
61
|
+
if (userOrder.side === Side.BUY) {
|
|
62
|
+
// market buy
|
|
63
|
+
makerAsset = collateral; // Set maker asset to collateral if market buy
|
|
64
|
+
takerAsset = userOrder.asset.address; // taker Asset to ConditionalToken
|
|
65
|
+
makerAssetID = undefined;
|
|
66
|
+
takerAssetID = getTokenID(userOrder.asset.condition);
|
|
67
|
+
// We always round sizes to 2 decimal places
|
|
68
|
+
const roundedMakerAmt = userOrder.size.toFixed(2).toString();
|
|
69
|
+
makerAmount = ethers.utils.parseUnits(roundedMakerAmt, COLLATERAL_TOKEN_DECIMALS).toString();
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
// market sell
|
|
73
|
+
makerAsset = userOrder.asset.address;
|
|
74
|
+
takerAsset = collateral;
|
|
75
|
+
makerAssetID = getTokenID(userOrder.asset.condition);
|
|
76
|
+
takerAssetID = undefined;
|
|
77
|
+
const roundedMakerAmt = userOrder.size.toFixed(2).toString();
|
|
78
|
+
makerAmount = ethers.utils.parseEther(roundedMakerAmt).toString();
|
|
79
|
+
}
|
|
80
|
+
return {
|
|
81
|
+
chainID,
|
|
82
|
+
exchange,
|
|
83
|
+
signer,
|
|
84
|
+
maker,
|
|
85
|
+
makerAsset,
|
|
86
|
+
makerAmount,
|
|
87
|
+
makerAssetID,
|
|
88
|
+
takerAsset,
|
|
89
|
+
takerAssetID,
|
|
90
|
+
signatureType,
|
|
91
|
+
};
|
|
92
|
+
};
|
|
93
|
+
/**
|
|
94
|
+
* Generate and sign a limit order
|
|
95
|
+
*
|
|
96
|
+
* @param signer
|
|
97
|
+
* @param makerAmount
|
|
98
|
+
* @param takerAmount
|
|
99
|
+
* @param makerAssetType
|
|
100
|
+
* @param takerAssetType
|
|
101
|
+
* @param makerAssetID
|
|
102
|
+
* @param takerAssetID
|
|
103
|
+
* @returns
|
|
104
|
+
*/
|
|
105
|
+
const buildOrder = async (signer, args) => {
|
|
106
|
+
console.log(`Building Limit order signed by: ${args.maker}...`);
|
|
107
|
+
const jsonRpcSigner = await getJsonRpcSigner(signer, args.chainID);
|
|
108
|
+
const connector = new EthersProviderConnector(jsonRpcSigner);
|
|
109
|
+
const limitOrderBuilder = new LimitOrderBuilder(args.exchange, args.chainID, connector);
|
|
110
|
+
const limitOrderData = {
|
|
111
|
+
exchangeAddress: args.exchange,
|
|
112
|
+
makerAssetAddress: args.makerAsset,
|
|
113
|
+
takerAssetAddress: args.takerAsset,
|
|
114
|
+
makerAddress: args.maker,
|
|
115
|
+
makerAmount: args.makerAmount,
|
|
116
|
+
takerAmount: args.takerAmount,
|
|
117
|
+
signer: args.signer,
|
|
118
|
+
sigType: args.signatureType,
|
|
119
|
+
};
|
|
120
|
+
if (args.makerAssetID !== undefined) {
|
|
121
|
+
limitOrderData.makerAssetID = args.makerAssetID;
|
|
122
|
+
}
|
|
123
|
+
if (args.takerAssetID !== undefined) {
|
|
124
|
+
limitOrderData.takerAssetID = args.takerAssetID;
|
|
125
|
+
}
|
|
126
|
+
// Create order
|
|
127
|
+
const limitOrder = limitOrderBuilder.buildLimitOrder(limitOrderData);
|
|
128
|
+
// And sign it with the maker address
|
|
129
|
+
const limitOrderTypedData = limitOrderBuilder.buildLimitOrderTypedData(limitOrder);
|
|
130
|
+
const limitOrderSignature = await limitOrderBuilder.buildOrderSignature(jsonRpcSigner._address, limitOrderTypedData);
|
|
131
|
+
const orderAndSignature = {
|
|
132
|
+
order: limitOrder,
|
|
133
|
+
signature: limitOrderSignature,
|
|
134
|
+
orderType: "limit",
|
|
135
|
+
};
|
|
136
|
+
return orderAndSignature;
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
*
|
|
140
|
+
* @param signer
|
|
141
|
+
* @param args
|
|
142
|
+
*/
|
|
143
|
+
const buildMarketOrder = async (signer, args) => {
|
|
144
|
+
console.log(`Building Market order signed by: ${args.maker}...`);
|
|
145
|
+
const jsonRpcSigner = await getJsonRpcSigner(signer, args.chainID);
|
|
146
|
+
const connector = new EthersProviderConnector(jsonRpcSigner);
|
|
147
|
+
const marketOrderBuilder = new MarketOrderBuilder(args.exchange, args.chainID, connector);
|
|
148
|
+
const marketOrderData = {
|
|
149
|
+
exchangeAddress: args.exchange,
|
|
150
|
+
makerAssetAddress: args.makerAsset,
|
|
151
|
+
takerAssetAddress: args.takerAsset,
|
|
152
|
+
makerAddress: args.maker,
|
|
153
|
+
makerAmount: args.makerAmount,
|
|
154
|
+
signer: args.signer,
|
|
155
|
+
sigType: args.signatureType,
|
|
156
|
+
};
|
|
157
|
+
if (args.makerAssetID !== undefined) {
|
|
158
|
+
marketOrderData.makerAssetID = args.makerAssetID;
|
|
159
|
+
}
|
|
160
|
+
if (args.takerAssetID !== undefined) {
|
|
161
|
+
marketOrderData.takerAssetID = args.takerAssetID;
|
|
162
|
+
}
|
|
163
|
+
// Create order
|
|
164
|
+
const marketOrder = marketOrderBuilder.buildMarketOrder(marketOrderData);
|
|
165
|
+
// And sign it with the maker address
|
|
166
|
+
const typedData = marketOrderBuilder.buildOrderTypedData(marketOrder);
|
|
167
|
+
const sig = await marketOrderBuilder.buildOrderSignature(jsonRpcSigner._address, typedData);
|
|
168
|
+
const orderAndSignature = {
|
|
169
|
+
order: marketOrder,
|
|
170
|
+
signature: sig,
|
|
171
|
+
};
|
|
172
|
+
console.log(`Market order and signature:`);
|
|
173
|
+
console.log(orderAndSignature);
|
|
174
|
+
return orderAndSignature;
|
|
175
|
+
};
|
|
176
|
+
const getSigner = (eoa, makerAddress, sigType) => {
|
|
177
|
+
switch (sigType) {
|
|
178
|
+
case SignatureType.EOA:
|
|
179
|
+
// signer is always the EOA address for EOA sigs
|
|
180
|
+
return eoa;
|
|
181
|
+
case SignatureType.CONTRACT:
|
|
182
|
+
// signer is the contract address/ funder address
|
|
183
|
+
return makerAddress;
|
|
184
|
+
case SignatureType.POLY_PROXY:
|
|
185
|
+
// signer is the eoa
|
|
186
|
+
return eoa;
|
|
187
|
+
default:
|
|
188
|
+
throw new Error("invalid signature type");
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
export const createLimitOrder = async (eoaSigner, signatureType, funderAddress, userOrder) => {
|
|
192
|
+
const chainID = await eoaSigner.getChainId();
|
|
193
|
+
const eoaSignerAddress = await eoaSigner.getAddress();
|
|
194
|
+
// If funder address is not given, use the signer address
|
|
195
|
+
const maker = funderAddress === undefined ? eoaSignerAddress : funderAddress;
|
|
196
|
+
const signerAddress = getSigner(eoaSignerAddress, maker, signatureType);
|
|
197
|
+
const clobContracts = getContracts(chainID);
|
|
198
|
+
const exchange = clobContracts.Exchange;
|
|
199
|
+
const collateral = clobContracts.Collateral;
|
|
200
|
+
const orderArgs = await buildLimitOrderCreationArgs(signerAddress, maker, chainID, exchange, collateral, signatureType, userOrder);
|
|
201
|
+
const orderAndSig = await buildOrder(eoaSigner, orderArgs);
|
|
202
|
+
console.log(`Generated limit order!`);
|
|
203
|
+
console.log(orderAndSig);
|
|
204
|
+
return orderAndSig;
|
|
205
|
+
};
|
|
206
|
+
export const createMarketOrder = async (eoaSigner, signatureType, funderAddress, userMarketOrder) => {
|
|
207
|
+
const chainID = await eoaSigner.getChainId();
|
|
208
|
+
const eoaSignerAddress = await eoaSigner.getAddress();
|
|
209
|
+
// If funder address is not given, use the signer address
|
|
210
|
+
const maker = funderAddress === undefined ? eoaSignerAddress : funderAddress;
|
|
211
|
+
const signerAddress = getSigner(eoaSignerAddress, maker, signatureType);
|
|
212
|
+
const clobContracts = getContracts(chainID);
|
|
213
|
+
const exchange = clobContracts.Exchange;
|
|
214
|
+
const collateral = clobContracts.Collateral;
|
|
215
|
+
const marketOrderArgs = await buildMarketOrderCreationArgs(signerAddress, maker, chainID, exchange, collateral, signatureType, userMarketOrder);
|
|
216
|
+
const marketOrderAndSig = await buildMarketOrder(eoaSigner, marketOrderArgs);
|
|
217
|
+
console.log(`Generated market ${userMarketOrder.side} order!`);
|
|
218
|
+
console.log(marketOrderAndSig);
|
|
219
|
+
return marketOrderAndSig;
|
|
220
|
+
};
|
|
221
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/order-builder/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/order-builder/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/order-builder/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { JsonRpcSigner } from "@ethersproject/providers";
|
|
2
|
+
import { Wallet } from "@ethersproject/wallet";
|
|
3
|
+
export declare const getTokenID: (condition: string) => number;
|
|
4
|
+
export declare const getJsonRpcSigner: (signer: Wallet | JsonRpcSigner, chainID: number) => Promise<JsonRpcSigner>;
|
|
5
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/order-builder/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,eAAO,MAAM,UAAU,cAAe,MAAM,KAAG,MAW9C,CAAC;AAEF,eAAO,MAAM,gBAAgB,WAAkB,MAAM,GAAG,aAAa,WAAW,MAAM,KAAG,OAAO,CAAC,aAAa,CAK7G,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { getSignerFromWallet } from "@polymarket/order-utils";
|
|
2
|
+
import { Wallet } from "@ethersproject/wallet";
|
|
3
|
+
export const getTokenID = (condition) => {
|
|
4
|
+
switch (condition.toLowerCase()) {
|
|
5
|
+
// TODO: assuming YES = 0, NO = 1, following the [Yes, No] structure
|
|
6
|
+
// will be a problem for scalars, non binary markets, figure out fix
|
|
7
|
+
case "yes":
|
|
8
|
+
return 0;
|
|
9
|
+
case "no":
|
|
10
|
+
return 1;
|
|
11
|
+
default:
|
|
12
|
+
throw new Error("Invalid asset condition");
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
export const getJsonRpcSigner = async (signer, chainID) => {
|
|
16
|
+
if (signer instanceof Wallet) {
|
|
17
|
+
return getSignerFromWallet(signer, chainID, signer.provider);
|
|
18
|
+
}
|
|
19
|
+
return signer;
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/order-builder/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,SAAiB,EAAU,EAAE;IACpD,QAAQ,SAAS,CAAC,WAAW,EAAE,EAAE;QAC7B,oEAAoE;QACpE,oEAAoE;QACpE,KAAK,KAAK;YACN,OAAO,CAAC,CAAC;QACb,KAAK,IAAI;YACL,OAAO,CAAC,CAAC;QACb;YACI,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;KAClD;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,MAA8B,EAAE,OAAe,EAA0B,EAAE;IAC9G,IAAI,MAAM,YAAY,MAAM,EAAE;QAC1B,OAAO,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,QAA2B,CAAC,CAAC;KACnF;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const CLOB_DOMAIN_NAME = "ClobAuthDomain";
|
|
2
|
+
export declare const CLOB_VERSION = "1";
|
|
3
|
+
export declare const MSG_TO_SIGN = "This message attests that I control the given wallet";
|
|
4
|
+
export declare const CLOB_DOMAIN: {
|
|
5
|
+
name: string;
|
|
6
|
+
version: string;
|
|
7
|
+
chainId: number;
|
|
8
|
+
};
|
|
9
|
+
export declare const CLOB_TYPES: {
|
|
10
|
+
ClobAuth: {
|
|
11
|
+
name: string;
|
|
12
|
+
type: string;
|
|
13
|
+
}[];
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/signing/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,mBAAmB,CAAC;AACjD,eAAO,MAAM,YAAY,MAAM,CAAC;AAChC,eAAO,MAAM,WAAW,yDAAyD,CAAC;AAElF,eAAO,MAAM,WAAW;;;;CAIvB,CAAC;AAEF,eAAO,MAAM,UAAU;;;;;CAMtB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export const CLOB_DOMAIN_NAME = "ClobAuthDomain";
|
|
2
|
+
export const CLOB_VERSION = "1";
|
|
3
|
+
export const MSG_TO_SIGN = "This message attests that I control the given wallet";
|
|
4
|
+
export const CLOB_DOMAIN = {
|
|
5
|
+
name: CLOB_DOMAIN_NAME,
|
|
6
|
+
version: CLOB_VERSION,
|
|
7
|
+
chainId: 1,
|
|
8
|
+
};
|
|
9
|
+
export const CLOB_TYPES = {
|
|
10
|
+
ClobAuth: [
|
|
11
|
+
{ name: "address", type: "address" },
|
|
12
|
+
{ name: "timestamp", type: "string" },
|
|
13
|
+
{ name: "message", type: "string" },
|
|
14
|
+
],
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/signing/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AACjD,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAC;AAChC,MAAM,CAAC,MAAM,WAAW,GAAG,sDAAsD,CAAC;AAElF,MAAM,CAAC,MAAM,WAAW,GAAG;IACvB,IAAI,EAAE,gBAAgB;IACtB,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,CAAC;CACb,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG;IACtB,QAAQ,EAAE;QACN,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;QACpC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE;QACrC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE;KACtC;CACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Wallet } from "@ethersproject/wallet";
|
|
2
|
+
import { JsonRpcSigner } from "@ethersproject/providers";
|
|
3
|
+
/**
|
|
4
|
+
* Builds the canonical Polymarket CLOB EIP712 signature
|
|
5
|
+
* @param signer
|
|
6
|
+
* @param ts
|
|
7
|
+
* @returns string
|
|
8
|
+
*/
|
|
9
|
+
export declare const buildClobEip712Signature: (signer: Wallet | JsonRpcSigner, timestamp: number) => Promise<string>;
|
|
10
|
+
//# sourceMappingURL=eip712.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eip712.d.ts","sourceRoot":"","sources":["../../../src/signing/eip712.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAGzD;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,WAAkB,MAAM,GAAG,aAAa,aAAa,MAAM,KAAG,OAAO,CAAC,MAAM,CAyBhH,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { MSG_TO_SIGN } from "./constants";
|
|
2
|
+
/**
|
|
3
|
+
* Builds the canonical Polymarket CLOB EIP712 signature
|
|
4
|
+
* @param signer
|
|
5
|
+
* @param ts
|
|
6
|
+
* @returns string
|
|
7
|
+
*/
|
|
8
|
+
export const buildClobEip712Signature = async (signer, timestamp) => {
|
|
9
|
+
const address = await signer.getAddress();
|
|
10
|
+
const ts = `${timestamp}`;
|
|
11
|
+
const domain = {
|
|
12
|
+
name: "ClobAuthDomain",
|
|
13
|
+
version: "1",
|
|
14
|
+
chainId: 1,
|
|
15
|
+
};
|
|
16
|
+
const types = {
|
|
17
|
+
ClobAuth: [
|
|
18
|
+
{ name: "address", type: "address" },
|
|
19
|
+
{ name: "timestamp", type: "string" },
|
|
20
|
+
{ name: "message", type: "string" },
|
|
21
|
+
],
|
|
22
|
+
};
|
|
23
|
+
const value = {
|
|
24
|
+
address,
|
|
25
|
+
timestamp: ts,
|
|
26
|
+
message: MSG_TO_SIGN,
|
|
27
|
+
};
|
|
28
|
+
// eslint-disable-next-line no-underscore-dangle
|
|
29
|
+
const sig = await signer._signTypedData(domain, types, value);
|
|
30
|
+
return sig;
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=eip712.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"eip712.js","sourceRoot":"","sources":["../../../src/signing/eip712.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,EAAE,MAA8B,EAAE,SAAiB,EAAmB,EAAE;IACjH,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAC1C,MAAM,EAAE,GAAG,GAAG,SAAS,EAAE,CAAC;IAE1B,MAAM,MAAM,GAAG;QACX,IAAI,EAAE,gBAAgB;QACtB,OAAO,EAAE,GAAG;QACZ,OAAO,EAAE,CAAC;KACb,CAAC;IAEF,MAAM,KAAK,GAAG;QACV,QAAQ,EAAE;YACN,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;YACpC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE;YACrC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE;SACtC;KACJ,CAAC;IACF,MAAM,KAAK,GAAG;QACV,OAAO;QACP,SAAS,EAAE,EAAE;QACb,OAAO,EAAE,WAAW;KACvB,CAAC;IACF,gDAAgD;IAChD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAC9D,OAAO,GAAG,CAAC;AACf,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Builds the canonical Polymarket CLOB HMAC signature
|
|
3
|
+
* @param signer
|
|
4
|
+
* @param key
|
|
5
|
+
* @param secret
|
|
6
|
+
* @param passphrase
|
|
7
|
+
* @returns string
|
|
8
|
+
*/
|
|
9
|
+
export declare const buildPolyHmacSignature: (secret: string, timestamp: number, method: string, requestPath: string, body?: string | undefined) => Promise<string>;
|
|
10
|
+
//# sourceMappingURL=hmac.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hmac.d.ts","sourceRoot":"","sources":["../../../src/signing/hmac.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,WACvB,MAAM,aACH,MAAM,UACT,MAAM,eACD,MAAM,gCAEpB,OAAO,CAAC,MAAM,CAchB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/* eslint-disable import/no-extraneous-dependencies */
|
|
2
|
+
import crypto from "crypto";
|
|
3
|
+
/**
|
|
4
|
+
* Builds the canonical Polymarket CLOB HMAC signature
|
|
5
|
+
* @param signer
|
|
6
|
+
* @param key
|
|
7
|
+
* @param secret
|
|
8
|
+
* @param passphrase
|
|
9
|
+
* @returns string
|
|
10
|
+
*/
|
|
11
|
+
export const buildPolyHmacSignature = async (secret, timestamp, method, requestPath, body) => {
|
|
12
|
+
let message = timestamp + method + requestPath;
|
|
13
|
+
if (body !== undefined) {
|
|
14
|
+
message += body;
|
|
15
|
+
}
|
|
16
|
+
const base64Secret = Buffer.from(secret, "base64");
|
|
17
|
+
const hmac = crypto.createHmac("sha256", base64Secret);
|
|
18
|
+
const sig = hmac.update(message).digest("base64");
|
|
19
|
+
// NOTE: Must be url safe base64 encoding, but keep base64 "=" suffix
|
|
20
|
+
const sigUrlSafe = sig
|
|
21
|
+
.replaceAll(/\+/g, "-") // Convert '+' to '-'
|
|
22
|
+
.replaceAll(/\//g, "_"); // Convert '/' to '_'
|
|
23
|
+
return sigUrlSafe;
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=hmac.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hmac.js","sourceRoot":"","sources":["../../../src/signing/hmac.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EACvC,MAAc,EACd,SAAiB,EACjB,MAAc,EACd,WAAmB,EACnB,IAAa,EACE,EAAE;IACjB,IAAI,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,WAAW,CAAC;IAC/C,IAAI,IAAI,KAAK,SAAS,EAAE;QACpB,OAAO,IAAI,IAAI,CAAC;KACnB;IACD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACvD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAElD,qEAAqE;IACrE,MAAM,UAAU,GAAG,GAAG;SACjB,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,qBAAqB;SAC5C,UAAU,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,qBAAqB;IAClD,OAAO,UAAU,CAAC;AACtB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/signing/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC"}
|