/** * @module events/geyser * @description Yellowstone gRPC (Geyser) event stream for SAP v2. * * Drop-in alternative to the WebSocket `connection.onLogs()` pipeline. * Uses Triton / Helius / any Yellowstone-compatible gRPC endpoint to * receive program transaction updates with sub-second latency and * automatic reconnection. * * @category Events * @since v0.6.3 * * @example * ```ts * import { GeyserEventStream } from "@oobe-protocol-labs/synapse-sap-sdk"; * import { EventParser } from "@oobe-protocol-labs/synapse-sap-sdk"; * * const stream = new GeyserEventStream({ * endpoint: "https://grpc.triton.one", * token: process.env.GEYSER_TOKEN!, * programId: "SAPpUhsWLJG1FfkGRcXagEDMrMsWGjbky7AyhGpFETZ", * }); * * const parser = new EventParser(program); * * stream.on("logs", (logs, signature, slot) => { * const events = parser.parseLogs(logs); * for (const event of events) { * console.log(event.name, event.data); * } * }); * * stream.on("error", (err) => console.error("gRPC error:", err)); * * await stream.connect(); * // ... later * await stream.disconnect(); * ``` */ import { EventEmitter } from "events"; /** * Configuration for the Yellowstone gRPC event stream. * * @interface GeyserConfig * @since v0.6.3 */ export interface GeyserConfig { /** Yellowstone gRPC endpoint URL (e.g. "https://grpc.triton.one") */ endpoint: string; /** Authentication token for the gRPC endpoint */ token: string; /** SAP program ID to filter. Defaults to SAP v2 program. */ programId?: string; /** * Commitment level for the subscription. * @default "confirmed" */ commitment?: "processed" | "confirmed" | "finalized"; /** * Automatically reconnect on disconnect. * @default true */ autoReconnect?: boolean; /** * Delay between reconnection attempts in ms. * @default 3000 */ reconnectDelayMs?: number; /** * Maximum number of reconnection attempts. 0 = unlimited. * @default 0 */ maxReconnectAttempts?: number; /** * Include failed transactions in the stream. * @default false */ includeFailedTxs?: boolean; } /** * Events emitted by {@link GeyserEventStream}. * * @interface GeyserStreamEvents * @since v0.6.3 */ export interface GeyserStreamEvents { /** * Emitted for each transaction's log messages. * Same shape as `connection.onLogs()` callback — plug into `EventParser.parseLogs()`. */ logs: (logs: string[], signature: string, slot: number) => void; /** Emitted when the gRPC stream connects or reconnects. */ connected: () => void; /** Emitted when the stream disconnects. */ disconnected: (reason: string) => void; /** Emitted on transport or parsing errors. */ error: (err: Error) => void; /** Emitted on reconnection attempt. */ reconnecting: (attempt: number) => void; } /** * Yellowstone gRPC event stream for SAP v2 programs. * * Wraps `@triton-one/yellowstone-grpc` and emits parsed log lines * compatible with the existing {@link EventParser}. * * @name GeyserEventStream * @category Events * @since v0.6.3 * * @example * ```ts * const stream = new GeyserEventStream({ * endpoint: "https://grpc.triton.one", * token: process.env.GEYSER_TOKEN!, * }); * * stream.on("logs", (logs, sig, slot) => { * const events = parser.parseLogs(logs); * events.forEach(e => db.insertEvent(e)); * }); * * await stream.connect(); * ``` */ export declare class GeyserEventStream extends EventEmitter { private readonly config; private client; private stream; private reconnectAttempts; private _connected; private _stopped; constructor(config: GeyserConfig); /** Whether the gRPC stream is currently connected. */ get connected(): boolean; /** * Connect to the Yellowstone gRPC endpoint and start streaming. * * @throws If `@triton-one/yellowstone-grpc` is not installed. */ connect(): Promise; /** * Disconnect from the gRPC stream and stop reconnection. */ disconnect(): Promise; private subscribe; private handleMessage; private maybeReconnect; } //# sourceMappingURL=geyser.d.ts.map