@vesper85/strategy-sdk 0.1.16 → 0.1.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/clients/polymarket-client.d.ts +8 -3
- package/dist/index.d.ts +1 -1
- package/dist/index.js +84 -2
- package/dist/types/osiris.d.ts +65 -2
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { GammaMarket, type Event as GammaEvent, type Tag, type Team, type Sport, type Series, type Comment as GammaComment, type SearchResults, type PaginatedResponse, type MarketFilters, type
|
|
1
|
+
import { GammaMarket, type Event as GammaEvent, type Tag, type Team, type Sport, type Series, type Comment as GammaComment, type SearchResults, type PaginatedResponse, type MarketFilters, type EventPaginationFilters, type PaginationParams, type SearchParams } from 'polymarket-gamma';
|
|
2
2
|
import { ethers } from 'ethers';
|
|
3
|
-
import type { PolymarketAPI, PolymarketClientOptions, PolymarketLimitOrderParams, PolymarketMarketOrderParams, PolymarketOrderResponse, PolymarketOpenOrder, PolymarketCancelResponse, PolymarketOrderBook, PolymarketApprovalResult, SignerAPI } from '../types/osiris';
|
|
3
|
+
import type { PolymarketAPI, PolymarketClientOptions, PolymarketLimitOrderParams, PolymarketMarketOrderParams, PolymarketOrderResponse, PolymarketOpenOrder, PolymarketCancelResponse, PolymarketOrderBook, PolymarketApprovalResult, SignerAPI, ExtendedEventFilters } from '../types/osiris';
|
|
4
4
|
import type { Logger } from '../utils/logger';
|
|
5
5
|
export declare class PolymarketClient implements PolymarketAPI {
|
|
6
6
|
private logger;
|
|
@@ -111,7 +111,12 @@ export declare class PolymarketClient implements PolymarketAPI {
|
|
|
111
111
|
}): Promise<GammaMarket[]>;
|
|
112
112
|
getMarketTags(marketId: string): Promise<Tag[]>;
|
|
113
113
|
getEvent(idOrSlug: string): Promise<GammaEvent>;
|
|
114
|
-
|
|
114
|
+
/**
|
|
115
|
+
* Get events with extended filters
|
|
116
|
+
* Makes a direct API call to support all filter parameters from the Polymarket API
|
|
117
|
+
* @see https://docs.polymarket.com/api-reference/events/list-events
|
|
118
|
+
*/
|
|
119
|
+
getEvents(filters?: ExtendedEventFilters): Promise<GammaEvent[]>;
|
|
115
120
|
getEventTags(eventId: string): Promise<Tag[]>;
|
|
116
121
|
getEventsPaginated(filters?: EventPaginationFilters): Promise<PaginatedResponse<GammaEvent>>;
|
|
117
122
|
getTags(params?: PaginationParams): Promise<Tag[]>;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type { CodeStrategy, } from './types/strategy';
|
|
2
|
-
export type { OsirisContext, OsirisState, PolymarketAPI, HyperliquidAPI, TechnicalAnalysisAPI, SignerAPI, PolymarketOrderSide, PolymarketLimitOrderParams, PolymarketMarketOrderParams, PolymarketOrderResponse, PolymarketOpenOrder, PolymarketCancelResponse, PolymarketOrderBook, PolymarketOrderBookEntry, PolymarketApprovalResult, PolymarketClientOptions, } from './types/osiris';
|
|
2
|
+
export type { OsirisContext, OsirisState, PolymarketAPI, HyperliquidAPI, TechnicalAnalysisAPI, SignerAPI, PolymarketOrderSide, PolymarketLimitOrderParams, PolymarketMarketOrderParams, PolymarketOrderResponse, PolymarketOpenOrder, PolymarketCancelResponse, PolymarketOrderBook, PolymarketOrderBookEntry, PolymarketApprovalResult, PolymarketClientOptions, ExtendedEventFilters, } from './types/osiris';
|
|
3
3
|
export type { EventType, EventSourceType, EventSubscription, EventConditions, StrategyEvent, EventData, EventSourceSubscribeMessage, EventSourceUnsubscribeMessage, EventSourceMessage, MarketSubscription, WalletSubscription, OpportunitySubscription, CustomSubscription, ClobMarketSubscription, ClobUserSubscription, ActivitySubscription, CommentsSubscription, CryptoPricesSubscription, RfqSubscription, } from './types/event-types';
|
|
4
4
|
export { isMarketSubscription, isWalletSubscription, isOpportunitySubscription, isCustomSubscription, isClobMarketSubscription, isClobUserSubscription, isActivitySubscription, isCommentsSubscription, isCryptoPricesSubscription, isRfqSubscription, isPolymarketSubscription, isOsirisSubscription, } from './types/event-types';
|
|
5
5
|
export { PolymarketClient, } from './clients/polymarket-client';
|
package/dist/index.js
CHANGED
|
@@ -474,6 +474,12 @@ var PolymarketClient = class {
|
|
|
474
474
|
);
|
|
475
475
|
this.logger.info("Deriving API credentials...");
|
|
476
476
|
const apiCreds = await tempClient.createOrDeriveApiKey();
|
|
477
|
+
if (!apiCreds || !apiCreds.key || !apiCreds.secret) {
|
|
478
|
+
throw new Error(
|
|
479
|
+
"Failed to obtain API credentials from Polymarket. Please ensure your wallet is registered at polymarket.com and has accepted the Terms of Service."
|
|
480
|
+
);
|
|
481
|
+
}
|
|
482
|
+
this.logger.debug("API credentials obtained successfully");
|
|
477
483
|
const signatureType = 0;
|
|
478
484
|
this.clobClient = new ClobClient(
|
|
479
485
|
this.options.clobHost,
|
|
@@ -1270,7 +1276,7 @@ var PolymarketClient = class {
|
|
|
1270
1276
|
return Number(data.price);
|
|
1271
1277
|
} catch (error) {
|
|
1272
1278
|
this.logger.error(`Error fetching price for ${clobTokenId}`, error);
|
|
1273
|
-
|
|
1279
|
+
throw error;
|
|
1274
1280
|
}
|
|
1275
1281
|
}
|
|
1276
1282
|
async getAskPrice(clobTokenId) {
|
|
@@ -1365,8 +1371,84 @@ var PolymarketClient = class {
|
|
|
1365
1371
|
async getEvent(idOrSlug) {
|
|
1366
1372
|
return this.gammaClient.getEvent(idOrSlug);
|
|
1367
1373
|
}
|
|
1374
|
+
/**
|
|
1375
|
+
* Get events with extended filters
|
|
1376
|
+
* Makes a direct API call to support all filter parameters from the Polymarket API
|
|
1377
|
+
* @see https://docs.polymarket.com/api-reference/events/list-events
|
|
1378
|
+
*/
|
|
1368
1379
|
async getEvents(filters) {
|
|
1369
|
-
|
|
1380
|
+
if (!filters) {
|
|
1381
|
+
return this.gammaClient.getEvents();
|
|
1382
|
+
}
|
|
1383
|
+
const extendedKeys = [
|
|
1384
|
+
"exclude_tag_id",
|
|
1385
|
+
"tag_id",
|
|
1386
|
+
"tag_slug",
|
|
1387
|
+
"related_tags",
|
|
1388
|
+
"include_chat",
|
|
1389
|
+
"include_template",
|
|
1390
|
+
"recurrence",
|
|
1391
|
+
"liquidity_min",
|
|
1392
|
+
"liquidity_max",
|
|
1393
|
+
"volume_min",
|
|
1394
|
+
"volume_max",
|
|
1395
|
+
"start_date_min",
|
|
1396
|
+
"start_date_max",
|
|
1397
|
+
"end_date_min",
|
|
1398
|
+
"end_date_max",
|
|
1399
|
+
"cyom"
|
|
1400
|
+
];
|
|
1401
|
+
const hasExtendedFilters = extendedKeys.some((key) => filters[key] !== void 0);
|
|
1402
|
+
if (!hasExtendedFilters) {
|
|
1403
|
+
return this.gammaClient.getEvents(filters);
|
|
1404
|
+
}
|
|
1405
|
+
const baseUrl = "https://gamma-api.polymarket.com/events";
|
|
1406
|
+
const params = new URLSearchParams();
|
|
1407
|
+
const appendParam = (key, value) => {
|
|
1408
|
+
if (value === void 0) return;
|
|
1409
|
+
if (Array.isArray(value)) {
|
|
1410
|
+
value.forEach((v) => params.append(key, v.toString()));
|
|
1411
|
+
} else {
|
|
1412
|
+
params.append(key, value.toString());
|
|
1413
|
+
}
|
|
1414
|
+
};
|
|
1415
|
+
if (filters.limit !== void 0) params.append("limit", filters.limit.toString());
|
|
1416
|
+
if (filters.offset !== void 0) params.append("offset", filters.offset.toString());
|
|
1417
|
+
if (filters.order !== void 0) params.append("order", filters.order);
|
|
1418
|
+
if (filters.ascending !== void 0) params.append("ascending", filters.ascending.toString());
|
|
1419
|
+
appendParam("id", filters.id);
|
|
1420
|
+
appendParam("tag_id", filters.tag_id);
|
|
1421
|
+
appendParam("exclude_tag_id", filters.exclude_tag_id);
|
|
1422
|
+
if (filters.slug !== void 0) params.append("slug", filters.slug);
|
|
1423
|
+
if (filters.tag_slug !== void 0) params.append("tag_slug", filters.tag_slug);
|
|
1424
|
+
if (filters.related_tags !== void 0) params.append("related_tags", filters.related_tags.toString());
|
|
1425
|
+
if (filters.active !== void 0) params.append("active", filters.active.toString());
|
|
1426
|
+
if (filters.archived !== void 0) params.append("archived", filters.archived.toString());
|
|
1427
|
+
if (filters.featured !== void 0) params.append("featured", filters.featured.toString());
|
|
1428
|
+
if (filters.cyom !== void 0) params.append("cyom", filters.cyom.toString());
|
|
1429
|
+
if (filters.include_chat !== void 0) params.append("include_chat", filters.include_chat.toString());
|
|
1430
|
+
if (filters.include_template !== void 0) params.append("include_template", filters.include_template.toString());
|
|
1431
|
+
if (filters.recurrence !== void 0) params.append("recurrence", filters.recurrence);
|
|
1432
|
+
if (filters.closed !== void 0) params.append("closed", filters.closed.toString());
|
|
1433
|
+
if (filters.liquidity_min !== void 0) params.append("liquidity_min", filters.liquidity_min.toString());
|
|
1434
|
+
if (filters.liquidity_max !== void 0) params.append("liquidity_max", filters.liquidity_max.toString());
|
|
1435
|
+
if (filters.volume_min !== void 0) params.append("volume_min", filters.volume_min.toString());
|
|
1436
|
+
if (filters.volume_max !== void 0) params.append("volume_max", filters.volume_max.toString());
|
|
1437
|
+
if (filters.start_date_min !== void 0) params.append("start_date_min", filters.start_date_min);
|
|
1438
|
+
if (filters.start_date_max !== void 0) params.append("start_date_max", filters.start_date_max);
|
|
1439
|
+
if (filters.end_date_min !== void 0) params.append("end_date_min", filters.end_date_min);
|
|
1440
|
+
if (filters.end_date_max !== void 0) params.append("end_date_max", filters.end_date_max);
|
|
1441
|
+
const url = `${baseUrl}?${params.toString()}`;
|
|
1442
|
+
try {
|
|
1443
|
+
const response = await fetch(url);
|
|
1444
|
+
if (!response.ok) {
|
|
1445
|
+
throw new Error(`Failed to fetch events: ${response.statusText}`);
|
|
1446
|
+
}
|
|
1447
|
+
return await response.json();
|
|
1448
|
+
} catch (error) {
|
|
1449
|
+
this.logger.error("Error fetching events with extended filters", error);
|
|
1450
|
+
throw error;
|
|
1451
|
+
}
|
|
1370
1452
|
}
|
|
1371
1453
|
async getEventTags(eventId) {
|
|
1372
1454
|
return this.gammaClient.getEventTags(eventId);
|
package/dist/types/osiris.d.ts
CHANGED
|
@@ -1,11 +1,69 @@
|
|
|
1
1
|
import type { OHLCV, TAParams } from '@vesper85/technical-indicators';
|
|
2
2
|
import type { BigNumber } from 'ethers';
|
|
3
|
-
import type { Event as GammaEvent, Tag, Team, Sport, Series, Comment as GammaComment, SearchResults, PaginatedResponse, MarketFilters,
|
|
3
|
+
import type { Event as GammaEvent, Tag, Team, Sport, Series, Comment as GammaComment, SearchResults, PaginatedResponse, MarketFilters, EventPaginationFilters, PaginationParams, SearchParams, GammaMarket } from 'polymarket-gamma';
|
|
4
4
|
import type { ClearinghouseState, SpotMeta, SpotClearinghouseState, SpotMetaAndAssetCtxs, Meta, MetaAndAssetCtxs, UserFunding, UserNonFundingLedgerUpdates, FundingHistory, PredictedFundings, PerpsAtOpenInterestCap, PerpDexLimits, AllMids, UserOpenOrders, FrontendOpenOrders, UserFills, UserRateLimit, OrderStatus, L2Book, CandleSnapshot, HistoricalOrder, TwapSliceFill, SubAccount, VaultDetails, VaultEquity, UserRole, Delegation, DelegatorSummary, DelegatorHistoryEntry, DelegatorReward, ValidatorSummary, VaultSummary, UserFees, PortfolioPeriods, PreTransferCheck, Referral, ExtraAgent, LegalCheck, TwapHistory, MultiSigSigners, BuilderFeeApproval, UserOrderHistory } from 'hyperliquid';
|
|
5
5
|
export interface OsirisState {
|
|
6
6
|
get(key: string): Promise<any>;
|
|
7
7
|
set(key: string, value: any): Promise<void>;
|
|
8
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* Extended filters for Polymarket events API
|
|
11
|
+
* Includes all query parameters from https://docs.polymarket.com/api-reference/events/list-events
|
|
12
|
+
*/
|
|
13
|
+
export interface ExtendedEventFilters {
|
|
14
|
+
/** Maximum number of results to return */
|
|
15
|
+
limit?: number;
|
|
16
|
+
/** Number of results to skip */
|
|
17
|
+
offset?: number;
|
|
18
|
+
/** Comma-separated list of fields to order by */
|
|
19
|
+
order?: string;
|
|
20
|
+
/** Sort in ascending order */
|
|
21
|
+
ascending?: boolean;
|
|
22
|
+
/** Filter by event ID(s) - can be single ID or array */
|
|
23
|
+
id?: string | string[];
|
|
24
|
+
/** Filter by tag ID(s) - can be single ID or array of IDs */
|
|
25
|
+
tag_id?: number | number[];
|
|
26
|
+
/** Exclude events with tag ID(s) - can be single ID or array of IDs */
|
|
27
|
+
exclude_tag_id?: number | number[];
|
|
28
|
+
/** Filter by event slug */
|
|
29
|
+
slug?: string;
|
|
30
|
+
/** Filter by tag slug */
|
|
31
|
+
tag_slug?: string;
|
|
32
|
+
/** Include related tags */
|
|
33
|
+
related_tags?: boolean;
|
|
34
|
+
/** Filter by active status */
|
|
35
|
+
active?: boolean;
|
|
36
|
+
/** Filter by archived status */
|
|
37
|
+
archived?: boolean;
|
|
38
|
+
/** Filter by featured status */
|
|
39
|
+
featured?: boolean;
|
|
40
|
+
/** Filter by CYOM (Create Your Own Market) status */
|
|
41
|
+
cyom?: boolean;
|
|
42
|
+
/** Include chat data */
|
|
43
|
+
include_chat?: boolean;
|
|
44
|
+
/** Include template data */
|
|
45
|
+
include_template?: boolean;
|
|
46
|
+
/** Filter by recurrence */
|
|
47
|
+
recurrence?: string;
|
|
48
|
+
/** Filter by closed status */
|
|
49
|
+
closed?: boolean;
|
|
50
|
+
/** Minimum liquidity filter */
|
|
51
|
+
liquidity_min?: number;
|
|
52
|
+
/** Maximum liquidity filter */
|
|
53
|
+
liquidity_max?: number;
|
|
54
|
+
/** Minimum volume filter */
|
|
55
|
+
volume_min?: number;
|
|
56
|
+
/** Maximum volume filter */
|
|
57
|
+
volume_max?: number;
|
|
58
|
+
/** Minimum start date (ISO 8601 format) */
|
|
59
|
+
start_date_min?: string;
|
|
60
|
+
/** Maximum start date (ISO 8601 format) */
|
|
61
|
+
start_date_max?: string;
|
|
62
|
+
/** Minimum end date (ISO 8601 format) */
|
|
63
|
+
end_date_min?: string;
|
|
64
|
+
/** Maximum end date (ISO 8601 format) */
|
|
65
|
+
end_date_max?: string;
|
|
66
|
+
}
|
|
9
67
|
/**
|
|
10
68
|
* Order side for Polymarket trades
|
|
11
69
|
*/
|
|
@@ -174,7 +232,12 @@ export interface PolymarketAPI {
|
|
|
174
232
|
}): Promise<GammaMarket[]>;
|
|
175
233
|
getMarketTags(marketId: string): Promise<Tag[]>;
|
|
176
234
|
getEvent(idOrSlug: string): Promise<GammaEvent>;
|
|
177
|
-
|
|
235
|
+
/**
|
|
236
|
+
* Get events with optional filters
|
|
237
|
+
* @param filters - Extended event filters including exclude_tag_id, liquidity_min, volume_min, date filters, etc.
|
|
238
|
+
* @see https://docs.polymarket.com/api-reference/events/list-events
|
|
239
|
+
*/
|
|
240
|
+
getEvents(filters?: ExtendedEventFilters): Promise<GammaEvent[]>;
|
|
178
241
|
getEventTags(eventId: string): Promise<Tag[]>;
|
|
179
242
|
getEventsPaginated(filters?: EventPaginationFilters): Promise<PaginatedResponse<GammaEvent>>;
|
|
180
243
|
getTags(params?: PaginationParams): Promise<Tag[]>;
|