@@ -138,12 +138,36 @@ func (p *holderRuntime) countHoldersForMint(ctx context.Context, mint string, cu
138138 return 0 , nil
139139 }
140140
141- tokenAccounts := make ([]* common. Account , len (accountRecords ))
141+ vaultAddresses := make ([]string , len (accountRecords ))
142142 for i , record := range accountRecords {
143- tokenAccounts [i ], err = common .NewAccountFromPublicKeyString (record .TokenAccount )
143+ vaultAddresses [i ] = record .TokenAccount
144+ }
145+
146+ timelockRecordsByVault , err := p .data .GetTimelockByVaultBatch (ctx , vaultAddresses ... )
147+ if err != nil {
148+ return 0 , errors .Wrap (err , "error getting timelock records" )
149+ }
150+
151+ tokenAccounts := make ([]* common.Account , 0 )
152+ for _ , record := range accountRecords {
153+ timelockRecord , ok := timelockRecordsByVault [record .TokenAccount ]
154+ if ! ok {
155+ return 0 , errors .Errorf ("timelock record unexpectedly missing for vault %s" , record .TokenAccount )
156+ }
157+
158+ if ! timelockRecord .IsLocked () {
159+ continue
160+ }
161+
162+ tokenAccount , err := common .NewAccountFromPublicKeyString (record .TokenAccount )
144163 if err != nil {
145164 return 0 , errors .Wrap (err , "invalid token account public key" )
146165 }
166+ tokenAccounts = append (tokenAccounts , tokenAccount )
167+ }
168+
169+ if len (tokenAccounts ) == 0 {
170+ return 0 , nil
147171 }
148172
149173 balances , err := balance .BatchCalculateFromCacheWithTokenAccounts (ctx , p .data , tokenAccounts ... )
0 commit comments