Events
Protocol events are emitted in transaction logs. The SDK provides an EventSubscriber that can listen, deserialize, and emit events to your app.
import { EventSubscriber } from "@drift-labs/sdk";
const options = {
// eventTypes: ["DepositRecord", "OrderRecord", ...],
commitment: "confirmed",
logProviderConfig: { type: "websocket" },
};
const eventSubscriber = new EventSubscriber(connection, driftClient.program, options);
await eventSubscriber.subscribe();
eventSubscriber.eventEmitter.on("newEvent", (event) => {
console.log(event);
});Class EventSubscriberReference ↗Filtering events (market fills example)
import { isVariant } from "@drift-labs/sdk";Function isVariantReference ↗| Name | Type | Default |
|---|---|---|
object | unknown | |
type | string |
const marketIndex = 0;
const isPerpFill = (event) => {
if (event.eventType !== "OrderActionRecord") return false;
if (event.marketIndex !== marketIndex) return false;
if (!isVariant(event.marketType, "perp")) return false;
if (!isVariant(event.action, "fill")) return false;
return true;
};
eventSubscriber.eventEmitter.on("newEvent", (event) => {
if (isPerpFill(event)) console.log(event);
});TODO:
- Add a “filter by marketIndex / event type” snippet for common bot patterns.
Last updated on