@drift-labs/sdk
Version:
SDK for Drift Protocol
33 lines (32 loc) • 1.52 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.AuctionSubscriberGrpc = void 0;
const memcmp_1 = require("../memcmp");
const events_1 = require("events");
const grpcProgramAccountSubscriber_1 = require("../accounts/grpcProgramAccountSubscriber");
class AuctionSubscriberGrpc {
constructor({ driftClient, opts, grpcConfigs, resubTimeoutMs, logResubMessages, }) {
this.driftClient = driftClient;
this.opts = opts || this.driftClient.opts;
this.eventEmitter = new events_1.EventEmitter();
this.resubOpts = { resubTimeoutMs, logResubMessages };
this.grpcConfigs = grpcConfigs;
}
async subscribe() {
if (!this.subscriber) {
this.subscriber = await grpcProgramAccountSubscriber_1.grpcProgramAccountSubscriber.create(this.grpcConfigs, 'AuctionSubscriber', 'User', this.driftClient.program, this.driftClient.program.account.user.coder.accounts.decode.bind(this.driftClient.program.account.user.coder.accounts), {
filters: [(0, memcmp_1.getUserFilter)(), (0, memcmp_1.getUserWithAuctionFilter)()],
}, this.resubOpts);
}
await this.subscriber.subscribe((accountId, data, context) => {
this.eventEmitter.emit('onAccountUpdate', data, accountId, context.slot);
});
}
async unsubscribe() {
if (!this.subscriber) {
return;
}
this.subscriber.unsubscribe();
}
}
exports.AuctionSubscriberGrpc = AuctionSubscriberGrpc;