import { MapStateStorage } from '@sentio/runtime' import { Data_FuelBlock, Data_FuelReceipt, Data_FuelTransaction, FuelAssetHandlerConfig, FuelReceiptHandlerConfig, HandleInterval, OnIntervalConfig, ProcessResult } from '@sentio/protos' import { Block, TransactionSummary } from 'fuels' // Client-side only filter for `onCall`. Fuel calls are delivered as FUEL_TRANSACTION // data and filtered in-handler, so this never reaches the backend. export interface FuelCallFilter { function: string includeFailed: boolean } export interface FuelBaseProcessor { configure(): Promise config: T txHandlers: CallHandler[] blockHandlers: BlockHandler[] receiptHandlers?: ReceiptHandler[] } export class FuelProcessorState extends MapStateStorage> { static INSTANCE = new FuelProcessorState() } export type CallHandler = { handlerName: string handler: (call: T) => Promise fetchConfig?: { filters: FuelCallFilter[] } assetConfig?: Omit, '$typeName' | '$unknown'> partitionHandler?: (call: T) => Promise } export type ReceiptHandler = { handlerName: string handler: (receipt: Data_FuelReceipt) => Promise receiptConfig?: Omit, '$typeName' | '$unknown'> partitionHandler?: (receipt: Data_FuelReceipt) => Promise } export type BlockHandler = { blockInterval?: HandleInterval timeIntervalInMinutes?: HandleInterval handler: (block: Data_FuelBlock) => Promise handlerName: string fetchConfig?: Partial partitionHandler?: (block: Data_FuelBlock) => Promise } export interface FuelLog { logId: string data: T receiptIndex: number } export type FuelTransaction = TransactionSummary & { blockNumber?: string logs?: FuelLog[] sender?: string } export type FuelBlock = Omit export type ContractTransferFilter = { assetId?: string from?: string to?: string }