// // Copyright 2021 Vulcanize, Inc. // import assert from 'assert'; import { ResultEvent } from '@cerc-io/util'; import { Indexer } from './indexer'; /** * Hook function to store an initial state. * @param indexer Indexer instance. * @param blockHash Hash of the concerned block. * @param contractAddress Address of the concerned contract. * @returns Data block to be stored. */ export async function createInitialState (indexer: Indexer, contractAddress: string, blockHash: string): Promise { assert(indexer); assert(blockHash); assert(contractAddress); // Store an empty State. const stateData: any = { state: {} }; // Return initial state data to be saved. return stateData; } /** * Hook function to create state diff. * @param indexer Indexer instance that contains methods to fetch the contract varaiable values. * @param blockHash Block hash of the concerned block. */ export async function createStateDiff (indexer: Indexer, blockHash: string): Promise { assert(indexer); assert(blockHash); // Use indexer.createDiff() method to save custom state diff(s). } /** * Hook function to create state checkpoint * @param indexer Indexer instance. * @param contractAddress Address of the concerned contract. * @param blockHash Block hash of the concerned block. * @returns Whether to disable default checkpoint. If false, the state from this hook is updated with that from default checkpoint. */ export async function createStateCheckpoint (indexer: Indexer, contractAddress: string, blockHash: string): Promise { assert(indexer); assert(blockHash); assert(contractAddress); // Use indexer.createStateCheckpoint() method to create a custom checkpoint. return false; } /** * Event hook function. * @param indexer Indexer instance that contains methods to fetch and update the contract values in the database. * @param eventData ResultEvent object containing event information. */ export async function handleEvent (indexer: Indexer, eventData: ResultEvent): Promise { assert(indexer); assert(eventData); }