@@ -15,6 +15,7 @@ import {
1515 Network ,
1616 QueryFeeModels ,
1717 sequentialTimerMap ,
18+ SubgraphClient ,
1819 SubgraphIdentifierType ,
1920 TapCollector ,
2021 upsertIndexingRule ,
@@ -23,7 +24,7 @@ import { Op } from 'sequelize'
2324
2425import {
2526 createGatewayDipsServiceClient ,
26- GatewayDipsServiceMessages ,
27+ GatewayDipsServiceMessagesCodec ,
2728} from './gateway-dips-service-client'
2829import {
2930 CollectPaymentStatus ,
@@ -43,9 +44,13 @@ const normalizeAddressForDB = (address: string) => {
4344 return toAddress ( address ) . toLowerCase ( ) . replace ( '0x' , '' )
4445}
4546
47+ type GetEscrowSenderForSigner = (
48+ tapSubgraph : SubgraphClient ,
49+ signer : Address ,
50+ ) => Promise < Address >
4651export class DipsManager {
4752 declare gatewayDipsServiceClient : GatewayDipsServiceClientImpl
48-
53+ declare gatewayDipsServiceMessagesCodec : GatewayDipsServiceMessagesCodec
4954 constructor (
5055 private logger : Logger ,
5156 private models : IndexerManagementModels ,
@@ -58,6 +63,7 @@ export class DipsManager {
5863 this . gatewayDipsServiceClient = createGatewayDipsServiceClient (
5964 this . network . specification . indexerOptions . dipperEndpoint ,
6065 )
66+ this . gatewayDipsServiceMessagesCodec = new GatewayDipsServiceMessagesCodec ( )
6167 }
6268 // Cancel an agreement associated to an allocation if it exists
6369 async tryCancelAgreement ( allocationId : string ) {
@@ -71,7 +77,7 @@ export class DipsManager {
7177 if ( agreement ) {
7278 try {
7379 const cancellation =
74- await GatewayDipsServiceMessages . createSignedCancellationRequest (
80+ await this . gatewayDipsServiceMessagesCodec . createSignedCancellationRequest (
7581 uuidToHex ( agreement . id ) ,
7682 this . network . wallet ,
7783 )
@@ -176,6 +182,7 @@ export class DipsManager {
176182
177183export class DipsCollector {
178184 declare gatewayDipsServiceClient : GatewayDipsServiceClientImpl
185+ declare gatewayDipsServiceMessagesCodec : GatewayDipsServiceMessagesCodec
179186 constructor (
180187 private logger : Logger ,
181188 private managementModels : IndexerManagementModels ,
@@ -184,13 +191,15 @@ export class DipsCollector {
184191 private tapCollector : TapCollector ,
185192 private wallet : Wallet ,
186193 private graphNode : GraphNode ,
194+ public escrowSenderGetter : GetEscrowSenderForSigner ,
187195 ) {
188196 if ( ! this . specification . indexerOptions . dipperEndpoint ) {
189197 throw new Error ( 'dipperEndpoint is not set' )
190198 }
191199 this . gatewayDipsServiceClient = createGatewayDipsServiceClient (
192200 this . specification . indexerOptions . dipperEndpoint ,
193201 )
202+ this . gatewayDipsServiceMessagesCodec = new GatewayDipsServiceMessagesCodec ( )
194203 }
195204
196205 static create (
@@ -201,6 +210,7 @@ export class DipsCollector {
201210 tapCollector : TapCollector ,
202211 wallet : Wallet ,
203212 graphNode : GraphNode ,
213+ escrowSenderGetter ?: GetEscrowSenderForSigner ,
204214 ) {
205215 const collector = new DipsCollector (
206216 logger ,
@@ -210,6 +220,7 @@ export class DipsCollector {
210220 tapCollector ,
211221 wallet ,
212222 graphNode ,
223+ escrowSenderGetter ?? getEscrowSenderForSigner ,
213224 )
214225 collector . startCollectionLoop ( )
215226 return collector
@@ -260,12 +271,13 @@ export class DipsCollector {
260271 return
261272 }
262273 const entityCount = entityCounts [ 0 ]
263- const collection = await GatewayDipsServiceMessages . createSignedCollectionRequest (
264- uuidToHex ( agreement . id ) ,
265- agreement . last_allocation_id ,
266- entityCount ,
267- this . wallet ,
268- )
274+ const collection =
275+ await this . gatewayDipsServiceMessagesCodec . createSignedCollectionRequest (
276+ uuidToHex ( agreement . id ) ,
277+ agreement . last_allocation_id ,
278+ entityCount ,
279+ this . wallet ,
280+ )
269281 try {
270282 this . logger . info ( `Collecting payment for agreement ${ agreement . id } ` )
271283 const response = await this . gatewayDipsServiceClient . CollectPayment ( {
@@ -277,15 +289,15 @@ export class DipsCollector {
277289 throw new Error ( 'TapCollector not initialized' )
278290 }
279291 // Store the tap receipt in the database
280- this . logger . info ( ` Decoding TAP receipt for agreement` )
281- const tapReceipt = GatewayDipsServiceMessages . decodeTapReceipt (
292+ this . logger . info ( ' Decoding TAP receipt for agreement' )
293+ const tapReceipt = this . gatewayDipsServiceMessagesCodec . decodeTapReceipt (
282294 response . tapReceipt ,
283295 this . tapCollector ?. tapContracts . tapVerifier . address ,
284296 )
285- // TODO: check that the signer of the TAP receipt is a signer
297+ // Check that the signer of the TAP receipt is a signer
286298 // on the corresponding escrow account for the payer (sender) of the
287299 // indexing agreement
288- const escrowSender = await getEscrowSenderForSigner (
300+ const escrowSender = await this . escrowSenderGetter (
289301 this . tapCollector ?. tapSubgraph ,
290302 tapReceipt . signer_address ,
291303 )
0 commit comments