import { TransactionResponse } from '@ethersproject/abstract-provider';
import { Environment } from '@holographxyz/environment';
import { DeploymentConfig } from '../../utils/contract-deployment';
import { BridgeInErc20Args, BridgeInErc721Args, BridgeOutErc20Args, BridgeOutErc721Args } from '../../utils/bridge';
import { BlockJob, NetworkMonitor } from '../../utils/network-monitor';
import { HealthCheck } from '../../base-commands/healthcheck';
declare type DBJob = {
    attempts: number;
    timestamp: number;
    network: string;
    query: string;
    message: string;
    callback: (...args: any[]) => Promise<void>;
    arguments: any[];
    tags: (string | number)[];
};
declare type DBJobMap = {
    [key: number]: DBJob[];
};
declare type PatchOptions = {
    responseData: any;
    network: string;
    query: string;
    data: any;
    messages: string[];
};
export default class Indexer extends HealthCheck {
    static hidden: boolean;
    static LAST_BLOCKS_FILE_NAME: string;
    static description: string;
    static examples: string[];
    static flags: {
        healthCheck: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
        healthCheckPort: import("@oclif/core/lib/interfaces").OptionFlag<number | undefined>;
        warp: import("@oclif/core/lib/interfaces").OptionFlag<number>;
        networks: import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined>;
        host: import("@oclif/core/lib/interfaces").OptionFlag<string>;
    };
    BASE_URL: string;
    JWT: string;
    DELAY: number;
    apiColor: import("chalk").Chalk;
    errorColor: import("chalk").Chalk;
    networkMonitor: NetworkMonitor;
    dbJobMap: DBJobMap;
    environment: Environment;
    numericSort(a: number, b: number): number;
    numberfy(arr: string[]): number[];
    /**
     * Command Entry Point
     */
    run(): Promise<void>;
    filterBuilder(): Promise<void>;
    processDBJob(timestamp: number, job: DBJob): Promise<void>;
    processDBJobs(timestamp?: number, job?: DBJob): void;
    processTransactions(job: BlockJob, transactions: TransactionResponse[]): Promise<void>;
    handleContractDeployedEvent(transaction: TransactionResponse, network: string, tags: (string | number)[]): Promise<void>;
    handleMintEvent(transaction: TransactionResponse, network: string, tags: (string | number)[]): Promise<void>;
    handleBridgeInEvent(transaction: TransactionResponse, network: string, tags: (string | number)[]): Promise<void>;
    handleBridgeOutEvent(transaction: TransactionResponse, network: string, tags: (string | number)[]): Promise<void>;
    handleAvailableOperatorJobEvent(transaction: TransactionResponse, network: string, tags: (string | number)[]): Promise<void>;
    updateContractCallback(responseData: any, transaction: TransactionResponse, network: string, contractAddress: string, deploymentConfig: DeploymentConfig, tags: (string | number)[]): Promise<void>;
    updateDeployedContract(transaction: TransactionResponse, network: string, contractAddress: string, deploymentEvent: string[], deploymentConfig: DeploymentConfig, tags: (string | number)[]): Promise<void>;
    updateBridgedContract(direction: string, transaction: TransactionResponse, network: string, fromNetwork: string, contractAddress: string, deploymentEvent: string[], deploymentConfig: DeploymentConfig, operatorJobHash: string, tags: (string | number)[]): Promise<void>;
    updateBridgedERC20(direction: string, transaction: TransactionResponse, network: string, fromNetwork: string, contractAddress: string, erc20TransferEvent: any[], erc20BeamInfo: BridgeInErc20Args | BridgeOutErc20Args, operatorJobHash: string, tags: (string | number)[]): Promise<void>;
    updateERC721Callback(responseData: any, transaction: TransactionResponse, network: string, contractAddress: string, tokenId: string, tags: (string | number)[]): Promise<void>;
    updateBridgedERC721(direction: string, transaction: TransactionResponse, network: string, fromNetwork: string, toNetwork: string, contractType: string, contractAddress: string, erc721TransferEvent: any[], erc721BeamInfo: BridgeInErc721Args | BridgeOutErc721Args, operatorJobHash: string, tags: (string | number)[]): Promise<void>;
    updateMintedERC721(transaction: TransactionResponse, network: string, contractType: string, contractAddress: string, erc721TransferEvent: any[], tags: (string | number)[]): Promise<void>;
    updateCrossChainTransactionCallback(responseData: any, transaction: TransactionResponse, network: string, fromNetwork: string, toNetwork: string, contractAddress: string, tokenId: string, crossChainTxType: string, jobHash: string, tags: (string | number)[]): Promise<void>;
    updateCrossChainTransaction(crossChainTxType: string, network: string, transaction: TransactionResponse, fromNetwork: string, toNetwork: string, contractAddress: string, contractType: string, tokenId: string, operatorJobHash: string, tags: (string | number)[]): Promise<void>;
    sendPatchRequest(options: PatchOptions, tags: (string | number)[]): Promise<void>;
    getBlockTimestamp(network: string, blockNumber: number): Promise<number>;
}
export {};
