1+ import { Address , BigInt } from '@graphprotocol/graph-ts'
2+ import { PaymentsEscrowTransaction , Signer } from '../types/schema'
3+ import {
4+ SignerAuthorized ,
5+ SignerThawing ,
6+ SignerThawCanceled ,
7+ SignerRevoked ,
8+ PaymentCollected
9+ } from '../types/GraphTallyCollector/GraphTallyCollector'
10+ import { createOrLoadEscrowAccount , createOrLoadPayer , createOrLoadReceiver } from './paymentsEscrow'
11+
12+ const BIGINT_ZERO = BigInt . fromI32 ( 0 )
13+ const ADDRESS_ZERO = Address . fromString ( '0x0000000000000000000000000000000000000000' )
14+
15+ export function handleSignerAuthorized ( event : SignerAuthorized ) : void {
16+ let signer = createOrLoadSigner ( event . params . signer )
17+ signer . isAuthorized = true
18+ signer . payer = event . params . authorizer
19+ signer . save ( )
20+ }
21+
22+ export function handleSignerThawing ( event : SignerThawing ) : void {
23+ let signer = createOrLoadSigner ( event . params . signer )
24+ signer . payer = event . params . authorizer
25+ signer . isAuthorized = true
26+ signer . thawEndTimestamp = event . params . thawEndTimestamp
27+ signer . save ( )
28+ }
29+
30+ export function handleSignerThawCanceled ( event : SignerThawCanceled ) : void {
31+ let signer = createOrLoadSigner ( event . params . signer )
32+ signer . payer = event . params . authorizer
33+ signer . isAuthorized = true
34+ signer . thawEndTimestamp = BIGINT_ZERO
35+ signer . save ( )
36+ }
37+
38+ export function handleSignerRevoked ( event : SignerRevoked ) : void {
39+ let signer = createOrLoadSigner ( event . params . signer )
40+ signer . payer = event . params . authorizer
41+ signer . isAuthorized = false
42+ signer . thawEndTimestamp = BIGINT_ZERO
43+ signer . save ( )
44+ }
45+
46+ export function handlePaymentCollected ( event : PaymentCollected ) : void {
47+ let index = event . logIndex . toI32 ( )
48+ let transactionId = event . transaction . hash . concatI32 ( index )
49+ let transaction = new PaymentsEscrowTransaction ( transactionId )
50+
51+ let payer = createOrLoadPayer ( event . params . payer )
52+ let receiver = createOrLoadReceiver ( event . params . receiver )
53+ let escrow = createOrLoadEscrowAccount ( event . params . payer , event . params . dataService , event . params . receiver )
54+ escrow . balance = escrow . balance . minus ( event . params . tokens )
55+
56+ transaction . type = 'redeem'
57+ transaction . payer = payer . id
58+ transaction . collector = event . params . dataService
59+ transaction . receiver = receiver . id
60+ transaction . allocationId = Address . fromBytes ( event . params . collectionId )
61+ transaction . amount = event . params . tokens
62+ transaction . escrowAccount = escrow . id
63+ transaction . transactionGroupId = event . transaction . hash
64+ transaction . timestamp = event . block . timestamp
65+
66+ transaction . save ( )
67+ escrow . save ( )
68+ }
69+
70+ export function createOrLoadSigner ( address : Address ) : Signer {
71+ let signer = Signer . load ( address )
72+ if ( signer == null ) {
73+ signer = new Signer ( address )
74+ signer . isAuthorized = false
75+ signer . payer = ADDRESS_ZERO
76+ signer . thawEndTimestamp = BIGINT_ZERO
77+ signer . save ( )
78+ }
79+ return signer
80+ }
0 commit comments