@@ -10,11 +10,15 @@ import { ConstituentAccount } from '../types';
1010import { PollingConstituentAccountSubscriber } from './pollingConstituentAccountSubscriber' ;
1111import { WebSocketConstituentAccountSubscriber } from './webSocketConstituentAccountSubscriber' ;
1212import { DriftClient } from '../driftClient' ;
13- import { getConstituentFilter } from '../memcmp' ;
13+ import { getConstituentFilter , getConstituentLpPoolFilter } from '../memcmp' ;
1414import { ZSTDDecoder } from 'zstddec' ;
15+ import { encodeName } from '../userName' ;
16+ import { getLpPoolPublicKey } from '../addresses/pda' ;
1517
1618const MAX_CONSTITUENT_SIZE_BYTES = 304 ; // TODO: update this when account is finalized
1719
20+ const LP_POOL_NAME = 'test lp pool 2' ;
21+
1822export type ConstituentMapConfig = {
1923 driftClient : DriftClient ;
2024 connection ?: Connection ;
@@ -30,6 +34,7 @@ export type ConstituentMapConfig = {
3034 logResubMessages ?: boolean ;
3135 commitment ?: Commitment ;
3236 } ;
37+ lpPoolName ?: string ;
3338 // potentially use these to filter Constituent accounts
3439 additionalFilters ?: MemcmpFilter [ ] ;
3540} ;
@@ -62,11 +67,14 @@ export class ConstituentMap implements ConstituentMapInterface {
6267 private constituentIndexToKeyMap = new Map < number , string > ( ) ;
6368 private spotMarketIndexToKeyMap = new Map < number , string > ( ) ;
6469
70+ private lpPoolName : string ;
71+
6572 constructor ( config : ConstituentMapConfig ) {
6673 this . driftClient = config . driftClient ;
6774 this . additionalFilters = config . additionalFilters ;
6875 this . commitment = config . subscriptionConfig . commitment ;
6976 this . connection = config . connection || this . driftClient . connection ;
77+ this . lpPoolName = config . lpPoolName ?? LP_POOL_NAME ;
7078
7179 if ( config . subscriptionConfig . type === 'polling' ) {
7280 this . constituentAccountSubscriber =
@@ -75,7 +83,7 @@ export class ConstituentMap implements ConstituentMapInterface {
7583 this . driftClient . program ,
7684 config . subscriptionConfig . frequency ,
7785 config . subscriptionConfig . commitment ,
78- config . additionalFilters
86+ this . getFilters ( )
7987 ) ;
8088 } else if ( config . subscriptionConfig . type === 'websocket' ) {
8189 this . constituentAccountSubscriber =
@@ -84,7 +92,7 @@ export class ConstituentMap implements ConstituentMapInterface {
8492 this . driftClient . program ,
8593 config . subscriptionConfig . resubTimeoutMs ,
8694 config . subscriptionConfig . commitment ,
87- config . additionalFilters
95+ this . getFilters ( )
8896 ) ;
8997 }
9098
@@ -98,7 +106,15 @@ export class ConstituentMap implements ConstituentMapInterface {
98106 }
99107
100108 private getFilters ( ) : MemcmpFilter [ ] {
101- const filters = [ getConstituentFilter ( ) ] ;
109+ const filters = [
110+ getConstituentFilter ( ) ,
111+ getConstituentLpPoolFilter (
112+ getLpPoolPublicKey (
113+ this . driftClient . program . programId ,
114+ encodeName ( this . lpPoolName )
115+ )
116+ ) ,
117+ ] ;
102118 if ( this . additionalFilters ) {
103119 filters . push ( ...this . additionalFilters ) ;
104120 }
0 commit comments