@polymarket/clob-client 1.0.46 → 1.1.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/README.md +5 -12
- package/dist/client.d.ts +7 -9
- package/dist/client.js +170 -362
- package/dist/client.js.map +1 -1
- package/dist/constants.d.ts +0 -1
- package/dist/constants.js +4 -1
- package/dist/constants.js.map +1 -1
- package/dist/endpoints.d.ts +1 -3
- package/dist/endpoints.js +2 -3
- package/dist/endpoints.js.map +1 -1
- package/dist/errors.d.ts +0 -1
- package/dist/errors.js.map +1 -1
- package/dist/headers/index.d.ts +2 -3
- package/dist/headers/index.js +33 -85
- package/dist/headers/index.js.map +1 -1
- package/dist/{http_helpers → http-helpers}/index.d.ts +4 -1
- package/dist/http-helpers/index.js +108 -0
- package/dist/http-helpers/index.js.map +1 -0
- package/dist/index.d.ts +0 -1
- package/dist/index.js +4 -13
- package/dist/index.js.map +1 -1
- package/dist/order-builder/builder.d.ts +6 -10
- package/dist/order-builder/builder.js +12 -59
- package/dist/order-builder/builder.js.map +1 -1
- package/dist/order-builder/helpers.d.ts +13 -9
- package/dist/order-builder/helpers.js +83 -327
- package/dist/order-builder/helpers.js.map +1 -1
- package/dist/order-builder/index.d.ts +0 -2
- package/dist/order-builder/index.js +2 -12
- package/dist/order-builder/index.js.map +1 -1
- package/dist/signing/constants.d.ts +0 -1
- package/dist/signing/eip712.d.ts +2 -2
- package/dist/signing/eip712.js +29 -74
- package/dist/signing/eip712.js.map +1 -1
- package/dist/signing/hmac.d.ts +1 -2
- package/dist/signing/hmac.js +17 -54
- package/dist/signing/hmac.js.map +1 -1
- package/dist/signing/index.d.ts +0 -1
- package/dist/signing/index.js +3 -12
- package/dist/signing/index.js.map +1 -1
- package/dist/types.d.ts +55 -51
- package/dist/types.js +6 -12
- package/dist/types.js.map +1 -1
- package/dist/utilities.d.ts +2 -6
- package/dist/utilities.js +32 -75
- package/dist/utilities.js.map +1 -1
- package/package.json +38 -38
- package/dist/client.d.ts.map +0 -1
- package/dist/constants.d.ts.map +0 -1
- package/dist/endpoints.d.ts.map +0 -1
- package/dist/errors.d.ts.map +0 -1
- package/dist/headers/index.d.ts.map +0 -1
- package/dist/http_helpers/index.d.ts.map +0 -1
- package/dist/http_helpers/index.js +0 -107
- package/dist/http_helpers/index.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/order-builder/builder.d.ts.map +0 -1
- package/dist/order-builder/constants.d.ts +0 -3
- package/dist/order-builder/constants.d.ts.map +0 -1
- package/dist/order-builder/constants.js +0 -6
- package/dist/order-builder/constants.js.map +0 -1
- package/dist/order-builder/helpers.d.ts.map +0 -1
- package/dist/order-builder/index.d.ts.map +0 -1
- package/dist/order-builder/utils.d.ts +0 -4
- package/dist/order-builder/utils.d.ts.map +0 -1
- package/dist/order-builder/utils.js +0 -50
- package/dist/order-builder/utils.js.map +0 -1
- package/dist/signing/constants.d.ts.map +0 -1
- package/dist/signing/eip712.d.ts.map +0 -1
- package/dist/signing/hmac.d.ts.map +0 -1
- package/dist/signing/index.d.ts.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/utilities.d.ts.map +0 -1
package/dist/signing/hmac.d.ts
CHANGED
|
@@ -6,5 +6,4 @@
|
|
|
6
6
|
* @param passphrase
|
|
7
7
|
* @returns string
|
|
8
8
|
*/
|
|
9
|
-
export declare const buildPolyHmacSignature: (secret: string, timestamp: number, method: string, requestPath: string, body?: string | undefined) =>
|
|
10
|
-
//# sourceMappingURL=hmac.d.ts.map
|
|
9
|
+
export declare const buildPolyHmacSignature: (secret: string, timestamp: number, method: string, requestPath: string, body?: string | undefined) => string;
|
package/dist/signing/hmac.js
CHANGED
|
@@ -1,46 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
-
function step(op) {
|
|
16
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
-
while (_) try {
|
|
18
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
-
switch (op[0]) {
|
|
21
|
-
case 0: case 1: t = op; break;
|
|
22
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
-
default:
|
|
26
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
-
if (t[2]) _.ops.pop();
|
|
31
|
-
_.trys.pop(); continue;
|
|
32
|
-
}
|
|
33
|
-
op = body.call(thisArg, _);
|
|
34
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
-
};
|
|
41
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
3
|
exports.buildPolyHmacSignature = void 0;
|
|
43
|
-
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const crypto_1 = (0, tslib_1.__importDefault)(require("crypto"));
|
|
44
6
|
function replaceAll(s, search, replace) {
|
|
45
7
|
return s.split(search).join(replace);
|
|
46
8
|
}
|
|
@@ -52,18 +14,19 @@ function replaceAll(s, search, replace) {
|
|
|
52
14
|
* @param passphrase
|
|
53
15
|
* @returns string
|
|
54
16
|
*/
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
message
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
}
|
|
17
|
+
const buildPolyHmacSignature = (secret, timestamp, method, requestPath, body) => {
|
|
18
|
+
let message = timestamp + method + requestPath;
|
|
19
|
+
if (body !== undefined) {
|
|
20
|
+
message += body;
|
|
21
|
+
}
|
|
22
|
+
const base64Secret = Buffer.from(secret, "base64");
|
|
23
|
+
const hmac = crypto_1.default.createHmac("sha256", base64Secret);
|
|
24
|
+
const sig = hmac.update(message).digest("base64");
|
|
25
|
+
// NOTE: Must be url safe base64 encoding, but keep base64 "=" suffix
|
|
26
|
+
// Convert '+' to '-'
|
|
27
|
+
// Convert '/' to '_'
|
|
28
|
+
const sigUrlSafe = replaceAll(replaceAll(sig, "+", "-"), "/", "_");
|
|
29
|
+
return sigUrlSafe;
|
|
30
|
+
};
|
|
31
|
+
exports.buildPolyHmacSignature = buildPolyHmacSignature;
|
|
69
32
|
//# sourceMappingURL=hmac.js.map
|
package/dist/signing/hmac.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hmac.js","sourceRoot":"","sources":["../../src/signing/hmac.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"hmac.js","sourceRoot":"","sources":["../../src/signing/hmac.ts"],"names":[],"mappings":";;;;AAAA,iEAA4B;AAE5B,SAAS,UAAU,CAAC,CAAS,EAAE,MAAc,EAAE,OAAe;IAC1D,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;GAOG;AACI,MAAM,sBAAsB,GAAG,CAClC,MAAc,EACd,SAAiB,EACjB,MAAc,EACd,WAAmB,EACnB,IAAa,EACP,EAAE;IACR,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,gBAAM,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,qBAAqB;IACrB,qBAAqB;IACrB,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IACnE,OAAO,UAAU,CAAC;AACtB,CAAC,CAAC;AApBW,QAAA,sBAAsB,0BAoBjC"}
|
package/dist/signing/index.d.ts
CHANGED
package/dist/signing/index.js
CHANGED
|
@@ -1,15 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
-
for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
|
|
11
|
-
};
|
|
12
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
|
|
14
|
-
__exportStar(require("./
|
|
3
|
+
const tslib_1 = require("tslib");
|
|
4
|
+
(0, tslib_1.__exportStar)(require("./eip712"), exports);
|
|
5
|
+
(0, tslib_1.__exportStar)(require("./hmac"), exports);
|
|
15
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/signing/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/signing/index.ts"],"names":[],"mappings":";;;AAAA,wDAAyB;AACzB,sDAAuB"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import { MarketOrder, TimeInForce } from "@polymarket/order-utils";
|
|
2
|
-
export * from "@polymarket/order-utils";
|
|
3
1
|
export interface ApiKeyCreds {
|
|
4
2
|
key: string;
|
|
5
3
|
secret: string;
|
|
@@ -27,50 +25,43 @@ export declare enum Side {
|
|
|
27
25
|
BUY = "buy",
|
|
28
26
|
SELL = "sell"
|
|
29
27
|
}
|
|
30
|
-
export interface
|
|
28
|
+
export interface UserOrder {
|
|
29
|
+
/**
|
|
30
|
+
* TokenID of the Conditional token asset being traded
|
|
31
|
+
*/
|
|
31
32
|
tokenID: string;
|
|
33
|
+
/**
|
|
34
|
+
* Price used to create the order
|
|
35
|
+
*/
|
|
32
36
|
price: number;
|
|
37
|
+
/**
|
|
38
|
+
* Size in terms of the ConditionalToken
|
|
39
|
+
*/
|
|
33
40
|
size: number;
|
|
41
|
+
/**
|
|
42
|
+
* Side of the order
|
|
43
|
+
*/
|
|
34
44
|
side: Side;
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
45
|
+
/**
|
|
46
|
+
* Fee rate, in basis points, charged to the order maker, charged on proceeds
|
|
47
|
+
*/
|
|
48
|
+
feeRateBps?: number;
|
|
49
|
+
/**
|
|
50
|
+
* Nonce used for onchain cancellations
|
|
51
|
+
*/
|
|
52
|
+
nonce?: number;
|
|
53
|
+
/**
|
|
54
|
+
* Timestamp after which the order is expired.
|
|
55
|
+
*/
|
|
56
|
+
expiration?: number;
|
|
57
|
+
/**
|
|
58
|
+
* Address of the order taker. The zero address is used to indicate a public order
|
|
59
|
+
*/
|
|
60
|
+
taker?: string;
|
|
42
61
|
}
|
|
43
62
|
export interface OrderPayload {
|
|
44
63
|
orderID: string;
|
|
45
64
|
}
|
|
46
|
-
export interface OrderCreationArgs {
|
|
47
|
-
chainID: number;
|
|
48
|
-
exchange: string;
|
|
49
|
-
executor: string;
|
|
50
|
-
signer: string;
|
|
51
|
-
maker: string;
|
|
52
|
-
makerAsset: string;
|
|
53
|
-
makerAmount: string;
|
|
54
|
-
makerAssetID?: string;
|
|
55
|
-
takerAsset: string;
|
|
56
|
-
takerAmount: string;
|
|
57
|
-
takerAssetID?: string;
|
|
58
|
-
signatureType: number;
|
|
59
|
-
}
|
|
60
|
-
export interface MarketOrderCreationArgs {
|
|
61
|
-
chainID: number;
|
|
62
|
-
exchange: string;
|
|
63
|
-
signer: string;
|
|
64
|
-
maker: string;
|
|
65
|
-
makerAsset: string;
|
|
66
|
-
makerAmount: string;
|
|
67
|
-
makerAssetID?: string;
|
|
68
|
-
takerAsset: string;
|
|
69
|
-
takerAssetID?: string;
|
|
70
|
-
signatureType: number;
|
|
71
|
-
minAmountReceived: string;
|
|
72
|
-
timeInForce: TimeInForce;
|
|
73
|
-
}
|
|
74
65
|
export interface ApiKeysResponse {
|
|
75
66
|
apiKeys: ApiKeyCreds[];
|
|
76
67
|
}
|
|
@@ -99,27 +90,40 @@ export interface FilterParams {
|
|
|
99
90
|
startTs?: number;
|
|
100
91
|
endTs?: number;
|
|
101
92
|
}
|
|
93
|
+
export interface TradeParams {
|
|
94
|
+
market: string;
|
|
95
|
+
id?: string;
|
|
96
|
+
taker?: string;
|
|
97
|
+
maker?: string;
|
|
98
|
+
limit?: number;
|
|
99
|
+
before?: string;
|
|
100
|
+
after?: string;
|
|
101
|
+
}
|
|
102
102
|
export interface Trade {
|
|
103
|
-
|
|
103
|
+
id: string;
|
|
104
|
+
market_order: string;
|
|
104
105
|
market: string;
|
|
105
|
-
|
|
106
|
-
marketOrderID: string;
|
|
107
|
-
limitOrderIDs: string[];
|
|
108
|
-
filledAmount: string;
|
|
106
|
+
type: string;
|
|
109
107
|
side: string;
|
|
108
|
+
size: string;
|
|
109
|
+
price: string;
|
|
110
|
+
status: string;
|
|
111
|
+
match_time: string;
|
|
112
|
+
last_update: string;
|
|
113
|
+
outcome: string;
|
|
114
|
+
outcome_index: number;
|
|
110
115
|
owner: string;
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
history: Trade[];
|
|
116
|
+
bucket_index: number;
|
|
117
|
+
limit_orders: string[];
|
|
118
|
+
limit_order_sizes_prices: string[][];
|
|
115
119
|
}
|
|
116
120
|
export interface OrderHistory {
|
|
117
121
|
history: Order[];
|
|
118
122
|
}
|
|
119
|
-
export interface MarketOrderHistory {
|
|
120
|
-
history: MarketOrder[];
|
|
121
|
-
}
|
|
122
123
|
export declare type OptionalParams = {
|
|
123
124
|
[query: string]: string;
|
|
124
125
|
};
|
|
125
|
-
|
|
126
|
+
export declare enum Chain {
|
|
127
|
+
POLYGON = 137,
|
|
128
|
+
MUMBAI = 80001
|
|
129
|
+
}
|
package/dist/types.js
CHANGED
|
@@ -1,20 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
-
for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) __createBinding(exports, m, p);
|
|
11
|
-
};
|
|
12
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
-
exports.Side = void 0;
|
|
14
|
-
__exportStar(require("@polymarket/order-utils"), exports);
|
|
3
|
+
exports.Chain = exports.Side = void 0;
|
|
15
4
|
var Side;
|
|
16
5
|
(function (Side) {
|
|
17
6
|
Side["BUY"] = "buy";
|
|
18
7
|
Side["SELL"] = "sell";
|
|
19
8
|
})(Side = exports.Side || (exports.Side = {}));
|
|
9
|
+
var Chain;
|
|
10
|
+
(function (Chain) {
|
|
11
|
+
Chain[Chain["POLYGON"] = 137] = "POLYGON";
|
|
12
|
+
Chain[Chain["MUMBAI"] = 80001] = "MUMBAI";
|
|
13
|
+
})(Chain = exports.Chain || (exports.Chain = {}));
|
|
20
14
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AA6BA,IAAY,IAGX;AAHD,WAAY,IAAI;IACZ,mBAAW,CAAA;IACX,qBAAa,CAAA;AACjB,CAAC,EAHW,IAAI,GAAJ,YAAI,KAAJ,YAAI,QAGf;AAqHD,IAAY,KAGX;AAHD,WAAY,KAAK;IACb,yCAAa,CAAA;IACb,yCAAc,CAAA;AAClB,CAAC,EAHW,KAAK,GAAL,aAAK,KAAL,aAAK,QAGhB"}
|
package/dist/utilities.d.ts
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export declare const limitOrderToJson: (order: LimitOrderAndSignature) => any;
|
|
4
|
-
export declare const marketOrderToJson: (mktOrder: MarketOrderAndSignature) => any;
|
|
5
|
-
export declare const addQueryParamsToUrl: (baseUrl: string, params?: FilterParams | undefined) => string;
|
|
1
|
+
import { SignedOrder } from "@polymarket/order-utils";
|
|
2
|
+
export declare const orderToJson: (order: SignedOrder) => any;
|
|
6
3
|
export declare const roundNormal: (num: number, decimals: number) => number;
|
|
7
4
|
export declare const roundDown: (num: number, decimals: number) => number;
|
|
8
5
|
export declare const roundUp: (num: number, decimals: number) => number;
|
|
9
|
-
//# sourceMappingURL=utilities.d.ts.map
|
package/dist/utilities.js
CHANGED
|
@@ -1,85 +1,42 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.roundUp = exports.roundDown = exports.roundNormal = exports.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
takerAsset: order.order.takerAsset,
|
|
10
|
-
makerAssetData: order.order.makerAssetData,
|
|
11
|
-
takerAssetData: order.order.takerAssetData,
|
|
12
|
-
getMakerAmount: order.order.getMakerAmount,
|
|
13
|
-
getTakerAmount: order.order.getTakerAmount,
|
|
14
|
-
predicate: order.order.predicate,
|
|
15
|
-
permit: order.order.permit,
|
|
16
|
-
interaction: order.order.interaction,
|
|
17
|
-
signer: order.order.signer,
|
|
18
|
-
sigType: order.order.sigType,
|
|
19
|
-
},
|
|
20
|
-
signature: order.signature,
|
|
21
|
-
orderType: "limit",
|
|
22
|
-
};
|
|
23
|
-
};
|
|
24
|
-
exports.marketOrderToJson = function (mktOrder) {
|
|
25
|
-
return {
|
|
26
|
-
order: {
|
|
27
|
-
salt: parseInt(mktOrder.order.salt, 10),
|
|
28
|
-
maker: mktOrder.order.maker,
|
|
29
|
-
makerAsset: mktOrder.order.makerAsset,
|
|
30
|
-
makerAmount: mktOrder.order.makerAmount,
|
|
31
|
-
makerAssetID: mktOrder.order.makerAssetID,
|
|
32
|
-
takerAsset: mktOrder.order.takerAsset,
|
|
33
|
-
takerAssetID: mktOrder.order.takerAssetID,
|
|
34
|
-
signer: mktOrder.order.signer,
|
|
35
|
-
sigType: mktOrder.order.sigType,
|
|
36
|
-
},
|
|
37
|
-
signature: mktOrder.signature,
|
|
38
|
-
orderType: "market",
|
|
39
|
-
minAmountReceived: mktOrder.minAmountReceived,
|
|
40
|
-
timeInForce: mktOrder.timeInForce,
|
|
41
|
-
};
|
|
42
|
-
};
|
|
43
|
-
var buildQueryParams = function (url, param, value) {
|
|
44
|
-
var urlWithParams = url;
|
|
45
|
-
var last = url.charAt(url.length - 1);
|
|
46
|
-
// Check the last char in the url string
|
|
47
|
-
// if ?, append the param directly: api.com?param=value
|
|
48
|
-
if (last === "?") {
|
|
49
|
-
urlWithParams = "" + urlWithParams + param + "=" + value;
|
|
3
|
+
exports.roundUp = exports.roundDown = exports.roundNormal = exports.orderToJson = void 0;
|
|
4
|
+
const order_utils_1 = require("@polymarket/order-utils");
|
|
5
|
+
const orderToJson = (order) => {
|
|
6
|
+
let side = "";
|
|
7
|
+
if (order.side == order_utils_1.Side.BUY) {
|
|
8
|
+
side = "buy";
|
|
50
9
|
}
|
|
51
10
|
else {
|
|
52
|
-
|
|
53
|
-
urlWithParams = urlWithParams + "&" + param + "=" + value;
|
|
54
|
-
}
|
|
55
|
-
return urlWithParams;
|
|
56
|
-
};
|
|
57
|
-
exports.addQueryParamsToUrl = function (baseUrl, params) {
|
|
58
|
-
var url = baseUrl;
|
|
59
|
-
if (params !== undefined) {
|
|
60
|
-
url = url + "?";
|
|
61
|
-
if (params.market !== undefined) {
|
|
62
|
-
url = buildQueryParams(url, "market", params.market);
|
|
63
|
-
}
|
|
64
|
-
if (params.max !== undefined) {
|
|
65
|
-
url = buildQueryParams(url, "max", "" + params.max);
|
|
66
|
-
}
|
|
67
|
-
if (params.startTs !== undefined) {
|
|
68
|
-
url = buildQueryParams(url, "startTs", "" + params.startTs);
|
|
69
|
-
}
|
|
70
|
-
if (params.endTs !== undefined) {
|
|
71
|
-
url = buildQueryParams(url, "endTs", "" + params.endTs);
|
|
72
|
-
}
|
|
11
|
+
side = "sell";
|
|
73
12
|
}
|
|
74
|
-
return
|
|
13
|
+
return {
|
|
14
|
+
salt: parseInt(order.salt, 10),
|
|
15
|
+
maker: order.maker,
|
|
16
|
+
signer: order.signer,
|
|
17
|
+
taker: order.taker,
|
|
18
|
+
tokenId: order.tokenId,
|
|
19
|
+
makerAmount: order.makerAmount,
|
|
20
|
+
takerAmount: order.takerAmount,
|
|
21
|
+
side,
|
|
22
|
+
expiration: order.expiration,
|
|
23
|
+
nonce: order.nonce,
|
|
24
|
+
feeRateBps: order.feeRateBps,
|
|
25
|
+
signatureType: order.signatureType,
|
|
26
|
+
signature: order.signature,
|
|
27
|
+
};
|
|
75
28
|
};
|
|
76
|
-
exports.
|
|
77
|
-
|
|
29
|
+
exports.orderToJson = orderToJson;
|
|
30
|
+
const roundNormal = (num, decimals) => {
|
|
31
|
+
return Math.round((num + Number.EPSILON) * Math.pow(10, decimals)) / Math.pow(10, decimals);
|
|
78
32
|
};
|
|
79
|
-
exports.
|
|
80
|
-
|
|
33
|
+
exports.roundNormal = roundNormal;
|
|
34
|
+
const roundDown = (num, decimals) => {
|
|
35
|
+
return Math.floor(num * Math.pow(10, decimals)) / Math.pow(10, decimals);
|
|
81
36
|
};
|
|
82
|
-
exports.
|
|
83
|
-
|
|
37
|
+
exports.roundDown = roundDown;
|
|
38
|
+
const roundUp = (num, decimals) => {
|
|
39
|
+
return Math.ceil(num * Math.pow(10, decimals)) / Math.pow(10, decimals);
|
|
84
40
|
};
|
|
41
|
+
exports.roundUp = roundUp;
|
|
85
42
|
//# sourceMappingURL=utilities.js.map
|
package/dist/utilities.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.js","sourceRoot":"","sources":["../src/utilities.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"utilities.js","sourceRoot":"","sources":["../src/utilities.ts"],"names":[],"mappings":";;;AAAA,yDAAyE;AAElE,MAAM,WAAW,GAAG,CAAC,KAAkB,EAAO,EAAE;IACnD,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,KAAK,CAAC,IAAI,IAAI,kBAAS,CAAC,GAAG,EAAE;QAC7B,IAAI,GAAG,KAAK,CAAC;KAChB;SAAM;QACH,IAAI,GAAG,MAAM,CAAC;KACjB;IACD,OAAO;QACH,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,IAAI;QACJ,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,aAAa,EAAE,KAAK,CAAC,aAAa;QAClC,SAAS,EAAE,KAAK,CAAC,SAAS;KAC7B,CAAC;AACN,CAAC,CAAC;AAtBW,QAAA,WAAW,eAsBtB;AAEK,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,QAAgB,EAAU,EAAE;IACjE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,SAAA,EAAE,EAAI,QAAQ,CAAA,CAAC,GAAG,SAAA,EAAE,EAAI,QAAQ,CAAA,CAAC;AAChF,CAAC,CAAC;AAFW,QAAA,WAAW,eAEtB;AAEK,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,QAAgB,EAAU,EAAE;IAC/D,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,SAAA,EAAE,EAAI,QAAQ,CAAA,CAAC,GAAG,SAAA,EAAE,EAAI,QAAQ,CAAA,CAAC;AAC7D,CAAC,CAAC;AAFW,QAAA,SAAS,aAEpB;AAEK,MAAM,OAAO,GAAG,CAAC,GAAW,EAAE,QAAgB,EAAU,EAAE;IAC7D,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,SAAA,EAAE,EAAI,QAAQ,CAAA,CAAC,GAAG,SAAA,EAAE,EAAI,QAAQ,CAAA,CAAC;AAC5D,CAAC,CAAC;AAFW,QAAA,OAAO,WAElB"}
|
package/package.json
CHANGED
|
@@ -1,47 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@polymarket/clob-client",
|
|
3
3
|
"description": "Typescript client for Polymarket's CLOB",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.1.1",
|
|
5
5
|
"contributors": [
|
|
6
6
|
{
|
|
7
7
|
"name": "Jonathan Amenechi",
|
|
8
8
|
"url": "https://github.com/JonathanAmenechi"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"name": "Rodrigo Calvo",
|
|
12
|
+
"url": "https://github.com/poly-rodr"
|
|
9
13
|
}
|
|
10
14
|
],
|
|
11
15
|
"main": "dist/index.js",
|
|
12
16
|
"types": "dist/index.d.ts",
|
|
13
|
-
"dependencies": {
|
|
14
|
-
"@commitlint/cli": "^9.1.2",
|
|
15
|
-
"@commitlint/config-conventional": "^9.1.2",
|
|
16
|
-
"@ethersproject/abstract-provider": "^5.5.1",
|
|
17
|
-
"@ethersproject/abstract-signer": "^5.5.0",
|
|
18
|
-
"@ethersproject/bignumber": "^5.5.0",
|
|
19
|
-
"@ethersproject/constants": "^5.5.0",
|
|
20
|
-
"@ethersproject/contracts": "^5.5.0",
|
|
21
|
-
"@ethersproject/hash": "^5.5.0",
|
|
22
|
-
"@ethersproject/providers": "^5.5.1",
|
|
23
|
-
"@ethersproject/random": "^5.5.0",
|
|
24
|
-
"@ethersproject/transactions": "^5.5.0",
|
|
25
|
-
"@ethersproject/wallet": "^5.5.0",
|
|
26
|
-
"@polymarket/order-utils": "^1.2.15",
|
|
27
|
-
"axios": "^0.21.1",
|
|
28
|
-
"commitizen": "^4.2.1",
|
|
29
|
-
"cz-conventional-changelog": "^3.3.0",
|
|
30
|
-
"dotenv": "^8.2.0",
|
|
31
|
-
"eslint": "^7.11.0",
|
|
32
|
-
"eslint-config-airbnb-base-typescript-prettier": "^4.1.0",
|
|
33
|
-
"eslint-config-prettier": "^6.12.0",
|
|
34
|
-
"eslint-plugin-import": "^2.22.1",
|
|
35
|
-
"eth-sig-util": "^3.0.1",
|
|
36
|
-
"ethers": "^5.5.2",
|
|
37
|
-
"husky": "^4.3.0",
|
|
38
|
-
"mocha": "^10.0.0",
|
|
39
|
-
"prettier": "^2.1.2",
|
|
40
|
-
"ts-generator": "^0.1.1",
|
|
41
|
-
"ts-node": "^9.1.1",
|
|
42
|
-
"typechain": "^4.0.2",
|
|
43
|
-
"typescript": "^3.9.7"
|
|
44
|
-
},
|
|
45
17
|
"files": [
|
|
46
18
|
"/dist"
|
|
47
19
|
],
|
|
@@ -51,13 +23,41 @@
|
|
|
51
23
|
],
|
|
52
24
|
"license": "MIT",
|
|
53
25
|
"scripts": {
|
|
54
|
-
"
|
|
55
|
-
"
|
|
56
|
-
"
|
|
26
|
+
"build": "make build",
|
|
27
|
+
"lint": "make lint",
|
|
28
|
+
"deploy": "yarn build && npm publish",
|
|
29
|
+
"test": "make test"
|
|
30
|
+
},
|
|
31
|
+
"dependencies": {
|
|
32
|
+
"@polymarket/order-utils": "^1.3.1",
|
|
33
|
+
"axios": "^0.27.2",
|
|
34
|
+
"ethers": "^5.7.1"
|
|
57
35
|
},
|
|
58
36
|
"devDependencies": {
|
|
59
|
-
"@types/chai": "^4.3.
|
|
37
|
+
"@types/chai": "^4.3.3",
|
|
60
38
|
"@types/mocha": "^9.1.1",
|
|
61
|
-
"
|
|
39
|
+
"@types/node": "^18.7.18",
|
|
40
|
+
"@typescript-eslint/eslint-plugin": "^5.37.0",
|
|
41
|
+
"@typescript-eslint/parser": "^5.37.0",
|
|
42
|
+
"chai": "^4.3.6",
|
|
43
|
+
"dotenv": "^16.0.2",
|
|
44
|
+
"eslint": "^8.23.1",
|
|
45
|
+
"eslint-config-prettier": "^8.5.0",
|
|
46
|
+
"eslint-config-standard-with-typescript": "^23.0.0",
|
|
47
|
+
"eslint-plugin-import": "^2.26.0",
|
|
48
|
+
"eslint-plugin-n": "^15.2.5",
|
|
49
|
+
"eslint-plugin-node": "^11.1.0",
|
|
50
|
+
"eslint-plugin-promise": "^6.0.1",
|
|
51
|
+
"eslint-plugin-unused-imports": "^2.0.0",
|
|
52
|
+
"esm": "^3.2.25",
|
|
53
|
+
"jsdom": "^20.0.0",
|
|
54
|
+
"jsdom-global": "^3.0.2",
|
|
55
|
+
"mocha": "^10.0.0",
|
|
56
|
+
"nyc": "^15.1.0",
|
|
57
|
+
"path": "^0.12.7",
|
|
58
|
+
"prettier": "^2.7.1",
|
|
59
|
+
"ts-mocha": "^10.0.0",
|
|
60
|
+
"ts-node": "^10.9.1",
|
|
61
|
+
"typescript": "^4.8.3"
|
|
62
62
|
}
|
|
63
63
|
}
|
package/dist/client.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EACH,sBAAsB,EACtB,uBAAuB,EACvB,WAAW,EACX,YAAY,EACZ,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,KAAK,EACL,eAAe,EACf,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,kBAAkB,EACrB,MAAM,SAAS,CAAC;AAyBjB,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,qBAAa,UAAU;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAGtB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IAGzC,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;IAE7B,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;gBAGhC,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,GAAG,aAAa,EAC/B,KAAK,CAAC,EAAE,WAAW,EACnB,aAAa,CAAC,EAAE,aAAa,EAC7B,aAAa,CAAC,EAAE,MAAM;IAgBb,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC;IAIrB,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC;IAI7B,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAI3C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAI1C,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAIrD,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAIhD,cAAc,CAAC,QAAQ,GAAE,MAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IAMhE;;;;;OAKG;IACU,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC;IAUhG;;;;;OAKG;IACU,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,WAAW,CAAC;IAUnF,UAAU,IAAI,OAAO,CAAC,eAAe,CAAC;IAkBtC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC;IAkB5B,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAkBzC,eAAe,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAkB7D,qBAAqB,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAkBzE,eAAe,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAmB7D,gBAAgB,CAAC,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAO5E,iBAAiB,CAAC,SAAS,EAAE,eAAe,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAO/E,aAAa,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAkBjE,SAAS,CAClB,KAAK,EAAE,sBAAsB,GAAG,uBAAuB,EACvD,cAAc,CAAC,EAAE,cAAc,GAChC,OAAO,CAAC,GAAG,CAAC;IAuBF,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC;IAiBhD,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC;IAgBtC,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,SAAS;CASpB"}
|
package/dist/constants.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,iLAG5B,CAAC"}
|
package/dist/endpoints.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"endpoints.d.ts","sourceRoot":"","sources":["../src/endpoints.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,UAAU,CAAC;AAE5B,eAAO,MAAM,cAAc,UAAU,CAAC;AAEtC,eAAO,MAAM,QAAQ,cAAc,CAAC;AAEpC,eAAO,MAAM,KAAK,WAAW,CAAC;AAE9B,eAAO,MAAM,cAAc,oBAAoB,CAAC;AAEhD,eAAO,MAAM,YAAY,kBAAkB,CAAC;AAE5C,eAAO,MAAM,cAAc,oBAAoB,CAAC;AAEhD,eAAO,MAAM,cAAc,oBAAoB,CAAC;AAEhD,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAE9C,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAE9C,eAAO,MAAM,oBAAoB,0BAA0B,CAAC;AAE5D,eAAO,MAAM,SAAS,YAAY,CAAC;AAEnC,eAAO,MAAM,WAAW,iBAAiB,CAAC;AAE1C,eAAO,MAAM,UAAU,WAAW,CAAC;AAEnC,eAAO,MAAM,MAAM,WAAW,CAAC;AAE/B,eAAO,MAAM,UAAU,gBAAgB,CAAC;AAExC,eAAO,MAAM,oBAAoB,sBAAsB,CAAC;AAExD,eAAO,MAAM,gBAAgB,kBAAkB,CAAC"}
|
package/dist/errors.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,yBAAyB,OAAgE,CAAC;AAEvG,eAAO,MAAM,qBAAqB,OAA0E,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/headers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAE/C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAEjF,eAAO,MAAM,eAAe,WAAkB,MAAM,GAAG,aAAa,iCAAmB,OAAO,CAAC,YAAY,CAiB1G,CAAC;AAEF,eAAO,MAAM,eAAe,WAChB,MAAM,GAAG,aAAa,SACvB,WAAW,gBACJ,YAAY,KAC3B,OAAO,CAAC,YAAY,CAqBtB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
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,GAAG,QAAQ,CAAC;AACzB,eAAO,MAAM,IAAI,SAAS,CAAC;AAC3B,eAAO,MAAM,MAAM,WAAW,CAAC;AAC/B,eAAO,MAAM,GAAG,QAAQ,CAAC;AAEzB,eAAO,MAAM,OAAO,aACN,MAAM,UACR,MAAM,YACJ,GAAG,SACN,GAAG,WACD,GAAG,KACb,OAAO,CAAC,GAAG,CAeb,CAAC;AAEF,eAAO,MAAM,IAAI,aAAoB,MAAM,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,KAAG,OAAO,CAAC,GAAG,CAGhG,CAAC;AAEF,eAAO,MAAM,GAAG,aAAoB,MAAM,YAAY,GAAG,SAAS,GAAG,WAAW,GAAG,KAAG,OAAO,CAAC,GAAG,CAGhG,CAAC;AAEF,eAAO,MAAM,GAAG,aAAoB,MAAM,YAAY,GAAG,SAAS,GAAG,WAAW,GAAG,KAAG,OAAO,CAAC,GAAG,CAGhG,CAAC"}
|