import { Protocol, PredictionMarketEvent, PredictionMarketComment, OrderBookSummary, FillEventData, PredictionMarket } from './types';
export interface PolynanceClientOptions {
    apiBaseUrl?: string;
    redisUrl?: string;
    sseBaseUrl?: string;
}
/**
 * SSE購読時に指定可能なハンドラーの型
 */
export interface FillEventSSEHandlers {
    /**
     * SSE接続確立時のコールバック
     */
    onOpen?: (ev: Event) => void;
    /**
     * SSEメッセージ受信時のコールバック（parse済み FillEventData が渡る）
     */
    onMessage?: (data: FillEventData) => void;
    /**
     * SSE接続エラー時のコールバック
     */
    onError?: (ev: Event) => void;
}
/**
 * SSE購読が返す購読インスタンスの型
 */
export interface FillEventSubscription {
    /**
     * EventSource のインスタンス
     */
    eventSource: EventSource;
    /**
     * SSE購読を終了（接続をClose）するためのメソッド
     */
    close: () => void;
    /**
     * 直近の SSE メッセージ内容を取得するためのメソッド
     */
    getLatestData: () => FillEventData | null;
}
/**
 * 予測市場のアグリゲータクライアント
 */
export declare class PolynanceClient {
    private apiClient;
    private sseBaseUrl;
    constructor(options?: PolynanceClientOptions);
    /**
     * 指定されたプロトコルとイベントIDに対応するイベント情報を取得
     */
    getEvent(protocol: Protocol, eventId: string): Promise<PredictionMarketEvent>;
    /**
     * 指定されたプロトコルとマーケットIDに対応するマーケット情報を取得
     */
    getMarket(protocol: Protocol, marketId: string): Promise<PredictionMarket>;
    /**
     * 指定されたプロトコルの進行中のイベント一覧を取得
     */
    getOngoingEvents(protocol: Protocol, page?: number, limit?: number): Promise<PredictionMarketEvent[]>;
    /**
     * 指定されたプロトコルとイベントIDに対応するコメント一覧を取得
     */
    getEventComments(protocol: Protocol, eventId: string): Promise<PredictionMarketComment[]>;
    /**
     * 指定されたプロトコルとマーケットIDに対応するオーダーブック情報を取得
     */
    getOrderbook(protocol: Protocol, marketId: string): Promise<Record<string, OrderBookSummary>>;
    /**
     * Retrieves the filled order events for position tokens in a market for the last month.
     * Returns price and timestamp data for each execution in the orderbook.
     *
     * The response is a 2D array where the index corresponds to the position tokens
     * in the same order as they appear in the market response's position_tokens array.
     * For binary options, index 0 corresponds to "Yes" tokens.
     *
     * @param protocol - The protocol identifier
     * @param marketId - The market identifier
     * @returns A 2D array of fill event data, organized by position token index
     */
    getOrderBookFilledEvents(protocol: Protocol, marketId: string): Promise<FillEventData[][]>;
    /**
     * 指定されたプロトコルと ID(マーケットID等) に対応する Fill イベントを SSE で購読
     *
     * @param protocol プロトコル名
     * @param id マーケットID等
     * @param handlers SSE購読時の各種コールバック (onOpen, onMessage, onError)
     * @returns SSE購読インスタンス (eventSource, close, getLatestData)
     */
    subscribeFillEvents(protocol: Protocol, id: string, handlers?: FillEventSSEHandlers): FillEventSubscription;
    /**
     * エラーハンドリング
     */
    private handleError;
}
export interface Candle {
    time: number;
    open: number;
    high: number;
    low: number;
    close: number;
    volume: number;
}
export declare function generateCandlestickData(fillEvents: FillEventData[], intervalMillis: number, fromTime: number, toTime: number): Candle[];
