watcher-ts/packages/erc20-watcher/src/resolvers.ts
Ashwin Phatak 8507bc8b9c
Address watcher package scaffolding (#75)
* Rename erc20 watcher folder.

* Update repo URLs.

* Address watcher package scaffolding.
2021-06-17 17:56:38 +05:30

75 lines
2.3 KiB
TypeScript

import assert from 'assert';
import BigInt from 'apollo-type-bigint';
import debug from 'debug';
import { Indexer, ValueResult } from './indexer';
const log = debug('vulcanize:resolver');
export const createResolvers = async (indexer: Indexer): Promise<any> => {
assert(indexer);
return {
BigInt: new BigInt('bigInt'),
TokenEvent: {
__resolveType: (obj: any) => {
assert(obj.__typename);
return obj.__typename;
}
},
Subscription: {
onTokenEvent: {
subscribe: () => indexer.getEventIterator()
}
},
Mutation: {
watchToken: (_: any, { token, startingBlock = 1 }: { token: string, startingBlock: number }): Promise<boolean> => {
log('watchToken', token, startingBlock);
return indexer.watchContract(token, startingBlock);
}
},
Query: {
totalSupply: (_: any, { blockHash, token }: { blockHash: string, token: string }): Promise<ValueResult> => {
log('totalSupply', blockHash, token);
return indexer.totalSupply(blockHash, token);
},
balanceOf: async (_: any, { blockHash, token, owner }: { blockHash: string, token: string, owner: string }) => {
log('balanceOf', blockHash, token, owner);
return indexer.balanceOf(blockHash, token, owner);
},
allowance: async (_: any, { blockHash, token, owner, spender }: { blockHash: string, token: string, owner: string, spender: string }) => {
log('allowance', blockHash, token, owner, spender);
return indexer.allowance(blockHash, token, owner, spender);
},
name: (_: any, { blockHash, token }: { blockHash: string, token: string }) => {
log('name', blockHash, token);
return indexer.name(blockHash, token);
},
symbol: (_: any, { blockHash, token }: { blockHash: string, token: string }) => {
log('symbol', blockHash, token);
return indexer.symbol(blockHash, token);
},
decimals: (_: any, { blockHash, token }: { blockHash: string, token: string }) => {
log('decimals', blockHash, token);
return indexer.decimals();
},
events: async (_: any, { blockHash, token, name }: { blockHash: string, token: string, name: string }) => {
log('events', blockHash, token, name || '');
return indexer.getEvents(blockHash, token, name);
}
}
};
};