UNPKG

polynance_sdk

Version:

TypeScript SDK for prediction market aggregation supporting Polymarket, Limitless, and Truemarket

147 lines (146 loc) 9.11 kB
import { Wallet } from "@ethersproject/wallet"; import { JsonRpcProvider, JsonRpcSigner } from "@ethersproject/providers"; import { ClobClient, OpenOrder, OrderType } from '@polymarket/clob-client'; import { SignedOrder } from "@polymarket/order-utils"; import { PredictionProvider, Market, MarketDiscussion, OrderBookSummary, TradeRecord, Exchange, SearchFilter, Trader, TraderPosition, ExecuteOrderParams, TradeUpdateHandlers, TradeSubscription, MarketMatchResult, PolynanceClientOptions, Candle } from './types'; /** * The main client class for interacting with the Polynance API. * Provides methods to fetch prediction market data and subscribe to real-time events. */ export declare class PolynanceSDK { private apiClient; private sseBaseUrl; polymarketClob: ClobClient; private wallet?; private walletAddress?; private pendingOrderIds; /** * Creates an instance of the PolynanceClient. * @param options - Optional configuration for the client, such as API URLs and timeout. */ constructor(options?: PolynanceClientOptions); initCreds(wallet: JsonRpcSigner | Wallet): Promise<void>; buildOrder(params: ExecuteOrderParams, wallet?: JsonRpcSigner | Wallet): Promise<SignedOrder>; executeOrder(order: SignedOrder, orderType?: OrderType, rpcProvider?: JsonRpcProvider, wallet?: JsonRpcSigner | Wallet): Promise<OpenOrder | any>; getPendingOrdersIds(): string[]; waitOrderMatched(orderId: string): Promise<boolean>; private approveAllowanceBalance; getConditionalTokensBalance(tokenId: string, walletAddress?: string): Promise<number>; getUSDCBalance(walletAddress?: string): Promise<number>; proposePrice(order: SignedOrder): Promise<import("axios").AxiosResponse<any, any> | null>; verifyPrice(): Promise<null | undefined>; scanPendingPriceData(): Promise<boolean>; private toPolyOrder; /** * Handles errors, logs them, and wraps them in a PolynanceApiError. * @param error - The error object caught. * @param methodName - The name of the method where the error originated. * @param context - Additional context about the operation (e.g., parameters). * @returns A PolynanceApiError instance. * @private */ private handleError; asContext<T>(data: T, prompt?: string): string; /** * Retrieves detailed information for a specific market by its ID and prediction provider. * @param protocol - The prediction provider identifier (e.g., 'polymarket'). * @param marketId - The unique identifier of the market. * @returns A Promise resolving to the `Market` object. * @throws {PolynanceApiError} If parameters are invalid or the API request fails. */ getMarket(protocol: PredictionProvider, marketId: string): Promise<Market>; /** * Retrieves detailed information for a specific exchange by its ID and prediction provider. * @param protocol - The prediction provider identifier (e.g., 'polymarket'). * @param exchangeId - The unique identifier of the exchange. * @returns A Promise resolving to the `Exchange` object. * @throws {PolynanceApiError} If parameters are invalid or the API request fails. */ getExchange(protocol: PredictionProvider, exchangeId: string): Promise<Exchange>; /** * Retrieves a list of currently active markets for a specific prediction provider. * Supports pagination. * @param protocol - The prediction provider identifier (e.g., 'polymarket'). * @param page - The page number to retrieve (1-based). Defaults to 1. * @param limit - The maximum number of markets per page. Defaults to 50. * @returns A Promise resolving to an array of `Market` objects. * @throws {PolynanceApiError} If parameters are invalid or the API request fails. */ getActiveMarkets(protocol: PredictionProvider, page?: number, limit?: number): Promise<Market[]>; /** * Retrieves a list of discussions associated with a specific market. * @param protocol - The prediction provider identifier (e.g., 'polymarket'). * @param marketId - The unique identifier of the market. * @returns A Promise resolving to an array of `MarketDiscussion` objects. * @throws {PolynanceApiError} If parameters are invalid or the API request fails. */ getMarketDiscussions(protocol: PredictionProvider, marketId: string): Promise<MarketDiscussion[]>; /** * Retrieves the current order book summary for a specific exchange. * @param protocol - The prediction provider identifier (e.g., 'polymarket'). * @param exchangeId - The unique identifier of the exchange. * @returns A Promise resolving to a Record mapping asset IDs to `OrderBookSummary` objects. * @throws {PolynanceApiError} If parameters are invalid or the API request fails. */ getOrderbook(protocol: PredictionProvider, exchangeId: string): Promise<Record<string, OrderBookSummary>>; /** * Retrieves the historical price history for all position tokens in a specific exchange. * @param protocol - The prediction provider identifier (e.g., 'polymarket'). * @param exchangeId - The unique identifier of the exchange. * @returns A Promise resolving to a 2D array of `TradeRecord`, organized by position token index. * @throws {PolynanceApiError} If parameters are invalid or the API request fails. */ getPriceHistory(protocol: PredictionProvider, exchangeId: string): Promise<TradeRecord[][]>; getTrader(protocol: PredictionProvider, traderAddress: string): Promise<Trader>; traderPositions(protocol: PredictionProvider, traderAddress: string): Promise<TraderPosition[]>; /** * Retrieves a list of all available market slugs across all prediction providers. * Supports pagination. Slugs are URL-friendly identifiers for markets. * @param page - The page number to retrieve (1-based). Defaults to 1. * @param limit - The maximum number of slugs per page. Defaults to 100. * @returns A Promise resolving to an array of market slug strings. * @throws {PolynanceApiError} If the API request fails. */ getSlugs(page?: number, limit?: number): Promise<string[]>; /** * Retrieves market information using its unique slug. * A single slug might resolve to multiple markets if the same market exists on different prediction providers. * @param slug - The URL-friendly identifier of the market. * @returns A Promise resolving to an array of `Market` objects matching the slug. * @throws {PolynanceApiError} If the slug is missing or the API request fails. */ getMarketBySlug(slug: string): Promise<Market[]>; getExchangeBySlug(slug: string): Promise<Exchange[]>; /** * Searches for prediction markets using a natural language query. * Allows filtering by prediction provider, comment inclusion, result count, and similarity threshold. * @param query - The search query string (e.g., "Who will win the next US election?"). * @param filter - Optional filtering parameters (`SearchFilter`). * @returns A Promise resolving to an array of `MarketMatchResult` objects, sorted by relevance. * @throws {PolynanceApiError} If the query is missing or the API request fails. */ search(query: string, filter?: Partial<SearchFilter>): Promise<MarketMatchResult[]>; /** * Subscribes to real-time trade updates for a specific exchange or identifier via Server-Sent Events (SSE). * * **Note:** This requires a browser environment or a Node.js environment with an `EventSource` polyfill. * * @param protocol - The prediction provider identifier (e.g., 'polymarket'). * @param id - The identifier for the event stream, typically the exchange ID. * @param handlers - Optional callback functions for handling SSE lifecycle events (`onOpen`, `onMessage`, `onError`). * @returns A `TradeSubscription` object containing the `EventSource` instance and methods to control the subscription. * @throws {PolynanceApiError} If `EventSource` is unavailable or parameters are invalid. */ subscribeToTrades(protocol: PredictionProvider, id: string, handlers?: TradeUpdateHandlers): TradeSubscription; } /** * Generates price chart data (OHLCV) from a list of trade records. * * @param tradeRecords - An array of `TradeRecord` objects representing trades. Assumes timestamps are in **seconds**. * @param intervalMillis - The desired candlestick interval duration in **milliseconds**. * @param fromTimeMillis - The start timestamp (Unix milliseconds) for the desired data range (inclusive). * @param toTimeMillis - The end timestamp (Unix milliseconds) for the desired data range (exclusive). * @returns An array of `Candle` objects, sorted by time. Returns an empty array if no valid events fall within the range. * @throws {PolynanceApiError} if intervalMillis is not positive. */ export declare function generatePriceChart(tradeRecords: TradeRecord[], intervalMillis: number, fromTimeMillis: number, toTimeMillis: number): Candle[];